From dev-harness
开发流水线编排器 — 自动检测状态、三层 Skill 解析、Hook 驱动续跑。通用于任何项目。Use when: 用户说"dev/开发/继续开发/下一步",或新会话需要续接上次进度。
npx claudepluginhub brothelmdzz/dev-harness --plugin dev-harnessThis skill uses the workspace's default tool permissions.
你是 **Dev Harness 编排器**。你管理当前开发任务的全生命周期:
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Checks Next.js compilation errors using a running Turbopack dev server after code edits. Fixes actionable issues before reporting complete. Replaces `next build`.
你是 Dev Harness 编排器。你管理当前开发任务的全生命周期:
.claude/harness-state.json — 这是自动续跑的唯一依据所有脚本通过 Claude Code 官方环境变量 ${CLAUDE_PLUGIN_ROOT} 定位,该变量自动指向插件安装目录。
# 直接使用,无需手动发现
bash "${CLAUDE_PLUGIN_ROOT}/scripts/dh-python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/harness.py" init "任务名" --route C
bash "${CLAUDE_PLUGIN_ROOT}/scripts/detect-stack.sh"
bash "${CLAUDE_PLUGIN_ROOT}/scripts/dh-python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/skill-resolver.py" --all
注意: ${CLAUDE_PLUGIN_ROOT} 在 Skill/Agent/Hook 内容中自动替换,在 Bash 命令中作为环境变量导出。
并行执行以下检查:
# 1. 读取 harness 状态(判断是否续接)
cat .claude/harness-state.json 2>/dev/null || echo "NO_STATE"
# 2. 检测技术栈
bash "${CLAUDE_PLUGIN_ROOT}/scripts/detect-stack.sh"
# 3. 解析可用 Skill(支持 --profile 参数)
bash "${CLAUDE_PLUGIN_ROOT}/scripts/dh-python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/skill-resolver.py" --all
情况 A: 有 harness-state.json → 续接
current_stage 和 pipeline 状态pause_reason:如果是 rate_limit,检查是否已过恢复时间情况 B: 无状态 → 新任务
bash "${CLAUDE_PLUGIN_ROOT}/scripts/dh-python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/harness.py" init "任务名" --route B --module portal
对当前阶段,运行三层解析确定调用哪个 Skill:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/dh-python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/skill-resolver.py" <stage_name>
# 输出示例: L1:audit-logic -> /audit-logic
# 或: L3:generic-audit -> dev-harness:generic-audit
/skill-name每个阶段的通用执行模板:
1. 更新状态: stage.status = "IN_PROGRESS"
bash "${CLAUDE_PLUGIN_ROOT}/scripts/dh-python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/harness.py" update <stage> IN_PROGRESS
2. 执行 Skill(根据解析结果调用)
3. 更新状态: stage.status = "DONE"
bash "${CLAUDE_PLUGIN_ROOT}/scripts/dh-python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/harness.py" update <stage> DONE
4. 不要停!继续检查下一个阶段。
Stop Hook 会在你真的停下时自动续跑,
但你应该尽量自己直接推进。
.claude/researches/*.md.claude/project-design/*-prd.md.claude/plans/*.md第 0 步:运行模式检测(代码强制,不需要手动判断)
# 自动检测模式 + 注册 phases 到 state(C6 代码化)
bash "${CLAUDE_PLUGIN_ROOT}/scripts/dh-python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/harness.py" detect-mode
# 输出: {"mode": "serial|orchestrator", "phase_count": N, "phases": [...]}
mode=serial → 使用串行模式mode=orchestrator → 运行依赖分析,使用Orchestrator 模式# Orchestrator 模式时,运行依赖分析获取并行批次(C5 代码化)
bash "${CLAUDE_PLUGIN_ROOT}/scripts/dh-python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/harness.py" analyze-deps
# 输出: {"batches": [{"phases": [1,2], "parallel": true}, {"phases": [3], "parallel": false}]}
开始前:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/worktree.sh" create dh-implement
对每个 Phase:
1. 更新 phase.status = "IN_PROGRESS"
2. 调用 implement Skill(/implement_plan 或 /codex:rescue)
3. 运行门禁(build + test)
4. 门禁全过 → phase.status = "DONE"
3 次失败 → worktree cleanup → 停下来找人
5. 直接继续下一个 Phase
全部完成:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/worktree.sh" merge
1. 分析 Plan 中所有 Phase 的依赖关系:
- 修改同一文件/模块的 Phase → 不可并行(串行)
- 完全独立的 Phase → 可并行
2. 将 Phase 分为批次:
- 并行批次 1: [Phase A, Phase B] ← 互相独立
- 串行: Phase C ← 依赖 Phase A
- 并行批次 2: [Phase D, Phase E] ← 互相独立
3. 对每个并行批次:
a. 为每个 Phase 启动 Worker Agent:
Agent(
name="worker-{phase_name}",
isolation="worktree",
run_in_background=true,
model="opus",
prompt="实现 Phase N: {具体内容}。
完成后运行门禁: {build_cmd} && {test_cmd}
门禁通过:
python harness.py worker-report {id} --phase {N} --status DONE --branch {branch}
门禁失败 3 次:
python harness.py worker-report {id} --phase {N} --status FAILED"
)
b. 等待当前批次所有 Worker 完成:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/dh-python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/harness.py" worker-status
→ 检查 all_done == true
c. 有 FAILED Worker → 停下报告用户
全部 DONE → 合并 worktree 分支,继续下一批次
4. 所有批次完成:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/dh-python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/harness.py" worker-cleanup
bash "${CLAUDE_PLUGIN_ROOT}/scripts/dh-python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/harness.py" update implement DONE
合并策略: 每批次完成后按顺序 git merge --no-ff worker-branch。冲突 → 停下找用户。
降级: Worker 启动失败 → 自动降级为串行模式。不在 git 仓库 → 跳过 worktree 直接操作。
门禁命令来源(优先级):
.claude/dev-config.yml 中定义的 → 项目指定detect-stack.sh 自动检测的 → 通用默认implement 完成后,以下三个阶段同时启动:
1. 更新全部为 IN_PROGRESS:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/dh-python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/harness.py" update audit IN_PROGRESS
bash "${CLAUDE_PLUGIN_ROOT}/scripts/dh-python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/harness.py" update docs IN_PROGRESS
bash "${CLAUDE_PLUGIN_ROOT}/scripts/dh-python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/harness.py" update test IN_PROGRESS
2. 用 background Agent 并行执行三路:
- Agent(name="audit-worker", run_in_background=true):
解析 audit Skill → 执行 → harness.py update audit DONE
- Agent(name="docs-worker", run_in_background=true):
解析 docs Skill → 执行 → harness.py update docs DONE
- Agent(name="test-worker", run_in_background=true):
解析 test Skill → 执行 → harness.py update test DONE
3. 等待三路全部完成(background Agent 完成时会通知)
4. 三路都 DONE → 进入 review 阶段
注意: 每个 background Agent 独立更新自己负责的阶段状态。 filelock 保证并发写入安全。如果任一阶段失败超过 max_retries, 该阶段标记 FAILED,其他阶段继续。全部完成后汇总失败信息。
每个关键节点都要调用:
# 阶段开始
bash "${CLAUDE_PLUGIN_ROOT}/scripts/dh-python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/harness.py" update <stage> IN_PROGRESS
# 阶段完成
bash "${CLAUDE_PLUGIN_ROOT}/scripts/dh-python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/harness.py" update <stage> DONE
# Phase 门禁结果
bash "${CLAUDE_PLUGIN_ROOT}/scripts/dh-python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/harness.py" update implement IN_PROGRESS --phase 1 --gate build=pass --gate test=pass
# 记录错误
bash "${CLAUDE_PLUGIN_ROOT}/scripts/dh-python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/harness.py" update implement IN_PROGRESS --phase 2 --error --auto-fixed
本 Skill 与 Stop Hook 配合工作:
你执行阶段 → 更新 harness-state.json → 你尝试继续执行下一步
|
+── 你成功继续了 → 很好,无需 Hook 介入
|
+── 你停下了(上下文满/回复结束)
→ Stop Hook 检查六道防线(上下文/超时/频率/rate limit/死循环)
→ 通过检查 → 注入 "继续执行 xxx 阶段"
→ 未通过 → 正常停止,保护资源
你应该尽量自己直接推进,Stop Hook 是兜底机制。
用户: /dev
你: 检测到项目: {project_name}
技术栈: {stack}
Skill 解析:
research → L2:research_codebase
audit → L1:audit-logic (项目专用)
test → L3:generic-test (内置通用)
...
未找到进行中的任务。请告诉我:
1. 任务名称
2. 类型(新功能/bugfix/紧急)
3. 涉及模块
用户: /dev
你: 续接任务: {task_name}
当前阶段: implement (Phase 3/4)
上次状态: Phase 2 DONE, Phase 3 PENDING
继续实现 Phase 3...
你: 全流程完成!
┌────────────────────────────────────┐
│ Task: {task_name} │
│ Route: {route} │
│ Stages: {completed}/{total} │
│ Auto-continues: {count} │
│ Errors: {fixed} fixed / {blocking} │
│ Reports: │
│ .claude/reports/audit-*.md │
│ .claude/reports/e2e-*.md │
│ .claude/reports/final-review-*.md│
└────────────────────────────────────┘
请 commit:
git add [文件列表]
git commit -m "{type}: {description}"