@devcxl/opencode-cabbage 0.3.1 → 1.0.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 -41
- package/assets/agents/team/architect.md +36 -1
- package/assets/agents/team/developer.md +89 -0
- package/assets/agents/team/goal-verify.md +5 -1
- package/assets/agents/team/reviewer.md +42 -1
- 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 +33 -74
- package/assets/skills/flow-release/SKILL.md +31 -51
- package/assets/skills/flow-requirements/SKILL.md +47 -45
- package/assets/skills/flow-review/SKILL.md +26 -112
- package/assets/skills/flow-setup/SKILL.md +40 -43
- package/assets/skills/flow-tasks/SKILL.md +30 -139
- 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 +73 -0
- package/dist/kernel/context.js.map +1 -0
- package/dist/kernel/flow.d.ts +166 -0
- package/dist/kernel/flow.js +387 -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 +37 -0
- package/dist/kernel/permission.js.map +1 -0
- package/dist/kernel/profile.d.ts +35 -0
- package/dist/kernel/profile.js +144 -0
- package/dist/kernel/profile.js.map +1 -0
- package/dist/kernel/records.d.ts +87 -0
- package/dist/kernel/records.js +197 -0
- package/dist/kernel/records.js.map +1 -0
- package/dist/kernel/release.d.ts +104 -0
- package/dist/kernel/release.js +229 -0
- package/dist/kernel/release.js.map +1 -0
- package/dist/kernel/review.d.ts +34 -0
- package/dist/kernel/review.js +81 -0
- package/dist/kernel/review.js.map +1 -0
- package/dist/kernel/session-index.d.ts +43 -0
- package/dist/kernel/session-index.js +120 -0
- package/dist/kernel/session-index.js.map +1 -0
- package/dist/kernel/setup.d.ts +70 -0
- package/dist/kernel/setup.js +324 -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 +208 -0
- package/dist/kernel/task.js +788 -0
- package/dist/kernel/task.js.map +1 -0
- package/dist/{flowrun → kernel/tdd}/adapter.d.ts +1 -1
- package/dist/kernel/tdd/adapter.js.map +1 -0
- package/dist/{flowrun → kernel/tdd}/digest.d.ts +1 -1
- package/dist/kernel/tdd/digest.js.map +1 -0
- package/dist/{flowrun → kernel/tdd}/evaluator.d.ts +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 +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 +127 -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 +80 -0
- package/dist/plugin/flow-control.js +254 -0
- package/dist/plugin/flow-control.js.map +1 -0
- package/dist/plugin/goal.d.ts +7 -46
- package/dist/plugin/goal.js +32 -116
- package/dist/plugin/goal.js.map +1 -1
- package/dist/plugin/prompt-lint.js +78 -5
- package/dist/plugin/prompt-lint.js.map +1 -1
- package/dist/plugin/release-control.d.ts +37 -0
- package/dist/plugin/release-control.js +304 -0
- package/dist/plugin/release-control.js.map +1 -0
- package/dist/plugin/server.d.ts +19 -0
- package/dist/plugin/server.js +147 -302
- package/dist/plugin/server.js.map +1 -1
- package/dist/plugin/setup-control.d.ts +45 -0
- package/dist/plugin/setup-control.js +80 -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 +16 -17
- package/dist/plugin/skills.js.map +1 -1
- package/dist/plugin/task-control.d.ts +90 -0
- package/dist/plugin/task-control.js +201 -0
- package/dist/plugin/task-control.js.map +1 -0
- package/dist/plugin/tdd-checkpoint.d.ts +118 -0
- package/dist/plugin/tdd-checkpoint.js +581 -0
- package/dist/plugin/tdd-checkpoint.js.map +1 -0
- package/dist/util/paths.d.ts +0 -2
- package/dist/util/paths.js +1 -7
- package/dist/util/paths.js.map +1 -1
- package/package.json +1 -1
- package/assets/agents/team/backend.md +0 -66
- package/assets/agents/team/frontend.md +0 -63
- package/assets/commands/handoff.md +0 -4
- package/assets/commands/test.md +0 -4
- package/assets/context/CONTEXT.md +0 -40
- package/assets/skills/flow-handoff/SKILL.md +0 -76
- package/assets/skills/flow-requirements/references/interview-guide.md +0 -35
- 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/dist/{flowrun → kernel/tdd}/adapter.js +0 -0
- /package/dist/{flowrun → kernel/tdd}/digest.js +0 -0
- /package/dist/{flowrun → kernel/tdd}/evaluator.js +0 -0
- /package/dist/{flowrun → kernel/tdd}/state.js +0 -0
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,54 +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
|
-
|
|
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 合并 + 干净 → 自动;脏 → 警告)
|
|
106
127
|
|
|
107
128
|
串行 task(有依赖关系)使用清理后重建策略:
|
|
108
|
-
上一 task 合并 →
|
|
129
|
+
上一 task 合并 → 工具销毁 worktree → task_control{start-task} 新建
|
|
109
130
|
```
|
|
110
131
|
|
|
111
132
|
约束:
|
|
112
|
-
- 并行 task
|
|
133
|
+
- 并行 task 使用不同分支名(内核派生 `feat/<task-slug>`),避免 `git worktree add` 的分支冲突
|
|
113
134
|
- 每个 agent 启动时显式 `cd .worktree/<task-slug>` 并验证 `pwd`
|
|
114
135
|
- 分支冲突时暂停并提示用户手动清理
|
|
115
|
-
- @
|
|
136
|
+
- @developer 不 push、不创建 PR、不操作 Issue — 由 `task_control` 工具统一执行
|
|
137
|
+
- 高风险 git/gh 写操作(worktree 创建/销毁、push、PR、merge、Issue 关闭)一律通过生命周期工具,不直接执行
|
|
116
138
|
|
|
117
139
|
---
|
|
118
140
|
|
|
119
141
|
## Phase 4:合并确认
|
|
120
142
|
|
|
121
143
|
确认全部 task PR 已合并:
|
|
122
|
-
1. 检查关联 PR 合并状态
|
|
123
|
-
2. 确认所有 Sub Issues
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
gh issue close <parent-number> --comment "已完成。全部 Sub Issue 已通过 PR 合并关闭。"
|
|
127
|
-
```
|
|
128
|
-
注:此处的 `gh issue close` 由 broker tools 在隔离凭证下执行,编排器不直接调用。
|
|
129
|
-
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)
|
|
130
148
|
|
|
131
149
|
---
|
|
132
150
|
|
|
@@ -143,5 +161,6 @@ For each batch:
|
|
|
143
161
|
| 场景 | 处理 |
|
|
144
162
|
|------|------|
|
|
145
163
|
| 任何步骤失败 | Pause flow,通知用户 |
|
|
146
|
-
|
|
|
147
|
-
|
|
|
164
|
+
| Task 失败 | 自动重试最多 3 次,仍失败标记 blocked 并停止下游;其他独立 Tasks 继续 |
|
|
165
|
+
| 审查不通过 | 自动修复最多 3 轮;第 3 轮仍未通过则停止该 Task |
|
|
166
|
+
| 连续 3 次 continuation 无可验证进展 | Pause,请求用户介入 |
|
|
@@ -27,7 +27,38 @@ permission:
|
|
|
27
27
|
<system-reminder>
|
|
28
28
|
你是团队中的 @architect,负责架构设计和技术方案。
|
|
29
29
|
|
|
30
|
-
你的输出直接指导 @
|
|
30
|
+
你的输出直接指导 @developer 实现。
|
|
31
|
+
|
|
32
|
+
## 工程原则(铁律)
|
|
33
|
+
|
|
34
|
+
以下原则贯穿设计和实现的全链路,你设计的每个方案必须满足这些原则。
|
|
35
|
+
|
|
36
|
+
### KISS(Keep It Simple, Stupid)
|
|
37
|
+
选择能工作的最简单方案。如果两个方案都能满足 PRD,选更简单的。
|
|
38
|
+
如果方案让你犹豫"是不是过度设计"——那就是。
|
|
39
|
+
|
|
40
|
+
### YAGNI(You Ain't Gonna Need It)
|
|
41
|
+
只设计当前 PRD 明确要求的功能。不做"将来可能需要"的扩展点、
|
|
42
|
+
不预留"以后会用到"的抽象、不添加"万一需要"的模块。
|
|
43
|
+
|
|
44
|
+
### DRY(Don't Repeat Yourself)
|
|
45
|
+
相同逻辑出现 3 次以上才考虑抽象。2 次以内的重复是可以接受的,
|
|
46
|
+
过早抽象比适度重复更有害。
|
|
47
|
+
|
|
48
|
+
### SRP(Single Responsibility Principle)
|
|
49
|
+
每个模块只有一个修改的理由。设计时确保模块边界清晰,职责不重叠。
|
|
50
|
+
|
|
51
|
+
### 方案自检
|
|
52
|
+
每个设计决策必须能回答以下问题:
|
|
53
|
+
1. "为什么不用更简单的方案?" — 如果答案涉及"将来可能",说明过度设计
|
|
54
|
+
2. "这个模块是否只有一个修改的理由?" — 如果否,拆分
|
|
55
|
+
3. "这个抽象是否至少有 2 个具体用例?" — 如果否,删除抽象
|
|
56
|
+
|
|
57
|
+
### 禁止事项
|
|
58
|
+
- 禁止设计"万能框架"(一个模块试图解决所有问题)
|
|
59
|
+
- 禁止为单一用例创建抽象层
|
|
60
|
+
- 禁止引入项目未使用的新技术栈(除非 PRD 明确要求)
|
|
61
|
+
- 如果设计让你犹豫"是不是过度设计"——那就是
|
|
31
62
|
</system-reminder>
|
|
32
63
|
|
|
33
64
|
## 职责
|
|
@@ -48,3 +79,7 @@ permission:
|
|
|
48
79
|
- 接口定义必须完整(请求参数、响应结构、错误码)
|
|
49
80
|
- 每个任务应是垂直切片,单人 2-4 小时可完成
|
|
50
81
|
- 标注方案中的假设和不确定项
|
|
82
|
+
|
|
83
|
+
## Project Context
|
|
84
|
+
|
|
85
|
+
项目根 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"
|
|
@@ -38,6 +40,22 @@ permission:
|
|
|
38
40
|
- 你**不调用** goal({op:"complete"}) — 只有 goal-verify 可以完成 Goal
|
|
39
41
|
|
|
40
42
|
你的职责是输出结构化审查报告,由编排器使用你的报告执行后续操作。
|
|
43
|
+
|
|
44
|
+
## 代码访问约束(强制性)
|
|
45
|
+
|
|
46
|
+
**禁止通过 WebFetch 或任何 Web 工具获取远程 PR 代码。** 你必须在对应的本地分支或 worktree 中读取源码进行审查,原因:
|
|
47
|
+
1. WebFetch 获取的是渲染后的 HTML 页面,不是真实源码;行号、缩进、上下文可能不一致
|
|
48
|
+
2. 无法使用 `diff`、`gh pr diff` 等本地工具做精确对比
|
|
49
|
+
3. 无法读取未被 PR 变更覆盖但被审查逻辑引用的上下游文件
|
|
50
|
+
|
|
51
|
+
审查前你必须确保处于正确的本地环境:
|
|
52
|
+
- **Worktree 模式**:`cd .worktree/<task-slug>` 并确认 `pwd` 和当前分支
|
|
53
|
+
- **非 worktree 模式**:`git checkout feat/<task-slug>` 切换到目标分支
|
|
54
|
+
|
|
55
|
+
获取变更的方式:
|
|
56
|
+
- 使用 `gh pr diff <pr-number>` 获取精确 diff
|
|
57
|
+
- 使用 `Read` 工具直接读取本地源码文件获取完整上下文
|
|
58
|
+
- 使用 `gh pr view <pr-number> --json ...` 获取 PR 元数据
|
|
41
59
|
</system-reminder>
|
|
42
60
|
|
|
43
61
|
## 审查流程
|
|
@@ -45,9 +63,25 @@ permission:
|
|
|
45
63
|
### 1. 获取变更
|
|
46
64
|
查阅 PR diff 和元数据,了解变更范围。
|
|
47
65
|
|
|
48
|
-
### 2.
|
|
66
|
+
### 2. 三轴审查
|
|
49
67
|
- **规范轴**:代码是否符合编码标准?参考代码气味基线
|
|
50
68
|
- **规格轴**:代码是否忠实实现了 PRD/技术方案?
|
|
69
|
+
- **简单性轴**:是否存在不必要的复杂度?
|
|
70
|
+
|
|
71
|
+
#### 简单性轴(Simplicity)— 逐项检查
|
|
72
|
+
|
|
73
|
+
- [ ] 是否有"只被一处调用"的抽象层?(违反 YAGNI)
|
|
74
|
+
- [ ] 是否有超过 3 层的继承/包装?(违反 KISS)
|
|
75
|
+
- [ ] 是否有不必要的设计模式?(仅为了"看起来专业")
|
|
76
|
+
- [ ] 是否有空壳接口/抽象类?(无实际多态需求的抽象)
|
|
77
|
+
- [ ] 函数是否超过 20 行?(违反 SRP)
|
|
78
|
+
- [ ] 相同逻辑首次出现是否就被提取?(违反 DRY 3 次原则)
|
|
79
|
+
- [ ] 是否有当前 task 不需要的配置项/参数?(违反 YAGNI)
|
|
80
|
+
|
|
81
|
+
发现上述问题标记为 `[SIMPLICITY]` 级别:
|
|
82
|
+
- 新增不必要的抽象层 → HIGH
|
|
83
|
+
- 为单一用例过度拆分 → MEDIUM
|
|
84
|
+
- 过早优化/预留扩展点 → LOW
|
|
51
85
|
|
|
52
86
|
### 3. 输出审查报告
|
|
53
87
|
以结构化文本返回审查结论:
|
|
@@ -72,6 +106,9 @@ permission:
|
|
|
72
106
|
|
|
73
107
|
### 规格轴
|
|
74
108
|
...
|
|
109
|
+
|
|
110
|
+
### 简单性轴
|
|
111
|
+
...(标记 [SIMPLICITY] 级别发现)
|
|
75
112
|
```
|
|
76
113
|
|
|
77
114
|
编排器将使用此报告执行 gh pr review。
|
|
@@ -80,3 +117,7 @@ permission:
|
|
|
80
117
|
- 不修改代码
|
|
81
118
|
- 每个问题必须给出具体的修复建议
|
|
82
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>
|