同步技能全量内容:更新主说明、跨平台安装脚本与面板UI审计脚本

This commit is contained in:
yi
2026-10-10 19:03:24 +08:00
parent 5295c1cf58
commit 55478ce04a
5 changed files with 12 additions and 39 deletions
+8 -8
View File
@@ -1,13 +1,13 @@
# 技能安装与迁移说明
技能名称:**panel-project-deploy**
技能名称:**project-init-panel-deploy**
用途:自动化克隆、初始化、品牌化、Docker 部署开源项目,并强制改造成炫酷科技感玻璃面板风格 UI;
同时对齐《开源软件改造部署外包服务合同》的交付物与验收标准。
## 一、目录内容
```text
panel-project-deploy/
project-init-panel-deploy/
├── SKILL.md # 技能主文件(18 步工作流,必须先读)
├── references/
│ ├── panel-ui.md # 面板风格 UI 设计与验收规范
@@ -35,20 +35,20 @@ panel-project-deploy/
```powershell
# 1. 复制整个技能目录到 Codex 技能目录
Copy-Item .\panel-project-deploy "$env:USERPROFILE\.codex\skills\" -Recurse -Force
Copy-Item .\project-init-panel-deploy "$env:USERPROFILE\.codex\skills\" -Recurse -Force
# 2. 执行安装脚本(创建 venv 可选;安装 playwright)
.\panel-project-deploy\install.ps1
.\project-init-panel-deploy\install.ps1
```
### macOS / Linux
```bash
# 1. 复制技能目录
cp -r ./panel-project-deploy ~/.codex/skills/
cp -r ./project-init-panel-deploy ~/.codex/skills/
# 2. 执行安装脚本
bash ./panel-project-deploy/install.sh
bash ./project-init-panel-deploy/install.sh
```
> 若使用的是其他 Agent 框架,技能目录也可能是 `~/.agents/skills/`,按对应框架要求放置即可。
@@ -67,8 +67,8 @@ python -m playwright install-deps chromium
## 五、验证安装
```bash
python ~/.codex/skills/panel-project-deploy/scripts/panel_ui_audit.py --help
python ~/.codex/skills/panel-project-deploy/scripts/workflow_manager.py --help
python ~/.codex/skills/project-init-panel-deploy/scripts/panel_ui_audit.py --help
python ~/.codex/skills/project-init-panel-deploy/scripts/workflow_manager.py --help
```
能正常打印帮助即安装成功。
+1 -1
View File
@@ -1,5 +1,5 @@
---
name: panel-project-deploy
name: project-init-panel-deploy
description: 自动化克隆、初始化、品牌化、Docker 部署并提交项目,同时强制将前端页面改造成炫酷的科技感玻璃面板风格。适用于“初始化并部署项目”“项目页面改版”“面板风格 UI”“科技感大屏/仪表盘”等请求。
---
+1 -1
View File
@@ -1,4 +1,4 @@
# panel-project-deploy 技能安装脚本 (Windows)
# project-init-panel-deploy 技能安装脚本 (Windows)
$ErrorActionPreference = "Stop"
Write-Host "==> 安装 Python 依赖 (playwright)" -ForegroundColor Cyan
python -m pip install --upgrade pip
+1 -1
View File
@@ -1,5 +1,5 @@
#!/usr/bin/env bash
# panel-project-deploy 技能安装脚本 (macOS / Linux)
# project-init-panel-deploy 技能安装脚本 (macOS / Linux)
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
echo "==> 安装 Python 依赖 (playwright)"
+1 -28
View File
@@ -7,7 +7,6 @@ from __future__ import annotations
import argparse
import json
import os
import sys
from pathlib import Path
from typing import Any
@@ -260,31 +259,6 @@ def audit_page(page: Page, route: str, extra_openers: list[str]) -> dict[str, An
return {'route': route, 'issues': issues}
def launch_chromium(playwright):
launch_options = {'headless': True}
channel = os.environ.get('PANEL_PLAYWRIGHT_CHANNEL')
executable_path = os.environ.get('PANEL_PLAYWRIGHT_EXECUTABLE_PATH')
if channel:
launch_options['channel'] = channel
elif executable_path:
launch_options['executable_path'] = executable_path
else:
local_app_data = os.environ.get('LOCALAPPDATA', '')
playwright_cache = Path(local_app_data) / 'ms-playwright' if local_app_data else None
has_downloaded_chromium = bool(
playwright_cache and list(playwright_cache.glob('chromium-*/chrome-win64/chrome.exe'))
)
if not has_downloaded_chromium:
program_files_x86 = os.environ.get('ProgramFiles(x86)', '')
program_files = os.environ.get('ProgramFiles', '')
edge_candidates = [
Path(program_files_x86) / 'Microsoft' / 'Edge' / 'Application' / 'msedge.exe',
Path(program_files) / 'Microsoft' / 'Edge' / 'Application' / 'msedge.exe',
]
if any(edge.exists() for edge in edge_candidates):
launch_options['channel'] = 'msedge'
return playwright.chromium.launch(**launch_options)
def csv_list(value: str) -> list[str]:
return [item.strip() for item in value.split(',') if item.strip()]
@@ -313,7 +287,7 @@ def main() -> int:
report: dict[str, Any] = {'baseUrl': args.base_url, 'pages': []}
with sync_playwright() as playwright:
browser = launch_chromium(playwright)
browser = playwright.chromium.launch(headless=True)
page = browser.new_page(viewport={'width': args.viewport_width, 'height': args.viewport_height})
if not args.skip_login:
@@ -348,4 +322,3 @@ def main() -> int:
if __name__ == '__main__':
sys.exit(main())