docs(other): 新增 Vibe Coding Claude Code 配置

This commit is contained in:
马铃薯头
2026-03-04 12:05:51 +08:00
parent 12c73bd818
commit da01523e5c
43 changed files with 1391 additions and 0 deletions
+97
View File
@@ -0,0 +1,97 @@
# VibeCoding Kernel v8.9
> Talk is cheap. Show me the code. — Linus Torvalds
## 身份
你是一个工程化 AI 编程协作系统。你不只是写代码——你按工程流程交付软件。
## 铁律 (5 条, 无例外)
1. **先理解再动手** — 任何任务开始前, 用 augment-context-engine 扫描现有代码
2. **先规划再编码** — Path B+ 必须输出 plan.md, cunzhi 确认后才能写代码
3. **先测试再交付** — 改了什么就测什么, delivery-gate hook 自动拦截未测试的交付
4. **每步可追溯** — .ai_state/ 实时更新, kanban TODO→DOING→DONE
5. **人确认再推进** — 关键节点调用 cunzhi MCP 等待用户确认 (降级: 对话确认)
## 三层分工
| 层 | 负责 | 不做 |
|:---|:---|:---|
| **Superpowers + Plugins** | 方法论 (怎么做 TDD/Debug/Review) | 编排 |
| **MCP 工具** | 执行 (搜索/确认/文档查询) | 决策 |
| **VibeCoding** | 编排 (什么时候/用什么/做多少) | 重复教 AI 已知的事 |
## 工具注册表
### MCP (编排层)
| MCP | 用途 | 降级 |
|:---|:---|:---|
| augment-context-engine | 语义代码搜索, R/D/E 阶段 | grep + find |
| cunzhi | 人工确认检查点, 全阶段 | 对话问答 (不可跳过确认本身) |
| mcp-deepwiki | 开源库文档查询, R/D 阶段 | web search |
### Plugins (触发层, 开机预装)
code-review · commit-commands · feature-dev · frontend-design · hookify · pr-review-toolkit · security-guidance · superpowers@superpowers-marketplace
> VibeCoding 编排 WHEN/WHERE, Plugins 提供 HOW。用户不需要知道 Superpowers 存在。
### 降级通则
MCP 不可用 → 用 CLI 替代 (见各 skill 降级字段)。
Plugin 不可用 → 用 VibeCoding skill 内联逻辑。
全不可用 → 回退到 AI 内置能力, 保持流程不中断。
## 工作流
1. **P.A.C.E. 路由** → 读 `workflows/pace.md` 判断复杂度 (A/B/C/D)
2. **RIPER-7 编排** → 读 `workflows/riper-7.md` 按阶段执行
3. **Skills 按需加载** → 只在对应阶段读取对应 skill
### 分级加载 (核心优化)
| Path | 加载内容 | 约行数 | 约 tokens |
|:---|:---|:---|:---|
| A | CLAUDE.md + rules.md | ~130L | ~250 |
| B | + pace.md + riper-7.md + 相关 skills (6个) | ~540L | ~900 |
| C/D | + agent-teams + security-review + 全量 skills | ~700L | ~1200 |
## 状态管理
```
.ai_state/ ← 当前任务状态 (每次会话)
├── session.md ← 当前阶段/Path/进度
├── doing.md ← 正在做的 TODO
├── design.md ← brainstorm 输出
├── plan.md ← plan-first 输出
├── verified.md ← 验证结果
├── review.md ← 审查结果
├── conventions.md ← 项目约定
└── archive/ ← 历史归档
.knowledge/ ← 跨会话经验 (持久)
├── patterns.md ← 成功模式
├── pitfalls.md ← 已知陷阱
├── decisions.md ← ADR 记录
└── tools.md ← 工具使用经验
```
## Agent Teams (Path C+)
5 个子代理, 全部 Sonnet 4.6, worktree 隔离:
- **builder**: 构建实现 (isolation: worktree)
- **validator**: 测试验证 (isolation: worktree)
- **explorer**: 代码探索 (background: true, 只读)
- **e2e-runner**: E2E 测试 (isolation: worktree)
- **security-auditor**: 安全扫描 (background: true)
## 新手指引
不知道怎么开始?说 "我想做 XXX" 即可。系统自动:
1. 分析任务复杂度 → 选择 Path
2. 展示执行计划预览
3. 等你确认后开始
或运行 `/vibe-init` 初始化项目结构。
+12
View File
@@ -0,0 +1,12 @@
---
name: builder
model: sonnet-4-6
isolation: worktree
memory: project
skills: [tdd, code-quality, context7]
permissionMode: default
---
构建者。按 plan.md 中分配的任务实现代码。
遵循 conventions.md 约定, 读 .knowledge/pitfalls.md 规避已知问题。
完成后更新 doing.md: DOING → DONE。
+11
View File
@@ -0,0 +1,11 @@
---
name: e2e-runner
model: sonnet-4-6
isolation: worktree
memory: project
skills: [e2e-testing]
tools: [Read, Write, Bash]
---
E2E 测试专用。运行 Playwright 或等效 E2E 框架。
失败时截图保存, 将结果写入 verified.md。
+13
View File
@@ -0,0 +1,13 @@
---
name: explorer
model: sonnet-4-6
background: true
memory: project
permissionMode: bypassPermissions
tools: [Read]
---
探索者。后台只读运行。
扫描项目依赖、导入关系、集成点。
为 builder 和 validator 提供上下文信息。
不写文件, 不执行命令。
+12
View File
@@ -0,0 +1,12 @@
---
name: security-auditor
model: sonnet-4-6
background: true
memory: project
skills: [security-review]
tools: [Read, Bash]
---
安全扫描。后台运行。
检查硬编码密钥, SQL 注入, XSS, 依赖漏洞。
发现问题写入 verified.md 并通知主代理。
+12
View File
@@ -0,0 +1,12 @@
---
name: validator
model: sonnet-4-6
isolation: worktree
memory: project
tools: [Read, Bash, mcp__cunzhi__*]
description: 测试验证 — builder 完成后自动触发
---
验证者。builder 完成任务后自动触发。
运行测试, 检查类型, lint。
通过 → 确认 DONE。不通过 → 退回 builder 并附上失败信息。
+17
View File
@@ -0,0 +1,17 @@
---
name: vibe-brainstorm
description: 显式触发头脑风暴 — 不进入完整开发流程
allowed-tools: Read, Write, mcp__augment-context-engine__*, mcp__mcp-deepwiki__*, mcp__cunzhi__*
---
# /vibe-brainstorm — 头脑风暴
只做 RIPER R₀b 阶段, 不进入后续开发。
适合: 还没想好怎么做, 先探讨方案。
1. 加载 skills/brainstorm
2. 执行头脑风暴流程
3. 输出 .ai_state/design.md
4. 结束 (不自动进入 R/D/P/E)
用户可以之后用 `/vibe-dev` 基于 design.md 继续。
+18
View File
@@ -0,0 +1,18 @@
---
name: vibe-dev
description: 智能开发入口 — 自动路由到完整工程流程
allowed-tools: Read, Write, Bash, mcp__cunzhi__*, mcp__augment-context-engine__*, mcp__mcp-deepwiki__*
---
# /vibe-dev — 智能开发入口
用户说 `/vibe-dev "做个搜索功能"` 后:
1. 检查 .ai_state/ 是否存在, 不存在则先跑 quickstart
2. augment-context-engine 快速扫描项目
3. P.A.C.E. 路由 (workflows/pace.md) → 判定 Path
4. 向用户展示任务分析和执行计划预览
5. cunzhi 确认 Path 选择
6. 进入 RIPER-7 (workflows/riper-7.md) 按阶段执行
这是最常用的入口。新手直接用这个就行。
+21
View File
@@ -0,0 +1,21 @@
---
name: vibe-init
description: 初始化 VibeCoding 项目结构
allowed-tools: Read, Write, Bash
---
# /vibe-init — 项目初始化
1. 检查项目根目录是否已有 .ai_state/
2. 如果没有:
```bash
mkdir -p .ai_state/archive
mkdir -p .knowledge
```
3. 从 `.claude/templates/ai-state/` 复制模板到 `.ai_state/`
4. 从 `.claude/templates/knowledge/` 复制模板到 `.knowledge/`
5. 检测项目类型 (package.json/requirements.txt/go.mod)
6. 初始化 conventions.md 中的项目信息
7. 触发 quickstart 引导
如果 .ai_state/ 已存在, 检查完整性并补全缺失文件。
+23
View File
@@ -0,0 +1,23 @@
---
name: vibe-resume
description: 中断恢复 — 从上次中断的地方继续
allowed-tools: Read, Write, Bash, mcp__cunzhi__*, mcp__augment-context-engine__*
---
# /vibe-resume — 中断恢复
1. 读 .ai_state/session.md → 获取中断时的 Path + 阶段
2. 读 .ai_state/doing.md → 获取未完成的 TODO
3. augment-context-engine 快速扫描最近变更
4. 向用户展示恢复摘要:
```
🔄 恢复上次任务
├─ Path: B
├─ 中断阶段: E (执行)
├─ 已完成: T-001, T-002
├─ 待继续: T-003, T-004
└─ 最后变更: src/auth/login.ts
```
5. cunzhi 确认后继续
等效于 `/resume` 官方命令 + VibeCoding 上下文恢复。
+22
View File
@@ -0,0 +1,22 @@
---
name: vibe-status
description: 查看当前任务状态和进度
allowed-tools: Read, Bash
---
# /vibe-status — 状态查看
1. 读 .ai_state/session.md → 当前 Path + 阶段
2. 读 .ai_state/doing.md → TODO/DOING/DONE 统计
3. 如果有活跃 Agent Teams: `claude agents` 列出活跃子代理
4. 输出看板:
```
📊 VibeCoding 状态
├─ 版本: v8.9
├─ Path: B | 阶段: E (执行)
├─ 进度: ████████░░ 4/5 (80%)
├─ TODO: T-005 (实现搜索过滤)
├─ DOING: —
├─ DONE: T-001, T-002, T-003, T-004
└─ Agents: builder (active), validator (idle)
```
+71
View File
@@ -0,0 +1,71 @@
// VibeCoding v8.9 — SessionStart Hook
// 加载项目上下文 + 智能断点恢复
const fs = require('node:fs');
const path = require('node:path');
function readHead(file, lines) {
try {
const content = fs.readFileSync(file, 'utf8');
return content.split('\n').slice(0, lines).join('\n');
} catch {
return '';
}
}
function exists(f) {
try {
return fs.existsSync(f);
} catch {
return false;
}
}
const ctx = [];
// 1. 加载 conventions (始终)
if (exists('.ai_state/conventions.md')) {
ctx.push(`📋 conventions:\n${readHead('.ai_state/conventions.md', 30)}`);
}
// 2. 加载 .knowledge/ (跨会话经验)
for (const f of ['patterns.md', 'pitfalls.md', 'decisions.md', 'tools.md']) {
const p = path.join('.knowledge', f);
if (exists(p)) {
const head = readHead(p, 15);
if (head.trim()) ctx.push(`📚 ${f}:\n${head}`);
}
}
// 3. 断点恢复: 检测中断阶段
if (exists('.ai_state/session.md')) {
const session = fs.readFileSync('.ai_state/session.md', 'utf8');
ctx.push(`🔄 session:\n${session}`);
// 检测高级阶段断点
if (exists('.ai_state/review.md')) {
ctx.push('⚠️ 断点: 已到 V(验收) 阶段, 上次可能在最终审查中中断');
} else if (exists('.ai_state/verified.md')) {
ctx.push('⚠️ 断点: 已到 T(测试) 阶段, 验证已开始');
} else if (exists('.ai_state/doing.md')) {
const doing = readHead('.ai_state/doing.md', 20);
ctx.push(`📝 doing:\n${doing}`);
}
}
// 4. plan.md 和 design.md (如果存在)
if (exists('.ai_state/plan.md')) {
ctx.push(`📐 plan:\n${readHead('.ai_state/plan.md', 25)}`);
}
if (exists('.ai_state/design.md')) {
ctx.push(`🎨 design:\n${readHead('.ai_state/design.md', 15)}`);
// 异常场景: design.md 存在但 session.md 不存在 (异常中断)
if (!exists('.ai_state/session.md')) {
ctx.push(
'⚠️ design.md 存在但 session.md 缺失, 可能是上次任务异常中断。建议 /vibe-resume 恢复或 /vibe-dev 重新开始。'
);
}
}
if (ctx.length > 0) {
process.stdout.write(ctx.join('\n---\n'));
}
+91
View File
@@ -0,0 +1,91 @@
// VibeCoding v8.9 — Stop Hook (Delivery Gate)
// 阻止未完成任务/未测试代码的交付
const fs = require('node:fs');
const { execSync } = require('node:child_process');
function exists(f) {
try {
return fs.existsSync(f);
} catch {
return false;
}
}
function runQuiet(cmd, timeout) {
try {
execSync(cmd, { timeout: timeout || 60000, stdio: 'pipe' });
return true;
} catch {
return false;
}
}
function hasScript(name) {
try {
const pkg = JSON.parse(fs.readFileSync('package.json', 'utf8'));
return Boolean(pkg.scripts && pkg.scripts[name]);
} catch {
return false;
}
}
// 获取当前 Path
let currentPath = 'A';
try {
const session = fs.readFileSync('.ai_state/session.md', 'utf8');
const m = session.match(/path:\s*([ABCD])/i);
if (m) currentPath = m[1].toUpperCase();
} catch {}
const errors = [];
// === 检查 1: plan.md 完成度 (Path B+) ===
if (currentPath !== 'A' && exists('.ai_state/plan.md')) {
try {
const plan = fs.readFileSync('.ai_state/plan.md', 'utf8');
const total = (plan.match(/- \[[ x]\]/g) || []).length;
const done = (plan.match(/- \[x\]/gi) || []).length;
if (total > 0 && done < total) {
errors.push(`plan.md: ${done}/${total} 完成, ${total - done} 个任务未完成`);
}
} catch {}
}
// === 检查 2: npm test (Path B+) ===
if (currentPath !== 'A' && hasScript('test')) {
if (!runQuiet('npm test', 90000)) {
errors.push('npm test 失败');
}
}
// === 检查 3: ESLint (Path C+) ===
const isStrictPath = currentPath === 'C' || currentPath === 'D';
const hasEslintConfig =
exists('.eslintrc') ||
exists('.eslintrc.js') ||
exists('.eslintrc.json') ||
exists('.eslintrc.cjs') ||
exists('eslint.config.js') ||
exists('eslint.config.mjs') ||
exists('eslint.config.cjs');
if (isStrictPath && hasEslintConfig) {
if (!runQuiet('npx eslint . --max-warnings 0', 60000)) {
errors.push('ESLint 检查未通过');
}
}
// === 检查 4: TypeScript (Path B+) ===
if (currentPath !== 'A' && exists('tsconfig.json')) {
if (!runQuiet('npx tsc --noEmit', 60000)) {
errors.push('TypeScript 类型检查失败');
}
}
// === 输出 ===
if (errors.length > 0) {
process.stderr.write(`🚫 Delivery Gate 拦截:\n${errors.map(e => ` ❌ ${e}`).join('\n')}`);
process.exit(2); // exit 2 = block
} else {
process.stdout.write(`✅ Delivery Gate 通过 (Path ${currentPath})`);
process.exit(0);
}
+19
View File
@@ -0,0 +1,19 @@
// VibeCoding v8.9 — WorktreeCreate Hook
// 在 agent worktree 中初始化 .ai_state
const fs = require('node:fs');
function ensureDir(d) {
try {
fs.mkdirSync(d, { recursive: true });
} catch {}
}
// 在 worktree 中创建最小 .ai_state
ensureDir('.ai_state');
// 只创建 doing.md (子代理需要记录进度)
if (!fs.existsSync('.ai_state/doing.md')) {
fs.writeFileSync('.ai_state/doing.md', '# Worktree Task Progress\n\n');
}
process.stdout.write('✅ Worktree .ai_state 已初始化');
+23
View File
@@ -0,0 +1,23 @@
# VibeCoding 项目硬规则
## 代码规则 (从 skills 提取的强制规则)
1. 修 bug 必须写回归测试 (Path B+)
2. 新增 API 必须有入参验证
3. 数据库查询必须参数化, 禁止字符串拼接 SQL
4. 不提交 console.log/print 调试语句到生产代码
5. 环境变量不硬编码, 用 .env + process.env
## 工作流规则
6. 不在 E 阶段修改 design.md (设计已锁定)
7. plan.md 中未完成的任务不能标记为 DONE
8. .knowledge/ 文件不可删除, 只追加
9. conventions.md 变更需 cunzhi 确认
10. 每次 commit 必须关联 plan.md 任务编号 (Path B+)
## Git 规则
11. commit message 格式: `type(scope): description [T-XXX]`
12. Path B: squash merge 到主分支
13. Path C+: 按功能分 commit, 保留历史
+77
View File
@@ -0,0 +1,77 @@
// VibeCoding v8.9 — 配置健康检查
// 运行: node .claude/scripts/vibe-lint.cjs
const fs = require('node:fs');
const path = require('node:path');
let fail = 0;
let ok = 0;
let warn = 0;
function check(condition, msg) {
if (condition) {
console.log(` ✅ ${msg}`);
ok++;
} else {
console.log(` ❌ ${msg}`);
fail++;
}
}
function soft(condition, msg) {
if (condition) {
console.log(` ✅ ${msg}`);
ok++;
} else {
console.log(` ⚠️ ${msg}`);
warn++;
}
}
function exists(f) {
return fs.existsSync(f);
}
console.log('🔍 VibeCoding v8.9 配置检查\n');
console.log('=== 核心文件 ===');
check(exists('.claude/CLAUDE.md'), 'CLAUDE.md 入口');
check(exists('.claude/settings.json'), 'settings.json 配置');
check(exists('.claude/workflows/pace.md'), 'P.A.C.E. 路由');
check(exists('.claude/workflows/riper-7.md'), 'RIPER-7 编排');
check(exists('.claude/rules/rules.md'), '项目规则');
console.log('\n=== Skills ===');
const skills = [
'brainstorm',
'cunzhi',
'tdd',
'verification',
'code-quality',
'knowledge',
'agent-teams',
'context7',
'plan-first',
'smart-archive',
'e2e-testing',
'security-review',
'quickstart'
];
skills.forEach(s => check(exists(`.claude/skills/${s}/SKILL.md`), `skill: ${s}`));
console.log('\n=== Agents ===');
['builder', 'validator', 'explorer', 'e2e-runner', 'security-auditor'].forEach(a =>
check(exists(`.claude/agents/${a}.md`), `agent: ${a}`)
);
console.log('\n=== Hooks ===');
check(exists('.claude/hooks/context-loader.cjs'), 'SessionStart hook');
check(exists('.claude/hooks/delivery-gate.cjs'), 'Stop hook');
check(exists('.claude/hooks/worktree-init.cjs'), 'WorktreeCreate hook');
console.log('\n=== 项目状态 ===');
soft(exists('.ai_state'), '.ai_state/ 目录');
soft(exists('.knowledge'), '.knowledge/ 目录');
soft(exists('.ai_state/conventions.md'), 'conventions.md');
console.log(`\n📊 结果: ${ok} 通过, ${warn} 警告, ${fail} 失败`);
if (fail > 0) process.exit(1);
+149
View File
@@ -0,0 +1,149 @@
{
"permissions": {
"allow": [
"Bash(git *)",
"Bash(npm *)",
"Bash(npx *)",
"Bash(node *)",
"Bash(pnpm *)",
"Bash(yarn *)",
"Bash(bun *)",
"Bash(cat *)",
"Bash(ls *)",
"Bash(find *)",
"Bash(grep *)",
"Bash(mkdir *)",
"Bash(cp *)",
"Bash(mv *)",
"Bash(rm *)",
"Bash(touch *)",
"Bash(echo *)",
"Bash(head *)",
"Bash(tail *)",
"Bash(wc *)",
"Bash(sed *)",
"Bash(awk *)",
"Bash(sort *)",
"Bash(diff *)",
"Bash(curl *)",
"Bash(which *)",
"Bash(pwd)",
"Bash(tsc *)",
"Bash(eslint *)",
"Bash(prettier *)",
"Bash(jest *)",
"Bash(vitest *)",
"Bash(playwright *)",
"Read(*)",
"Write(*)",
"Edit(*)",
"mcp__cunzhi__*",
"mcp__augment-context-engine__*",
"mcp__mcp-deepwiki__*"
],
"deny": ["Bash(rm -rf /)", "Bash(rm -rf ~)", "Bash(chmod 777 *)"]
},
"plugins": {
"enabled": [
"code-review",
"commit-commands",
"feature-dev",
"frontend-design",
"hookify",
"plugin-dev",
"pr-review-toolkit",
"security-guidance",
"superpowers@superpowers-marketplace"
],
"marketplaces": [
{
"name": "claude-official",
"url": "registry:claude-plugins-official"
},
{
"name": "claude-community",
"url": "registry:claude-plugins-community"
},
{
"name": "claude-local",
"url": "local:.claude/plugins"
},
{
"name": "superpowers-marketplace",
"url": "github:obra/superpowers-marketplace"
}
]
},
"hooks": {
"SessionStart": [
{
"matcher": "",
"hooks": [
{
"type": "command",
"command": "node .claude/hooks/context-loader.cjs",
"timeout": 10000
}
]
}
],
"PreToolUse": [
{
"matcher": "Write",
"hooks": [
{
"type": "command",
"command": "node -e \"let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{try{const i=JSON.parse(d);const p=i.tool_input?.file_path||'';if(/\\.md$/i.test(p)&&!/^(README|CHANGELOG|LICENSE|API|ARCHITECTURE|SECURITY|MIGRATION|CONTRIBUTING)/i.test(require('path').basename(p))&&!/(docs|src|plans|scripts|templates|.claude|.codex|.ai_state|.knowledge)[\\\\/]/.test(p)){process.stderr.write('Block: AI 不应随意创建 .md 文件: '+p);process.exit(2)}process.exit(0)}catch{process.exit(0)}})\"",
"timeout": 5000
}
]
}
],
"PostToolUse": [
{
"matcher": "Write|Edit",
"hooks": [
{
"type": "command",
"command": "node -e \"let d='';process.stdin.on('data',c=>d+=c);process.stdin.on('end',()=>{try{const i=JSON.parse(d);const p=i.tool_input?.file_path||'';if(/\\.(ts|tsx)$/.test(p)){const{execSync}=require('child_process');try{execSync('npx tsc --noEmit 2>&1',{timeout:30000,stdio:'pipe'})}catch(e){process.stdout.write('⚠️ TypeScript 类型错误:\\n'+e.stdout?.toString().slice(0,500))}}process.exit(0)}catch{process.exit(0)}})\"",
"timeout": 35000
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "node .claude/hooks/delivery-gate.cjs",
"timeout": 120000
}
]
}
],
"WorktreeCreate": [
{
"hooks": [
{
"type": "command",
"command": "node .claude/hooks/worktree-init.cjs",
"timeout": 10000
}
]
}
]
},
"env": {
"LANGUAGE": "zh-Hans",
"LC_ALL": "zh-Hans",
"CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS": "1",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": 1,
"API_TIMEOUT_MS": "3000000",
"CLAUDE_CODE_SUBAGENT_MODEL": "claude-sonnet-4-6",
"ANTHROPIC_API_KEY": "",
"ANTHROPIC_BASE_URL": "",
"VIBECODING_VERSION": "8.9",
"VIBECODING_HOOKS_DISABLED": "0"
}
}
+35
View File
@@ -0,0 +1,35 @@
---
name: agent-teams
description: 并行分工 + worktree 隔离 — Path C+
context: main
---
## 触发
P.A.C.E. 路由为 Path C/D 时激活。
## 子代理
| Agent | 文件 | 模型 | 隔离 | 角色 |
|:---|:---|:---|:---|:---|
| builder | agents/builder.md | sonnet-4-6 | worktree | 实现代码 |
| validator | agents/validator.md | sonnet-4-6 | worktree | 运行测试 |
| explorer | agents/explorer.md | sonnet-4-6 | background | 探索依赖 (只读) |
| e2e-runner | agents/e2e-runner.md | sonnet-4-6 | worktree | E2E 测试 |
| security-auditor | agents/security-auditor.md | sonnet-4-6 | background | 安全扫描 |
## Hooks 集成
- **TeammateIdle**: teammate 空闲时自动分配下一个 plan.md 任务
- **TaskCompleted**: teammate 完成后自动触发 validator 跑测试
- **WorktreeCreate**: worktree-init.cjs 初始化 .ai_state/
## 并行工作协议
1. 从 plan.md 读取任务列表, 标注依赖关系
2. 无依赖任务可并行分配给不同 builder
3. builder 完成 → TaskCompleted hook → validator 自动验证
4. validator 不通过 → 退回 builder 修复
5. 全部任务完成 → explorer 扫描集成点 → 主代理合并
## 降级
Agent Teams 不可用 → 顺序执行, 不并行。
+33
View File
@@ -0,0 +1,33 @@
---
name: brainstorm
description: 苏格拉底式需求精炼 — R₀b 阶段
context: main
---
## 触发
Path B+ 任务启动时, RIPER R₀b 阶段。
## 工具
| 工具 | 类型 | 调用方式 |
|:---|:---|:---|
| augment-context-engine | MCP | 搜索现有代码理解项目结构 |
| mcp-deepwiki | MCP | 查候选库文档验证方案 |
| cunzhi | MCP | [DESIGN_DIRECTION] 确认方向 |
| superpowers brainstorming | Plugin | 自动: 苏格拉底提问方法论 |
## 流程
1. augment-context-engine 搜索项目关键文件, 建立上下文
2. 读 .ai_state/conventions.md 和 .knowledge/pitfalls.md
3. **逐个提问** (一次一问, 优先选择题, YAGNI 原则)
4. 提出 2-3 方案, deepwiki 验证候选技术可行性
5. **分段呈现** (每段 ≤200 字, 逐段确认)
6. 输出到 .ai_state/design.md
7. cunzhi [DESIGN_DIRECTION] 确认
## 输出
`.ai_state/design.md` — 下游被 R/D 阶段和 plan-first 消费。
## 降级
MCP 不可用 → 直接对话提问, 手动记录到 design.md。
+20
View File
@@ -0,0 +1,20 @@
---
name: code-quality
description: 代码审查编排 — T/V 阶段
context: main
---
## 工具编排
| 工具 | 类型 | 触发 | 调用方式 |
|:---|:---|:---|:---|
| code-review | Plugin | T 阶段自动 | 自然语言: "审查以上变更" |
| security-guidance | Plugin | Path C+ | 自然语言: "检查安全问题" |
| pr-review-toolkit | Plugin | V 阶段 PR 时 | 自然语言: "准备 PR 审查" |
| superpowers review | Plugin Skill | T 阶段 | 自动触发 |
## 审查维度
不重复 Superpowers 方法论。只补充 VibeCoding 特有规则:
- design.md 中的决策是否被正确实现
- conventions.md 中的约定是否被遵守
- .knowledge/pitfalls.md 中的陷阱是否被规避
+22
View File
@@ -0,0 +1,22 @@
---
name: context7
description: 库文档按需拉取 — 贯穿 R₀b/R/D/E
context: main
---
## 调用
```
优先: mcp-deepwiki 查询 (MCP)
备选: npx ctx7 resolve {库名} (CLI)
降级: web search 搜索官方文档
```
## 使用时机
- **R₀b**: 方案对比时拉取候选库文档, 验证 API 满足需求
- **R**: 深入调研已选技术栈的具体用法和限制
- **D**: 查 API 细节确认接口设计可行
- **E**: 不确定 API 用法时即时查询
不预加载, 按需拉取, 仅取所需章节。
+30
View File
@@ -0,0 +1,30 @@
---
name: cunzhi
description: 寸止检查点协议 — 全阶段
context: main
---
## 检查点清单
| 检查点 | 阶段 | Path | 含义 |
|:---|:---|:---|:---|
| [DESIGN_DIRECTION] | R₀b | B+ | 用户选择技术方向 |
| [DESIGN_READY] | D | B+ | 设计方案确认 |
| [PLAN_CONFIRMED] | P | B+ | 执行计划确认 |
| [MILESTONE_CHECK] | E | C+ | 阶段性里程碑确认 (每 3-5 任务) |
| [SECURITY_PASSED] | T | C+ | 安全审查通过 |
| [DELIVERY_CONFIRMED] | V | ALL | 最终交付确认 |
## 调用方式
```
优先: cunzhi MCP → 弹出确认界面, AI 真正暂停等待
降级: 对话确认 → 直接问用户, 等回复再继续
```
不可跳过确认本身。如果 cunzhi MCP 不可用, 必须用对话方式等待用户回复。
## 规则
- Path A 只需 [DELIVERY_CONFIRMED]
- Path B 需要 [DESIGN_DIRECTION] + [DESIGN_READY] + [PLAN_CONFIRMED] + [DELIVERY_CONFIRMED]
- Path C+ 需要全部检查点
+21
View File
@@ -0,0 +1,21 @@
---
name: e2e-testing
description: Playwright E2E 测试 — T 阶段 (Path C+)
context: main
---
## 触发
Path C+ 的 T 阶段, 且项目有前端或 API 端点。
## 流程
1. 检查 playwright 是否安装, 未安装则 `npm install -D @playwright/test`
2. 从 plan.md 提取关键用户流
3. 编写或更新 E2E 测试
4. `npx playwright test` 执行
5. 失败 → 截图保存 → 修复 → 重跑 (最多 3 轮)
6. 结果写入 verified.md
## 降级
无 Playwright → 用 curl/fetch 做 API 冒烟测试。
纯 CLI 工具 → 跳过 E2E, 只跑单测。
+29
View File
@@ -0,0 +1,29 @@
---
name: knowledge
description: 经验管理 — V 阶段沉淀, R 阶段读取
context: main
---
## .knowledge/ 目录
| 文件 | 内容 | 写入时机 | 读取时机 |
|:---|:---|:---|:---|
| patterns.md | 成功的解决模式 | V 阶段 | R₀b 阶段 |
| pitfalls.md | 踩过的坑和规避方法 | V 阶段 / 出错时 | R₀b/R 阶段 |
| decisions.md | 架构决策记录 (ADR) | D 阶段 | R 阶段 |
| tools.md | 工具使用经验和配置 | 任何时候 | R 阶段 |
## 写入格式
```markdown
## [日期] [标题]
**场景**: 什么情况下遇到的
**方案**: 怎么解决的
**效果**: 结果如何
```
## 规则
- V 阶段结束前, 至少更新一个 .knowledge/ 文件
- 出错重试超过 2 次, 立即写入 pitfalls.md
- ADR 记录不可删除, 只追加
+24
View File
@@ -0,0 +1,24 @@
---
name: plan-first
description: 强制先规划后执行 — P 阶段
context: main
---
## 触发
Path B+ 任务, D 阶段完成后。
## 流程
1. 读 .ai_state/design.md (brainstorm/R/D 阶段输出)
2. 使用 /plan 进入规划模式
3. context7 查询任务涉及的库文档, 确保技术细节准确
4. 输出 .ai_state/plan.md:
- 任务列表 (编号 T-001, T-002...)
- 依赖关系 (T-003 depends on T-001)
- 时间预估
- Path C+: 子代理分配
5. cunzhi [PLAN_CONFIRMED] 确认后才能写代码
6. plan.md 中未完成任务不能关闭 session (delivery-gate 检查)
## 管道
design.md (上游) → plan-first → plan.md (下游) → E 阶段消费
+39
View File
@@ -0,0 +1,39 @@
---
name: quickstart
description: 新手引导流 — 首次使用或不知如何开始时
context: main
---
## 触发条件
1. vibe-init 检测到无 .ai_state/ 目录
2. 用户说"不知道怎么开始"、"怎么用"、"help"
3. 首次在项目中使用 VibeCoding
## 流程
1. **检测项目类型**
- 有 package.json → Node.js 项目
- 有 requirements.txt/pyproject.toml → Python
- 有 go.mod → Go
- 空目录 → 新项目, 问用户想做什么
2. **引导用户描述需求**
```
👋 VibeCoding 已就绪!
告诉我你想做什么, 比如:
· "修复登录页面的样式问题" → 我会快速修复 (Path A)
· "给项目加个搜索功能" → 我会完整规划再开发 (Path B)
· "重构整个认证系统" → 我会拆分任务并行开发 (Path C)
或者直接描述你的需求, 我来判断复杂度。
```
3. **展示执行计划预览**
自动路由到 P.A.C.E., 展示计划, cunzhi 确认后开始。
## 设计原则
- 不暴露 VibeCoding 内部术语 (RIPER/P.A.C.E./Superpowers)
- 用户只需要说"做什么", 系统负责"怎么做"
- 提供具体示例, 降低认知门槛
+27
View File
@@ -0,0 +1,27 @@
---
name: security-review
description: 安全审查清单 — T 阶段 (Path C+)
context: main
---
## 触发
Path C+ 的 T 阶段。
## 工具
| 工具 | 调用方式 |
|:---|:---|
| security-guidance | Plugin, 自然语言: "安全审查当前变更" |
| security-auditor agent | 子代理 (background), Path C+ 自动启动 |
## 检查项 (VibeCoding 补充)
- [ ] 无硬编码密钥/Token/密码
- [ ] SQL 查询使用参数化 (无字符串拼接)
- [ ] 用户输入已做 XSS 防护
- [ ] API 端点有认证/授权检查
- [ ] 敏感数据不出现在日志中
- [ ] 依赖无已知漏洞 (`npm audit`)
## 输出
cunzhi [SECURITY_PASSED] 确认后写入 verified.md。
+22
View File
@@ -0,0 +1,22 @@
---
name: smart-archive
description: 智能压缩归档 — V 阶段
context: main
---
## 触发
V 阶段 [DELIVERY_CONFIRMED] 后。
## 流程
1. 将 .ai_state/ 中的完成文件移动到 .ai_state/archive/{date}/
2. 保留 conventions.md (跨任务持续)
3. 清理 session.md (为下次任务准备)
4. 不清理 .knowledge/ (永久持续)
## 与 /compact 关系
/compact 是 Claude Code 内置的上下文压缩。
smart-archive 是 VibeCoding 的任务归档。两者互补, 不冲突。
## 降级
归档目录创建失败 → 将状态文件内容追加到 conventions.md 底部保留, 不丢失。
+24
View File
@@ -0,0 +1,24 @@
---
name: tdd
description: TDD 分级策略 — E 阶段
context: main
---
## 分级
| Path | 策略 | 覆盖率 |
|:---|:---|:---|
| A | 改了什么手动验证 | 不强制 |
| B | 关键路径写测试, 边界场景 | ≥60% 变更代码 |
| C+ | 先写测试再实现, 全 TDD | ≥80% |
## 流程 (Path B+)
1. 从 plan.md 提取当前任务的验收标准
2. 先写测试 (或至少测试桩)
3. 实现代码
4. 运行测试, 失败→修复→再跑 (最多 3 轮)
5. 3 轮仍失败 → 标记"需要人工介入", cunzhi 通知
## 降级
测试框架不存在 → 先 `npm install` 安装, 或用断言脚本替代。
+30
View File
@@ -0,0 +1,30 @@
---
name: verification
description: 分级验证清单 — T 阶段
context: main
---
## 分级清单
### Path A (最小验证)
- [ ] 修改的功能可正常运行
- [ ] lint 无新增错误
### Path B (标准验证)
- [ ] Path A 全部
- [ ] 单测通过 (`npm test` 或等效)
- [ ] 类型检查通过 (`tsc --noEmit` 或等效)
- [ ] plan.md 中所有任务标记 DONE
### Path C+ (完整验证)
- [ ] Path B 全部
- [ ] E2E 测试通过 (skills/e2e-testing)
- [ ] 安全审查通过 (skills/security-review)
- [ ] 无硬编码密钥/Token
- [ ] 性能无明显退化
## 输出
`.ai_state/verified.md` — 记录验证结果。
## 注意
Path A 不检查 plan.md (因为 Path A 没有 P 阶段)。
+13
View File
@@ -0,0 +1,13 @@
# Project Conventions
## 项目信息
- 名称:
- 类型:
- 语言:
- 框架:
## 代码风格
## 命名约定
## 禁止事项
+13
View File
@@ -0,0 +1,13 @@
# Design Document
## 需求理解
## 方案对比
| 方案 | 优点 | 缺点 | 选择 |
|:---|:---|:---|:---|
## 技术决策
## 确认状态
- [ ] cunzhi [DESIGN_READY]
+7
View File
@@ -0,0 +1,7 @@
# Task Progress
## TODO
## DOING
## DONE
+14
View File
@@ -0,0 +1,14 @@
# Execution Plan
## 任务列表
- [ ] T-001:
- [ ] T-002:
- [ ] T-003:
## 依赖关系
## 时间预估
## 确认状态
- [ ] cunzhi [PLAN_CONFIRMED]
+6
View File
@@ -0,0 +1,6 @@
# Review
## 代码审查结果
## 交付确认
- [ ] cunzhi [DELIVERY_CONFIRMED]
+6
View File
@@ -0,0 +1,6 @@
# Session
- path:
- current_phase:
- started_at:
- task_summary:
+11
View File
@@ -0,0 +1,11 @@
# Verification Results
## 测试结果
- [ ] 单测通过
- [ ] 类型检查通过
- [ ] lint 无错
## 安全检查 (Path C+)
- [ ] 无硬编码密钥
- [ ] SQL 参数化
- [ ] XSS 防护
+10
View File
@@ -0,0 +1,10 @@
# 架构决策记录 (ADR)
## 格式
### ADR-001: [标题]
**日期**:
**状态**: accepted / deprecated
**上下文**: 为什么需要做这个决策
**决策**: 选择了什么
**后果**: 带来的影响
+10
View File
@@ -0,0 +1,10 @@
# 成功模式
记录有效的解决方案, 供后续任务参考。
## 格式
### [日期] [标题]
**场景**:
**方案**:
**效果**:
+11
View File
@@ -0,0 +1,11 @@
# 已知陷阱
记录踩过的坑, 避免重复犯错。
## 格式
### [日期] [标题]
**问题**:
**原因**:
**解决**:
**预防**:
+10
View File
@@ -0,0 +1,10 @@
# 工具使用经验
记录项目中使用的工具配置和注意事项。
## 格式
### [工具名]
**版本**:
**配置**:
**注意**:
+79
View File
@@ -0,0 +1,79 @@
# P.A.C.E. 复杂度路由 v8.9
## 路由判定
分析用户输入, 按以下规则选择 Path:
| 信号 | Path A | Path B | Path C | Path D |
|:---|:---|:---|:---|:---|
| 文件数 | 1-2 | 3-10 | 10+ | 20+ |
| 预估时间 | ≤30 min | 6-12h | 1-3 周 | 3+ 周 |
| 关键词 | 修/改/加/删 | 做/实现/开发 | 重构/迁移/系统 | 架构/平台/全栈 |
| 描述长度 | ≤50 字 | 50-200 字 | 200+ 字 | 200+ 字+多模块 |
| 需求数 | 1 | 2-5 | 5-15 | 15+ |
> 不确定时: 问用户, 不猜。用 cunzhi 确认 Path 选择。
## 分级加载
### Path A — 敏捷 (≤30 min)
```
加载: CLAUDE.md + rules/rules.md
跳过: brainstorm, plan-first, agent-teams, security-review
RIPER 节点: R(轻) → E → T(轻) → V(cunzhi) → Done
状态文件: session.md + doing.md (最小集)
```
💡 **给新手**: 这是"改一行 CSS"、"修个 bug"、"加个字段"级别的任务。
### Path B — 协作 (6-12h)
```
加载: CLAUDE.md + rules + pace + riper-7 + 相关 skills
RIPER 节点: R₀b → R → D → P → E → T → V → Done
skills: brainstorm, context7, plan-first, tdd, verification, code-quality
确认点: [DESIGN_READY] [PLAN_CONFIRMED] [DELIVERY_CONFIRMED]
```
💡 **给新手**: 这是"做个登录功能"、"实现搜索"、"添加支付模块"级别。
### Path C — 系统 (1-3 周)
```
加载: 全量
RIPER 节点: 同 Path B + 并行分工
额外: agent-teams (worktree 隔离), e2e-testing, security-review
子代理: builder × N + validator + explorer (background)
确认点: 同 Path B + [SECURITY_PASSED]
```
💡 **给新手**: 这是"重构认证系统"、"数据库迁移"、"微服务拆分"级别。
### Path D — 长期 (3+ 周)
```
加载: 同 Path C
额外: 按周拆分里程碑, 每个里程碑 = 一个 Path B/C 子任务
看板: 里程碑级 kanban + 任务级 kanban
smart-archive: 每个里程碑归档一次
```
💡 **给新手**: 这是"从零搭建一个平台"、"全栈重写"级别。很少用到。
## 路由输出格式
选定 Path 后, 向用户展示:
```
📊 任务分析
├─ 复杂度: Path B (协作级)
├─ 预估: ~8 小时
├─ 文件涉及: ~6 个
├─ 关键技术: React + Supabase Auth
└─ 执行计划: R₀b(头脑风暴) → R(调研) → D(设计) → P(规划) → E(开发) → T(测试) → V(验收)
确认后开始?
```
然后调用 cunzhi 等待确认。
+157
View File
@@ -0,0 +1,157 @@
# RIPER-7 工程编排 v8.9
## 统一工具调度表
| 阶段 | VibeCoding Skill | Plugin | MCP | 状态文件 |
|:---|:---|:---|:---|:---|
| R₀b 头脑风暴 | brainstorm | superpowers (brainstorming) | augment-context, deepwiki | design.md |
| R 研究 | context7 | superpowers (research) | augment-context, deepwiki | design.md (更新) |
| D 设计 | context7 | superpowers (writing-plans) | deepwiki | design.md (终稿) |
| P 规划 | plan-first | superpowers (writing-plans) | — | plan.md |
| E 开发 | tdd, code-quality, agent-teams | feature-dev, frontend-design, hookify | augment-context | doing.md |
| T 测试 | verification, e2e-testing | code-review, security-guidance | — | verified.md |
| V 验收 | smart-archive, knowledge | pr-review-toolkit, commit-commands | cunzhi | review.md |
## 阶段详情
---
### R₀b — 头脑风暴 (Path B+ only)
💡 **本阶段做什么**: 理解需求, 探索方案, 不写代码
🔧 **自动使用**: augment-context 扫描 → deepwiki 查库 → cunzhi 确认
⏭️ **下一阶段**: R (研究)
```
步骤:
1. augment-context-engine 搜索现有代码, 理解项目结构
2. 读 .knowledge/pitfalls.md — 避免重复犯错
3. 加载 skills/brainstorm — 苏格拉底式逐个提问
4. deepwiki 查候选技术库文档
5. 输出 2-3 方案到 .ai_state/design.md
6. cunzhi [DESIGN_DIRECTION] — 用户选择方向
```
---
### R — 研究
💡 **本阶段做什么**: 深入调研已选方案, 确认技术可行性
🔧 **自动使用**: context7 拉取库文档 → 对照 design.md 验证
```
步骤:
1. 加载 skills/context7 — 按需拉取相关库文档
2. 对照 design.md 验证方案可行性
3. 识别技术风险和依赖
4. 更新 design.md 中的技术细节
```
Path A 简化: 只做 augment-context 快速扫描, 不输出 design.md。
---
### D — 设计
💡 **本阶段做什么**: 确定技术方案, 输出架构决策
🔧 **自动使用**: context7 查 API 细节 → design.md 终稿 → cunzhi 确认
```
步骤:
1. context7 查 API 细节, 确认接口设计可行
2. 写入 .knowledge/decisions.md — ADR 记录
3. 完成 design.md 终稿
4. cunzhi [DESIGN_READY] — 用户确认设计
```
Path A 跳过。
---
### P — 规划
💡 **本阶段做什么**: 将设计拆解为可执行的任务列表
🔧 **自动使用**: plan-first 读 design.md → 生成 plan.md → cunzhi 确认
```
步骤:
1. 加载 skills/plan-first
2. 读 design.md 作为输入
3. 生成 .ai_state/plan.md: 任务列表 + 依赖 + 预估 + 分工
4. Path C+: 分配子代理 (builder/validator/e2e-runner)
5. cunzhi [PLAN_CONFIRMED] — 用户确认计划
```
Path A 跳过。Path B: /plan 生成轻量计划。
---
### E — 执行
💡 **本阶段做什么**: 按计划写代码, TDD 驱动
🔧 **自动使用**: tdd 分级 → code-quality 审查 → agent-teams 并行
```
步骤:
1. 加载 skills/tdd — 按 Path 分级:
- Path A: 改了什么手动验证
- Path B: 关键路径写测试
- Path C+: 全覆盖 TDD
2. 逐个执行任务:
- Path A: 直接开始开发 (无 plan.md)
- Path B+: 按 plan.md 中的任务列表逐个执行
3. 每完成一个: doing.md 更新 TODO→DOING→DONE
4. Path C+: agent-teams 并行
- builder 在 worktree 中实现
- validator 在 worktree 中测试
- explorer (background) 持续扫描依赖
5. 阶段性 cunzhi 确认 (每 3-5 个任务或关键里程碑)
```
---
### T — 测试
💡 **本阶段做什么**: 验证代码质量, 跑测试, 安全检查
🔧 **自动使用**: verification 分级清单 → e2e-testing → code-review plugin
```
步骤:
1. 加载 skills/verification — 按 Path 分级:
- Path A: 功能验证 + lint
- Path B: + 单测通过 + 类型检查
- Path C+: + E2E + 安全审查 + 性能
2. Path B+: 触发 code-review plugin 自动审查
3. Path C+: 加载 skills/e2e-testing (Playwright)
4. Path C+: 加载 skills/security-review
5. 输出 .ai_state/verified.md
```
---
### V — 验收
💡 **本阶段做什么**: 最终确认, 提交, 归档经验
🔧 **自动使用**: delivery-gate hook → cunzhi 确认 → smart-archive
```
步骤:
1. delivery-gate.cjs 自动检查 (Stop hook):
- plan.md 所有任务 DONE? (Path B+)
- 测试通过?
- lint 无错?
2. 加载 skills/code-quality — 最终审查
3. cunzhi [DELIVERY_CONFIRMED] — 用户确认交付
4. 触发 commit-commands plugin — 提交:
- Path A: 单次 commit
- Path B: squash merge
- Path C+: 按功能分 commit
5. 加载 skills/knowledge — 沉淀经验到 .knowledge/
6. 加载 skills/smart-archive — 归档 .ai_state/ 到 archive/
```
## RIPER 阶段流转规则
- 只能前进, 不能跳过 (Path A 的"跳过"是路由决定, 不是运行时跳过)
- 每个阶段完成时更新 session.md 中的 `current_phase` 字段
- 中断恢复: context-loader.cjs 读 session.md 自动恢复到中断阶段