@devcxl/opencode-cabbage 0.3.2 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -19
- package/README.zh.md +34 -19
- package/assets/agents/dev-lifecycle.md +60 -49
- package/assets/agents/team/architect.md +8 -1
- package/assets/agents/team/developer.md +89 -0
- package/assets/agents/team/goal-verify.md +5 -1
- package/assets/agents/team/reviewer.md +6 -0
- package/assets/commands/code.md +3 -2
- package/assets/commands/design.md +3 -2
- package/assets/commands/release.md +3 -2
- package/assets/commands/requirements.md +3 -2
- package/assets/commands/review.md +3 -2
- package/assets/commands/setup.md +3 -2
- package/assets/commands/tasks.md +2 -1
- package/assets/prompts/bootstrap.md +9 -8
- package/assets/prompts/stage-contract.md +55 -0
- package/assets/skills/flow-code/SKILL.md +38 -140
- package/assets/skills/flow-design/SKILL.md +28 -79
- package/assets/skills/flow-release/SKILL.md +31 -51
- package/assets/skills/flow-requirements/SKILL.md +31 -196
- package/assets/skills/flow-review/SKILL.md +26 -123
- package/assets/skills/flow-setup/SKILL.md +40 -43
- package/assets/skills/flow-tasks/SKILL.md +23 -153
- package/assets/skills/flow-tdd/SKILL.md +30 -31
- package/dist/kernel/caller.d.ts +48 -0
- package/dist/kernel/caller.js +88 -0
- package/dist/kernel/caller.js.map +1 -0
- package/dist/kernel/context.d.ts +27 -0
- package/dist/kernel/context.js +84 -0
- package/dist/kernel/context.js.map +1 -0
- package/dist/kernel/flow.d.ts +175 -0
- package/dist/kernel/flow.js +467 -0
- package/dist/kernel/flow.js.map +1 -0
- package/dist/kernel/legacy.d.ts +19 -0
- package/dist/kernel/legacy.js +34 -0
- package/dist/kernel/legacy.js.map +1 -0
- package/dist/kernel/mutex.d.ts +8 -0
- package/dist/kernel/mutex.js +23 -0
- package/dist/kernel/mutex.js.map +1 -0
- package/dist/kernel/permission.d.ts +21 -0
- package/dist/kernel/permission.js +45 -0
- package/dist/kernel/permission.js.map +1 -0
- package/dist/kernel/profile.d.ts +35 -0
- package/dist/kernel/profile.js +147 -0
- package/dist/kernel/profile.js.map +1 -0
- package/dist/kernel/records.d.ts +103 -0
- package/dist/kernel/records.js +240 -0
- package/dist/kernel/records.js.map +1 -0
- package/dist/kernel/release.d.ts +106 -0
- package/dist/kernel/release.js +241 -0
- package/dist/kernel/release.js.map +1 -0
- package/dist/kernel/review.d.ts +34 -0
- package/dist/kernel/review.js +82 -0
- package/dist/kernel/review.js.map +1 -0
- package/dist/kernel/session-index.d.ts +45 -0
- package/dist/kernel/session-index.js +136 -0
- package/dist/kernel/session-index.js.map +1 -0
- package/dist/kernel/setup.d.ts +95 -0
- package/dist/kernel/setup.js +401 -0
- package/dist/kernel/setup.js.map +1 -0
- package/dist/kernel/slug.d.ts +23 -0
- package/dist/kernel/slug.js +67 -0
- package/dist/kernel/slug.js.map +1 -0
- package/dist/kernel/task.d.ts +213 -0
- package/dist/kernel/task.js +873 -0
- package/dist/kernel/task.js.map +1 -0
- package/dist/{flowrun → kernel/tdd}/adapter.d.ts +1 -1
- package/dist/{flowrun → kernel/tdd}/adapter.js +27 -26
- package/dist/kernel/tdd/adapter.js.map +1 -0
- package/dist/{flowrun → kernel/tdd}/digest.d.ts +2 -1
- package/dist/{flowrun → kernel/tdd}/digest.js +6 -4
- package/dist/kernel/tdd/digest.js.map +1 -0
- package/dist/{flowrun → kernel/tdd}/evaluator.d.ts +1 -1
- package/dist/{flowrun → kernel/tdd}/evaluator.js +1 -1
- package/dist/kernel/tdd/evaluator.js.map +1 -0
- package/dist/kernel/tdd/evidence.d.ts +42 -0
- package/dist/kernel/tdd/evidence.js +48 -0
- package/dist/kernel/tdd/evidence.js.map +1 -0
- package/dist/{flowrun → kernel/tdd}/state.d.ts +2 -2
- package/dist/{flowrun → kernel/tdd}/state.js +1 -1
- package/dist/kernel/tdd/state.js.map +1 -0
- package/dist/kernel/types.d.ts +180 -0
- package/dist/kernel/types.js +2 -0
- package/dist/kernel/types.js.map +1 -0
- package/dist/kernel/worktree.d.ts +45 -0
- package/dist/kernel/worktree.js +156 -0
- package/dist/kernel/worktree.js.map +1 -0
- package/dist/plugin/agents.d.ts +5 -17
- package/dist/plugin/agents.js +0 -23
- package/dist/plugin/agents.js.map +1 -1
- package/dist/plugin/flow-control.d.ts +91 -0
- package/dist/plugin/flow-control.js +287 -0
- package/dist/plugin/flow-control.js.map +1 -0
- package/dist/plugin/goal.d.ts +17 -46
- package/dist/plugin/goal.js +47 -117
- package/dist/plugin/goal.js.map +1 -1
- package/dist/plugin/prompt-lint.js +78 -6
- package/dist/plugin/prompt-lint.js.map +1 -1
- package/dist/plugin/release-control.d.ts +39 -0
- package/dist/plugin/release-control.js +343 -0
- package/dist/plugin/release-control.js.map +1 -0
- package/dist/plugin/server.d.ts +19 -0
- package/dist/plugin/server.js +198 -320
- package/dist/plugin/server.js.map +1 -1
- package/dist/plugin/setup-control.d.ts +59 -0
- package/dist/plugin/setup-control.js +111 -0
- package/dist/plugin/setup-control.js.map +1 -0
- package/dist/plugin/shell.d.ts +7 -34
- package/dist/plugin/shell.js +12 -137
- package/dist/plugin/shell.js.map +1 -1
- package/dist/plugin/skills.d.ts +1 -1
- package/dist/plugin/skills.js +1 -7
- package/dist/plugin/skills.js.map +1 -1
- package/dist/plugin/task-control.d.ts +90 -0
- package/dist/plugin/task-control.js +208 -0
- package/dist/plugin/task-control.js.map +1 -0
- package/dist/plugin/tdd-checkpoint.d.ts +128 -0
- package/dist/plugin/tdd-checkpoint.js +664 -0
- package/dist/plugin/tdd-checkpoint.js.map +1 -0
- package/dist/util/gh.d.ts +5 -0
- package/dist/util/gh.js +12 -0
- package/dist/util/gh.js.map +1 -1
- package/dist/util/paths.d.ts +6 -2
- package/dist/util/paths.js +15 -7
- package/dist/util/paths.js.map +1 -1
- package/package.json +4 -4
- package/assets/agents/team/backend.md +0 -100
- package/assets/agents/team/frontend.md +0 -98
- package/assets/commands/handoff.md +0 -4
- package/assets/commands/test.md +0 -4
- package/assets/context/CONTEXT.md +0 -41
- package/assets/skills/flow-handoff/SKILL.md +0 -76
- package/assets/skills/flow-test/SKILL.md +0 -75
- package/dist/flowrun/adapter.js.map +0 -1
- package/dist/flowrun/audit.d.ts +0 -5
- package/dist/flowrun/audit.js +0 -67
- package/dist/flowrun/audit.js.map +0 -1
- package/dist/flowrun/ci.d.ts +0 -64
- package/dist/flowrun/ci.js +0 -184
- package/dist/flowrun/ci.js.map +0 -1
- package/dist/flowrun/coverage.d.ts +0 -70
- package/dist/flowrun/coverage.js +0 -207
- package/dist/flowrun/coverage.js.map +0 -1
- package/dist/flowrun/digest.js.map +0 -1
- package/dist/flowrun/evaluator.js.map +0 -1
- package/dist/flowrun/gate.d.ts +0 -28
- package/dist/flowrun/gate.js +0 -139
- package/dist/flowrun/gate.js.map +0 -1
- package/dist/flowrun/github.d.ts +0 -24
- package/dist/flowrun/github.js +0 -154
- package/dist/flowrun/github.js.map +0 -1
- package/dist/flowrun/index.d.ts +0 -14
- package/dist/flowrun/index.js +0 -15
- package/dist/flowrun/index.js.map +0 -1
- package/dist/flowrun/merge.d.ts +0 -57
- package/dist/flowrun/merge.js +0 -180
- package/dist/flowrun/merge.js.map +0 -1
- package/dist/flowrun/migration.d.ts +0 -11
- package/dist/flowrun/migration.js +0 -276
- package/dist/flowrun/migration.js.map +0 -1
- package/dist/flowrun/resilience.d.ts +0 -18
- package/dist/flowrun/resilience.js +0 -80
- package/dist/flowrun/resilience.js.map +0 -1
- package/dist/flowrun/state.js.map +0 -1
- package/dist/flowrun/transitions.d.ts +0 -66
- package/dist/flowrun/transitions.js +0 -168
- package/dist/flowrun/transitions.js.map +0 -1
- package/dist/flowrun/types.d.ts +0 -356
- package/dist/flowrun/types.js +0 -21
- package/dist/flowrun/types.js.map +0 -1
- package/dist/flowrun/validator.d.ts +0 -19
- package/dist/flowrun/validator.js +0 -209
- package/dist/flowrun/validator.js.map +0 -1
- package/dist/plugin/broker.d.ts +0 -73
- package/dist/plugin/broker.js +0 -140
- package/dist/plugin/broker.js.map +0 -1
- package/dist/plugin/tdd-tool.d.ts +0 -62
- package/dist/plugin/tdd-tool.js +0 -336
- package/dist/plugin/tdd-tool.js.map +0 -1
package/README.md
CHANGED
|
@@ -20,21 +20,19 @@
|
|
|
20
20
|
}
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
Once started, the plugin automatically injects
|
|
23
|
+
Once started, the plugin automatically injects 7 slash commands, 8 flow skills, 5 agents, and 5 deterministic lifecycle tools.
|
|
24
24
|
|
|
25
25
|
## Command Overview
|
|
26
26
|
|
|
27
27
|
| Command | Stage | Output |
|
|
28
28
|
|---------|-------|--------|
|
|
29
|
-
| `/setup` | Setup | `docs/` directory structure
|
|
30
|
-
| `/requirements` | Requirements | PRD → `docs/prd/` +
|
|
31
|
-
| `/design` | Design | Technical specification + ADR → `docs/dev/specs/` + `docs/adr/` |
|
|
32
|
-
| `/tasks` | Task decomposition | DAG tasks + Sub Issues
|
|
33
|
-
| `/code` | Coding |
|
|
34
|
-
| `/test` | Testing | Trigger CI + monitor + report |
|
|
29
|
+
| `/setup` | Setup | `docs/` directory structure, Project Profile, CI/release workflow validation |
|
|
30
|
+
| `/requirements` | Requirements | PRD → `docs/prd/` + Draft Parent Issue |
|
|
31
|
+
| `/design` | Design | Technical specification + necessary ADR → `docs/dev/specs/` + `docs/adr/` |
|
|
32
|
+
| `/tasks` | Task decomposition | DAG tasks + Sub Issues (GitHub 权威源) |
|
|
33
|
+
| `/code` | Coding | Task + Runtime TDD evidence + PR |
|
|
35
34
|
| `/review` | Review | Dual-axis review + automatic merge |
|
|
36
|
-
| `/release` | ⚠️ Manual release | Version →
|
|
37
|
-
| `/handoff` | Handoff | Package context for transfer across sessions |
|
|
35
|
+
| `/release` | ⚠️ Manual release | Version proposal → Release PR → tag push → workflow monitor |
|
|
38
36
|
|
|
39
37
|
## Quick Start
|
|
40
38
|
|
|
@@ -60,19 +58,36 @@ npm install @devcxl/opencode-cabbage
|
|
|
60
58
|
src/ # Thin TypeScript layer
|
|
61
59
|
├── index.ts # Plugin entry point
|
|
62
60
|
├── plugin.ts # Package root resolution
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
61
|
+
├── plugin/ # Loaders + tool factories
|
|
62
|
+
│ ├── server.ts # Main factory: injects skills, commands, agents, 5 lifecycle tools
|
|
63
|
+
│ ├── commands.ts # Command loader
|
|
64
|
+
│ ├── skills.ts # Skill loader
|
|
65
|
+
│ ├── prompts.ts # Prompt loader
|
|
66
|
+
│ ├── bootstrap.ts # Startup guidance
|
|
67
|
+
│ ├── agents.ts # Agent injection
|
|
68
|
+
│ ├── setup-control.ts # setup_control tool
|
|
69
|
+
│ ├── flow-control.ts # flow_control tool
|
|
70
|
+
│ ├── task-control.ts # task_control tool
|
|
71
|
+
│ ├── tdd-checkpoint.ts # tdd_checkpoint tool
|
|
72
|
+
│ └── release-control.ts # release_control tool
|
|
73
|
+
└── kernel/ # Deterministic thin kernel
|
|
74
|
+
├── slug.ts # Functional slug derivation/validation
|
|
75
|
+
├── records.ts # Flow/Task Record CRUD (GitHub authoritative)
|
|
76
|
+
├── worktree.ts # Worktree lifecycle (no --force)
|
|
77
|
+
├── tdd/ # Runtime TDD pure functions + evidence
|
|
78
|
+
├── review.ts # Merge gates (CI/protection/risk/approval)
|
|
79
|
+
├── release.ts # Version proposal + tag immutability
|
|
80
|
+
├── context.ts # Root CONTEXT.md discovery/injection
|
|
81
|
+
├── profile.ts # AGENTS.md Project Profile parsing
|
|
82
|
+
├── session-index.ts # Flow→session index + takeover
|
|
83
|
+
├── caller.ts # Caller role matrix
|
|
84
|
+
├── permission.ts # Permission matching semantics
|
|
85
|
+
└── legacy.ts # Legacy FlowRun detection
|
|
70
86
|
|
|
71
87
|
assets/ # Runtime assets
|
|
72
|
-
├── commands/ #
|
|
73
|
-
├── skills/ #
|
|
88
|
+
├── commands/ # 7 slash commands
|
|
89
|
+
├── skills/ # 8 flow-* skills
|
|
74
90
|
├── agents/ # 5 agent definitions
|
|
75
|
-
├── context/ # Domain glossary
|
|
76
91
|
└── prompts/ # Guidance prompts and templates
|
|
77
92
|
```
|
|
78
93
|
|
package/README.zh.md
CHANGED
|
@@ -20,21 +20,19 @@
|
|
|
20
20
|
}
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
-
插件启动后自动注入
|
|
23
|
+
插件启动后自动注入 7 个 slash command、8 个 flow skill、5 个 agent 与 5 个确定性生命周期工具。
|
|
24
24
|
|
|
25
25
|
## 命令一览
|
|
26
26
|
|
|
27
27
|
| 命令 | 阶段 | 产出 |
|
|
28
28
|
|------|------|------|
|
|
29
|
-
| `/setup` | 初始化 | `docs/`
|
|
30
|
-
| `/requirements` | 需求 | PRD → `docs/prd/` +
|
|
31
|
-
| `/design` | 设计 | 技术方案 + ADR → `docs/dev/specs/` + `docs/adr/` |
|
|
32
|
-
| `/tasks` | 任务拆解 | DAG 任务 + Sub Issues
|
|
33
|
-
| `/code` | 编码 |
|
|
34
|
-
| `/test` | 测试 | 触发 CI + 监控 + 汇报 |
|
|
29
|
+
| `/setup` | 初始化 | `docs/` 目录结构、Project Profile、CI/release workflow 校验 |
|
|
30
|
+
| `/requirements` | 需求 | PRD → `docs/prd/` + Draft Parent Issue |
|
|
31
|
+
| `/design` | 设计 | 技术方案 + 必要 ADR → `docs/dev/specs/` + `docs/adr/` |
|
|
32
|
+
| `/tasks` | 任务拆解 | DAG 任务 + Sub Issues(GitHub 权威源) |
|
|
33
|
+
| `/code` | 编码 | Task + Runtime TDD evidence + PR |
|
|
35
34
|
| `/review` | 审查 | 双轴审查 + 自动合并 |
|
|
36
|
-
| `/release` | ⚠️ 手动发布 |
|
|
37
|
-
| `/handoff` | 交接 | 打包上下文,跨会话传递 |
|
|
35
|
+
| `/release` | ⚠️ 手动发布 | 版本提议 → Release PR → tag push → workflow 监控 |
|
|
38
36
|
|
|
39
37
|
## 快速开始
|
|
40
38
|
|
|
@@ -60,19 +58,36 @@ npm install @devcxl/opencode-cabbage
|
|
|
60
58
|
src/ # TypeScript 薄层
|
|
61
59
|
├── index.ts # 插件入口
|
|
62
60
|
├── plugin.ts # 包路径解析
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
61
|
+
├── plugin/ # 加载器 + 工具工厂
|
|
62
|
+
│ ├── server.ts # 主工厂:注入 skills/commands/agents/5 个生命周期工具
|
|
63
|
+
│ ├── commands.ts # Command 加载器
|
|
64
|
+
│ ├── skills.ts # Skill 加载器
|
|
65
|
+
│ ├── prompts.ts # Prompt 加载器
|
|
66
|
+
│ ├── bootstrap.ts # 启动引导
|
|
67
|
+
│ ├── agents.ts # Agent 注入
|
|
68
|
+
│ ├── setup-control.ts # setup_control 工具
|
|
69
|
+
│ ├── flow-control.ts # flow_control 工具
|
|
70
|
+
│ ├── task-control.ts # task_control 工具
|
|
71
|
+
│ ├── tdd-checkpoint.ts # tdd_checkpoint 工具
|
|
72
|
+
│ └── release-control.ts # release_control 工具
|
|
73
|
+
└── kernel/ # 确定性薄内核
|
|
74
|
+
├── slug.ts # Functional Slug 派生/校验
|
|
75
|
+
├── records.ts # Flow/Task Record CRUD(GitHub 权威源)
|
|
76
|
+
├── worktree.ts # Worktree 生命周期(无 --force)
|
|
77
|
+
├── tdd/ # Runtime TDD 纯函数 + evidence
|
|
78
|
+
├── review.ts # 合并门禁(CI/分支保护/风险/approval)
|
|
79
|
+
├── release.ts # 版本提议 + tag 不可变校验
|
|
80
|
+
├── context.ts # 根 CONTEXT.md 发现/注入
|
|
81
|
+
├── profile.ts # AGENTS.md Project Profile 解析
|
|
82
|
+
├── session-index.ts # Flow→session 索引 + takeover
|
|
83
|
+
├── caller.ts # 调用者角色矩阵
|
|
84
|
+
├── permission.ts # 权限匹配语义
|
|
85
|
+
└── legacy.ts # 旧 FlowRun 检测
|
|
70
86
|
|
|
71
87
|
assets/ # 运行时资源
|
|
72
|
-
├── commands/ #
|
|
73
|
-
├── skills/ #
|
|
88
|
+
├── commands/ # 7 个 slash command
|
|
89
|
+
├── skills/ # 8 个 flow-* skill
|
|
74
90
|
├── agents/ # 5 个 agent 定义
|
|
75
|
-
├── context/ # 领域词汇表
|
|
76
91
|
└── prompts/ # 引导提示词 + 模板
|
|
77
92
|
```
|
|
78
93
|
|
|
@@ -3,6 +3,20 @@ name: dev-lifecycle
|
|
|
3
3
|
description: 全流程开发编排器 — 需求确认后自动完成设计→任务拆解→并行实现→审查→自动合并
|
|
4
4
|
mode: primary
|
|
5
5
|
color: '#00bcd4'
|
|
6
|
+
permission:
|
|
7
|
+
bash:
|
|
8
|
+
"*": "allow"
|
|
9
|
+
"git push*": "deny"
|
|
10
|
+
"git worktree remove*": "deny"
|
|
11
|
+
"git worktree add*": "deny"
|
|
12
|
+
"git checkout -b*": "deny"
|
|
13
|
+
"git tag*": "deny"
|
|
14
|
+
"gh pr create*": "deny"
|
|
15
|
+
"gh pr merge*": "deny"
|
|
16
|
+
"gh issue close*": "deny"
|
|
17
|
+
"gh issue create*": "deny"
|
|
18
|
+
"gh release create*": "deny"
|
|
19
|
+
"npm publish*": "deny"
|
|
6
20
|
---
|
|
7
21
|
|
|
8
22
|
<system-reminder>
|
|
@@ -19,21 +33,24 @@ color: '#00bcd4'
|
|
|
19
33
|
|
|
20
34
|
## 开始工作
|
|
21
35
|
|
|
22
|
-
1.
|
|
23
|
-
2.
|
|
36
|
+
1. 调用 `goal({op:"create", parent_issue_number:<Flow Record 编号>})` 建立会话运行控制(目标/验收从 Flow Record 读取)
|
|
37
|
+
2. 调用 `flow_control{op:"status"}` 读取当前 Flow 进度,按下方 Phase 顺序继续
|
|
24
38
|
3. 每个阶段完成后,Plugin 会自动 continuation,进入下一阶段
|
|
25
39
|
4. 最终全部完成后,直接使用 Task 工具派发 `@goal-verify` 做独立验证
|
|
26
40
|
|
|
27
41
|
## 调度团队
|
|
28
42
|
|
|
29
43
|
- @architect:技术方案、ADR、DAG 任务拆解
|
|
30
|
-
- @
|
|
31
|
-
- @frontend:前端代码 TDD 实现(加载 `flow-tdd` skill,遵循 RED→GREEN cycle,编码 + 测试 + commit + push,不创建 PR)
|
|
44
|
+
- @developer:技术栈无关代码 TDD 实现(加载 `flow-tdd` skill,遵循 RED→GREEN cycle,编码 + 测试 + 本地 commit,不 push、不创建 PR)
|
|
32
45
|
- @reviewer:只读代码审查,输出结构化审查报告(不操作 git/GitHub,不写文件)
|
|
33
46
|
- @goal-verify:独立验证 Goal 完成状态(**只有它可以调用 goal({op:"complete"})**)
|
|
34
47
|
|
|
35
48
|
## 全局约束
|
|
36
49
|
|
|
50
|
+
### 阶段契约(单一来源)
|
|
51
|
+
- 阶段推进遵循 `stage-contract`(assets/prompts/stage-contract.md):阶段完成 = Flow Record body checklist `- [x] <stage>`,门禁与顺序以该契约为准
|
|
52
|
+
- 阶段推进调用 `flow_control{op:"stage-start"|"stage-complete"}`(requirements 完成需用户确认;高风险 Flow 的 design→tasks 需确认)
|
|
53
|
+
|
|
37
54
|
### 文档目录
|
|
38
55
|
- PRD → `docs/prd/`
|
|
39
56
|
- ADR → `docs/adr/`
|
|
@@ -42,7 +59,7 @@ color: '#00bcd4'
|
|
|
42
59
|
- 开发文档 → `docs/dev/{api,db,guides}/`
|
|
43
60
|
|
|
44
61
|
### 子 agent 约束
|
|
45
|
-
- 禁止在 `/tmp/`
|
|
62
|
+
- 禁止在 `/tmp/` 下创建或调试文件;临时产物放入 worktree 内
|
|
46
63
|
- 文档产出必须遵循目录规范
|
|
47
64
|
|
|
48
65
|
---
|
|
@@ -79,62 +96,55 @@ color: '#00bcd4'
|
|
|
79
96
|
```
|
|
80
97
|
For each batch:
|
|
81
98
|
For each task in batch (可并行):
|
|
82
|
-
0.
|
|
99
|
+
0. 安全检查:确认设计阶段文档已通过 Planning PR 合入 main(无未提交 docs 残留)
|
|
83
100
|
BASE=$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name')
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
- 明确指令:**在 worktree/分支内本地审查,禁止 WebFetch 远程代码**
|
|
111
|
-
7. 使用 `gh pr review` 发布审查结果
|
|
112
|
-
8. CI 通过后使用 `gh pr merge` 合并 PR
|
|
113
|
-
9. 合并后清理 worktree
|
|
101
|
+
git checkout $BASE && git pull origin $BASE
|
|
102
|
+
1. 调用 `task_control{op:"start-task"}` 为 Task 创建 worktree(工具校验:Planning Baseline 已合并、依赖已 merged、并行 <5)
|
|
103
|
+
- 工具内部:创建分支 + worktree + 记录基线 + 冻结 TDD policy
|
|
104
|
+
2. 并行派发 @developer 到各 worktree 路径
|
|
105
|
+
3. 每个 agent 在 worktree 内(不 push、不创建 PR):
|
|
106
|
+
- 按 Profile 的 test command 安装/执行测试(技术栈无关,不假设 npm)
|
|
107
|
+
- 加载 `flow-tdd` skill,遵循 TDD Advisory Protocol
|
|
108
|
+
- 编码 + 单测(RED→GREEN cycle + final-regression + final-verification)
|
|
109
|
+
- 通过 `tdd_checkpoint` 提交证据,本地 commit(不 push)
|
|
110
|
+
- 返回 branch、commit SHA、TDD self-report、test summary
|
|
111
|
+
4. 编排器调用 `task_control{op:"submit-task"}` 为完成的 task 创建 PR:
|
|
112
|
+
- 工具校验 TDD evidence 完整(缺证据拒绝创建 PR)
|
|
113
|
+
- 工具内部:push 分支 → gh pr create(body 含 Closes #task)
|
|
114
|
+
5. 等待 batch 内所有 PR 就绪(gh pr checks --watch)
|
|
115
|
+
6. 委派 @reviewer 双轴审查各 PR,附带 worktree 路径和分支信息:
|
|
116
|
+
```bash
|
|
117
|
+
# 委派时明确传递上下文
|
|
118
|
+
gh pr view <pr-number> --json headRefName,number,title
|
|
119
|
+
```
|
|
120
|
+
⚠️ 审查提示中必须包含:
|
|
121
|
+
- 本地 worktree 路径(`.worktree/<task-slug>`)或分支名(`feat/<task-slug>`)
|
|
122
|
+
- PR 编号
|
|
123
|
+
- 明确指令:**在 worktree/分支内本地审查,禁止 WebFetch 远程代码**
|
|
124
|
+
7. 调用 `task_control{op:"submit-review"}` 发布审查结果(approve / request-changes)
|
|
125
|
+
8. CI 通过后调用 `task_control{op:"merge-task"}` 合并 PR(工具校验 CI + 分支保护 + 风险分级)
|
|
126
|
+
9. 合并后由工具自动销毁 worktree(PR 合并 + 干净 → 自动;脏 → 警告)
|
|
114
127
|
|
|
115
128
|
串行 task(有依赖关系)使用清理后重建策略:
|
|
116
|
-
上一 task 合并 →
|
|
129
|
+
上一 task 合并 → 工具销毁 worktree → task_control{start-task} 新建
|
|
117
130
|
```
|
|
118
131
|
|
|
119
132
|
约束:
|
|
120
|
-
- 并行 task
|
|
133
|
+
- 并行 task 使用不同分支名(内核派生 `feat/<task-slug>`),避免 `git worktree add` 的分支冲突
|
|
121
134
|
- 每个 agent 启动时显式 `cd .worktree/<task-slug>` 并验证 `pwd`
|
|
122
135
|
- 分支冲突时暂停并提示用户手动清理
|
|
123
|
-
- @
|
|
136
|
+
- @developer 不 push、不创建 PR、不操作 Issue — 由 `task_control` 工具统一执行
|
|
137
|
+
- 高风险 git/gh 写操作(worktree 创建/销毁、push、PR、merge、Issue 关闭)一律通过生命周期工具,不直接执行
|
|
124
138
|
|
|
125
139
|
---
|
|
126
140
|
|
|
127
141
|
## Phase 4:合并确认
|
|
128
142
|
|
|
129
143
|
确认全部 task PR 已合并:
|
|
130
|
-
1. 检查关联 PR 合并状态
|
|
131
|
-
2. 确认所有 Sub Issues
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
gh issue close <parent-number> --comment "已完成。全部 Sub Issue 已通过 PR 合并关闭。"
|
|
135
|
-
```
|
|
136
|
-
注:此处的 `gh issue close` 由 broker tools 在隔离凭证下执行,编排器不直接调用。
|
|
137
|
-
4. 确认 FlowRun 无阻塞任务
|
|
144
|
+
1. 调用 `task_control{op:"status-task"}` 检查关联 PR 合并状态
|
|
145
|
+
2. 确认所有 Sub Issues 已自动关闭(PR body 含 `Closes #`)
|
|
146
|
+
3. 全部 Task 合并后调用 `flow_control{op:"complete-flow"}` 关闭 Parent Issue
|
|
147
|
+
- 前提:独立 goal-verify 验证通过(仅 goal-verify 可调用 complete-flow)
|
|
138
148
|
|
|
139
149
|
---
|
|
140
150
|
|
|
@@ -151,5 +161,6 @@ For each batch:
|
|
|
151
161
|
| 场景 | 处理 |
|
|
152
162
|
|------|------|
|
|
153
163
|
| 任何步骤失败 | Pause flow,通知用户 |
|
|
154
|
-
|
|
|
155
|
-
|
|
|
164
|
+
| Task 失败 | 自动重试最多 3 次,仍失败标记 blocked 并停止下游;其他独立 Tasks 继续 |
|
|
165
|
+
| 审查不通过 | 自动修复最多 3 轮;第 3 轮仍未通过则停止该 Task |
|
|
166
|
+
| 连续 3 次 continuation 无可验证进展 | Pause,请求用户介入 |
|
|
@@ -22,12 +22,15 @@ permission:
|
|
|
22
22
|
"*": "deny"
|
|
23
23
|
"docs/**": "allow"
|
|
24
24
|
"assets/**": "allow"
|
|
25
|
+
# planning worktree 内交付物(.worktree/planning-<slug>/docs/** 相对主工作区)
|
|
26
|
+
".worktree/**/docs/**": "allow"
|
|
27
|
+
".worktree/**/assets/**": "allow"
|
|
25
28
|
---
|
|
26
29
|
|
|
27
30
|
<system-reminder>
|
|
28
31
|
你是团队中的 @architect,负责架构设计和技术方案。
|
|
29
32
|
|
|
30
|
-
你的输出直接指导 @
|
|
33
|
+
你的输出直接指导 @developer 实现。
|
|
31
34
|
|
|
32
35
|
## 工程原则(铁律)
|
|
33
36
|
|
|
@@ -79,3 +82,7 @@ permission:
|
|
|
79
82
|
- 接口定义必须完整(请求参数、响应结构、错误码)
|
|
80
83
|
- 每个任务应是垂直切片,单人 2-4 小时可完成
|
|
81
84
|
- 标注方案中的假设和不确定项
|
|
85
|
+
|
|
86
|
+
## Project Context
|
|
87
|
+
|
|
88
|
+
项目根 CONTEXT.md 是领域术语权威(消息中已自动注入内容与 digest)。遵循其中定义的领域术语;发现新术语或冲突时暂停提问。
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: developer
|
|
3
|
+
description: 技术栈无关的实现 agent — 认领 Task Record,在 worktree 内 TDD 实现
|
|
4
|
+
mode: subagent
|
|
5
|
+
color: '#4caf50'
|
|
6
|
+
permission:
|
|
7
|
+
bash:
|
|
8
|
+
"*": "deny" # 兜底:auto 模式默认拒绝
|
|
9
|
+
# ── allow 白名单(只读)──
|
|
10
|
+
"<profile-test-command>*": "allow" # 白名单测试命令由 Profile(§9.1)生成,不硬编码 npm
|
|
11
|
+
"git status*": "allow"
|
|
12
|
+
"git diff*": "allow"
|
|
13
|
+
"git log*": "allow"
|
|
14
|
+
"git show*": "allow"
|
|
15
|
+
"git rev-parse*": "allow"
|
|
16
|
+
"git ls-files*": "allow"
|
|
17
|
+
"git branch --merged*": "allow"
|
|
18
|
+
"gh pr view*": "allow"
|
|
19
|
+
"gh pr diff*": "allow"
|
|
20
|
+
"gh pr checks*": "allow"
|
|
21
|
+
"gh issue view*": "allow"
|
|
22
|
+
"gh run list*": "allow"
|
|
23
|
+
"gh api rate_limit*": "allow"
|
|
24
|
+
# ── 本地写(developer 专属)──
|
|
25
|
+
"git add*": "allow"
|
|
26
|
+
"git commit*": "allow"
|
|
27
|
+
# ── deny 黑名单(写操作,置尾,最后匹配优先)──
|
|
28
|
+
"git push*": "deny"
|
|
29
|
+
"git worktree*": "deny"
|
|
30
|
+
"git checkout -b*": "deny"
|
|
31
|
+
"git tag*": "deny"
|
|
32
|
+
"gh pr create*": "deny"
|
|
33
|
+
"gh pr merge*": "deny"
|
|
34
|
+
"gh pr review*": "deny"
|
|
35
|
+
"gh issue create*": "deny"
|
|
36
|
+
"gh issue edit*": "deny"
|
|
37
|
+
"gh issue close*": "deny"
|
|
38
|
+
"gh issue comment*": "deny"
|
|
39
|
+
"gh label*": "deny"
|
|
40
|
+
"gh release*": "deny"
|
|
41
|
+
edit:
|
|
42
|
+
"*": "deny"
|
|
43
|
+
".worktree/**": "allow"
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
<system-reminder>
|
|
47
|
+
你是团队中的 @developer,技术栈无关的实现 agent。
|
|
48
|
+
|
|
49
|
+
你认领 Task Record(GitHub Sub Issue),在对应 worktree 内按 TDD 实现代码与测试。
|
|
50
|
+
|
|
51
|
+
**TDD 约束**:编码前加载 `flow-tdd` skill,遵循 RED→GREEN→final-regression→final-verification 流程。
|
|
52
|
+
每个 stage 通过 `tdd_checkpoint` 提交证据到 Task 评论(唯一证据源,缺证据的 PR 会被拒绝)。
|
|
53
|
+
self-report 每个 cycle 的状态,不跳过任何阶段。
|
|
54
|
+
|
|
55
|
+
## 工程原则(单份引用)
|
|
56
|
+
|
|
57
|
+
遵循仓库 AGENTS.md 与技术方案中单份维护的工程原则:KISS、YAGNI、DRY、SRP、最小变更、审查自检。
|
|
58
|
+
此处不内嵌完整拷贝——以任务上下文中的权威来源为准。
|
|
59
|
+
</system-reminder>
|
|
60
|
+
|
|
61
|
+
## 工作流程
|
|
62
|
+
|
|
63
|
+
### 1. 确认输入
|
|
64
|
+
- 阅读 Task Record(GitHub Sub Issue)与任务定义(`docs/dev/tasks/`)
|
|
65
|
+
- 只读 git/gh 查看状态(worktree 分支、基线提交、关联 PR/Issue)
|
|
66
|
+
- 检查相关 ADR(`docs/adr/`)确保实现与架构决策一致
|
|
67
|
+
|
|
68
|
+
### 2. 实现(TDD)
|
|
69
|
+
- 加载 `flow-tdd` skill,按 Task 的 `tdd` 配置(test_commands/acceptance)执行 RED→GREEN cycle
|
|
70
|
+
- 通过 `tdd_checkpoint` 提交每个 stage 的证据(cycle-start/red/green/abandon-cycle/final-regression/final-verification)
|
|
71
|
+
- 只改 Task 相关的文件;遵循项目现有代码规范与分层结构
|
|
72
|
+
|
|
73
|
+
### 3. 验证
|
|
74
|
+
- 运行 Task 定义的测试命令,确认全部通过
|
|
75
|
+
- 边界条件、异常处理、空值处理完备
|
|
76
|
+
|
|
77
|
+
### 4. 提交
|
|
78
|
+
- 本地 `git add` + `git commit`(Conventional Commits,多次提交而非一次大提交)
|
|
79
|
+
- **不 push**:分支推送与 PR 创建由 primary 的 `task_control` 完成
|
|
80
|
+
|
|
81
|
+
## 禁止事项
|
|
82
|
+
- 不 push、不创建 PR、不操作 Issue(push/PR 由 primary 的 task_control 完成)
|
|
83
|
+
- 不修改与任务无关的文件
|
|
84
|
+
- 不引入未在项目中使用的第三方依赖
|
|
85
|
+
- 不提交硬编码的密钥/配置
|
|
86
|
+
|
|
87
|
+
## Project Context
|
|
88
|
+
|
|
89
|
+
项目根 CONTEXT.md 是领域术语权威(消息中已自动注入内容与 digest)。遵循其中定义的领域术语;发现新术语或冲突时暂停提问。
|
|
@@ -24,7 +24,7 @@ permission:
|
|
|
24
24
|
<system-reminder>
|
|
25
25
|
你是 goal-verify,负责独立验证 Goal 是否已完全达成。
|
|
26
26
|
|
|
27
|
-
你是唯一有权调用 `goal({op:"complete"})` 的 agent。其他 agent(reviewer、
|
|
27
|
+
你是唯一有权调用 `goal({op:"complete"})` 的 agent。其他 agent(reviewer、developer、architect)无权完成 Goal。
|
|
28
28
|
|
|
29
29
|
你需要从空白上下文开始 — 不假设之前的工作已完成。
|
|
30
30
|
</system-reminder>
|
|
@@ -52,3 +52,7 @@ permission:
|
|
|
52
52
|
---
|
|
53
53
|
|
|
54
54
|
不创建或修改任何文件。你是只读验证者。
|
|
55
|
+
|
|
56
|
+
## Project Context
|
|
57
|
+
|
|
58
|
+
项目根 CONTEXT.md 是领域术语权威(消息中已自动注入内容与 digest)。遵循其中定义的领域术语;发现新术语或冲突时暂停提问。
|
|
@@ -21,6 +21,8 @@ permission:
|
|
|
21
21
|
"*": "deny"
|
|
22
22
|
"gh pr view": "allow"
|
|
23
23
|
"gh pr view *": "allow"
|
|
24
|
+
"gh pr diff": "allow"
|
|
25
|
+
"gh pr diff *": "allow"
|
|
24
26
|
"diff": "allow"
|
|
25
27
|
"diff *": "allow"
|
|
26
28
|
"gh pr checks": "allow"
|
|
@@ -115,3 +117,7 @@ permission:
|
|
|
115
117
|
- 不修改代码
|
|
116
118
|
- 每个问题必须给出具体的修复建议
|
|
117
119
|
- 优先关注安全性和正确性
|
|
120
|
+
|
|
121
|
+
## Project Context
|
|
122
|
+
|
|
123
|
+
项目根 CONTEXT.md 是领域术语权威(消息中已自动注入内容与 digest)。遵循其中定义的领域术语;发现新术语或冲突时暂停提问。
|
package/assets/commands/code.md
CHANGED
package/assets/commands/setup.md
CHANGED
package/assets/commands/tasks.md
CHANGED
|
@@ -2,18 +2,19 @@
|
|
|
2
2
|
全流程开发工作流已启用。
|
|
3
3
|
|
|
4
4
|
可用命令:
|
|
5
|
-
- /setup —
|
|
6
|
-
- /requirements —
|
|
7
|
-
- /design — 技术方案 + ADR
|
|
5
|
+
- /setup — 初始化(探测环境 → 生成 workflow → 确认 Profile)
|
|
6
|
+
- /requirements — 需求澄清 → PRD → Flow Record
|
|
7
|
+
- /design — 技术方案 + ADR → Planning PR
|
|
8
8
|
- /tasks — DAG 任务拆解 → Sub Issues
|
|
9
|
-
- /code —
|
|
10
|
-
- /test — 触发 CI → 监控 → 汇报
|
|
9
|
+
- /code — 编码 + TDD(flow-tdd 协议)→ PR
|
|
11
10
|
- /review — 双轴审查(规范+规格)→ 自动合并
|
|
12
|
-
- /release — ⚠️ 手动阶段:版本 →
|
|
13
|
-
- /handoff — 打包上下文,跨会话传递
|
|
11
|
+
- /release — ⚠️ 手动阶段:版本 → Release PR → GitHub Actions 发布
|
|
14
12
|
|
|
15
13
|
推荐流程(顺序执行):
|
|
16
|
-
setup → requirements → design → tasks → code →
|
|
14
|
+
setup → requirements → design → tasks → code → review → release
|
|
15
|
+
|
|
16
|
+
阶段契约:每个 stage 的完成权威是 Flow Record body checklist(`- [x] <stage>`),
|
|
17
|
+
阶段推进由 `flow_control{op:"stage-start"|"stage-complete"}` 维护,详见 stage-contract。
|
|
17
18
|
|
|
18
19
|
⚡ 自动化模式:需求确认后输入 @dev-lifecycle 自动执行流程(终点为自动合并,不包含 release)
|
|
19
20
|
</EXTREMELY_IMPORTANT>
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Stage Contract
|
|
2
|
+
|
|
3
|
+
Flow 阶段契约的单一来源。Primary(`dev-lifecycle`)与所有 stage 命令(`/setup /requirements /design /tasks /code /review /release`)共享本契约。
|
|
4
|
+
|
|
5
|
+
## 阶段模型
|
|
6
|
+
|
|
7
|
+
| Stage | 阶段名(flow_control) | 产出 | 工具 |
|
|
8
|
+
|-------|----------------------|------|------|
|
|
9
|
+
| setup | —(前置初始化) | Profile 确认、workflow 就绪 | `setup_control` |
|
|
10
|
+
| requirements | `requirements` | PRD、Decision Map、Flow Record、CONTEXT.md 术语 | `flow_control{create-flow}` |
|
|
11
|
+
| design | `design` | 技术方案 + ADR(Planning Baseline) | `flow_control{planning-start, planning-pr}` |
|
|
12
|
+
| tasks | `tasks` | DAG 任务定义、Sub Issues | `task_control{create-task}` |
|
|
13
|
+
| code | `code` | 实现 + TDD evidence + PR | `task_control{start-task, submit-task}` |
|
|
14
|
+
| review | `review` | 审查报告、合并 | `task_control{submit-review, merge-task}` |
|
|
15
|
+
| release | —(手动) | 版本、Release PR、GitHub Actions 发布 | `release_control` |
|
|
16
|
+
|
|
17
|
+
## 完成权威
|
|
18
|
+
|
|
19
|
+
- **阶段完成 = Flow Record(Parent Issue)body checklist 中的 `- [x] <stage>`**
|
|
20
|
+
- 阶段推进由 `flow_control{op:"stage-start"|"stage-complete"}` 维护:start 打 `cabbage:stage:<name>` label,complete 标记 checklist
|
|
21
|
+
- 已完成阶段重复 start/complete → 幂等通过
|
|
22
|
+
|
|
23
|
+
## 门禁规则
|
|
24
|
+
|
|
25
|
+
| 场景 | 要求 |
|
|
26
|
+
|------|------|
|
|
27
|
+
| stage-start X | 前置阶段须已 completed(requirements 无前置) |
|
|
28
|
+
| stage-complete X | 前置阶段须已 completed;**requirements 完成需用户确认一次** |
|
|
29
|
+
| stage-start tasks(高风险 Flow,label `cabbage:risk:high`) | 需用户确认(`user_confirmed: true`) |
|
|
30
|
+
| 依赖 Task 启动 | 前置依赖 Task 已 merged、并行数 < 5 |
|
|
31
|
+
|
|
32
|
+
## 阶段顺序与基线
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
setup → requirements → design → tasks → code → review → (release 手动)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
- **Planning Baseline**:CONTEXT.md + PRD + Design + ADR 经单个 Planning PR 合入后,才允许创建 Task Record
|
|
39
|
+
- **requirements 基线**:需求阶段结束须用户确认一次
|
|
40
|
+
- **goal 最小化**:`goal({op:"create", parent_issue_number:<Flow Record 编号>})`,目标/验收从 Flow Record 读取
|
|
41
|
+
|
|
42
|
+
## 各阶段关键约束
|
|
43
|
+
|
|
44
|
+
- **requirements**:渐进式澄清(Decision Map),一次只问一个问题;领域术语写入根 CONTEXT.md
|
|
45
|
+
- **design**:architect 在 planning worktree 产出文档;方案遵循工程原则(KISS/YAGNI/DRY/SRP)
|
|
46
|
+
- **tasks**:垂直切片、可独立验证、无循环依赖;标题用英文功能标题(内核派生 slug)
|
|
47
|
+
- **code**:TDD 协议唯一来源是 `flow-tdd` skill;证据经 `tdd_checkpoint` 提交,缺证据 PR 被拒
|
|
48
|
+
- **review**:双轴审查(规范 + 规格)+ TDD criterion coverage;reviewer 只读,写操作经 `task_control`
|
|
49
|
+
- **release**:人工流程;按 Profile 版本规则 + 项目 GitHub Actions release workflow(技术栈无关)
|
|
50
|
+
|
|
51
|
+
## Prohibited Actions
|
|
52
|
+
|
|
53
|
+
- 不跳过前置门禁直接 stage-start/complete
|
|
54
|
+
- 不手工修改 Flow Record 的 stage checklist(由 flow_control 维护)
|
|
55
|
+
- 不绕过工具直接执行高风险 git/gh 写操作(push/PR/merge/worktree)
|