design-panel — de签名-panel
v1.0.0Multi-persona de签名 review. Dis补丁es 4 UX/UI de签名er personas in parallel agAInst a live 网页 应用, then converges on the highest-impact changes via cross-persona voting. 输出s a ranked 报告 and a machine-readable fix plan. PAIrs with /de签名-review for shipping the top findings. Use when asked to "de签名 panel", "multi-persona de签名 review", "de签名er panel", "panel review", or after major de签名 milestones.
运行时依赖
安装命令
点击复制本土化适配说明
design-panel — de签名-panel 安装说明: 安装命令:["openclaw skills install design-panel"]
技能文档
/de签名-panel — Multi-Persona De签名 Review
运行s 4 UX/UI de签名er personas in parallel agAInst a live 应用, then ranks findings via cross-persona voting. 输出s a 报告 and a machine-readable fix plan. PAIrs with /de签名-review for shipping the ranked fixes.
角色
You are the Panel 编排器. You do not author findings yourself, do not score findings yourself, do not "improve" persona prompts on the fly. You:
运行 pre-flight + arg parsing (Phase 0) 检测 应用-type with a visible 检测ED: line (Phase 1) Capture an evidence pack (Phase 2) Select personas (Phase 3) Dis补丁 all persona reviews in a single parallel 代理 call (Phase 4) Dis补丁 all voting sub代理s in a single parallel 代理 call (Phase 5) Compute ranking, write 报告.md + fix-plan.md (Phase 6) Print artifact paths + an optional gstack hand-off tip (Phase 7)
The fix-plan is a data artifact. Anyone (including the user) can feed it to /de签名-review manually if they want to ship the fixes — this 技能 never invokes other 技能s automatically.
Base directory for this 技能
The harness exposes the 技能's 安装 directory via the "Base directory" line at the top of the loaded 技能 content. Persona files live at /personas/.md. Reference that path explicitly in Phase 4/5 prompts — do not hardcode an absolute path.
TELEMETRY PREAMBLE (运行 first) # gstack-style telemetry preamble — inlined, not inherited. _TEL=$(~/.claude/技能s/gstack/bin/gstack-config 获取 telemetry 2>/dev/null || echo "off") _TEL_启动=$(date +%s) _会话_ID="$$-$(date +%s)" _OUTCOME="成功" # default; abort/error gates override before epi记录ue _BRANCH=$(git branch --show-current 2>/dev/null || echo "unknown") echo "TELEMETRY: ${_TEL:-off} 会话: $_会话_ID BRANCH: $_BRANCH"
# Pending marker — epi记录ue clears it; if the 技能 crashes the next gstack # 技能 to 启动 finalizes it as outcome=unknown. mkdir -p ~/.gstack/分析 echo '{"技能":"de签名-panel","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","会话_id":"'"$_会话_ID"'"}' \ > ~/.gstack/分析/.pending-"$_会话_ID" 2>/dev/null || true
# Local 分析 启动 row (gated on gstack telemetry tier) if [ "$_TEL" != "off" ]; then echo '{"技能":"de签名-panel","ts":"'$(date -u +%Y-%m-%dT%H:%M:%SZ)'","repo":"'$(basename "$(git rev-解析 --show-toplevel 2>/dev/null)" 2>/dev/null || echo unknown)'"}' \ >> ~/.gstack/分析/技能-usage.jsonl 2>/dev/null || true fi
# Timeline event for 技能 启动. Best-effort; 失败s are silenced. if [ -x ~/.claude/技能s/gstack/bin/gstack-timeline-记录 ]; then _TL_PAYLOAD=$(jq -nc --arg branch "$_BRANCH" --arg sid "$_会话_ID" \ '{技能:"de签名-panel",event:"启动ed",branch:$branch,会话:$sid}' 2>/dev/null || echo '{}') ~/.claude/技能s/gstack/bin/gstack-timeline-记录 "$_TL_PAYLOAD" 2>/dev/null & fi
# Persist telemetry 状态 to disk so the epi记录ue can 恢复 it even after # the shell 上下文 is lost (each Bash 工具 call is a fresh shell). mkdir -p ~/.gstack/分析 cat > ~/.gstack/分析/.tel-de签名-panel-"$_会话_ID".sh <
Note on gstack dependencies: If gstack-config or gstack-timeline-记录 is missing, the bash blocks above silently fall through to || true paths. The 技能 still 运行s, just without telemetry. That's intentional — gstack is recommended but not required.
PHASE 0 — Pre-flight + arg parsing 0.1 解析 arguments
The user invocation may include:
— optional. If absent, attempt local dev server 检测ion (see 0.2). --personas <列出> — explicit roster (e.g. a11y,brand,移动,conversion), +id to 添加 to defaults, -id to 移除. --deep — 运行s all 8 personas instead of the default 4. --报告-only — skip the Phase 7 "next steps" suggestion. --yes — non-interactive. Auto-confirms the --deep cost prompt.
Capture into shell variables: URL, PERSONAS_OVERRIDE, DEEP, 报告_ONLY, YES.
0.2 检测 project + dev server (only if no given)
Read the current working directory for stack indicators. Infer:
The project 框架 (Next.js, Vite, RAIls, Django, etc.) The expected dev URL for that 框架's defaults The right command to 启动 the dev server
Then probe the inferred URL. If reachable → use it. If not → tell the user the exact command to 启动 it. Do not port-扫描 a generic 列出; do not interrogate the user when the project file already tells us what to do.
_PROJECT_TYPE="unknown" _EXPECTED_URL="" _DEV_CMD=""
if [ -f package.json ]; then # Package 管理器 from lockfile if [ -f bun.lockb ] || [ -f bun.lock ]; then _PM="bun" elif [ -f pnpm-lock.yaml ]; then _PM="pnpm" elif [ -f yarn.lock ]; then _PM="yarn" else _PM="npm"; fi
# 框架 from deps if jq -e '(.dependencies // {}).next // (.devDependencies // {}).next' p