Claude Code Skill — 单机双 Agent 开发审查工作流。
在单台机器上同时运行开发者 Agent + 审查者 Agent:开发者 Agent 逐模块实现代码并提交,审查者 Agent 异步轮询每次提交、输出审查结论,基于信号文件驱动完整的开发→审查→合并循环。
最简单的方式 — 把这段话发给 Claude Code 或其他 AI 编码 Agent,它会交互式地完成整个安装和配置过程:
请参考 https://github.com/3Taste/claude-dual-dev-skill/blob/main/docs/INSTALL.md 帮我安装 dual-dev skill
# 全局安装(所有项目可用)
git clone --depth 1 https://github.com/3Taste/claude-dual-dev-skill.git ~/.claude/skills/dual-dev
# 项目级安装(仅当前项目可用)
git clone --depth 1 https://github.com/3Taste/claude-dual-dev-skill.git .claude/skills/dual-dev主仓库 (main/dev)
│
├── [开发者窗口] claude --model <dev-model>
│ worktree: ~/git/myproject-feature
│ 分支: feature/xxx
│ 读提示词 → 逐模块实现 → 写 ready 信号 → 等待审查
│
└── [审查者窗口] claude --model <reviewer-model>
worktree: 同上(只读+运行)
CronCreate 每分钟轮询 → 检测 ready 信号 → 审查 → 写 review 信号
信号文件目录:<worktree>/.claude/signals/
| 文件 | 写入方 | 含义 |
|---|---|---|
ready-<模块>.md |
开发者 | 某模块已实现并提交,请求审查 |
review-<模块>.md |
审查者 | 审查结论(PASS / FAIL + 问题列表) |
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| macOS | 12 (Monterey) | 终端自动化依赖 osascript,Linux/Windows 需手动打开窗口 |
| git | 2.5+ | git worktree 支持 |
| Claude Code CLI | 最新版 | claude 命令需在 PATH 中 |
| bash | 3.2+ | macOS 自带满足要求 |
| Ghostty | 1.3+(推荐) | AppleScript 原生支持,下载地址;未安装自动回退到 Terminal.app |
Linux / Windows 用户:bootstrap.sh 会跳过
osascript步骤并提示手动打开终端,其余功能(worktree、信号文件、提示词渲染)完全可用。
- 进入任意 git 项目根目录
- 在 Claude Code 中输入
/dual-dev - 首次使用:按提示完成 6 步配置:
- Q1:worktree 路径、分支名、基础分支
- Q2:设计文档路径(skill 会自动校验并整理模块清单;或直接描述需求由 Claude 生成)
- Q3:Claude 模型选择
- Q4:提示词来源(内置默认模板 或 自定义文件)
- Q5:特殊要求
- Q5.5:编译/构建命令(mvn / gradle / 自定义 / 无)
- Q6:终端选择(Ghostty 推荐 / Terminal.app)
- 再次使用:skill 检测到上次配置缓存(
.claude/dual-dev-defaults.json),只需回答 Q1、Q2,其余配置自动沿用。如需重新配置可选择走完整流程。 - 两个终端窗口自动打开,提示词自动注入 Claude,无需手动操作
模型 fallback:若指定模型不存在或不可用,Claude 启动时自动降级为默认模型,不会报错退出。
首次运行成功后,skill 将 Q3~Q6 的配置保存至项目根目录:
.claude/dual-dev-defaults.json
下次运行 /dual-dev 时自动读取,只需填写新的工作区路径和功能需求即可快速启动。如需修改配置,选择"重新配置"走完整流程,配置文件会在新一次成功运行后更新。
默认模板(Q4 选 1):bootstrap.sh 将 templates/ 下的模板渲染(替换所有占位符)后存入 worktree,启动 Claude 时以 @<path> 方式自动加载。
自定义提示词(Q4 选 2):直接使用用户指定的文件,原样复制到 worktree,同样自动加载。
两种方式下终端窗口启动命令均为:
# 开发者窗口(bootstrap.sh 自动执行)
claude --model <dev-model> "@<worktree>/.claude/dual-dev-developer-prompt.md"
# 审查者窗口(bootstrap.sh 自动执行)
claude --model <reviewer-model> "@<worktree>/.claude/dual-dev-reviewer-prompt.md"Linux / Windows 用户:osascript 不可用时,bootstrap.sh 会打印上述命令,手动在两个终端中执行即可。
在 Claude Code 中运行(推荐):
/dual-dev cleanup
交互式选择 worktree,自动清理目录、信号文件,并安全删除本地分支。
或手动清理:
git worktree remove "<worktree-path>"
git branch -d "<branch-name>"skill 执行期间禁止以下操作(无论是 Claude 自动执行还是脚本调用):
git branch -D/git branch -d(删除分支)git push --force(强推)git reset --hard(丢弃提交)rm -rf对项目目录(批量删除文件)git clean -fd(清除未追踪文件)
仅允许删除 .claude/signals/review-*.md(审查信号文件读取后清理)。
dual-dev/
├── SKILL.md # skill 定义与 Q&A 流程(含清理流程)
├── README.md # 本文档
├── install.sh # 一键安装脚本
├── scripts/
│ └── bootstrap.sh # 主入口:解析参数、链式执行、ERR 回滚
├── lib/
│ ├── precheck.sh # 环境校验(git/claude/macOS/路径)
│ ├── worktree.sh # git worktree 封装
│ ├── render.sh # 模板占位符替换
│ ├── signals.sh # 信号目录 + .gitignore 管理
│ ├── terminal.sh # osascript 终端自动化
│ └── rollback.sh # 失败回滚
└── templates/
├── dual-dev-developer-prompt.md # 开发者角色提示词模板
└── dual-dev-reviewer-prompt.md # 审查者角色提示词模板
templates/ 下的提示词为默认模板,支持以下占位符:
| 占位符 | 说明 |
|---|---|
{{WORKTREE_PATH}} |
worktree 绝对路径 |
{{BRANCH_NAME}} |
工作分支名 |
{{BASE_BRANCH}} |
基础分支名 |
{{DESIGN_DOCS}} |
设计文档路径 |
{{DEV_MODEL}} |
开发者窗口模型 |
{{REVIEWER_MODEL}} |
审查者窗口模型 |
{{SPECIAL_REQUIREMENTS}} |
特殊要求 |
{{SIGNALS_DIR}} |
信号文件目录路径 |
{{COUNTERPART_PROMPT}} |
对方角色提示词路径 |
直接编辑 templates/ 下的文件即可替换为自己的提示词内容。
MIT