npx claudepluginhub luagam/stage-harnessThis skill uses the workspace's default tool permissions.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Details PluginEval's skill quality evaluation: 3 layers (static, LLM judge), 10 dimensions, rubrics, formulas, anti-patterns, badges. Use to interpret scores, improve triggering, calibrate thresholds.
在执行任何 harnessctl 命令前,先解析本地 CLI 路径:
if [ -z "${HARNESSCTL:-}" ]; then
candidates=(
"./stage-harness/scripts/harnessctl"
"../stage-harness/scripts/harnessctl"
"$(git rev-parse --show-toplevel 2>/dev/null)/stage-harness/scripts/harnessctl"
)
for candidate in "${candidates[@]}"; do
if [ -n "$candidate" ] && [ -x "$candidate" ]; then
HARNESSCTL="$candidate"
break
fi
done
fi
test -n "${HARNESSCTL:-}" && test -x "$HARNESSCTL" || {
echo "harnessctl not found. Set HARNESSCTL=/abs/path/to/stage-harness/scripts/harnessctl" >&2
exit 1
}
PLAN 阶段计划生成技能。将 SPEC 产物转化为可执行的任务图谱,建立覆盖矩阵,确保每个已知风险都有对应的 task、验证手段和证据要求。
PLAN/harness:plan 命令$HARNESSCTL state transition <epic-id> PLAN)$HARNESSCTL state get <epic-id>
必须存在 .harness/features/<epic-id>/surface-routing.json(stage-gate check CLARIFY / PLAN 已要求)。读取并确认后续调研范围:
test -f .harness/features/<epic-id>/surface-routing.json || {
echo "error: surface-routing.json missing — complete CLARIFY surface routing first" >&2
exit 1
}
cat .harness/features/<epic-id>/surface-routing.json
确认:
repo_id / scan_budget / evidence_level 是否与 cross-repo-impact-index.json(如有)一致可选:列出 .harness/memory/codemaps/<repo_id>/,便于 Step 2 提示各 scout 先读缓存再回源。
通过 Task 工具并行调度 scout agents(仅以 surface-routing.json 的 scout_assignments / assigned_to 与 surfaces[] 为准;禁止因“路由不全”自行扩大到未登记路径)。每个 scout 须先查看 .harness/memory/codemaps/ 下与本次路径相关的模块笔记,再对源码做定点阅读。
| Scout | 职责 |
|---|---|
| repo-router | 代码结构、模块边界、入口 |
| docs-scout | CLARIFY/SPEC 文档与意图对齐 |
| design-scout | 架构与接口约定 |
| config-scout | 配置、环境、部署约束 |
| symbol-navigator | 符号与调用点 |
| dependency-mapper | 依赖与 import 链 |
每个 scout 输出:已知实体清单 + 发现的约束/风险;不得在未登记路径上做大范围盲扫。
批量创建 tasks,每个 task 必须包含:
surface 字段(隶属哪个承载面)acceptance_criteria(可验证的完成标准)dependencies(前置 task IDs)evidence(需要产出的证据文件/测试结果)# 为每个 task 运行
$HARNESSCTL task create <epic-id> "<task-title>" --surface <surface-name>
跨承载面 task 必须在 task JSON 中写明:
boundary:承载面边界描述deps_cross_surface:跨面依赖说明integration_points:联调点清单$HARNESSCTL coverage map # 如已实现;否则手动构建
构建规则:
.harness/features/<epic-id>/unknowns-ledger.jsoncoverage-matrix.json 的 unmapped_risks 字段// .harness/features/<epic-id>/coverage-matrix.json
{
"version": "1.0",
"epic_id": "<epic-id>",
"mappings": [
{
"unknown_id": "U-001",
"task_id": "sh-1.3",
"validation": "integration test",
"evidence_path": "test-results/auth-flow.json"
}
],
"unmapped_risks": [
{
"unknown_id": "U-005",
"reason": "需要外部服务配合,无法在当前 sprint 验证",
"mitigation": "文档记录,下期处理"
}
]
}
调度 plan-reviewer agent 审查计划:
Task: plan-reviewer
Input: {
"epic_id": "<epic-id>",
"tasks_dir": ".harness/tasks/",
"coverage_matrix": ".harness/features/<epic-id>/coverage-matrix.json",
"spec_path": ".harness/specs/<epic-id>.md"
}
plan-reviewer 输出 JSON verdict,写入 .harness/features/<epic-id>/plan-review.json。
如果 verdict = BLOCK,停止流程,修复后重新执行 Step 3。
调用 council/SKILL.md,参数:
council_type: plan_council
epic_id: <epic-id>
context: {
tasks_count: <N>,
coverage_matrix: <path>,
plan_review_verdict: <verdict>
}
议会 verdict 写入 .harness/features/<epic-id>/councils/verdict-plan_council.json。
调用 decision-bundle/SKILL.md,处理本阶段产生的所有决策点。
所有 must_confirm 项必须在阶段出口前处理完毕。
plan-review.json verdict = READYverdict-plan_council.json verdict = READY 或 READY_WITH_CONDITIONScoverage-matrix.json 已生成,unmapped_risks 已显性暴露must_confirm 决策已处理decision-packet.json 已更新出口命令:
$HARNESSCTL state transition <epic-id> EXECUTE
unmapped_risks 显性暴露,不允许静默忽略EXECUTE 阶段回流时:
.harness/features/<epic-id>/triage-<timestamp>.json)plan_patch(计划变更)或 spec_patch(规格变更)