@heihei0299/matt-skills 2.0.2 → 2.1.2
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/.agents/skills/ci-guard/SKILL.md +6 -2
- package/.agents/skills/commit-check/scripts/scan-sensitive.sh +14 -6
- package/.agents/skills/diagnose-fix/SKILL.md +16 -15
- package/.agents/skills/diagnose-fix/references/anti-patterns.md +5 -4
- package/.agents/skills/grill-to-spec/SKILL.md +4 -0
- package/.agents/skills/grill-to-spec/references/rules.md +19 -24
- package/.agents/skills/scaffold-functional-test/SKILL.md +9 -6
- package/.agents/skills/scaffold-functional-test/references/schema.md +56 -11
- package/.agents/skills/tdd-implement/SKILL.md +25 -14
- package/.agents/skills/tdd-implement/references/contract.md +21 -0
- package/.agents/skills/tdd-implement/references/finalize.md +27 -0
- package/.agents/skills/tdd-implement/references/orchestration.md +21 -16
- package/.agents/skills/tdd-implement/references/red-green.md +25 -0
- package/.agents/skills/tdd-implement/references/stages.md +25 -39
- package/.agents/skills/tdd-implement/references/verify.md +24 -0
- package/README.md +48 -27
- package/bin/cli.js +85 -24
- package/bin/skill-boundaries.js +61 -0
- package/config/proprietary.json +28 -9
- package/package.json +1 -1
- package/scripts/sync-upstream.js +4 -8
- package/template/.agents/skills/diagnose-fix/SKILL.md +16 -15
- package/template/.agents/skills/diagnose-fix/references/anti-patterns.md +5 -4
- package/template/.agents/skills/grill-to-spec/SKILL.md +4 -0
- package/template/.agents/skills/grill-to-spec/references/rules.md +19 -24
- package/template/.agents/skills/scaffold-functional-test/SKILL.md +9 -6
- package/template/.agents/skills/scaffold-functional-test/references/schema.md +56 -11
- package/template/.agents/skills/tdd-implement/SKILL.md +25 -14
- package/template/.agents/skills/tdd-implement/references/contract.md +21 -0
- package/template/.agents/skills/tdd-implement/references/finalize.md +27 -0
- package/template/.agents/skills/tdd-implement/references/orchestration.md +21 -16
- package/template/.agents/skills/tdd-implement/references/red-green.md +25 -0
- package/template/.agents/skills/tdd-implement/references/stages.md +25 -39
- package/template/.agents/skills/tdd-implement/references/verify.md +24 -0
- package/template/.opencode/CONTEXT.md +7 -7
- package/template/.opencode/docs/agents/skill-design.md +3 -3
- package/template/.opencode/skills/README.md +1 -1
- package/template/.pi/CONTEXT.md +7 -7
- package/template/.pi/docs/agents/skill-design.md +3 -3
- package/template/.pi/skills/README.md +1 -1
- package/template/AGENTS.md +49 -30
- package/template/.agents/skills/ci-guard/SKILL.md +0 -50
- package/template/.agents/skills/ci-guard/agents/openai.yaml +0 -5
- package/template/.agents/skills/commit-check/SKILL.md +0 -95
- package/template/.agents/skills/commit-check/agents/openai.yaml +0 -5
- package/template/.agents/skills/commit-check/scripts/scan-sensitive.sh +0 -29
- package/template/.opencode/commands/commit-check.md +0 -9
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
#
|
|
1
|
+
# 三阶段详细定义 + Finalize
|
|
2
2
|
|
|
3
|
-
单 `spec` / 单 `task` 与多 `task`
|
|
3
|
+
单 `spec` / 单 `task` 与多 `task` 共用下列三个交付阶段;Verify 通过后执行 Finalize 收尾,Finalize 不计入阶段。多 issue 的依赖图、Kahn 分层、层收敛、全量收敛和回退/冲突处理见 [orchestration.md](orchestration.md)。TDD 语义以 [tdd 技能](.agents/skills/tdd/SKILL.md) 为唯一事实源,不在此重写。
|
|
4
4
|
|
|
5
5
|
## 目录
|
|
6
6
|
|
|
7
7
|
- [① Contract:明确交付契约](#阶段-①-contract明确交付契约)
|
|
8
8
|
- [② Red-Green:行为级 TDD](#阶段-②-red-green行为级-tdd)
|
|
9
9
|
- [③ Verify:最终验证与审查](#阶段-③-verify最终验证与审查)
|
|
10
|
-
- [
|
|
10
|
+
- [Finalize:非阶段交付收尾](#finalize非阶段交付收尾)
|
|
11
11
|
- [跨阶段运行纪律](#跨阶段运行纪律)
|
|
12
12
|
- [状态统一](#状态统一)
|
|
13
13
|
- [回退路由](#回退路由)
|
|
@@ -21,12 +21,12 @@
|
|
|
21
21
|
2. 产品实现之前存在有效 Red;
|
|
22
22
|
3. 最终 diff 对应的相关测试和 typecheck 通过;
|
|
23
23
|
4. ticket 要求真实运行时,真实运行验证已完成;
|
|
24
|
-
5.
|
|
24
|
+
5. 当前稳定 diff 已完成一次 `code-review` 且无 blocking finding;
|
|
25
25
|
6. README/docs 与实现一致;
|
|
26
26
|
7. 每个 issue 形成独立、可追溯的 commit;
|
|
27
27
|
8. Tracker 状态与真实完成度一致。
|
|
28
28
|
|
|
29
|
-
Seam 或专项测试绿色不等于 issue
|
|
29
|
+
Seam 或专项测试绿色不等于 issue 完成;只有三个阶段与 Finalize 全部通过,issue 才能标记为 `resolved`。
|
|
30
30
|
|
|
31
31
|
|
|
32
32
|
## 阶段 ① Contract:明确交付契约
|
|
@@ -58,11 +58,10 @@ Seam 或专项测试绿色不等于 issue 完成;只有四个阶段全部通
|
|
|
58
58
|
5. 完成一次 **Preflight** 并记录真实结果:
|
|
59
59
|
- 当前 `HEAD`、工作区状态和 `BASE_HEAD=$(git rev-parse HEAD)`;
|
|
60
60
|
- 可用的 test、typecheck、build 命令;
|
|
61
|
-
-
|
|
61
|
+
- `code-review` 可用性;
|
|
62
62
|
- 可用的 browser 或 Playwright 路径;
|
|
63
|
-
- 可用的敏感信息扫描脚本;
|
|
64
63
|
- ticket 要求的真实运行验证方式。
|
|
65
|
-
6. 建立一次验证矩阵,列出 targeted tests、typecheck、全量测试、必要 build、smoke/package
|
|
64
|
+
6. 建立一次验证矩阵,列出 targeted tests、typecheck、全量测试、必要 build、smoke/package check 和真实运行验证,并记录各项的触发条件,后续只复用这份矩阵。
|
|
66
65
|
7. 识别公共测试边界和 Behaviors。一个 Seam 是一个公共可观察边界;一个 Behavior 是一个红-绿 cycle;一个 Seam 可以包含多个 Behaviors。每个 Behavior 明确输入、可观察输出、对应 Acceptance Criterion 和验证层级。
|
|
67
66
|
8. spec 已确认且未变化的 Seam 直接复用;只有出现需求歧义、验收缺口、范围变化、破坏性操作或互斥方案时才请求用户确认。
|
|
68
67
|
|
|
@@ -137,7 +136,7 @@ Seam 或专项测试绿色不等于 issue 完成;只有四个阶段全部通
|
|
|
137
136
|
当前 issue 影响范围测试
|
|
138
137
|
→ 必要 build
|
|
139
138
|
→ 必要真实运行验证
|
|
140
|
-
→
|
|
139
|
+
→ 当前稳定 diff 调用一次 code-review
|
|
141
140
|
→ 修复 blocking finding 后的定向复核
|
|
142
141
|
```
|
|
143
142
|
|
|
@@ -150,46 +149,36 @@ Seam 或专项测试绿色不等于 issue 完成;只有四个阶段全部通
|
|
|
150
149
|
|
|
151
150
|
### Review
|
|
152
151
|
|
|
153
|
-
1.
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
4. 修复 blocking finding 后只运行受影响测试、typecheck 和 finding 的 delta recheck,不重新启动完整双轴 review。审查结果只在对话输出,不生成 `review-*.md` 等书面报告文件。
|
|
152
|
+
1. 当前 issue 的最终 diff 稳定后,调用一次 [code-review](.agents/skills/code-review/SKILL.md)。
|
|
153
|
+
2. `tdd-implement` 只负责 **何时调用 review**;审查维度、reviewer 数量、提示词、上下文与输出格式全部以 `code-review` 为唯一事实源,不在这里复制或弱化。
|
|
154
|
+
3. `code-review` 未完成或存在 blocking finding 时,issue 保持未完成。只修当前 issue blocking finding;其余 findings 按 `code-review` 的分类与输出处理,不无记录地扩大范围。
|
|
155
|
+
4. 修复 blocking finding 后,只运行受影响测试/typecheck 与 finding delta recheck,不再次调用完整 `code-review`。若修复引入新的 Behavior、改变 Scope 或使原 Review 对象不再成立,则回到 Contract/Red-Green,重新形成稳定最终 diff 后再进入 Verify。
|
|
156
|
+
5. Review 结果只在对话/运行记录中消费,不由 `tdd-implement` 额外生成自己的 review 报告格式。
|
|
159
157
|
|
|
160
158
|
### 出口条件
|
|
161
159
|
|
|
162
160
|
- 最终 diff 对应的相关测试通过;
|
|
163
161
|
- 必要 typecheck/build 通过;
|
|
164
162
|
- ticket 要求的真实运行验证已完成并记录实际结果;
|
|
165
|
-
-
|
|
163
|
+
- 当前稳定 diff 已完成一次 `code-review`;
|
|
166
164
|
- 无 blocking finding;
|
|
167
165
|
- 受影响范围的最后一次证据对应当前 diff。
|
|
168
166
|
|
|
169
167
|
---
|
|
170
168
|
|
|
171
|
-
##
|
|
169
|
+
## Finalize:非阶段交付收尾
|
|
172
170
|
|
|
173
171
|
### 入口条件
|
|
174
172
|
|
|
175
173
|
- Verify 出口条件满足。
|
|
176
174
|
|
|
177
|
-
### Commit
|
|
175
|
+
### Commit
|
|
178
176
|
|
|
179
|
-
|
|
177
|
+
1. 如本次实现要求 README/docs/config/package 同步,完成必要更新。
|
|
178
|
+
2. 按当前 issue 范围直接创建一个独立 commit。
|
|
179
|
+
3. 不执行额外敏感信息/安全扫描,不做 `git diff --cached` 复核,也不设置额外 commit message 门禁。
|
|
180
180
|
|
|
181
|
-
|
|
182
|
-
2. 检查 README/docs/config/package 与实现一致;
|
|
183
|
-
3. 复核 Scope Ledger,确认没有未记录的范围扩张;
|
|
184
|
-
4. 确认证据对应最后一次代码或测试修改;
|
|
185
|
-
5. 检查临时文件、构建产物和未跟踪文件;
|
|
186
|
-
6. 对 staged diff 执行敏感信息检查;
|
|
187
|
-
7. 执行 `git merge-base --is-ancestor $BASE_HEAD HEAD`;
|
|
188
|
-
8. 检查 commit message;
|
|
189
|
-
9. 确认暂存区只包含当前 issue;
|
|
190
|
-
10. 执行 `git diff --cached`,再创建当前 issue 的独立 commit。
|
|
191
|
-
|
|
192
|
-
执行敏感信息扫描脚本(`bash .agents/skills/commit-check/scripts/scan-sensitive.sh --staged-only`),检查 staged diff、commit message 和 Git history preservation,全部通过后创建当前 issue 的独立 commit。
|
|
181
|
+
仓库级 Git 安全与历史保护规则仍然适用;Finalize 不重复定义或扩展这些规则。
|
|
193
182
|
|
|
194
183
|
### Tracker 收尾
|
|
195
184
|
|
|
@@ -200,19 +189,16 @@ Commit 成功后:
|
|
|
200
189
|
- 追加实施总结;
|
|
201
190
|
- 更新 `.scratch/<feature>/progress.md` 的 `Status`、`Commit`、`Review`、`Tests`;
|
|
202
191
|
- 记录 commit hash、message、最终测试命令/数量/结果和真实运行结果;
|
|
203
|
-
- 清理本次产生的临时进程、目录和一次性文件;
|
|
204
192
|
- 确认下一 issue 的 blockers 已解除。
|
|
205
193
|
|
|
206
|
-
|
|
194
|
+
Finalize 开始后不新增产品 Behavior。若实现、测试或文档不完整,回到对应阶段;只有三个阶段与 Finalize 全部通过,才可把 issue 标记为 `resolved`。
|
|
207
195
|
|
|
208
196
|
### 出口条件
|
|
209
197
|
|
|
210
198
|
- commit 已创建且为当前 issue 的独立提交;
|
|
211
199
|
- Acceptance Criteria 全部通过;
|
|
212
200
|
- issue 状态为 `resolved`(无关联 issue 的直接 spec 则在会话中输出总结);
|
|
213
|
-
- 实施总结和 `progress.md`
|
|
214
|
-
- 工作区符合预期,无本次临时产物或残留未跟踪文件;
|
|
215
|
-
- 文档与实现一致,Git 历史保护校验通过。
|
|
201
|
+
- 实施总结和 `progress.md` 已同步。
|
|
216
202
|
|
|
217
203
|
---
|
|
218
204
|
|
|
@@ -231,7 +217,7 @@ Commit 成功后:
|
|
|
231
217
|
|
|
232
218
|
### 验证证据失效
|
|
233
219
|
|
|
234
|
-
任何产品代码或测试文件再次变化,旧的测试、typecheck、build
|
|
220
|
+
任何产品代码或测试文件再次变化,旧的测试、typecheck、build 等受影响证据立即失效,必须重新验证受影响范围。正式 `code-review` 调用本身不因 finding 修复而重复;post-review 修复必须完成受影响验证和 finding delta recheck。若修改引入新的 Behavior、改变 Scope 或使原 Review 对象不再成立,则回到 Contract/Red-Green,重新形成稳定最终 diff 后再进入 Verify。
|
|
235
221
|
|
|
236
222
|
### Git History Preservation
|
|
237
223
|
|
|
@@ -253,7 +239,7 @@ Issue: ready-for-agent | in_progress | resolved | blocked
|
|
|
253
239
|
Progress: pending | in_progress | done | blocked
|
|
254
240
|
```
|
|
255
241
|
|
|
256
|
-
状态转换:Contract 完成后 Issue/Progress 为 `in_progress`;Red-Green 完成后 Behaviors 为 `completed`,Issue 仍为 `in_progress`;Verify 完成后 Issue 仍为 `in_progress`;
|
|
242
|
+
状态转换:Contract 完成后 Issue/Progress 为 `in_progress`;Red-Green 完成后 Behaviors 为 `completed`,Issue 仍为 `in_progress`;Verify 完成后 Issue 仍为 `in_progress`;Finalize 完成后 Issue 为 `resolved`、Progress 为 `done`。外部阻塞记录为 `blocked`,恢复后回到 `in_progress`。
|
|
257
243
|
|
|
258
244
|
---
|
|
259
245
|
|
|
@@ -264,6 +250,6 @@ Progress: pending | in_progress | done | blocked
|
|
|
264
250
|
| ① Contract | 需求歧义、验收缺口、范围变化 | → ① 补充契约和验证矩阵 |
|
|
265
251
|
| ② Red-Green | 有效 Red、实现、formatter、typecheck 或相关测试失败 | → ② 修复当前 Behavior |
|
|
266
252
|
| ③ Verify | 测试、build、真实运行或 review finding 失败 | → ② 修复 Behavior;需求偏差 → ① |
|
|
267
|
-
|
|
|
253
|
+
| Finalize | 必要 docs 未同步、commit 失败或 Tracker 信息不完整 | → ①/③ 修复对应问题;仍在 Finalize 完成前解决 |
|
|
268
254
|
|
|
269
255
|
多 issue 的层收敛、全量失败、依赖冲突和跨 issue 修改冲突按 [orchestration.md](orchestration.md) A5 回退,不跨 issue 无记录改动。
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Verify
|
|
2
|
+
|
|
3
|
+
仅在 `tdd-implement` Step ③ 读取。验证必须对应当前最终 diff;产品代码或测试再次变化时,测试/typecheck/build 等受影响证据失效。
|
|
4
|
+
|
|
5
|
+
## 固定顺序
|
|
6
|
+
|
|
7
|
+
`影响范围测试 → 必要 build → 必要真实运行验证 → code-review 一次 → blocking 修复后的定向复核`
|
|
8
|
+
|
|
9
|
+
## 规则
|
|
10
|
+
|
|
11
|
+
- 单 issue / 单 spec:按 Contract 验证矩阵运行完整相关测试;多 issue:只跑当前 issue 影响范围,全仓测试留给 orchestration A4。
|
|
12
|
+
- ticket 要求真实运行时,优先专用 browser,其次项目已有 Playwright;HTTP/CLI 不能替代 WebUI 可见验证。
|
|
13
|
+
- 临时进程必须使用隔离配置/端口,记录 PID 与实际结果,结束后清理。
|
|
14
|
+
- 当前 issue 的最终 diff 稳定后,调用一次 [code-review](.agents/skills/code-review/SKILL.md)。`tdd-implement` 只规定调用时机;审查维度、reviewer 数量、提示词、上下文与输出格式以 `code-review` 为唯一事实源。
|
|
15
|
+
- `code-review` 未完成或返回 blocking finding 时,issue 保持未完成;只修当前 issue 的 blocking finding,其余按 review 结果记录。
|
|
16
|
+
- 修复 blocking finding 后,只重跑受影响测试/typecheck 并对该 finding 做 delta recheck;不再次调用完整 `code-review`。若修复引入新的 Behavior、改变 Scope 或使原 Review 对象不再成立,则回到 Contract/Red-Green,重新形成稳定最终 diff 后再进入 Verify。
|
|
17
|
+
|
|
18
|
+
## 出口
|
|
19
|
+
|
|
20
|
+
- 最终 diff 的相关测试/typecheck/build 通过;
|
|
21
|
+
- 要求的真实运行验证有实际证据;
|
|
22
|
+
- 当前稳定 diff 已完成一次 `code-review`;
|
|
23
|
+
- 无 blocking finding;
|
|
24
|
+
- post-review 修复(如有)的受影响验证与 finding delta recheck 已完成。
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# matt-skills
|
|
2
2
|
|
|
3
|
-
mattpocock/skills(`skills/engineering` + `skills/productivity
|
|
3
|
+
mattpocock/skills(`skills/engineering` + `skills/productivity`)的配置仓库:工作区维护完整 skill 集合,其中一部分 proprietary skill 只供本仓库使用;`template/` 只包含可分发内容,以 npm 包 `@heihei0299/matt-skills` 分发,目标仓库一条命令即完成初始化。
|
|
4
4
|
|
|
5
5
|
## 模板结构
|
|
6
6
|
|
|
@@ -8,7 +8,7 @@ mattpocock/skills(`skills/engineering` + `skills/productivity`)的配置仓
|
|
|
8
8
|
template/
|
|
9
9
|
├── AGENTS.md 项目级全局配置(行为路由 + 分文件指针)
|
|
10
10
|
├── .agents/
|
|
11
|
-
│ └── skills/
|
|
11
|
+
│ └── skills/ workspace 的完整 skill 单一源;template 只携带可分发 skill,默认安装 programming 范围,--all 展开全部可分发 skill
|
|
12
12
|
├── .pi/ pi-agent 项目配置
|
|
13
13
|
│ ├── skills/ 空占位(项目自定义技能,含 .gitkeep + README.md)
|
|
14
14
|
│ ├── prompts/ issue-audit 命令(prompt template)
|
|
@@ -17,39 +17,60 @@ template/
|
|
|
17
17
|
└── .opencode/ opencode 项目配置
|
|
18
18
|
├── skills/ 空占位(项目自定义技能,含 .gitkeep + README.md)
|
|
19
19
|
├── agents/ issue-audit 子代理定义
|
|
20
|
-
|
|
20
|
+
├── commands/ issue-audit + 可分发的显式触发技能命令(grill-to-spec/wayfinder/to-spec/to-tickets/triage/improve-codebase-architecture/teach/handoff/writing-for-agents)
|
|
21
21
|
├── docs/agents/ 5 个分文件(运行时纪律 / 技能设计 / issue tracker / triage labels / domain)
|
|
22
22
|
├── CONTEXT.md 术语表
|
|
23
23
|
├── package.json 插件依赖清单
|
|
24
24
|
└── .gitignore
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
+
## 独有 skill 分发边界
|
|
28
|
+
|
|
29
|
+
本仓库维护 7 个独有(proprietary)skill:
|
|
30
|
+
|
|
31
|
+
### 可分发的 5 个
|
|
32
|
+
|
|
33
|
+
- `tdd-implement`
|
|
34
|
+
- `diagnose-fix`
|
|
35
|
+
- `grill-to-spec`
|
|
36
|
+
- `scaffold-functional-test`
|
|
37
|
+
- `show-me`
|
|
38
|
+
|
|
39
|
+
默认 programming 范围中的 4 个独有 skill 是 `tdd-implement`、`diagnose-fix`、`grill-to-spec`、`show-me`;`scaffold-functional-test` 可分发但默认可选。
|
|
40
|
+
|
|
41
|
+
### 仓库内部的 2 个
|
|
42
|
+
|
|
43
|
+
- `ci-guard`
|
|
44
|
+
- `commit-check`
|
|
45
|
+
|
|
46
|
+
`ci-guard` 和 `commit-check` 只服务 matt-skills 仓库自身,不会通过 `list`、`install`、`init`、`sync`、`--all` 或 global install 分发到用户项目。workspace 保留完整集合,template 只包含可分发集合。
|
|
47
|
+
|
|
27
48
|
## 初始化
|
|
28
49
|
|
|
29
50
|
在目标仓库根目录执行一条命令:
|
|
30
51
|
|
|
31
52
|
```sh
|
|
32
|
-
npx @heihei0299/matt-skills init #
|
|
33
|
-
npx @heihei0299/matt-skills init --all #
|
|
53
|
+
npx @heihei0299/matt-skills init # 默认 programming 范围
|
|
54
|
+
npx @heihei0299/matt-skills init --all # 安装全部可分发 skill(含 productivity)
|
|
34
55
|
```
|
|
35
56
|
|
|
36
|
-
`init` 默认只在目标没有 `AGENTS.md` 时初始化;已有项目默认跳过以保护定制,显式 `init --all`
|
|
57
|
+
`init` 默认只在目标没有 `AGENTS.md` 时初始化;已有项目默认跳过以保护定制,显式 `init --all` 会刷新模板并安装/覆盖全部可分发 skill。模板已经包含可分发内容,无需二次拉取上游;repo-local skill 不会进入目标项目。
|
|
37
58
|
|
|
38
|
-
选项:`--dest <path>` 指定目标目录(默认当前目录);`--all`
|
|
59
|
+
选项:`--dest <path>` 指定目标目录(默认当前目录);`--all` 包含全部可分发的非默认 skill(包括 productivity 和 optional proprietary);已有目标使用 `init --all` 刷新,普通 `init` 跳过。
|
|
39
60
|
**增量同步(已有项目)**:已有项目更新到最新模板与技能:
|
|
40
61
|
|
|
41
62
|
```sh
|
|
42
|
-
npx @heihei0299/matt-skills sync #
|
|
43
|
-
npx @heihei0299/matt-skills sync --all #
|
|
44
|
-
npx @heihei0299/matt-skills sync --dry-run --json # 预演:只比对不写盘(默认范围,--all
|
|
63
|
+
npx @heihei0299/matt-skills sync # 默认安全增量:同步默认 programming skill(不删多余)
|
|
64
|
+
npx @heihei0299/matt-skills sync --all # 同步全部可分发 skill(不删多余)
|
|
65
|
+
npx @heihei0299/matt-skills sync --dry-run --json # 预演:只比对不写盘(默认范围,--all 可透传)
|
|
45
66
|
npx @heihei0299/matt-skills sync --dest <path> --upstream <url> --ref <ref> --json # 选项可组合
|
|
46
67
|
```
|
|
47
68
|
|
|
48
|
-
`sync`
|
|
49
|
-
|
|
50
|
-
**pi-agent 用户**:初始化命令完全相同。pi 从 `.agents/skills/`
|
|
69
|
+
`sync` 专为已有项目设计,两档语义:写盘模式下默认同步默认 programming 范围,`--all` 同步全部可分发 skill;`--dry-run` 仅对比上游、不写盘,默认比较 engineering + required 的上游部分,`--all` 比较全量上游范围,打印“上游 HEAD / 本地非独有 vs 上游 / 新增/更新/删除/一致”表,`--json` 可解析,有差异 `exit 1`。上游 dry-run/check 不比较 proprietary,因为它们不属于上游;默认安全增量写盘不删多余,模板配置增量更新,旧镜像中的共享 skill 自动清理但保留项目自定义。repo-local skill 永远不新增、不覆盖、不删除,发现历史副本时只提示保留。`--dest`、`--upstream`、`--ref`、`--json`、`--all`、`--dry-run` 可透传。
|
|
70
|
+
目标仓库会话即自动加载可分发共享技能(`.agents/skills/` 单一源)与项目级全局配置(行为路由表、分文件约定);项目自定义技能可按需放入 `.pi/skills/` 或 `.opencode/skills/`(按 harness 自动发现);`issue-audit` 以子代理 + 命令形式分发(`.opencode/agents/`、`.opencode/commands/`);可分发的显式触发技能注册为 opencode 命令(`.opencode/commands/`,`/命令名` 触发)。
|
|
71
|
+
**pi-agent 用户**:初始化命令完全相同。pi 从 `.agents/skills/` 自动发现全部可分发共享技能,无需额外指向;`.pi/skills/` 仅用于项目自定义。首次在目标仓库交互启动时 pi 会询问项目信任,用 `/trust` 保存即可。
|
|
51
72
|
|
|
52
|
-
**手动方式(备选)**:无 npx 环境时,将 `template/`
|
|
73
|
+
**手动方式(备选)**:无 npx 环境时,将 `template/` 整个文件夹复制到目标仓库根目录即可(已含全部可分发 skill):
|
|
53
74
|
|
|
54
75
|
```sh
|
|
55
76
|
cp -r template/. /path/to/target/
|
|
@@ -67,9 +88,9 @@ git clone --depth 1 https://github.com/mattpocock/skills.git /tmp/mattpocock-ski
|
|
|
67
88
|
|
|
68
89
|
| 工作区 | 模板 |
|
|
69
90
|
|--------|------|
|
|
70
|
-
| `.agents/skills
|
|
91
|
+
| `.agents/skills/`(workspace 完整 skill 集合:upstream + proprietary) | `template/.agents/skills/`(仅可分发 skill) |
|
|
71
92
|
| `.agents/skills/` 的 harness 占位说明 | `template/.pi/skills/.gitkeep` + `README.md`、`template/.opencode/skills/.gitkeep` + `README.md`(空目录占位,供项目自定义) |
|
|
72
|
-
│ │ ├── commands/ issue-audit +
|
|
93
|
+
│ │ ├── commands/ issue-audit + 可分发的显式触发技能命令(grill-to-spec/wayfinder/to-spec/to-tickets/triage/improve-codebase-architecture/teach/handoff/writing-for-agents)
|
|
73
94
|
| `.pi/prompts/issue-audit.md`(pi 命令:opencode 版适配,去 subagent frontmatter) | `template/.pi/prompts/issue-audit.md` |
|
|
74
95
|
| `AGENTS.md` | `template/AGENTS.md`(引用映射为 `.opencode/` 路径) |
|
|
75
96
|
| `CONTEXT.md` | `template/.opencode/CONTEXT.md` + `template/.pi/CONTEXT.md` |
|
|
@@ -78,7 +99,7 @@ git clone --depth 1 https://github.com/mattpocock/skills.git /tmp/mattpocock-ski
|
|
|
78
99
|
共享技能统一在 `.agents/skills` 单一源,不再双份镜像到 `.opencode/skills` / `.pi/skills`。
|
|
79
100
|
`test/template-sync.test.js` 守护同步(含路径映射),漏同步测试即红。
|
|
80
101
|
|
|
81
|
-
新增技能前先查上游 `mattpocock/skills`
|
|
102
|
+
新增技能前先查上游 `mattpocock/skills` 是否已存在;仅上游没有的技能才作为 proprietary skill 落在本仓库。Proprietary skill 再分为 distributable 和 repo-local:后者只服务本仓库,不进入 template 或任何用户安装路径。上游技能通过 `scripts/sync-upstream.js` 同步到 `.agents/skills` 后,只有可分发内容会进入模板。
|
|
82
103
|
|
|
83
104
|
## harness 支持
|
|
84
105
|
|
|
@@ -119,13 +140,13 @@ CODEX_E2E=1 npm run codex:smoke # 显式运行真实 smoke test
|
|
|
119
140
|
|
|
120
141
|
- **全局**:`~/.pi/agent/skills/`、`~/.agents/skills/`(用户级技能,自动发现);配置在 `~/.pi/agent/settings.json`
|
|
121
142
|
- **项目**:
|
|
122
|
-
- `.agents/skills/` —
|
|
143
|
+
- `.agents/skills/` — 可分发共享技能单一源(默认 programming,`--all` 全部可分发,自动发现)
|
|
123
144
|
- `.pi/skills/` — 项目自定义技能(pi 标准结构,自动发现,仅放项目本地技能)
|
|
124
145
|
- `.pi/prompts/` — pi 命令(prompt template)自动发现,如 `issue-audit.md` → `/issue-audit`
|
|
125
146
|
- `.pi/settings.json` — 已简化为空对象(历史指向 `.opencode/skills` 已移除,共享技能走 `.agents/skills`)
|
|
126
147
|
### opencode
|
|
127
148
|
|
|
128
|
-
- **项目**:`.agents/skills
|
|
149
|
+
- **项目**:`.agents/skills/`(可分发共享技能单一源,默认 programming,`--all` 全部可分发)、`.opencode/skills/`(项目自定义技能)、`.opencode/agents/`(子代理)、`.opencode/commands/`(命令:issue-audit + 可分发显式触发技能,`/命令名` 触发)、`.opencode/docs/`(文档)
|
|
129
150
|
|
|
130
151
|
同一份技能(Agent Skills 标准)与 `AGENTS.md` 行为路由在两种 harness 下均可加载:pi 与 codex/claude 从 `.agents/skills/` 自动发现;opencode 按本模板约定同样优先读取 `.agents/skills/`(`.opencode/skills/` 仅用于项目自定义)。
|
|
131
152
|
|
|
@@ -134,23 +155,23 @@ CODEX_E2E=1 npm run codex:smoke # 显式运行真实 smoke test
|
|
|
134
155
|
仓库内提供安装管理 CLI(`bin/cli.js`,依赖 `prompts`,见 `package.json`),同时作为 npm 包 `@heihei0299/matt-skills` 分发(`npx @heihei0299/matt-skills <command>`):
|
|
135
156
|
|
|
136
157
|
```sh
|
|
137
|
-
node bin/cli.js init [--dest <dir>] [--all] #
|
|
158
|
+
node bin/cli.js init [--dest <dir>] [--all] # 初始化项目:默认 programming 或全部可分发 skill
|
|
138
159
|
node bin/cli.js sync [--all] [--dry-run] [--dest <path>] [--upstream <url>] [--ref <ref>] [--json] # 同步已有项目到最新(默认编程,--all 仅同名 upsert + AGENTS.md)
|
|
139
160
|
node bin/cli.js list [--json] [--all] # 列出技能(默认编程)
|
|
140
161
|
node bin/cli.js install [选项] # 把技能复制到目标工具目录(交互式选择,默认编程)
|
|
141
162
|
node bin/cli.js check [--json] [--all] [--upstream <url>] [--ref <ref>] # 只读检查上游技能是否最新(等价 sync --dry-run,默认范围)
|
|
142
163
|
```
|
|
143
164
|
|
|
144
|
-
`init` 选项:`--dest <path>` 指定目标目录(默认当前目录);`--all`
|
|
145
|
-
`sync`
|
|
146
|
-
`check` 选项:`--json`、`--all
|
|
165
|
+
`init` 选项:`--dest <path>` 指定目标目录(默认当前目录);`--all` 包含全部可分发 skill,见「初始化」。
|
|
166
|
+
`sync` 选项:写盘时 `--all` 更新全部可分发同名技能内容(存在则覆盖,不存在则新增)并更新 `AGENTS.md`(不跳过定制),不删多余;默认写盘只同步默认 programming;`--dry-run` 只比对上游、不写盘(默认 engineering + required 上游范围,`--all` 为全量上游范围,`--json` 可解析,有差异 `exit 1`);`--dest <path>` 目标目录;`--upstream <url>` 上游地址;`--ref <ref>` 上游分支;`--json` JSON 输出;默认安全增量会保留目标定制。
|
|
167
|
+
`check` 选项:`--json`、`--all`(默认只比较 engineering + required 上游范围;proprietary 不参与上游 compare)、`--upstream <url>`、`--ref <ref>`(等价 `sync --dry-run`)。
|
|
147
168
|
|
|
148
169
|
`install` 选项:
|
|
149
170
|
|
|
150
171
|
- `--dest <dir>`:复制到指定目录(覆盖工具映射)
|
|
151
172
|
- `--tools <t1,t2>`:指定工具,项目级已统一 `codex/pi/opencode/claude → .agents/skills`(共享技能单一源,`.pi/skills`/`.opencode/skills` 仅用于项目自定义)
|
|
152
173
|
- `--global`:安装到全局目录(`~/.codex/skills`、`~/.pi/agent/skills`、`~/.config/opencode/skills`、`~/.claude/skills`);`--project` 回到项目级
|
|
153
|
-
- `--all
|
|
174
|
+
- `--all`:安装全部可分发 skill(交互勾选时默认只列 programming 范围);`--force`:覆盖已存在的技能
|
|
154
175
|
|
|
155
176
|
|
|
156
177
|
### 上游同步(自动更新)
|
|
@@ -160,14 +181,14 @@ node bin/cli.js check [--json] [--all] [--upstream <url>] [--ref <ref>]
|
|
|
160
181
|
- **本地 CLI**:`matt-skills sync` 两档——`--dry-run` 只读比对(有差异 `exit 1`,`--json` 可解析)、默认安全增量与 `sync --all` 仅同名 upsert + `AGENTS.md`;`matt-skills check [--json] [--upstream <url>] [--ref <ref>]` 为只读别名(等价 `sync --dry-run`);`matt-skills update` 已合并到 `sync`(执行提示 `update 已合并到 sync` 且 `exit 1`)
|
|
161
182
|
```sh
|
|
162
183
|
npx @heihei0299/matt-skills sync --dry-run --json # 预演只读检查,JSON 输出:{ head, counts, result: { added, updated, renamed, removed, same } }
|
|
163
|
-
npx @heihei0299/matt-skills sync # 默认安全增量(AGENTS.md
|
|
184
|
+
npx @heihei0299/matt-skills sync # 默认安全增量(AGENTS.md 定制跳过,默认 programming)
|
|
164
185
|
npx @heihei0299/matt-skills sync --all # 仅同名 upsert + AGENTS.md
|
|
165
186
|
npx @heihei0299/matt-skills check --json # 等价 sync --dry-run
|
|
166
187
|
node scripts/sync-upstream.js --check # 等价底层脚本(CLI sync/check 的实现)
|
|
167
188
|
node scripts/sync-upstream.js --apply --dry-run
|
|
168
189
|
```
|
|
169
190
|
|
|
170
|
-
实现细节:`scripts/sync-upstream.js` 为单一事实源(CLI 与 Actions 共用),以
|
|
191
|
+
实现细节:`scripts/sync-upstream.js` 为单一事实源(CLI 与 Actions 共用),以 proprietary 分类契约排除本仓库独有 skill,以 `config/engineering.json` 为编程白名单,以 `config/required.json` 为独有所需白名单;上游通过 `git clone --depth 1 https://github.com/mattpocock/skills.git` 获取,比对 `SKILL.md` 的 sha256,自动处理新增/更新/重命名/删除。上游同步只维护 workspace,模板生成时再按 distributable 边界投影。
|
|
171
192
|
上游重命名映射:`RENAMES = { "writing-great-skills": "writing-for-agents" }`,Actions/CLI 均会删除旧目录并复制新目录。
|
|
172
193
|
## 发布
|
|
173
194
|
|
|
@@ -200,7 +221,7 @@ npm publish
|
|
|
200
221
|
|
|
201
222
|
```sh
|
|
202
223
|
npm test # 全量测试
|
|
203
|
-
npm run build:template #
|
|
224
|
+
npm run build:template # 从 workspace 生成仅含可分发 skill 的 template + 空占位
|
|
204
225
|
```
|
|
205
226
|
|
|
206
227
|
交互模式依赖 `prompts`(见 `package.json`);测试见 `test/cli.test.js`、`test/cli-init.test.js`、`test/template-sync.test.js`。
|