@heihei0299/matt-skills 1.3.2 → 1.5.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.
Files changed (139) hide show
  1. package/.agents/skills/ci-guard/SKILL.md +94 -0
  2. package/.agents/skills/ci-guard/agents/openai.yaml +5 -0
  3. package/.agents/skills/commit-check/SKILL.md +13 -18
  4. package/.agents/skills/diagnose-fix/SKILL.md +0 -1
  5. package/.agents/skills/grill-to-spec/SKILL.md +0 -3
  6. package/.agents/skills/instance-test/SKILL.md +36 -27
  7. package/.agents/skills/instance-test/agents/openai.yaml +1 -1
  8. package/.agents/skills/instance-test/references/instances.md +63 -36
  9. package/.agents/skills/scaffold-functional-test/SKILL.md +75 -0
  10. package/.agents/skills/scaffold-functional-test/agents/openai.yaml +5 -0
  11. package/.agents/skills/tdd-implement/SKILL.md +0 -1
  12. package/.agents/skills/tdd-implement/references/orchestration.md +2 -2
  13. package/.agents/skills/tdd-implement/references/stages.md +2 -7
  14. package/README.md +55 -54
  15. package/bin/cli.js +216 -64
  16. package/config/engineering.json +20 -0
  17. package/config/proprietary.json +8 -1
  18. package/package.json +2 -1
  19. package/scripts/sync-upstream.js +69 -43
  20. package/template/.agents/skills/ask-matt/PHASE-BOUNDARIES.md +55 -0
  21. package/template/.agents/skills/ask-matt/SKILL.md +90 -0
  22. package/template/.agents/skills/ask-matt/agents/openai.yaml +5 -0
  23. package/template/.agents/skills/ci-guard/SKILL.md +94 -0
  24. package/template/.agents/skills/ci-guard/agents/openai.yaml +5 -0
  25. package/template/.agents/skills/code-review/SKILL.md +87 -0
  26. package/template/.agents/skills/code-review/agents/openai.yaml +3 -0
  27. package/template/.agents/skills/codebase-design/DEEPENING.md +37 -0
  28. package/template/.agents/skills/codebase-design/DESIGN-IT-TWICE.md +44 -0
  29. package/template/.agents/skills/codebase-design/SKILL.md +114 -0
  30. package/template/.agents/skills/codebase-design/agents/openai.yaml +3 -0
  31. package/template/{.opencode → .agents}/skills/commit-check/SKILL.md +13 -18
  32. package/template/{.pi → .agents}/skills/diagnose-fix/SKILL.md +0 -1
  33. package/template/.agents/skills/diagnosing-bugs/SKILL.md +138 -0
  34. package/template/.agents/skills/diagnosing-bugs/agents/openai.yaml +3 -0
  35. package/template/.agents/skills/diagnosing-bugs/scripts/hitl-loop.template.sh +44 -0
  36. package/template/.agents/skills/domain-modeling/ADR-FORMAT.md +47 -0
  37. package/template/.agents/skills/domain-modeling/CONTEXT-FORMAT.md +60 -0
  38. package/template/.agents/skills/domain-modeling/SKILL.md +74 -0
  39. package/template/.agents/skills/domain-modeling/agents/openai.yaml +3 -0
  40. package/template/.agents/skills/grill-me/SKILL.md +7 -0
  41. package/template/.agents/skills/grill-me/agents/openai.yaml +5 -0
  42. package/template/{.pi → .agents}/skills/grill-to-spec/SKILL.md +0 -3
  43. package/template/.agents/skills/grill-with-docs/SKILL.md +7 -0
  44. package/template/.agents/skills/grill-with-docs/agents/openai.yaml +5 -0
  45. package/template/.agents/skills/grilling/SKILL.md +28 -0
  46. package/template/.agents/skills/grilling/agents/openai.yaml +3 -0
  47. package/template/.agents/skills/handoff/SKILL.md +16 -0
  48. package/template/.agents/skills/handoff/agents/openai.yaml +5 -0
  49. package/template/.agents/skills/implement/SKILL.md +15 -0
  50. package/template/.agents/skills/implement/agents/openai.yaml +5 -0
  51. package/template/.agents/skills/improve-codebase-architecture/HTML-REPORT.md +123 -0
  52. package/template/.agents/skills/improve-codebase-architecture/SKILL.md +71 -0
  53. package/template/.agents/skills/improve-codebase-architecture/agents/openai.yaml +5 -0
  54. package/template/.agents/skills/instance-test/SKILL.md +70 -0
  55. package/template/.agents/skills/instance-test/agents/openai.yaml +5 -0
  56. package/template/.agents/skills/instance-test/references/instances.md +75 -0
  57. package/template/.agents/skills/prototype/LOGIC.md +67 -0
  58. package/template/.agents/skills/prototype/SKILL.md +26 -0
  59. package/template/.agents/skills/prototype/UI.md +112 -0
  60. package/template/.agents/skills/prototype/agents/openai.yaml +3 -0
  61. package/template/.agents/skills/research/SKILL.md +12 -0
  62. package/template/.agents/skills/research/agents/openai.yaml +3 -0
  63. package/template/.agents/skills/resolving-merge-conflicts/SKILL.md +14 -0
  64. package/template/.agents/skills/resolving-merge-conflicts/agents/openai.yaml +3 -0
  65. package/template/.agents/skills/scaffold-functional-test/SKILL.md +75 -0
  66. package/template/.agents/skills/scaffold-functional-test/agents/openai.yaml +5 -0
  67. package/template/.agents/skills/setup-matt-pocock-skills/SKILL.md +116 -0
  68. package/template/.agents/skills/setup-matt-pocock-skills/agents/openai.yaml +5 -0
  69. package/template/.agents/skills/setup-matt-pocock-skills/domain.md +51 -0
  70. package/template/.agents/skills/setup-matt-pocock-skills/issue-tracker-github.md +45 -0
  71. package/template/.agents/skills/setup-matt-pocock-skills/issue-tracker-gitlab.md +46 -0
  72. package/template/.agents/skills/setup-matt-pocock-skills/issue-tracker-local.md +30 -0
  73. package/template/.agents/skills/setup-matt-pocock-skills/triage-labels.md +15 -0
  74. package/template/.agents/skills/tdd/SKILL.md +38 -0
  75. package/template/.agents/skills/tdd/agents/openai.yaml +3 -0
  76. package/template/.agents/skills/tdd/mocking.md +59 -0
  77. package/template/.agents/skills/tdd/tests.md +77 -0
  78. package/template/{.opencode → .agents}/skills/tdd-implement/SKILL.md +0 -1
  79. package/template/{.pi → .agents}/skills/tdd-implement/references/orchestration.md +2 -2
  80. package/template/{.opencode → .agents}/skills/tdd-implement/references/stages.md +2 -7
  81. package/template/.agents/skills/teach/GLOSSARY-FORMAT.md +35 -0
  82. package/template/.agents/skills/teach/LEARNING-RECORD-FORMAT.md +46 -0
  83. package/template/.agents/skills/teach/MISSION-FORMAT.md +31 -0
  84. package/template/.agents/skills/teach/RESOURCES-FORMAT.md +32 -0
  85. package/template/.agents/skills/teach/SKILL.md +140 -0
  86. package/template/.agents/skills/teach/agents/openai.yaml +5 -0
  87. package/template/.agents/skills/to-questionnaire/SKILL.md +54 -0
  88. package/template/.agents/skills/to-questionnaire/agents/openai.yaml +5 -0
  89. package/template/.agents/skills/to-spec/SKILL.md +75 -0
  90. package/template/.agents/skills/to-spec/agents/openai.yaml +5 -0
  91. package/template/.agents/skills/to-tickets/SKILL.md +105 -0
  92. package/template/.agents/skills/to-tickets/agents/openai.yaml +5 -0
  93. package/template/.agents/skills/triage/AGENT-BRIEF.md +207 -0
  94. package/template/.agents/skills/triage/OUT-OF-SCOPE.md +105 -0
  95. package/template/.agents/skills/triage/SKILL.md +112 -0
  96. package/template/.agents/skills/triage/agents/openai.yaml +5 -0
  97. package/template/.agents/skills/wait-what/SKILL.md +7 -0
  98. package/template/.agents/skills/wait-what/agents/openai.yaml +5 -0
  99. package/template/.agents/skills/wayfinder/SKILL.md +128 -0
  100. package/template/.agents/skills/wayfinder/agents/openai.yaml +5 -0
  101. package/template/.agents/skills/wizard/SKILL.md +44 -0
  102. package/template/.agents/skills/wizard/agents/openai.yaml +3 -0
  103. package/template/.agents/skills/wizard/template.sh +204 -0
  104. package/template/.agents/skills/writing-for-agents/SKILL-MECHANICS.md +22 -0
  105. package/template/.agents/skills/writing-for-agents/SKILL.md +81 -0
  106. package/template/.agents/skills/writing-for-agents/agents/openai.yaml +3 -0
  107. package/template/.opencode/CONTEXT.md +8 -8
  108. package/template/.opencode/skills/.gitkeep +0 -0
  109. package/template/.opencode/skills/README.md +4 -0
  110. package/template/.pi/CONTEXT.md +8 -8
  111. package/template/.pi/skills/.gitkeep +0 -0
  112. package/template/.pi/skills/README.md +4 -0
  113. package/template/AGENTS.md +5 -8
  114. package/template/.opencode/skills/diagnose-fix/SKILL.md +0 -66
  115. package/template/.opencode/skills/grill-to-spec/SKILL.md +0 -83
  116. package/template/.opencode/skills/instance-test/SKILL.md +0 -61
  117. package/template/.opencode/skills/instance-test/agents/openai.yaml +0 -5
  118. package/template/.opencode/skills/instance-test/references/instances.md +0 -48
  119. package/template/.opencode/skills/tdd-implement/references/orchestration.md +0 -136
  120. package/template/.pi/skills/commit-check/SKILL.md +0 -67
  121. package/template/.pi/skills/commit-check/agents/openai.yaml +0 -5
  122. package/template/.pi/skills/commit-check/scripts/scan-sensitive.sh +0 -36
  123. package/template/.pi/skills/diagnose-fix/agents/openai.yaml +0 -5
  124. package/template/.pi/skills/diagnose-fix/references/anti-patterns.md +0 -20
  125. package/template/.pi/skills/grill-to-spec/agents/openai.yaml +0 -5
  126. package/template/.pi/skills/grill-to-spec/references/rules.md +0 -33
  127. package/template/.pi/skills/instance-test/SKILL.md +0 -61
  128. package/template/.pi/skills/instance-test/agents/openai.yaml +0 -5
  129. package/template/.pi/skills/instance-test/references/instances.md +0 -48
  130. package/template/.pi/skills/tdd-implement/SKILL.md +0 -48
  131. package/template/.pi/skills/tdd-implement/agents/openai.yaml +0 -5
  132. package/template/.pi/skills/tdd-implement/references/stages.md +0 -316
  133. /package/template/{.opencode → .agents}/skills/commit-check/agents/openai.yaml +0 -0
  134. /package/template/{.opencode → .agents}/skills/commit-check/scripts/scan-sensitive.sh +0 -0
  135. /package/template/{.opencode → .agents}/skills/diagnose-fix/agents/openai.yaml +0 -0
  136. /package/template/{.opencode → .agents}/skills/diagnose-fix/references/anti-patterns.md +0 -0
  137. /package/template/{.opencode → .agents}/skills/grill-to-spec/agents/openai.yaml +0 -0
  138. /package/template/{.opencode → .agents}/skills/grill-to-spec/references/rules.md +0 -0
  139. /package/template/{.opencode → .agents}/skills/tdd-implement/agents/openai.yaml +0 -0
package/README.md CHANGED
@@ -7,9 +7,15 @@ mattpocock/skills(`skills/engineering` + `skills/productivity`)的配置仓
7
7
  ```
8
8
  template/
9
9
  ├── AGENTS.md 项目级全局配置(行为路由 + 分文件指针)
10
- ├── .pi/ pi-agent 项目配置(pi 标准结构:`.pi/skills/` 直放独有技能,自动发现)
11
- └── .opencode/ 分发内容(目标仓库的 opencode 项目配置)
12
- ├── skills/ 5 个独有技能(tdd-implement、grill-to-spec、diagnose-fix、commit-check、instance-test)
10
+ ├── .agents/
11
+ └── skills/ 32 个技能(上游 26 + 独有 6:ci-guard、tdd-implement、grill-to-spec、diagnose-fix、commit-check、scaffold-functional-test)单一源;模板全量 32,默认安装仅编程相关 22(engineering 18 + 核心独有 4,见 config/engineering.json),--all 展开全量
12
+ ├── .pi/ pi-agent 项目配置
13
+ │ ├── skills/ 空占位(项目自定义技能,含 .gitkeep + README.md)
14
+ │ ├── prompts/ issue-audit 命令(prompt template)
15
+ │ ├── docs/agents/ 5 个分文件镜像
16
+ │ └── CONTEXT.md 术语表镜像
17
+ └── .opencode/ opencode 项目配置
18
+ ├── skills/ 空占位(项目自定义技能,含 .gitkeep + README.md)
13
19
  ├── agents/ issue-audit 子代理定义
14
20
  ├── commands/ issue-audit + 9 个显式触发技能命令(grill-to-spec/wayfinder/to-spec/to-tickets/triage/improve-codebase-architecture/teach/handoff/writing-for-agents)
15
21
  ├── docs/agents/ 5 个分文件(运行时纪律 / 技能设计 / issue tracker / triage labels / domain)
@@ -23,44 +29,40 @@ template/
23
29
  在目标仓库根目录执行一条命令:
24
30
 
25
31
  ```sh
26
- npx @heihei0299/matt-skills init
32
+ npx @heihei0299/matt-skills init # 默认仅编程相关 21(engineering + 独有),--all 展开全量 32
33
+ npx @heihei0299/matt-skills init --all # 安装全量 32(含 productivity)
27
34
  ```
28
35
 
29
- `init` 做两件事:
30
-
31
- 1. 复制 `template/` 快照(`AGENTS.md`、`.opencode/`、`.pi/`)到当前目录;
32
- 2. 把上游技能(engineering 17 个 + productivity 5 个)复制到 `.agents/skills/`。
33
-
34
- 选项:`--dest <path>` 指定目标目录(默认当前目录);`--force` 覆盖已存在的文件(直接覆盖,`AGENTS.md` 会备份到 `.bak`)(默认跳过)。
36
+ `init` 做一件事:复制 `template/` 快照(`AGENTS.md`、`.agents/skills/`、`.opencode/`、`.pi/`)到当前目录;模板全量 32,默认仅安装编程相关 24(上游 engineering 桶,见 config/engineering.json + 独有 6),`--all` 展开全量,无需二次拉取上游。
35
37
 
38
+ 选项:`--dest <path>` 指定目标目录(默认当前目录);`--force` 覆盖已存在的文件(直接覆盖,`AGENTS.md` 会备份到 `.bak`)(默认跳过);`--all` 包含非编程技能(productivity,默认仅编程)。
36
39
  **增量同步(已有项目)**:已有项目更新到最新模板与技能:
37
40
 
38
41
  ```sh
39
- npx @heihei0299/matt-skills sync # 默认仅对比不写盘(check),有差异 exit 1,--json 可解析
40
- npx @heihei0299/matt-skills sync --apply # 安全增量:AGENTS.md 定制跳过,上游技能强制覆盖但不删
41
- npx @heihei0299/matt-skills sync --force # 硬盖:AGENTS.md 备份后硬盖,技能与模板全量 add/update/remove
42
+ npx @heihei0299/matt-skills sync # 默认仅对比不写盘(check),有差异 exit 1,--json 可解析(仅编程)
43
+ npx @heihei0299/matt-skills sync --all --json # 全量对比
44
+ npx @heihei0299/matt-skills sync --apply # 安全增量:AGENTS.md 定制跳过,编程技能 rm+cp,不删多余 productivity(默认保留)
45
+ npx @heihei0299/matt-skills sync --apply --all # 安全增量全量
46
+ npx @heihei0299/matt-skills sync --force # 硬盖编程:AGENTS.md 备份后硬盖,编程技能全量 add/update/remove(含 productivity 删除与旧镜像清理)
47
+ npx @heihei0299/matt-skills sync --force --all # 硬盖全量
42
48
  npx @heihei0299/matt-skills sync --apply --dest <path> --upstream <url> --ref <ref> --json # 选项可组合
43
49
  ```
44
50
 
45
- `sync` 专为已有项目设计,三档语义:默认 `check` 仅对比不写盘(打印“上游 HEAD / 本地非独有 vs 上游 / 新增/更新/删除/一致”表,`--json` 可解析,有差异 `exit 1`);`--apply` 安全增量写盘(`AGENTS.md` 若含独有路由如 `tdd-implement` 则跳过,`.agents/skills` 对上游技能 `rm+cp force` 覆盖但不 `remove`,`template/.opencode/.pi` 增量 `add/update`);`--force` 硬盖(`AGENTS.md` 备份 `.bak` 后强制覆盖,技能与模板均 `add/update/remove` 全做)。`--dest`、`--upstream`、`--ref`、`--json` 在三档均可透传。
46
-
47
- 上游没有 `tdd-implement`、`grill-to-spec`、`diagnose-fix`、`commit-check`,复制天然不冲突。目标仓库会话即自动加载全部技能(上游在 `.agents/skills/`、独有在 `.opencode/skills/`;pi 侧独有在 `.pi/skills/`)与项目级全局配置(行为路由表、分文件约定);`issue-audit` 以子代理 + 命令形式分发(`.opencode/agents/`、`.opencode/commands/`);9 个显式触发技能注册为 opencode 命令(`.opencode/commands/`,`/命令名` 触发)。
51
+ `sync` 专为已有项目设计,三档语义:默认 `check` 仅对比不写盘(仅编程,`--all` 展开全量,打印“上游 HEAD / 本地非独有 vs 上游 / 新增/更新/删除/一致”表,`--json` 可解析,有差异 `exit 1`);`--apply` 安全增量写盘(编程模式:`AGENTS.md` 若含独有路由如 `tdd-implement` 则跳过,`.agents/skills` 按编程子集 `rm+cp force` 覆盖但不 `remove` 多余 productivity,`template/.agents/.opencode/.pi` 按过滤增量 `add/update`,旧镜像 `.pi/skills` + `.opencode/skills` 中残留的共享技能自动清理但保留项目自定义;`--all` 则全量);`--force` 硬盖(编程模式:`AGENTS.md` 备份 `.bak` 后强制覆盖,编程技能 `add/update/remove` 全做(含 productivity 删除与旧镜像清理);`--all` 则全量硬盖)。`--dest`、`--upstream`、`--ref`、`--json`、`--all` 在三档均可透传。
52
+ 目标仓库会话即自动加载共享技能(`.agents/skills/` 单一源,默认编程 22,`--all` 全量 32)与项目级全局配置(行为路由表、分文件约定);项目自定义技能可按需放入 `.pi/skills/` 或 `.opencode/skills/`(按 harness 自动发现);`issue-audit` 以子代理 + 命令形式分发(`.opencode/agents/`、`.opencode/commands/`);9 个显式触发技能注册为 opencode 命令(`.opencode/commands/`,`/命令名` 触发)。
53
+ **pi-agent 用户**:初始化命令完全相同。pi 从 `.agents/skills/` 自动发现全部共享技能,无需额外指向;`.pi/skills/` 仅用于项目自定义。首次在目标仓库交互启动时 pi 会询问项目信任,用 `/trust` 保存即可。
48
54
 
49
- **pi-agent 用户**:初始化命令完全相同。pi `.pi/skills/` 自动发现独有技能(tdd-implement、grill-to-spec、diagnose-fix、commit-check),无需任何指向配置;首次在目标仓库交互启动时 pi 会询问项目信任,用 `/trust` 保存即可。
50
-
51
- **手动方式(备选)**:无 npx 环境时,将 `template/` 整个文件夹复制到目标仓库根目录,再拉取上游技能:
55
+ **手动方式(备选)**:无 npx 环境时,将 `template/` 整个文件夹复制到目标仓库根目录即可(已含全量技能):
52
56
 
53
57
  ```sh
54
58
  cp -r template/. /path/to/target/
55
- git clone --depth 1 https://github.com/mattpocock/skills.git /tmp/mattpocock-skills
56
- cp -r /tmp/mattpocock-skills/skills/engineering/. .agents/skills/
57
- cp -r /tmp/mattpocock-skills/skills/productivity/. .agents/skills/
58
- rm -rf /tmp/mattpocock-skills
59
59
  ```
60
60
 
61
- 上游没有 `tdd-implement`、`grill-to-spec`、`diagnose-fix`、`commit-check`,复制天然不冲突。目标仓库会话即自动加载全部技能(上游在 `.agents/skills/`、独有在 `.opencode/skills/`;pi 侧独有在 `.pi/skills/`)与项目级全局配置(行为路由表、分文件约定);`issue-audit` 以子代理 + 命令形式分发(`.opencode/agents/`、`.opencode/commands/`);9 个显式触发技能注册为 opencode 命令(`.opencode/commands/`,`/命令名` 触发)。
61
+ 旧的手动拉取上游步骤已不再需要;若需单独验证上游,仍可:
62
62
 
63
- **pi-agent 用户**:初始化命令完全相同。pi 从 `.pi/skills/` 自动发现独有技能(tdd-implement、grill-to-spec、diagnose-fix、commit-check),无需任何指向配置;首次在目标仓库交互启动时 pi 会询问项目信任,用 `/trust` 保存即可。
63
+ ```sh
64
+ git clone --depth 1 https://github.com/mattpocock/skills.git /tmp/mattpocock-skills
65
+ ```
64
66
 
65
67
  ## 维护约定
66
68
 
@@ -68,18 +70,18 @@ rm -rf /tmp/mattpocock-skills
68
70
 
69
71
  | 工作区 | 模板 |
70
72
  |--------|------|
71
- | `.agents/skills/{tdd-implement,grill-to-spec,diagnose-fix,commit-check}/` | `template/.opencode/skills/{tdd-implement,grill-to-spec,diagnose-fix,commit-check}/` |
72
- | `.agents/skills/{tdd-implement,grill-to-spec,diagnose-fix,commit-check}/` | `template/.pi/skills/{tdd-implement,grill-to-spec,diagnose-fix,commit-check}/` |
73
+ | `.agents/skills/`(全部 32 个:上游 26 + 独有 6) | `template/.agents/skills/`(全量快照,单一源) |
74
+ | `.agents/skills/` 的 harness 占位说明 | `template/.pi/skills/.gitkeep` + `README.md`、`template/.opencode/skills/.gitkeep` + `README.md`(空目录占位,供项目自定义) |
73
75
  | `.opencode/agents/issue-audit.md`、`commands/*.md`(issue-audit + 9 个显式技能命令)、`.gitignore`、`package.json`、`package-lock.json` | `template/.opencode/` 同名 |
74
76
  | `.pi/prompts/issue-audit.md`(pi 命令:opencode 版适配,去 subagent frontmatter) | `template/.pi/prompts/issue-audit.md` |
75
77
  | `AGENTS.md` | `template/AGENTS.md`(引用映射为 `.opencode/` 路径) |
76
- | `CONTEXT.md` | `template/.opencode/CONTEXT.md` |
77
- | `docs/agents/*` | `template/.opencode/docs/agents/*`(引用映射为 `.opencode/` 路径) |
78
+ | `CONTEXT.md` | `template/.opencode/CONTEXT.md` + `template/.pi/CONTEXT.md` |
79
+ | `docs/agents/*` | `template/.opencode/docs/agents/*` + `template/.pi/docs/agents/*`(引用映射为 `.opencode/` 路径) |
78
80
 
79
- 独有技能需同步**双份**:`.opencode/skills/`(opencode 分发)与 `.pi/skills/`(pi 标准分发)。
81
+ 共享技能统一在 `.agents/skills` 单一源,不再双份镜像到 `.opencode/skills` / `.pi/skills`。
80
82
  `test/template-sync.test.js` 守护同步(含路径映射),漏同步测试即红。
81
83
 
82
- 新增技能前先查上游 `mattpocock/skills` 是否已存在;仅上游没有的技能才作为独有技能落在本仓库(当前独有:tdd-implement、grill-to-spec、diagnose-fix、commit-check),上游技能一律不进 `template/`。
84
+ 新增技能前先查上游 `mattpocock/skills` 是否已存在;仅上游没有的技能才作为独有技能落在本仓库(当前独有:ci-guard、tdd-implement、grill-to-spec、diagnose-fix、commit-check、scaffold-functional-test),上游技能通过 `scripts/sync-upstream.js` 同步到 `.agents/skills` 后随模板分发。
83
85
 
84
86
  ## harness 支持
85
87
 
@@ -101,39 +103,38 @@ pi 下对应能力以内置工具或已装扩展为准(`AGENTS.md`「能力边
101
103
 
102
104
  - **全局**:`~/.pi/agent/skills/`、`~/.agents/skills/`(用户级技能,自动发现);配置在 `~/.pi/agent/settings.json`
103
105
  - **项目**:
104
- - `.pi/skills/` — pi 标准结构,目录内技能**自动发现**(本项目独有技能直放此处)
106
+ - `.agents/skills/` — 共享技能单一源(默认编程 22,`--all` 全量 32,自动发现)
107
+ - `.pi/skills/` — 项目自定义技能(pi 标准结构,自动发现,仅放项目本地技能)
105
108
  - `.pi/prompts/` — pi 命令(prompt template)自动发现,如 `issue-audit.md` → `/issue-audit`
106
- - `.agents/skills/`自动发现(上游技能与 workspace 技能在此)
107
- - `.pi/settings.json` — `skills` 数组可选,指向额外技能目录(本项目不再使用)
108
-
109
+ - `.pi/settings.json`已简化为空对象(历史指向 `.opencode/skills` 已移除,共享技能走 `.agents/skills`)
109
110
  ### opencode
110
111
 
111
- - **项目**:`.opencode/skills/`(技能)、`.opencode/agents/`(子代理)、`.opencode/commands/`(命令:issue-audit + 9 个显式触发技能,`/命令名` 触发)、`.opencode/docs/`(文档)
112
- - **全局**:`~/.config/opencode/`(`opencode.json` 配置、`skills/`、`agents/`、`commands/`),按 opencode 官方文档
112
+ - **项目**:`.agents/skills/`(共享技能单一源,默认编程 22,`--all` 全量 32)、`.opencode/skills/`(项目自定义技能)、`.opencode/agents/`(子代理)、`.opencode/commands/`(命令:issue-audit + 9 个显式触发技能,`/命令名` 触发)、`.opencode/docs/`(文档)
113
+
114
+ 同一份技能(Agent Skills 标准)与 `AGENTS.md` 行为路由在两种 harness 下均可加载:pi 与 codex/claude 从 `.agents/skills/` 自动发现;opencode 按本模板约定同样优先读取 `.agents/skills/`(`.opencode/skills/` 仅用于项目自定义)。
113
115
 
114
- 同一份技能(Agent Skills 标准)与 `AGENTS.md` 行为路由在两种 harness 下均可加载:opencode 从 `.opencode/skills/`、pi 从 `.pi/skills/` 与 `.agents/skills/`。
115
116
  ## 仓库 CLI
116
117
 
117
118
  仓库内提供安装管理 CLI(`bin/cli.js`,依赖 `prompts`,见 `package.json`),同时作为 npm 包 `@heihei0299/matt-skills` 分发(`npx @heihei0299/matt-skills <command>`):
118
119
 
119
120
  ```sh
120
- node bin/cli.js init [--dest <dir>] [--force] # 初始化项目:template + 上游技能
121
- node bin/cli.js sync [--apply|--force] [--dest <path>] [--upstream <url>] [--ref <ref>] [--json] # 同步已有项目到最新
122
- node bin/cli.js list [--json] # 列出 .agents/skills/ 下全部技能及描述
123
- node bin/cli.js install [选项] # 把技能复制到目标工具目录(交互式选择)
124
- node bin/cli.js check [--json] [--upstream <url>] [--ref <ref>] # 只读检查上游技能是否最新(等价 sync 默认)
121
+ node bin/cli.js init [--dest <dir>] [--force] [--all] # 初始化项目:template 全量 32,默认编程 22
122
+ node bin/cli.js sync [--apply|--force] [--all] [--dest <path>] [--upstream <url>] [--ref <ref>] [--json] # 同步已有项目到最新(默认编程)
123
+ node bin/cli.js list [--json] [--all] # 列出技能(默认编程)
124
+ node bin/cli.js install [选项] # 把技能复制到目标工具目录(交互式选择,默认编程)
125
+ node bin/cli.js check [--json] [--all] [--upstream <url>] [--ref <ref>] # 只读检查上游技能是否最新(等价 sync 默认,仅编程)
125
126
  ```
126
127
 
127
- `init` 选项:`--dest <path>` 指定目标目录(默认当前目录);`--force` 覆盖已存在的文件(直接覆盖,`AGENTS.md` 会备份到 `.bak`)(默认跳过),见「初始化」。
128
- `sync` 选项:`--apply` 安全增量(`AGENTS.md` 定制跳过、技能不删),`--force` 硬盖(`AGENTS.md` 备份后硬盖、技能与模板全量 `remove`);`--dest <path>` 目标目录;`--upstream <url>` 上游地址;`--ref <ref>` 上游分支;`--json` JSON 输出;默认无参等价 `check` 仅对比不写盘,`--json` 可解析,有差异 `exit 1`。
129
- `check` 选项:`--json`、`--upstream <url>`、`--ref <ref>`(等价 `sync` 默认 `check`)。
128
+ `init` 选项:`--dest <path>` 指定目标目录(默认当前目录);`--force` 覆盖已存在的文件(直接覆盖,`AGENTS.md` 会备份到 `.bak`)(默认跳过);`--all` 包含非编程(productivity,默认仅编程 22),见「初始化」。
129
+ `sync` 选项:`--apply` 安全增量(编程默认:`AGENTS.md` 定制跳过、编程技能不删 productivity,旧镜像清理保留项目自定义;`--all` 全量),`--force` 硬盖(编程默认:`AGENTS.md` 备份后硬盖、编程技能与模板全量 `remove` 含 productivity 删除与旧镜像清理;`--all` 全量);`--all` 展开全量;`--dest <path>` 目标目录;`--upstream <url>` 上游地址;`--ref <ref>` 上游分支;`--json` JSON 输出;默认无参等价 `check` 仅对比不写盘(仅编程,`--all` 全量),`--json` 可解析,有差异 `exit 1`。
130
+ `check` 选项:`--json`、`--all`(默认仅编程)、`--upstream <url>`、`--ref <ref>`(等价 `sync` 默认 `check`)。
130
131
 
131
132
  `install` 选项:
132
133
 
133
134
  - `--dest <dir>`:复制到指定目录(覆盖工具映射)
134
- - `--tools <t1,t2>`:指定工具,项目级映射 `codex→.agents/skills`、`pi→.pi/skills`、`opencode→.opencode/skills`、`claude→.claude/skills`
135
+ - `--tools <t1,t2>`:指定工具,项目级已统一 `codex/pi/opencode/claude → .agents/skills`(共享技能单一源,`.pi/skills`/`.opencode/skills` 仅用于项目自定义)
135
136
  - `--global`:安装到全局目录(`~/.codex/skills`、`~/.pi/agent/skills`、`~/.config/opencode/skills`、`~/.claude/skills`);`--project` 回到项目级
136
- - `--all`:安装全部技能(默认交互勾选);`--force`:覆盖已存在的技能
137
+ - `--all`:安装全部技能(默认仅编程 22,`--all` 32,交互勾选时仅列编程);`--force`:覆盖已存在的技能
137
138
 
138
139
 
139
140
  ### 上游同步(自动更新)
@@ -152,11 +153,11 @@ node scripts/sync-upstream.js --check # 等价底层脚本(CLI s
152
153
  node scripts/sync-upstream.js --apply --dry-run
153
154
  ```
154
155
 
155
- 实现细节:`scripts/sync-upstream.js` 为单一事实源(CLI 与 Actions 共用),以 `config/proprietary.json` 为独有白名单,上游通过 `git clone --depth 1 https://github.com/mattpocock/skills.git` 获取,比对 `SKILL.md` 的 sha256,自动处理新增/更新/重命名/删除;Actions 提 PR 后需人工合入,合入后按“发布”节打 `v*` 标签即发布(自动 patch 发版可在后续扩展为 PR 合入后自动 bump)。
156
+ 实现细节:`scripts/sync-upstream.js` 为单一事实源(CLI 与 Actions 共用),以 `config/proprietary.json` 为独有白名单 + `config/engineering.json` 为编程白名单(engineering 桶即编程,productivity 默认不装,`--all` 展开),上游通过 `git clone --depth 1 https://github.com/mattpocock/skills.git` 获取,比对 `SKILL.md` 的 sha256,自动处理新增/更新/重命名/删除;Actions 提 PR 后需人工合入,合入后按“发布”节打 `v*` 标签即发布(自动 patch 发版可在后续扩展为 PR 合入后自动 bump)。
156
157
  上游重命名映射:`RENAMES = { "writing-great-skills": "writing-for-agents" }`,Actions/CLI 均会删除旧目录并复制新目录。
157
158
  ## 发布
158
159
 
159
- 推送 `v*` 标签自动发布到 npm(GitHub Actions,见 `.github/workflows/publish.yml`):
160
+ 推送 `v*` 标签自动发布到 npm(GitHub Actions,见 `.github/workflows/ci.yml`):
160
161
 
161
162
  ```sh
162
163
  # 1. 确保 main 分支为最新且测试全绿
@@ -180,14 +181,14 @@ npm publish
180
181
  - `prepublishOnly` 自动跑全量测试(`node --test test/*.test.js`)
181
182
  - 发布内容 = `bin/` + `template/` + `.agents/skills/` + `README.md`,由 `package.json` 的 `files` 白名单控制,`npm pack` 可预览
182
183
  - `template/` 与 `.agents/skills/` 是包内容:改动后需重新发版才对目标仓库生效
184
+
183
185
  ## 开发
184
186
 
185
187
  ```sh
186
- npm test # 全量测试 122 项
187
- npm run build:template # 从单源生成 template/.opencode/.pi(config/proprietary.json 为单一事实源)
188
+ npm test # 全量测试
189
+ npm run build:template # 从单源生成 template/.agents/skills(全量 32 技能)+ 空占位
188
190
  ```
189
191
 
190
192
  交互模式依赖 `prompts`(见 `package.json`);测试见 `test/cli.test.js`、`test/cli-init.test.js`、`test/template-sync.test.js`。
191
193
 
192
- 用户手动触发的功能测试:`/instance-test`(见 `.agents/skills/instance-test/SKILL.md`)——在隔离 `temp dir` prompt 实例验实际功能,`references/instances.md` 为通用模板。
193
-
194
+ 用户手动触发的功能测试:`/instance-test`(matt-skills 专属示范,见 `.agents/skills/instance-test/SKILL.md`)——验证 sync 合并 update 后的行为,`references/instances.md` 由 `scaffold-functional-test` 从 spec 生成;通用模板已废弃。新增生成器 `/scaffold-functional-test`(见 `.agents/skills/scaffold-functional-test/SKILL.md`)——读 spec 生成定制化功能测试 skill。