同步技能全量内容:更新主说明、跨平台安装脚本与面板UI审计脚本
This commit is contained in:
+8
-8
@@ -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,5 +1,5 @@
|
||||
---
|
||||
name: panel-project-deploy
|
||||
name: project-init-panel-deploy
|
||||
description: 自动化克隆、初始化、品牌化、Docker 部署并提交项目,同时强制将前端页面改造成炫酷的科技感玻璃面板风格。适用于“初始化并部署项目”“项目页面改版”“面板风格 UI”“科技感大屏/仪表盘”等请求。
|
||||
---
|
||||
|
||||
|
||||
+1
-1
@@ -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
@@ -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)"
|
||||
|
||||
@@ -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())
|
||||
|
||||
|
||||
Reference in New Issue
Block a user