@devcxl/opencode-cabbage 0.1.0 → 0.2.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/assets/agents/dev-lifecycle.md +21 -13
- package/assets/agents/team/backend.md +8 -0
- package/assets/agents/team/frontend.md +8 -0
- package/assets/agents/team/reviewer.md +29 -13
- package/assets/skills/flow-code/SKILL.md +78 -9
- package/assets/skills/flow-design/SKILL.md +55 -6
- package/assets/skills/flow-handoff/SKILL.md +29 -0
- package/assets/skills/flow-release/SKILL.md +37 -1
- package/assets/skills/flow-requirements/SKILL.md +34 -0
- package/assets/skills/flow-review/SKILL.md +76 -5
- package/assets/skills/flow-setup/SKILL.md +32 -0
- package/assets/skills/flow-tasks/SKILL.md +43 -3
- package/assets/skills/flow-test/SKILL.md +31 -0
- package/dist/plugin/agents.d.ts +10 -0
- package/dist/plugin/agents.js +13 -0
- package/dist/plugin/agents.js.map +1 -1
- package/dist/plugin/goal.js +8 -2
- package/dist/plugin/goal.js.map +1 -1
- package/dist/plugin/prompt-lint.d.ts +10 -0
- package/dist/plugin/prompt-lint.js +160 -0
- package/dist/plugin/prompt-lint.js.map +1 -0
- package/dist/plugin/server.js +7 -3
- package/dist/plugin/server.js.map +1 -1
- package/dist/plugin/skills.d.ts +1 -1
- package/dist/plugin/skills.js +7 -1
- package/dist/plugin/skills.js.map +1 -1
- package/package.json +5 -1
|
@@ -25,9 +25,10 @@ color: '#00bcd4'
|
|
|
25
25
|
## 调度团队
|
|
26
26
|
|
|
27
27
|
- @architect:技术方案、ADR、DAG 任务拆解
|
|
28
|
-
- @backend:后端代码 TDD
|
|
29
|
-
- @frontend:前端代码 TDD
|
|
30
|
-
- @reviewer
|
|
28
|
+
- @backend:后端代码 TDD 实现(编码 + 测试 + commit + push,不创建 PR)
|
|
29
|
+
- @frontend:前端代码 TDD 实现(编码 + 测试 + commit + push,不创建 PR)
|
|
30
|
+
- @reviewer:只读代码审查,输出结构化审查报告(不操作 git/GitHub,不写文件)
|
|
31
|
+
- @goal-verify:独立验证 Goal 完成状态(**只有它可以调用 goal({op:"complete"})**)
|
|
31
32
|
|
|
32
33
|
## 全局约束
|
|
33
34
|
|
|
@@ -77,22 +78,28 @@ color: '#00bcd4'
|
|
|
77
78
|
For each batch:
|
|
78
79
|
For each task in batch (可并行):
|
|
79
80
|
0. 安全检查:提交设计阶段可能遗留的未提交文档
|
|
81
|
+
BASE=$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name')
|
|
80
82
|
if [ -n "$(git status --short docs/)" ]; then
|
|
81
83
|
git add docs/ && git commit -m "docs: 提交设计阶段未提交的文档"
|
|
82
|
-
git push origin
|
|
84
|
+
git push origin $BASE
|
|
83
85
|
fi
|
|
84
86
|
1. 检查 worktree 是否存在
|
|
85
|
-
- 不存在 → git worktree add
|
|
86
|
-
-
|
|
87
|
+
- 不存在 → git worktree add -b feat/<task-slug> .worktree/<task-slug> $BASE
|
|
88
|
+
- 存在 → 验证分支一致,一致则复用,不一致则报错
|
|
87
89
|
2. 并行派发 @backend/@frontend 到各 worktree 路径
|
|
88
|
-
3. 每个 agent 在 worktree
|
|
90
|
+
3. 每个 agent 在 worktree 内(不创建 PR):
|
|
89
91
|
- npm install(如未安装)
|
|
90
92
|
- 编码 + 单测
|
|
91
|
-
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
93
|
+
- commit + push
|
|
94
|
+
- 返回 branch、commit、test result
|
|
95
|
+
4. 编排器(你)为每个完成的 task 创建 PR:
|
|
96
|
+
gh pr create --title "<title>" --body "Closes #<issue-num>"
|
|
97
|
+
5. 等待 batch 内所有 PR 就绪
|
|
98
|
+
6. 委派 @reviewer 审查各 PR,接收结构化审查报告
|
|
99
|
+
7. 编排器发布审查结果:
|
|
100
|
+
gh pr review <pr-number> --approve|--request-changes --body "<报告>"
|
|
101
|
+
8. CI 通过后合并 PR
|
|
102
|
+
9. 合并后清理 worktree
|
|
96
103
|
|
|
97
104
|
串行 task(有依赖关系)使用清理后重建策略:
|
|
98
105
|
上一 task 合并 → git worktree remove → git worktree add 新 task
|
|
@@ -102,6 +109,7 @@ For each batch:
|
|
|
102
109
|
- 并行 task 使用不同分支名 `feat/<task-slug>`,避免 `git worktree add` 的分支冲突
|
|
103
110
|
- 每个 agent 启动时显式 `cd .worktree/<task-slug>` 并验证 `pwd`
|
|
104
111
|
- 分支冲突时暂停并提示用户手动清理
|
|
112
|
+
- @backend / @frontend 不创建 PR、不操作 Issue — 编排器负责所有 GitHub 操作
|
|
105
113
|
|
|
106
114
|
---
|
|
107
115
|
|
|
@@ -122,7 +130,7 @@ For each batch:
|
|
|
122
130
|
|
|
123
131
|
所有阶段完成后,调用 `goal({op:"complete"})`。
|
|
124
132
|
|
|
125
|
-
**如果被 BLOCKED:** 使用 Task 工具派发 `@goal-verify` 子 agent
|
|
133
|
+
**如果被 BLOCKED:** 使用 Task 工具派发 `@goal-verify` 子 agent 做独立验证。**只有 goal-verify 可以完成 Goal**。
|
|
126
134
|
|
|
127
135
|
---
|
|
128
136
|
|
|
@@ -8,35 +8,47 @@ tools:
|
|
|
8
8
|
bash: false
|
|
9
9
|
write: false
|
|
10
10
|
edit: false
|
|
11
|
+
capabilities:
|
|
12
|
+
create_pr: false
|
|
13
|
+
merge_pr: false
|
|
14
|
+
modify_files: false
|
|
15
|
+
run_tests: false
|
|
16
|
+
push_branch: false
|
|
17
|
+
approve_review: false
|
|
18
|
+
complete_goal: false
|
|
11
19
|
---
|
|
12
20
|
|
|
13
21
|
<system-reminder>
|
|
14
22
|
你是团队中的 @reviewer,负责代码审查和质量把关。
|
|
15
23
|
|
|
16
|
-
|
|
24
|
+
你是一个**只读**审查者:
|
|
25
|
+
- 你可以读取代码、PR diff、文档和规格
|
|
26
|
+
- 你**不执行** git push、gh pr merge、gh pr review、gh pr close
|
|
27
|
+
- 你**不写**任何文件
|
|
28
|
+
- 你**不调用** goal({op:"complete"}) — 只有 goal-verify 可以完成 Goal
|
|
17
29
|
|
|
18
|
-
|
|
19
|
-
1. 先调用 `goal({op:"get"})` 获取目标
|
|
20
|
-
2. 然后按下方流程审查
|
|
21
|
-
3. 如果全部通过,调用 `goal({op:"complete"})` 完成验证
|
|
22
|
-
4. 只有你可以调用 complete,主 agent 被 BLOCKED
|
|
30
|
+
你的职责是输出结构化审查报告,由编排器使用你的报告执行后续操作。
|
|
23
31
|
</system-reminder>
|
|
24
32
|
|
|
25
33
|
## 审查流程
|
|
26
34
|
|
|
27
35
|
### 1. 获取变更
|
|
28
|
-
|
|
29
|
-
gh pr diff <pr-number>
|
|
30
|
-
gh pr view <pr-number> --json title,body,files
|
|
31
|
-
```
|
|
36
|
+
查阅 PR diff 和元数据,了解变更范围。
|
|
32
37
|
|
|
33
38
|
### 2. 双轴审查
|
|
34
39
|
- **规范轴**:代码是否符合编码标准?参考代码气味基线
|
|
35
40
|
- **规格轴**:代码是否忠实实现了 PRD/技术方案?
|
|
36
41
|
|
|
37
42
|
### 3. 输出审查报告
|
|
43
|
+
以结构化文本返回审查结论:
|
|
38
44
|
|
|
39
45
|
```
|
|
46
|
+
## 审查结论: APPROVED | CHANGES_REQUESTED
|
|
47
|
+
|
|
48
|
+
### 审查摘要
|
|
49
|
+
...
|
|
50
|
+
|
|
51
|
+
### 发现
|
|
40
52
|
[CRITICAL] 标题 - 必须修复
|
|
41
53
|
- 文件:path:行号
|
|
42
54
|
- 问题
|
|
@@ -44,11 +56,15 @@ gh pr view <pr-number> --json title,body,files
|
|
|
44
56
|
|
|
45
57
|
[HIGH] 标题 - 应该修复
|
|
46
58
|
[MEDIUM] 标题 - 建议修复
|
|
59
|
+
|
|
60
|
+
### 规范轴
|
|
61
|
+
...
|
|
62
|
+
|
|
63
|
+
### 规格轴
|
|
64
|
+
...
|
|
47
65
|
```
|
|
48
66
|
|
|
49
|
-
|
|
50
|
-
- Critical/High 存在 → 先将审查报告写入 `docs/dev/handoff/review-report.md`,然后 `gh pr review <pr-number> --request-changes --body-file docs/dev/handoff/review-report.md`,**不可调 goal({op:"complete"})**
|
|
51
|
-
- 无 Critical/High → 写入 `docs/dev/handoff/review-report.md` 后 `gh pr review <pr-number> --approve --body-file docs/dev/handoff/review-report.md`,然后调 `goal({op:"complete"})` 完成验证
|
|
67
|
+
编排器将使用此报告执行 gh pr review。
|
|
52
68
|
|
|
53
69
|
## 原则
|
|
54
70
|
- 不修改代码
|
|
@@ -22,18 +22,39 @@ description: 分支 → 编码 + 单测 → PR 提交(Worktree 模式)
|
|
|
22
22
|
|
|
23
23
|
### 3. 创建/复用 Worktree
|
|
24
24
|
```bash
|
|
25
|
-
#
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
# 探测默认分支
|
|
26
|
+
BASE=$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name' 2>/dev/null || git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@' || echo "main")
|
|
27
|
+
|
|
28
|
+
# 检查和创建 worktree
|
|
29
|
+
WORKTREE=".worktree/<task-slug>"
|
|
30
|
+
BRANCH="feat/<task-slug>"
|
|
31
|
+
|
|
32
|
+
if [ -d "$WORKTREE" ]; then
|
|
33
|
+
# Worktree 目录已存在 → 验证一致性
|
|
34
|
+
EXISTING=$(git -C "$WORKTREE" rev-parse --abbrev-ref HEAD 2>/dev/null)
|
|
35
|
+
if [ "$EXISTING" != "$BRANCH" ]; then
|
|
36
|
+
echo "ERROR: $WORKTREE exists but tracks branch '$EXISTING' (expected '$BRANCH')"
|
|
37
|
+
exit 1
|
|
38
|
+
fi
|
|
39
|
+
echo "Worktree 已存在,复用:$WORKTREE"
|
|
40
|
+
else
|
|
41
|
+
# 检查分支是否已存在
|
|
42
|
+
if git show-ref --verify "refs/heads/$BRANCH" >/dev/null 2>&1; then
|
|
43
|
+
# 分支已存在,检查是否已合并
|
|
44
|
+
if git branch --merged "$BASE" | grep -q "$BRANCH"; then
|
|
45
|
+
git branch -D "$BRANCH"
|
|
46
|
+
else
|
|
47
|
+
echo "ERROR: 分支 '$BRANCH' 已存在,请先处理"
|
|
48
|
+
exit 1
|
|
49
|
+
fi
|
|
50
|
+
fi
|
|
51
|
+
# 创建 worktree + 分支
|
|
52
|
+
git worktree add -b "$BRANCH" "$WORKTREE" "$BASE"
|
|
28
53
|
fi
|
|
29
54
|
|
|
30
55
|
# 进入 worktree
|
|
31
|
-
cd
|
|
56
|
+
cd "$WORKTREE"
|
|
32
57
|
```
|
|
33
|
-
|
|
34
|
-
> **串行 task 说明**:当 DAG 存在依赖关系时,flow-review 会在上一 task 合并后自动清理其 worktree。
|
|
35
|
-
> 因此下一 task 执行时 worktree 不存在,会触发新建流程,天然实现"清理后重建"策略。
|
|
36
|
-
> 无需额外处理,worktree 创建逻辑对串行/并行场景透明。
|
|
37
58
|
### 4. 安装依赖
|
|
38
59
|
|
|
39
60
|
```bash
|
|
@@ -65,7 +86,18 @@ npm test
|
|
|
65
86
|
### 7. 提交 PR
|
|
66
87
|
```bash
|
|
67
88
|
# 在 worktree 内执行
|
|
68
|
-
|
|
89
|
+
|
|
90
|
+
# 根据 task 预期文件和 git status 确定待暂存文件
|
|
91
|
+
# Task 文件通常包含 frontmatter expected_files 字段
|
|
92
|
+
git status --short
|
|
93
|
+
|
|
94
|
+
# 显式暂存任务相关文件(不是 git add .)
|
|
95
|
+
# 示例:git add src/plugin/goal.ts test/goal.test.ts assets/agents/team/reviewer.md
|
|
96
|
+
git add <file1> <file2> ...
|
|
97
|
+
|
|
98
|
+
# 提交前检查:确保无密钥、无超大文件、无任务范围外文件
|
|
99
|
+
git diff --cached --name-only
|
|
100
|
+
|
|
69
101
|
git commit -m "feat(<scope>): <title>"
|
|
70
102
|
git push origin feat/<task-slug>
|
|
71
103
|
mkdir -p docs/dev/handoff
|
|
@@ -91,3 +123,40 @@ gh pr create --title "<title>" --body-file docs/dev/handoff/pr-body.md
|
|
|
91
123
|
## 后续
|
|
92
124
|
- **/test** — 触发 CI E2E 测试
|
|
93
125
|
- **/review** — 审查 PR
|
|
126
|
+
|
|
127
|
+
## Contract
|
|
128
|
+
|
|
129
|
+
### Trigger
|
|
130
|
+
由 `/code` 命令或 `@dev-lifecycle` Phase 3 触发。
|
|
131
|
+
|
|
132
|
+
### Inputs
|
|
133
|
+
- Sub Issue 编号(来源:`/tasks` 产出)
|
|
134
|
+
- task 文件 frontmatter 中的 `worktree_root`(来源:task 文件)
|
|
135
|
+
|
|
136
|
+
### Preconditions
|
|
137
|
+
- `/tasks` 已完成 → Sub Issues 就绪
|
|
138
|
+
- 前置依赖任务已合并
|
|
139
|
+
|
|
140
|
+
### Procedure
|
|
141
|
+
1. 选择依赖已满足的 Sub Issue
|
|
142
|
+
2. 创建或复用 Worktree(`git worktree add -b`)
|
|
143
|
+
3. 安装依赖 → 编码 + 单测 → commit + push
|
|
144
|
+
4. 编排器创建 PR
|
|
145
|
+
|
|
146
|
+
### Outputs
|
|
147
|
+
- Worktree 已创建(`.worktree/<task-slug>/`)
|
|
148
|
+
- 代码已推送
|
|
149
|
+
- PR 已创建(Orchestrator 执行)
|
|
150
|
+
|
|
151
|
+
### Failure
|
|
152
|
+
- Worktree 创建失败 → 检查分支冲突或目录残留
|
|
153
|
+
- 测试失败 → 修复后重试
|
|
154
|
+
|
|
155
|
+
### Idempotency
|
|
156
|
+
- Worktree 已存在 → 复用
|
|
157
|
+
- 代码已提交 → 追加提交
|
|
158
|
+
|
|
159
|
+
### Prohibited Actions
|
|
160
|
+
- Worker 不创建 PR、不操作 Issue
|
|
161
|
+
- 不使用 `git add .`
|
|
162
|
+
- 不直接 push 到默认分支
|
|
@@ -9,7 +9,7 @@ description: 技术方案设计 → 方案文档 + ADR 输出
|
|
|
9
9
|
|
|
10
10
|
## Prerequisites
|
|
11
11
|
- `/requirements` 已完成 → `docs/prd/<title>.md` + Parent Issue 存在
|
|
12
|
-
- 阅读 `../CONTEXT.md` 了解领域术语
|
|
12
|
+
- 阅读 `../_context/CONTEXT.md` 了解领域术语
|
|
13
13
|
|
|
14
14
|
## Workflow
|
|
15
15
|
|
|
@@ -27,7 +27,7 @@ description: 技术方案设计 → 方案文档 + ADR 输出
|
|
|
27
27
|
|
|
28
28
|
### 3. 记录 ADR
|
|
29
29
|
为每个关键决策记录 ADR 到 `docs/adr/<YYYY-MM-DD>-<slug>.md`。
|
|
30
|
-
ADR 格式参考
|
|
30
|
+
ADR 格式参考 `_prompts/adr-format` 中的格式要求。
|
|
31
31
|
|
|
32
32
|
ADR 至少记录:
|
|
33
33
|
- 技术选型决策
|
|
@@ -51,20 +51,69 @@ EOF
|
|
|
51
51
|
gh issue comment <issue-number> --body-file docs/dev/handoff/design-comment.md
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
-
### 5.
|
|
55
|
-
设计文档和 ADR
|
|
54
|
+
### 5. 提交文档(Planning PR)
|
|
55
|
+
设计文档和 ADR 通过 Planning PR 合入,确保分支保护下也能正常工作:
|
|
56
56
|
|
|
57
57
|
```bash
|
|
58
|
+
# 探测默认分支
|
|
59
|
+
BASE=$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name' 2>/dev/null || echo "main")
|
|
60
|
+
|
|
61
|
+
# 创建 planning 分支
|
|
62
|
+
git checkout -b chore/plan-<slug> $BASE
|
|
58
63
|
git add docs/dev/specs/<title>.md docs/adr/<date>-<slug>.md
|
|
59
64
|
git commit -m "docs: <title> — 技术方案 + ADR"
|
|
60
|
-
git push origin
|
|
65
|
+
git push origin chore/plan-<slug>
|
|
66
|
+
|
|
67
|
+
# 创建 PR
|
|
68
|
+
gh pr create --title "docs: <title> — 技术方案 + ADR" \
|
|
69
|
+
--body "Planning PR:完整技术方案和架构决策记录" \
|
|
70
|
+
--base $BASE
|
|
71
|
+
|
|
72
|
+
# 合并 PR 后切回 $BASE
|
|
73
|
+
git checkout $BASE && git pull origin $BASE
|
|
61
74
|
```
|
|
62
75
|
|
|
63
76
|
## Output
|
|
64
77
|
- `docs/dev/specs/<title>.md` — 技术方案
|
|
65
78
|
- `docs/adr/<date>-<slug>.md` — ADR 决议
|
|
66
79
|
- Parent Issue 收到设计评论
|
|
67
|
-
-
|
|
80
|
+
- 文档通过 Planning PR 合入默认分支
|
|
68
81
|
|
|
69
82
|
## 后续
|
|
70
83
|
- **/tasks** — 基于设计方案拆解为 DAG 任务
|
|
84
|
+
|
|
85
|
+
## Contract
|
|
86
|
+
|
|
87
|
+
### Trigger
|
|
88
|
+
由 `/design` 命令或 `@dev-lifecycle` Phase 1 触发。
|
|
89
|
+
|
|
90
|
+
### Inputs
|
|
91
|
+
- `docs/prd/<title>.md` — 上游 PRD(来源:requirements 阶段产出)
|
|
92
|
+
- Parent Issue 编号(来源:Goal metadata 或 `/requirements` 阶段产出)
|
|
93
|
+
|
|
94
|
+
### Preconditions
|
|
95
|
+
- `/requirements` 已完成 → `docs/prd/<title>.md` 存在
|
|
96
|
+
- Parent Issue 存在
|
|
97
|
+
|
|
98
|
+
### Procedure
|
|
99
|
+
1. 阅读 PRD、已有 ADR、Out of Scope
|
|
100
|
+
2. 输出技术方案到 `docs/dev/specs/<title>.md`
|
|
101
|
+
3. 记录 ADR 到 `docs/adr/<YYYY-MM-DD>-<slug>.md`
|
|
102
|
+
4. 附设计评论到 Parent Issue
|
|
103
|
+
5. 通过 Planning PR 提交文档
|
|
104
|
+
|
|
105
|
+
### Outputs
|
|
106
|
+
- `docs/dev/specs/<title>.md` — 技术方案
|
|
107
|
+
- `docs/adr/<date>-<slug>.md` — ADR 决议
|
|
108
|
+
|
|
109
|
+
### Failure
|
|
110
|
+
- ADR 与已有决策冲突 → 记录冲突并标注
|
|
111
|
+
- Planning PR 合并失败 → 通知用户手动处理
|
|
112
|
+
|
|
113
|
+
### Idempotency
|
|
114
|
+
- 技术方案已存在 → 读取并更新
|
|
115
|
+
- ADR 已存在 → 不重复创建
|
|
116
|
+
|
|
117
|
+
### Prohibited Actions
|
|
118
|
+
- 不直接 push 到默认分支
|
|
119
|
+
- 不跳过 ADR 兼容性检查
|
|
@@ -45,3 +45,32 @@ description: 打包上下文,跨会话传递进度
|
|
|
45
45
|
|
|
46
46
|
## Output
|
|
47
47
|
- `docs/dev/handoff-<date>.md`
|
|
48
|
+
|
|
49
|
+
## Contract
|
|
50
|
+
|
|
51
|
+
### Trigger
|
|
52
|
+
由 `/handoff` 命令触发。上下文窗口接近极限或需跨会话传递进度时使用。
|
|
53
|
+
|
|
54
|
+
### Inputs
|
|
55
|
+
- 当前 Goal 状态(来源:Goal metadata)
|
|
56
|
+
|
|
57
|
+
### Preconditions
|
|
58
|
+
- 存在 Active Goal
|
|
59
|
+
|
|
60
|
+
### Procedure
|
|
61
|
+
1. 打包当前流程状态(阶段、任务、进度)
|
|
62
|
+
2. 列出已完成和待完成项
|
|
63
|
+
3. 确定下一步骤
|
|
64
|
+
4. 保存到 handoff 文件
|
|
65
|
+
|
|
66
|
+
### Outputs
|
|
67
|
+
- `docs/dev/handoff-<date>.md` — 交接文件
|
|
68
|
+
|
|
69
|
+
### Failure
|
|
70
|
+
- 无 Goal → 仅输出当前会话摘要
|
|
71
|
+
|
|
72
|
+
### Idempotency
|
|
73
|
+
- 同一天多次执行 → 覆盖前一次 handoff
|
|
74
|
+
|
|
75
|
+
### Prohibited Actions
|
|
76
|
+
- 不修改代码或文档
|
|
@@ -25,8 +25,9 @@ git log $(git describe --tags --abbrev=0)..HEAD --oneline
|
|
|
25
25
|
npm version <major|minor|patch> --no-git-tag-version
|
|
26
26
|
# 更新 CHANGELOG.md
|
|
27
27
|
git commit -m "chore(release): v<version>"
|
|
28
|
+
BASE=$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name')
|
|
28
29
|
git tag v<version>
|
|
29
|
-
git push origin
|
|
30
|
+
git push origin $BASE --tags
|
|
30
31
|
```
|
|
31
32
|
|
|
32
33
|
### 3. Release 草稿(自动)
|
|
@@ -48,3 +49,38 @@ GitHub Releases 页面 → 检查 Release 草稿 → 点击 **Publish release**
|
|
|
48
49
|
|
|
49
50
|
## 后续
|
|
50
51
|
无需后续阶段。Flow 完成。
|
|
52
|
+
|
|
53
|
+
## Contract
|
|
54
|
+
|
|
55
|
+
### Trigger
|
|
56
|
+
由 `/release` 命令触发。**仅手动触发**,不包含在自动流程中。
|
|
57
|
+
|
|
58
|
+
### Inputs
|
|
59
|
+
- 版本号类型(patch/minor/major,来源:用户指定)
|
|
60
|
+
|
|
61
|
+
### Preconditions
|
|
62
|
+
- 所有 PR 已合并
|
|
63
|
+
- 默认分支最新
|
|
64
|
+
- 所有测试通过
|
|
65
|
+
|
|
66
|
+
### Procedure
|
|
67
|
+
1. 确认版本号
|
|
68
|
+
2. 更新版本(npm version)
|
|
69
|
+
3. 生成 Changelog
|
|
70
|
+
4. 创建 git tag → push → 触发 Release 草稿
|
|
71
|
+
5. 人工审核发布 → npm publish
|
|
72
|
+
|
|
73
|
+
### Outputs
|
|
74
|
+
- GitHub Release
|
|
75
|
+
- npm 包已发布
|
|
76
|
+
|
|
77
|
+
### Failure
|
|
78
|
+
- npm publish 失败 → 检查 npm 认证
|
|
79
|
+
- tag 已存在 → 提示版本冲突
|
|
80
|
+
|
|
81
|
+
### Idempotency
|
|
82
|
+
- 相同版本号 → 阻止
|
|
83
|
+
|
|
84
|
+
### Prohibited Actions
|
|
85
|
+
- 不在自动模式中执行
|
|
86
|
+
- 不跳过测试直接发布
|
|
@@ -46,3 +46,37 @@ gh issue create \
|
|
|
46
46
|
|
|
47
47
|
## 下一阶段
|
|
48
48
|
- **/design** — 基于此 PRD 进行技术设计
|
|
49
|
+
|
|
50
|
+
## Contract
|
|
51
|
+
|
|
52
|
+
### Trigger
|
|
53
|
+
由 `/requirements` 命令或 `@dev-lifecycle` Phase 0 触发。
|
|
54
|
+
|
|
55
|
+
### Inputs
|
|
56
|
+
- 用户提供的功能描述(来自消息文本)
|
|
57
|
+
|
|
58
|
+
### Preconditions
|
|
59
|
+
- `/setup` 已完成(gh CLI 可用,docs 目录就绪)
|
|
60
|
+
|
|
61
|
+
### Procedure
|
|
62
|
+
1. 按 interview-guide 进行需求访谈
|
|
63
|
+
2. 输出 PRD 到 `docs/prd/<title>.md`
|
|
64
|
+
3. 记录 Out of Scope 到 `docs/dev/out-of-scope.md`
|
|
65
|
+
4. 创建 Parent GitHub Issue
|
|
66
|
+
|
|
67
|
+
### Outputs
|
|
68
|
+
- `docs/prd/<title>.md` — PRD 文档
|
|
69
|
+
- `docs/dev/out-of-scope.md` — 排除范围记录
|
|
70
|
+
- GitHub Parent Issue
|
|
71
|
+
|
|
72
|
+
### Failure
|
|
73
|
+
- gh CLI 不可用 → 提示先执行 /setup
|
|
74
|
+
- Issue 创建失败 → 记录错误,不阻塞 PRD 写入
|
|
75
|
+
|
|
76
|
+
### Idempotency
|
|
77
|
+
- 如果 PRD 文件已存在 → 更新而非覆盖
|
|
78
|
+
- 如果 Parent Issue 已创建 → 追加评论而非重复创建
|
|
79
|
+
|
|
80
|
+
### Prohibited Actions
|
|
81
|
+
- 不跳过访谈直接输出 PRD
|
|
82
|
+
- 不省略 Out of Scope 记录
|
|
@@ -68,15 +68,50 @@ gh issue close <issue-num> --comment "已完成,已合并至 main"
|
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
### 9. 清理 Worktree
|
|
71
|
-
PR
|
|
71
|
+
PR 合并后,安全清理对应的 worktree 和分支:
|
|
72
72
|
|
|
73
73
|
```bash
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
74
|
+
WORKTREE=".worktree/<task-slug>"
|
|
75
|
+
BRANCH="feat/<task-slug>"
|
|
76
|
+
|
|
77
|
+
# Preflight 检查
|
|
78
|
+
echo "=== Worktree 清理 Preflight ==="
|
|
79
|
+
|
|
80
|
+
# 1. 确认 PR 已合并
|
|
81
|
+
PR_NUM=<pr-number>
|
|
82
|
+
if ! gh pr view "$PR_NUM" --json merged --jq '.merged' 2>/dev/null | grep -q true; then
|
|
83
|
+
echo "ERROR: PR #$PR_NUM 未合并,跳过清理"
|
|
84
|
+
exit 1
|
|
85
|
+
fi
|
|
86
|
+
|
|
87
|
+
# 2. 确认分支已推送到远程
|
|
88
|
+
if git ls-remote --exit-code origin "$BRANCH" >/dev/null 2>&1; then
|
|
89
|
+
echo "分支 $BRANCH 已推送到远程"
|
|
90
|
+
else
|
|
91
|
+
echo "WARNING: 分支 $BRANCH 未推送到远程,但 PR 已合并,继续清理"
|
|
92
|
+
fi
|
|
93
|
+
|
|
94
|
+
# 3. 检查 worktree 是否干净
|
|
95
|
+
if [ -d "$WORKTREE" ]; then
|
|
96
|
+
DIRTY=$(git -C "$WORKTREE" status --porcelain)
|
|
97
|
+
if [ -n "$DIRTY" ]; then
|
|
98
|
+
echo "WARNING: Worktree 有未提交变更:"
|
|
99
|
+
echo "$DIRTY"
|
|
100
|
+
echo "暂停。如需强制清理请手动执行 --force"
|
|
101
|
+
exit 1
|
|
102
|
+
fi
|
|
103
|
+
|
|
104
|
+
# 4. 全部通过 → 清理
|
|
105
|
+
git worktree remove "$WORKTREE"
|
|
106
|
+
git branch -D "$BRANCH" 2>/dev/null || true
|
|
107
|
+
echo "Worktree 已清理:$WORKTREE"
|
|
108
|
+
else
|
|
109
|
+
echo "Worktree 不存在,跳过清理"
|
|
110
|
+
fi
|
|
77
111
|
```
|
|
78
112
|
|
|
79
|
-
>
|
|
113
|
+
> 清理前必须验证 PR 已合并、worktree 干净。只有在所有 preflight 检查通过后才删除。
|
|
114
|
+
> 如果 PR 已合并但 worktree 仍有未提交变更,暂停并通知用户,不自动 --force。
|
|
80
115
|
|
|
81
116
|
## Output
|
|
82
117
|
- PR 已审查
|
|
@@ -86,3 +121,39 @@ git branch -D feat/<task-slug>
|
|
|
86
121
|
|
|
87
122
|
## 后续
|
|
88
123
|
- **/release** — 发布(如所有 PR 已合并)
|
|
124
|
+
|
|
125
|
+
## Contract
|
|
126
|
+
|
|
127
|
+
### Trigger
|
|
128
|
+
由 `/review` 命令或 `@dev-lifecycle` Phase 3 审查步骤触发。
|
|
129
|
+
|
|
130
|
+
### Inputs
|
|
131
|
+
- PR 编号(来源:`/code` 产出)
|
|
132
|
+
|
|
133
|
+
### Preconditions
|
|
134
|
+
- `/code` 已完成 → PR 已创建
|
|
135
|
+
|
|
136
|
+
### Procedure
|
|
137
|
+
1. 获取 PR diff 和元数据
|
|
138
|
+
2. 双轴审查(规范轴 + 规格轴)
|
|
139
|
+
3. 输出结构化审查报告
|
|
140
|
+
4. 编排器发布审查结果
|
|
141
|
+
5. 等待 CI 通过后合并
|
|
142
|
+
6. 关闭关联 Sub Issue
|
|
143
|
+
7. 安全清理 Worktree(Preflight)
|
|
144
|
+
|
|
145
|
+
### Outputs
|
|
146
|
+
- 结构化审查报告(APPROVED / CHANGES_REQUESTED)
|
|
147
|
+
- PR 已合并(条件满足时)
|
|
148
|
+
|
|
149
|
+
### Failure
|
|
150
|
+
- Critical/High → Request Changes
|
|
151
|
+
- Worktree 清理失败 → 记录警告,不阻塞
|
|
152
|
+
|
|
153
|
+
### Idempotency
|
|
154
|
+
- 已合并的 PR → 跳过
|
|
155
|
+
- 已审查的 PR → 更新结论
|
|
156
|
+
|
|
157
|
+
### Prohibited Actions
|
|
158
|
+
- 不使用默认 --force 清理
|
|
159
|
+
- 不直接执行 gh pr merge(Orchestrator 执行)
|
|
@@ -41,3 +41,35 @@ echo "setup-complete" > .opencode/opencode-cabbage/setup-complete
|
|
|
41
41
|
- `docs/` 目录已就绪
|
|
42
42
|
- 开发环境已验证
|
|
43
43
|
- 可开始 `/requirements`
|
|
44
|
+
|
|
45
|
+
## Contract
|
|
46
|
+
|
|
47
|
+
### Trigger
|
|
48
|
+
由 `/setup` 命令触发。首次使用插件或切换新项目时执行。
|
|
49
|
+
|
|
50
|
+
### Inputs
|
|
51
|
+
无外部输入。从当前工作目录检测项目状态。
|
|
52
|
+
|
|
53
|
+
### Preconditions
|
|
54
|
+
无。不要求任何前置阶段。
|
|
55
|
+
|
|
56
|
+
### Procedure
|
|
57
|
+
1. 创建 docs 目录结构
|
|
58
|
+
2. 验证 gh CLI 和 GitHub 远程
|
|
59
|
+
3. 写入完成标记
|
|
60
|
+
|
|
61
|
+
### Outputs
|
|
62
|
+
- `docs/` 目录树(prd, adr, dev/specs, dev/tasks, dev/api, dev/db, dev/guides, dev/handoff)
|
|
63
|
+
- `.opencode/opencode-cabbage/setup-complete` 标记文件
|
|
64
|
+
|
|
65
|
+
### Failure
|
|
66
|
+
- 目录创建失败 → 报告错误并退出
|
|
67
|
+
- gh auth 失败 → 提示用户执行 `gh auth login`
|
|
68
|
+
|
|
69
|
+
### Idempotency
|
|
70
|
+
- 已存在的目录跳过
|
|
71
|
+
- 已存在 `setup-complete` 标记则跳过全部步骤
|
|
72
|
+
|
|
73
|
+
### Prohibited Actions
|
|
74
|
+
- 不删除已有目录或文件
|
|
75
|
+
- 不修改项目代码
|
|
@@ -79,18 +79,23 @@ gh issue create \
|
|
|
79
79
|
```
|
|
80
80
|
|
|
81
81
|
### 4. 提交任务文件
|
|
82
|
-
|
|
82
|
+
任务定义文件通过 Planning PR 合入默认分支:
|
|
83
83
|
|
|
84
84
|
```bash
|
|
85
|
+
# 探测默认分支
|
|
86
|
+
BASE=$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name' 2>/dev/null || echo "main")
|
|
87
|
+
|
|
88
|
+
git checkout -b chore/plan-tasks-<slug> $BASE
|
|
85
89
|
git add docs/dev/tasks/<YYYY-MM-DD-NNN-slug>/
|
|
86
90
|
git commit -m "docs: <title> — 任务定义"
|
|
87
|
-
git push origin
|
|
91
|
+
git push origin chore/plan-tasks-<slug>
|
|
92
|
+
gh pr create --title "docs: <title> — 任务定义" --base $BASE
|
|
88
93
|
```
|
|
89
94
|
|
|
90
95
|
## Output
|
|
91
96
|
- `docs/dev/tasks/*.md` — 独立任务文件
|
|
92
97
|
- GitHub Sub Issues 已创建(依赖关系在 body 中声明)
|
|
93
|
-
-
|
|
98
|
+
- 任务文件通过 Planning PR 合入默认分支
|
|
94
99
|
|
|
95
100
|
## Sub Issue 关闭时机
|
|
96
101
|
Sub Issue 不在 `/tasks` 阶段关闭,而是在对应 PR 合并后自动关闭:
|
|
@@ -102,3 +107,38 @@ Sub Issue 不在 `/tasks` 阶段关闭,而是在对应 PR 合并后自动关
|
|
|
102
107
|
|
|
103
108
|
## 后续
|
|
104
109
|
- **/code** — 认领 Sub Issue 开始编码
|
|
110
|
+
|
|
111
|
+
## Contract
|
|
112
|
+
|
|
113
|
+
### Trigger
|
|
114
|
+
由 `/tasks` 命令或 `@dev-lifecycle` Phase 2 触发。
|
|
115
|
+
|
|
116
|
+
### Inputs
|
|
117
|
+
- `docs/dev/specs/<title>.md` — 技术方案
|
|
118
|
+
- Parent Issue 编号
|
|
119
|
+
|
|
120
|
+
### Preconditions
|
|
121
|
+
- `/design` 已完成 → 技术方案和 ADR 存在
|
|
122
|
+
|
|
123
|
+
### Procedure
|
|
124
|
+
1. 基于技术方案拆解 DAG
|
|
125
|
+
2. 创建 Task Manifest (`manifest.yaml`) 和任务文件
|
|
126
|
+
3. 为每个任务创建 GitHub Sub Issue
|
|
127
|
+
4. 通过 Planning PR 提交任务文件
|
|
128
|
+
|
|
129
|
+
### Outputs
|
|
130
|
+
- `docs/dev/tasks/<feature-slug>/manifest.yaml` — 任务清单
|
|
131
|
+
- `docs/dev/tasks/<feature-slug>/*.md` — 任务文件
|
|
132
|
+
- GitHub Sub Issues(含依赖声明)
|
|
133
|
+
|
|
134
|
+
### Failure
|
|
135
|
+
- DAG 存在环形依赖 → 阻止并报告
|
|
136
|
+
- Sub Issue 创建失败 → 记录失败项
|
|
137
|
+
|
|
138
|
+
### Idempotency
|
|
139
|
+
- 任务文件已存在 → 读取并更新
|
|
140
|
+
- Sub Issue 已创建 → 更新而非重复创建
|
|
141
|
+
|
|
142
|
+
### Prohibited Actions
|
|
143
|
+
- 不跳过 DAG 依赖检查
|
|
144
|
+
- 不直接 push 到默认分支
|
|
@@ -42,3 +42,34 @@ gh pr checks <pr-number> --watch
|
|
|
42
42
|
|
|
43
43
|
## 后续
|
|
44
44
|
- **/review** — 审查 PR
|
|
45
|
+
|
|
46
|
+
## Contract
|
|
47
|
+
|
|
48
|
+
### Trigger
|
|
49
|
+
由 `/test` 命令触发。在已创建的 PR 上运行 CI 测试。
|
|
50
|
+
|
|
51
|
+
### Inputs
|
|
52
|
+
- PR 编号(来源:`/code` 产出)
|
|
53
|
+
|
|
54
|
+
### Preconditions
|
|
55
|
+
- `/code` 已完成 → PR 已创建
|
|
56
|
+
|
|
57
|
+
### Procedure
|
|
58
|
+
1. 检查 CI 配置是否存在
|
|
59
|
+
2. 触发 CI 运行
|
|
60
|
+
3. 监控运行状态
|
|
61
|
+
4. 汇报结果
|
|
62
|
+
|
|
63
|
+
### Outputs
|
|
64
|
+
- CI 运行结果摘要
|
|
65
|
+
|
|
66
|
+
### Failure
|
|
67
|
+
- CI 失败 → 分析日志并建议修复
|
|
68
|
+
- 无 CI 配置 → 引导用户创建 .github/workflows/ci.yml
|
|
69
|
+
|
|
70
|
+
### Idempotency
|
|
71
|
+
- 重复触发同一 PR → 覆盖前一次运行
|
|
72
|
+
|
|
73
|
+
### Prohibited Actions
|
|
74
|
+
- 不修改 CI 配置
|
|
75
|
+
- 不触发非当前 PR 的 CI
|
package/dist/plugin/agents.d.ts
CHANGED
|
@@ -4,12 +4,22 @@ export interface AgentTools {
|
|
|
4
4
|
write?: boolean;
|
|
5
5
|
edit?: boolean;
|
|
6
6
|
}
|
|
7
|
+
export interface AgentCapabilities {
|
|
8
|
+
create_pr: boolean;
|
|
9
|
+
merge_pr: boolean;
|
|
10
|
+
modify_files: boolean;
|
|
11
|
+
run_tests: boolean;
|
|
12
|
+
push_branch: boolean;
|
|
13
|
+
approve_review: boolean;
|
|
14
|
+
complete_goal: boolean;
|
|
15
|
+
}
|
|
7
16
|
export interface AgentEntry {
|
|
8
17
|
key: string;
|
|
9
18
|
description?: string;
|
|
10
19
|
mode?: "subagent" | "primary" | "all";
|
|
11
20
|
color?: string;
|
|
12
21
|
tools?: AgentTools;
|
|
22
|
+
capabilities?: AgentCapabilities;
|
|
13
23
|
prompt: string;
|
|
14
24
|
}
|
|
15
25
|
export declare function loadAgents(agentsDir: string): AgentEntry[];
|
package/dist/plugin/agents.js
CHANGED
|
@@ -29,12 +29,25 @@ function parseAgentFile(filePath) {
|
|
|
29
29
|
edit: Boolean(toolsRaw.edit),
|
|
30
30
|
}
|
|
31
31
|
: undefined;
|
|
32
|
+
const capabilitiesRaw = parsed.capabilities;
|
|
33
|
+
const capabilities = capabilitiesRaw && typeof capabilitiesRaw === "object" && !Array.isArray(capabilitiesRaw)
|
|
34
|
+
? {
|
|
35
|
+
create_pr: Boolean(capabilitiesRaw.create_pr),
|
|
36
|
+
merge_pr: Boolean(capabilitiesRaw.merge_pr),
|
|
37
|
+
modify_files: Boolean(capabilitiesRaw.modify_files),
|
|
38
|
+
run_tests: Boolean(capabilitiesRaw.run_tests),
|
|
39
|
+
push_branch: Boolean(capabilitiesRaw.push_branch),
|
|
40
|
+
approve_review: Boolean(capabilitiesRaw.approve_review),
|
|
41
|
+
complete_goal: Boolean(capabilitiesRaw.complete_goal),
|
|
42
|
+
}
|
|
43
|
+
: undefined;
|
|
32
44
|
return {
|
|
33
45
|
key: name,
|
|
34
46
|
description: parsed.description,
|
|
35
47
|
mode: parsed.mode,
|
|
36
48
|
color: parsed.color,
|
|
37
49
|
tools,
|
|
50
|
+
capabilities,
|
|
38
51
|
prompt: body,
|
|
39
52
|
};
|
|
40
53
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/plugin/agents.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAC/D,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAA;
|
|
1
|
+
{"version":3,"file":"agents.js","sourceRoot":"","sources":["../../src/plugin/agents.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin/goal.js
CHANGED
|
@@ -40,7 +40,9 @@ Work from evidence — inspect the current state before relying on anything.
|
|
|
40
40
|
If the work is not done, just keep working. Do not narrate that you are continuing — execute.`;
|
|
41
41
|
}
|
|
42
42
|
export function verifyAgentPrompt() {
|
|
43
|
-
return `You are
|
|
43
|
+
return `You are the goal-verify agent. Your ONLY job is to determine whether a goal has been fully achieved by inspecting the current state.
|
|
44
|
+
|
|
45
|
+
You are the only agent authorized to call goal({op:"complete"}). Other agents (reviewer, backend, frontend, architect) cannot complete the goal.
|
|
44
46
|
|
|
45
47
|
You start with a FRESH context — do not assume any prior work was done correctly.
|
|
46
48
|
|
|
@@ -58,7 +60,7 @@ First step: Call goal({op:"get"}) to retrieve the objective and completion crite
|
|
|
58
60
|
- Check imports, exports, types resolve correctly
|
|
59
61
|
4. Classify each finding: SATISFIED / NOT SATISFIED / UNCERTAIN
|
|
60
62
|
5. If ALL requirements are SATISFIED:
|
|
61
|
-
Call goal({op:"complete"})
|
|
63
|
+
Call goal({op:"complete"}) — only you can do this
|
|
62
64
|
6. If ANY requirement is NOT SATISFIED or UNCERTAIN:
|
|
63
65
|
Do NOT call goal({op:"complete"}). Return a detailed report.
|
|
64
66
|
|
|
@@ -121,6 +123,10 @@ Use a single op field:
|
|
|
121
123
|
return `Error: sub-agents cannot call goal({op:"${args.op}"}). Goal lifecycle operations are restricted to the main session.`;
|
|
122
124
|
}
|
|
123
125
|
if (isSubAgent && args.op === "complete") {
|
|
126
|
+
const agentName = ctx.agent;
|
|
127
|
+
if (agentName !== "goal-verify") {
|
|
128
|
+
return `Error: only the goal-verify agent can complete the goal. Agent "${agentName}" is not authorized.`;
|
|
129
|
+
}
|
|
124
130
|
const parent = await readGoal(client, targetSessionID);
|
|
125
131
|
if (!parent.goal)
|
|
126
132
|
return "No goal to complete in the parent session.";
|
package/dist/plugin/goal.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"goal.js","sourceRoot":"","sources":["../../src/plugin/goal.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAA;AAY1D,SAAS,UAAU,CAAC,SAAiB,EAAE,mBAA2B;IAChE,OAAO;QACL,SAAS,EAAE,SAAS,CAAC,IAAI,EAAE;QAC3B,mBAAmB,EAAE,mBAAmB,CAAC,IAAI,EAAE;QAC/C,MAAM,EAAE,QAAQ;QAChB,iBAAiB,EAAE,CAAC;KACrB,CAAA;AACH,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,IAAc,EAAE,MAAkB;IAChE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAA;QAC9C,KAAK,QAAQ,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAA;QAC9C,KAAK,UAAU,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAA;QAChD,OAAO,CAAC,CAAC,OAAO,KAAK,CAAA;IACvB,CAAC;AACH,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAc;IACvC,OAAO;QACL,SAAS,IAAI,CAAC,SAAS,EAAE;QACzB,yBAAyB,IAAI,CAAC,mBAAmB,EAAE;QACnD,WAAW,IAAI,CAAC,MAAM,EAAE;KACzB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAEnC,MAAM,UAAU,kBAAkB,CAAC,SAAiB,EAAE,mBAA2B;IAC/E,OAAO;;;EAGP,SAAS;;;;EAIT,mBAAmB;;;;;8FAKyE,CAAA;AAC9F,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO
|
|
1
|
+
{"version":3,"file":"goal.js","sourceRoot":"","sources":["../../src/plugin/goal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { globSync } from "node:fs";
|
|
2
|
+
import { readFileSync, existsSync } from "node:fs";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
const CONTRACT_SECTIONS = [
|
|
5
|
+
"Trigger", "Inputs", "Preconditions", "Procedure",
|
|
6
|
+
"Outputs", "Failure", "Idempotency", "Prohibited Actions",
|
|
7
|
+
];
|
|
8
|
+
const FORBIDDEN_PATTERNS = [
|
|
9
|
+
// Only flag direct pushes to hardcoded branches, not tag pushes
|
|
10
|
+
{ pattern: /\bgit push origin main\b(?!\s+--tags)/, rule: "no-hardcoded-default-branch", message: "contains hardcoded 'git push origin main'" },
|
|
11
|
+
{ pattern: /\bgit push origin master\b(?!\s+--tags)/, rule: "no-hardcoded-default-branch", message: "contains hardcoded 'git push origin master'" },
|
|
12
|
+
{ pattern: /\bgit push origin dev\b(?!\s+--tags)/, rule: "no-hardcoded-default-branch", message: "contains hardcoded 'git push origin dev'" },
|
|
13
|
+
{ pattern: /^\s*git add \.\s*$/m, rule: "no-blanket-git-add", message: "contains blanket 'git add .' without context" },
|
|
14
|
+
{ pattern: /git worktree remove.*--force/, rule: "no-default-force-cleanup", message: "contains default --force worktree cleanup" },
|
|
15
|
+
];
|
|
16
|
+
function findMdFiles(root, dirs) {
|
|
17
|
+
const results = [];
|
|
18
|
+
for (const dir of dirs) {
|
|
19
|
+
const full = path.join(root, dir);
|
|
20
|
+
if (!existsSync(full))
|
|
21
|
+
continue;
|
|
22
|
+
const pattern = path.join(full, "**", "*.md").replace(/\\/g, "/");
|
|
23
|
+
results.push(...globSync(pattern));
|
|
24
|
+
}
|
|
25
|
+
return results;
|
|
26
|
+
}
|
|
27
|
+
function checkRelativeRefs(content, filePath) {
|
|
28
|
+
const findings = [];
|
|
29
|
+
const refPattern = /`([^`]*\.md)`/g;
|
|
30
|
+
let match;
|
|
31
|
+
while ((match = refPattern.exec(content)) !== null) {
|
|
32
|
+
const ref = match[1];
|
|
33
|
+
if (ref.startsWith("/") || ref.startsWith("http"))
|
|
34
|
+
continue;
|
|
35
|
+
if (ref.includes("_prompts/") || ref.includes("_context/"))
|
|
36
|
+
continue;
|
|
37
|
+
if (ref.includes("<") && ref.includes(">"))
|
|
38
|
+
continue;
|
|
39
|
+
// only flag paths starting with ../ or ./
|
|
40
|
+
if (!ref.startsWith("."))
|
|
41
|
+
continue;
|
|
42
|
+
const dir = path.dirname(filePath);
|
|
43
|
+
const resolved = path.resolve(dir, ref);
|
|
44
|
+
if (!existsSync(resolved)) {
|
|
45
|
+
findings.push({
|
|
46
|
+
severity: "error",
|
|
47
|
+
file: filePath,
|
|
48
|
+
rule: "broken-reference",
|
|
49
|
+
message: `references non-existent file: \`${ref}\``,
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return findings;
|
|
54
|
+
}
|
|
55
|
+
function checkContractCompleteness(content, filePath) {
|
|
56
|
+
const findings = [];
|
|
57
|
+
for (const section of CONTRACT_SECTIONS) {
|
|
58
|
+
const headingRegex = new RegExp(`^### ${section}$`, "m");
|
|
59
|
+
if (!headingRegex.test(content)) {
|
|
60
|
+
findings.push({
|
|
61
|
+
severity: "warn",
|
|
62
|
+
file: filePath,
|
|
63
|
+
rule: "missing-contract-section",
|
|
64
|
+
message: `missing Contract section: ### ${section}`,
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
return findings;
|
|
69
|
+
}
|
|
70
|
+
function checkForbiddenPatterns(content, filePath) {
|
|
71
|
+
const findings = [];
|
|
72
|
+
for (const { pattern, rule, message } of FORBIDDEN_PATTERNS) {
|
|
73
|
+
if (pattern.test(content)) {
|
|
74
|
+
findings.push({
|
|
75
|
+
severity: "error",
|
|
76
|
+
file: filePath,
|
|
77
|
+
rule,
|
|
78
|
+
message,
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
return findings;
|
|
83
|
+
}
|
|
84
|
+
function checkAgentCapabilityConsistency(content, filePath) {
|
|
85
|
+
const findings = [];
|
|
86
|
+
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
87
|
+
if (!frontmatterMatch)
|
|
88
|
+
return findings;
|
|
89
|
+
const fm = frontmatterMatch[1];
|
|
90
|
+
const body = content.slice(frontmatterMatch[0].length);
|
|
91
|
+
// Check reviewer: complete_goal must be false, and must not contain positive directive
|
|
92
|
+
if (filePath.includes("reviewer")) {
|
|
93
|
+
if (/complete_goal:\s*true/.test(fm)) {
|
|
94
|
+
findings.push({
|
|
95
|
+
severity: "error",
|
|
96
|
+
file: filePath,
|
|
97
|
+
rule: "reviewer-capability-conflict",
|
|
98
|
+
message: "reviewer agent declares complete_goal: true (should be false)",
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
// Only flag goal({op:"complete"}) if it's not in a negation/prohibition context
|
|
102
|
+
if (/\bgoal\(\{op:"complete"\}\)/.test(body)) {
|
|
103
|
+
// Check if the surrounding context is a prohibition
|
|
104
|
+
const idx = body.indexOf("goal({op:\"complete\"})");
|
|
105
|
+
const before = body.slice(Math.max(0, idx - 100), idx);
|
|
106
|
+
const isNegation = /不调用|不.*complete|not.*complete|cannot complete|blocked/i.test(before);
|
|
107
|
+
if (!isNegation) {
|
|
108
|
+
findings.push({
|
|
109
|
+
severity: "error",
|
|
110
|
+
file: filePath,
|
|
111
|
+
rule: "reviewer-capability-conflict",
|
|
112
|
+
message: "reviewer prompt contains positive goal({op:'complete'}) directive",
|
|
113
|
+
});
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
// Check worker agents: create_pr must be false
|
|
118
|
+
if (filePath.includes("backend") || filePath.includes("frontend")) {
|
|
119
|
+
if (/create_pr:\s*true/.test(fm)) {
|
|
120
|
+
findings.push({
|
|
121
|
+
severity: "error",
|
|
122
|
+
file: filePath,
|
|
123
|
+
rule: "worker-capability-conflict",
|
|
124
|
+
message: "worker agent declares create_pr: true (should be false)",
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
if (body.includes("gh pr create")) {
|
|
128
|
+
findings.push({
|
|
129
|
+
severity: "error",
|
|
130
|
+
file: filePath,
|
|
131
|
+
rule: "worker-capability-conflict",
|
|
132
|
+
message: "worker prompt contains 'gh pr create' directive",
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return findings;
|
|
137
|
+
}
|
|
138
|
+
export function lintAll(projectRoot) {
|
|
139
|
+
const assetDirs = ["assets/agents", "assets/skills", "assets/commands", "assets/prompts"];
|
|
140
|
+
const files = findMdFiles(projectRoot, assetDirs);
|
|
141
|
+
const allFindings = [];
|
|
142
|
+
for (const file of files) {
|
|
143
|
+
const content = readFileSync(file, "utf8");
|
|
144
|
+
if (file.includes("SKILL.md")) {
|
|
145
|
+
allFindings.push(...checkContractCompleteness(content, file));
|
|
146
|
+
}
|
|
147
|
+
allFindings.push(...checkForbiddenPatterns(content, file));
|
|
148
|
+
allFindings.push(...checkRelativeRefs(content, file));
|
|
149
|
+
if (file.includes("agents/")) {
|
|
150
|
+
allFindings.push(...checkAgentCapabilityConsistency(content, file));
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
const errors = allFindings.filter(f => f.severity === "error");
|
|
154
|
+
const warnings = allFindings.filter(f => f.severity === "warn");
|
|
155
|
+
return {
|
|
156
|
+
findings: allFindings,
|
|
157
|
+
passed: errors.length === 0,
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
//# sourceMappingURL=prompt-lint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompt-lint.js","sourceRoot":"","sources":["../../src/plugin/prompt-lint.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin/server.js
CHANGED
|
@@ -130,8 +130,9 @@ export function createOpencodeCabbage(packageRoot) {
|
|
|
130
130
|
return async (ctx, _options) => {
|
|
131
131
|
const sourceSkillsDir = path.join(packageRoot, "assets", "skills");
|
|
132
132
|
const contextDir = path.join(packageRoot, "assets", "context");
|
|
133
|
+
const promptsDir = path.join(packageRoot, "assets", "prompts");
|
|
133
134
|
const commandsDir = path.join(packageRoot, "assets", "commands");
|
|
134
|
-
const skillsDir = await setupSkillsDir(sourceSkillsDir, contextDir);
|
|
135
|
+
const skillsDir = await setupSkillsDir(sourceSkillsDir, contextDir, promptsDir);
|
|
135
136
|
const projectDir = ctx.worktree || ctx.directory;
|
|
136
137
|
const v1Client = ctx.client._client;
|
|
137
138
|
const goalClient = createGoalClient(ctx.serverUrl, v1Client);
|
|
@@ -186,7 +187,6 @@ export function createOpencodeCabbage(packageRoot) {
|
|
|
186
187
|
}
|
|
187
188
|
},
|
|
188
189
|
"experimental.chat.messages.transform": async (_input, output) => {
|
|
189
|
-
const bootstrap = getBootstrapContent();
|
|
190
190
|
if (!output.messages.length)
|
|
191
191
|
return;
|
|
192
192
|
const firstUser = output.messages.find(m => m.info.role === "user");
|
|
@@ -194,7 +194,11 @@ export function createOpencodeCabbage(packageRoot) {
|
|
|
194
194
|
return;
|
|
195
195
|
if (firstUser.parts.some(p => p.type === "text" && p.text.includes("EXTREMELY_IMPORTANT")))
|
|
196
196
|
return;
|
|
197
|
-
|
|
197
|
+
// Only inject bootstrap for active flow: goal is active or user sent a flow command
|
|
198
|
+
const hasGoal = await readGoal(goalClient, output.messages[0].info.sessionID).then(r => r.goal?.status === "active").catch(() => false);
|
|
199
|
+
if (!hasGoal)
|
|
200
|
+
return;
|
|
201
|
+
firstUser.parts.unshift({ type: "text", text: getBootstrapContent() });
|
|
198
202
|
},
|
|
199
203
|
async event({ event }) {
|
|
200
204
|
const evt = event;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/plugin/server.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,WAAW,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AAEpC,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACnE,OAAO,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAEvJ,MAAM,eAAe,GAAG,IAAI,GAAG,EAAU,CAAA;AACzC,MAAM,eAAe,GAAG,IAAI,GAAG,EAAkB,CAAA;AACjD,MAAM,oBAAoB,GAAG,EAAE,CAAA;AAU/B,SAAS,gBAAgB,CAAC,UAAkB;IAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,WAAW,EAAE,kBAAkB,EAAE,oBAAoB,CAAC,CAAA;AACrF,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,UAAkB,EAAE,SAAiB,EAAE,IAAwB;IAC7F,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAA;IACtD,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3D,MAAM,SAAS,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC;QAC3D,SAAS;QACT,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;KACtB,CAAC,EAAE,MAAM,CAAC,CAAA;AACb,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,UAAkB;IAC/C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;QAC7E,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAA;IACzD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED,KAAK,UAAU,iBAAiB,CAAC,UAAkB;IACjD,IAAI,CAAC;QACH,MAAM,SAAS,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;IACvH,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACZ,CAAC;AAED,KAAK,UAAU,iBAAiB,CAC9B,MAA6E,EAC7E,SAAiB,EACjB,UAAmB;IAEnB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAClD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;QAAE,OAAM;IAE7C,IAAI,UAAU;QAAE,gBAAgB,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;IAE7D,IAAI,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;QACnC,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACjC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAA;QACtB,MAAM,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;QACxC,IAAI,UAAU;YAAE,iBAAiB,CAAC,UAAU,CAAC,CAAA;QAC7C,OAAM;IACR,CAAC;IAED,IAAI,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,EAAE,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAA;QACtB,MAAM,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;QACxC,IAAI,UAAU;YAAE,iBAAiB,CAAC,UAAU,CAAC,CAAA;QAC7C,OAAM;IACR,CAAC;IAED,IAAI,CAAC,iBAAiB,EAAE,CAAA;IACxB,MAAM,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;IAExC,IAAI,CAAC;QACH,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,GAAG,oBAAoB,KAAK,CAAC,EAAE,CAAC;YACtF,IAAI,CAAC;gBACH,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;oBAC/B,SAAS;oBACT,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,uFAAuF,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;iBACnJ,CAAC,CAAA;YACJ,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QACZ,CAAC;QAED,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;YAC/B,SAAS;YACT,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,kBAAkB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,mBAAmB,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;SACxH,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAA;IACtD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,MAA6E,EAAE,UAAkB;IACzH,MAAM,aAAa,GAAG,MAAM,eAAe,CAAC,UAAU,CAAC,CAAA;IACvD,IAAI,CAAC,aAAa;QAAE,OAAM;IAE1B,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC,CAAA;IACtD,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAA;QACnC,OAAM;IACR,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC;YAC/B,SAAS,EAAE,aAAa;YACxB,KAAK,EAAE,CAAC;oBACN,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,8DAA8D,UAAU,CAAC,IAAI,CAAC,uBAAuB;oBAC3G,SAAS,EAAE,IAAI;iBAChB,CAAC;SACH,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAA;IACrD,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAAC,SAAiB,EAAE,KAAa;IACnD,OAAO,GAAG,SAAS,IAAI,KAAK,EAAE,CAAA;AAChC,CAAC;AAED,SAAS,cAAc,CAAC,SAAiB,EAAE,KAAa;IACtD,MAAM,GAAG,GAAG,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;IACzC,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC3C,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,GAAG,CAAC,CAAC,CAAA;IAEnC,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,OAAO,CAAA;IAC7B,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,MAAM,CAAA;IAC5B,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,MAAM,gCAAgC,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,CAAA;AACvD,IAAI,mBAAmB,GAA0C,IAAI,CAAA;AAErE,SAAS,oBAAoB;IAC3B,IAAI,mBAAmB;QAAE,aAAa,CAAC,mBAAmB,CAAC,CAAA;IAC3D,mBAAmB,GAAG,WAAW,CAAC,GAAG,EAAE;QACrC,eAAe,CAAC,KAAK,EAAE,CAAA;QACvB,eAAe,CAAC,KAAK,EAAE,CAAA;IACzB,CAAC,EAAE,gCAAgC,CAAC,CAAA;AACtC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,OAAO,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,EAAE;QAC7B,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAClE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAA;QAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,UAAU,CAAC,CAAA;QAChE,MAAM,SAAS,GAAG,MAAM,cAAc,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;QAEnE,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,SAAS,CAAA;QAChD,MAAM,QAAQ,GAAI,GAAG,CAAC,MAAuC,CAAC,OAAO,CAAA;QACrE,MAAM,UAAU,GAAG,gBAAgB,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAA;QAC5D,MAAM,QAAQ,GAAG,cAAc,CAAC,UAAU,CAAC,CAAA;QAE3C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAA;QAE5D,MAAM,WAAW,CAAC,WAAW,EAAE,UAAU,CAAC,CAAA;QAC1C,MAAM,aAAa,EAAE,CAAA;QACrB,oBAAoB,EAAE,CAAA;QAEtB,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;QAElC,OAAO;YACL,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;aACf;YAED,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE;gBAC1B,MAAM,MAAM,GAAG,SAAgC,CAAA;gBAE/C,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAA;gBACnC,MAAM,CAAC,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAA;gBAC/C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC7C,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;gBACrC,CAAC;gBAED,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAA;gBACrC,KAAK,MAAM,GAAG,IAAI,YAAY,CAAC,WAAW,EAAE,SAAS,CAAC,EAAE,CAAC;oBACvD,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;wBAAE,SAAQ;oBACtC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG;wBACzB,QAAQ,EAAE,GAAG,CAAC,QAAQ;wBACtB,WAAW,EAAE,GAAG,CAAC,WAAW;wBAC5B,KAAK,EAAE,GAAG,CAAC,KAAK;wBAChB,KAAK,EAAE,GAAG,CAAC,KAAK;wBAChB,OAAO,EAAE,GAAG,CAAC,OAAO;qBACrB,CAAA;gBACH,CAAC;gBAED,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAA;gBACjC,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;oBAC1C,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;wBAAE,SAAQ;oBACrC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG;wBACxB,WAAW,EAAE,KAAK,CAAC,WAAW;wBAC9B,IAAI,EAAE,KAAK,CAAC,IAAI;wBAChB,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,MAAM,EAAE,KAAK,CAAC,MAAM;wBACpB,KAAK,EAAE,KAAK,CAAC,KAAK,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE;qBAC1E,CAAA;gBACH,CAAC;gBAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;oBACjC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG;wBAC5B,IAAI,EAAE,UAAU;wBAChB,WAAW,EAAE,6DAA6D;wBAC1E,MAAM,EAAE,iBAAiB,EAAE;wBAC3B,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE;qBAC7D,CAAA;gBACH,CAAC;YACH,CAAC;YAED,sCAAsC,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;gBAC/D,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAA;gBACvC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM;oBAAE,OAAM;gBAEnC,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAA;gBACnE,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM;oBAAE,OAAM;gBAEjD,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC;oBAAE,OAAM;gBAElG,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAoC,CAAC,CAAA;YAC9F,CAAC;YAED,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE;gBACnB,MAAM,GAAG,GAAG,KAA0D,CAAA;gBAEtE,IAAI,GAAG,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBACjC,MAAM,SAAS,GAAG,GAAG,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAA;oBAC7C,MAAM,SAAS,GAAuB,GAAG,CAAC,UAAU,CAAC,SAAS,CAAA;oBAC9D,IAAI,SAAS,KAAK,qBAAqB,IAAI,SAAS,EAAE,CAAC;wBACrD,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;oBAChC,CAAC;gBACH,CAAC;gBAED,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,IAAI,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC7E,MAAM,SAAS,GAAuB,GAAG,CAAC,UAAU,CAAC,SAAS,CAAA;oBAC9D,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,SAAS,EAAE,CAAkC,CAAA;wBAC3F,IAAI,MAAM,EAAE,IAAI,EAAE,QAAQ;4BAAE,OAAM;wBAClC,KAAK,iBAAiB,CAAC,UAAU,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;oBAC3D,CAAC;gBACH,CAAC;gBAED,IAAI,GAAG,CAAC,IAAI,KAAK,gBAAgB,IAAI,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;oBAC9E,MAAM,SAAS,GAAuB,GAAG,CAAC,UAAU,CAAC,SAAS,CAAA;oBAC9D,IAAI,SAAS,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;wBACjD,MAAM,KAAK,GAAG,GAAG,CAAC,UAAU,EAAE,KAAK,IAAI,SAAS,CAAA;wBAChD,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;wBAC/C,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;wBAEtD,IAAI,MAAM,KAAK,OAAO,IAAI,IAAI,EAAE,CAAC;4BAC/B,MAAM,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC;gCACnC,SAAS;gCACT,KAAK,EAAE,CAAC;wCACN,IAAI,EAAE,MAAe;wCACrB,IAAI,EAAE,4EAA4E,IAAI,CAAC,SAAS,EAAE;wCAClG,SAAS,EAAE,IAAI;qCAChB,CAAC;6BACH,CAAC,CAAA;wBACJ,CAAC;6BAAM,IAAI,MAAM,KAAK,MAAM,IAAI,IAAI,EAAE,CAAC;4BACrC,MAAM,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC;gCACnC,SAAS;gCACT,KAAK,EAAE,CAAC;wCACN,IAAI,EAAE,MAAe;wCACrB,IAAI,EAAE,uEAAuE,IAAI,CAAC,SAAS,EAAE;wCAC7F,SAAS,EAAE,IAAI;qCAChB,CAAC;6BACH,CAAC,CAAA;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,IAAI,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC5E,MAAM,SAAS,GAAuB,GAAG,CAAC,UAAU,CAAC,SAAS,CAAA;oBAC9D,IAAI,SAAS,EAAE,CAAC;wBACd,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;wBACjC,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;wBAC/D,IAAI,IAAI,EAAE,CAAC;4BACT,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAA;4BAC1B,MAAM,SAAS,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,IAAI,SAAS,CAAC,CAAA;wBACpE,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IAAI,GAAG,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;oBACnC,MAAM,SAAS,GAAuB,GAAG,CAAC,UAAU,EAAE,SAAS,CAAA;oBAC/D,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,SAAS,CAAC,CAAA;wBACtD,IAAI,IAAI,EAAE,MAAM,KAAK,UAAU,EAAE,CAAC;4BAChC,MAAM,iBAAiB,CAAC,UAAU,CAAC,CAAA;wBACrC,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;SACF,CAAA;IACH,CAAC,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/plugin/server.ts"],"names":[],"mappings":"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"}
|
package/dist/plugin/skills.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export declare function setupSkillsDir(sourceSkillsDir: string, contextDir?: string): Promise<string>;
|
|
1
|
+
export declare function setupSkillsDir(sourceSkillsDir: string, contextDir?: string, promptsDir?: string): Promise<string>;
|
package/dist/plugin/skills.js
CHANGED
|
@@ -7,7 +7,7 @@ process.once("exit", () => {
|
|
|
7
7
|
rm(dir, { recursive: true, force: true }).catch(() => { });
|
|
8
8
|
}
|
|
9
9
|
});
|
|
10
|
-
export async function setupSkillsDir(sourceSkillsDir, contextDir) {
|
|
10
|
+
export async function setupSkillsDir(sourceSkillsDir, contextDir, promptsDir) {
|
|
11
11
|
const baseDir = await mkdtemp(path.join(tmpdir(), "opencode-cabbage-skills-"));
|
|
12
12
|
_tempDirs.add(baseDir);
|
|
13
13
|
const destDir = path.join(baseDir, "skills");
|
|
@@ -18,6 +18,12 @@ export async function setupSkillsDir(sourceSkillsDir, contextDir) {
|
|
|
18
18
|
}
|
|
19
19
|
catch { }
|
|
20
20
|
}
|
|
21
|
+
if (promptsDir) {
|
|
22
|
+
try {
|
|
23
|
+
await cp(promptsDir, path.join(destDir, "_prompts"), { recursive: true });
|
|
24
|
+
}
|
|
25
|
+
catch { }
|
|
26
|
+
}
|
|
21
27
|
async function processDir(dir) {
|
|
22
28
|
const entries = await readdir(dir, { withFileTypes: true });
|
|
23
29
|
for (const entry of entries) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/plugin/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;AAEnC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;IACxB,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAC3D,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,eAAuB,EAAE,UAAmB;
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../src/plugin/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAChC,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAA;AAEnC,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE;IACxB,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,EAAE,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;IAC3D,CAAC;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,eAAuB,EAAE,UAAmB,EAAE,UAAmB;IACpG,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,0BAA0B,CAAC,CAAC,CAAA;IAC9E,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAA;IACtB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IAE5C,MAAM,EAAE,CAAC,eAAe,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAEvD,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC3E,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC3E,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAED,KAAK,UAAU,UAAU,CAAC,GAAW;QACnC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;QAC3D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;YAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;YAC3C,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;gBACxB,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAA;gBAC1B,SAAQ;YACV,CAAC;YACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBAC9B,IAAI,OAAO,GAAG,MAAM,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;gBAC9C,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,mBAAmB,EAAE,GAAG,OAAO,GAAG,CAAC,CAAA;gBAChE,MAAM,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,UAAU,CAAC,OAAO,CAAC,CAAA;IAEzB,OAAO,OAAO,CAAA;AAChB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@devcxl/opencode-cabbage",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "OpenCode 全流程开发插件 — 需求→设计→任务→编码→测试→审查→自动合并,支持自动编排与并行 Subagent",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -15,6 +15,9 @@
|
|
|
15
15
|
"opencode-plugin"
|
|
16
16
|
],
|
|
17
17
|
"type": "module",
|
|
18
|
+
"engines": {
|
|
19
|
+
"node": ">=24"
|
|
20
|
+
},
|
|
18
21
|
"main": "./dist/index.js",
|
|
19
22
|
"oc-plugin": [
|
|
20
23
|
"server"
|
|
@@ -42,6 +45,7 @@
|
|
|
42
45
|
"prepublishOnly": "npm test && npm run typecheck && npm run build",
|
|
43
46
|
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
44
47
|
"test": "vitest run",
|
|
48
|
+
"prompt-lint": "vitest run test/plugin/prompt-lint.test.ts",
|
|
45
49
|
"docs:dev": "vitepress dev docs",
|
|
46
50
|
"docs:build": "vitepress build docs",
|
|
47
51
|
"docs:preview": "vitepress preview docs"
|