@heihei0299/matt-skills 2.1.5 → 2.1.7
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/grill-to-spec/SKILL.md +22 -14
- package/.agents/skills/grill-to-spec/references/rules.md +21 -7
- package/README.md +56 -161
- package/package.json +1 -1
- package/template/.agents/skills/grill-to-spec/SKILL.md +22 -14
- package/template/.agents/skills/grill-to-spec/references/rules.md +21 -7
- package/template/.opencode/commands/grill-to-spec.md +1 -1
- package/template/AGENTS.md +7 -0
- package/template/PROJECT.md +3 -0
|
@@ -6,42 +6,50 @@ disable-model-invocation: true
|
|
|
6
6
|
|
|
7
7
|
# Grill to Spec
|
|
8
8
|
|
|
9
|
-
只做两个上游 skill 的编排:先把想法打磨成共识,再把共识发布成 spec。本 skill
|
|
9
|
+
只做两个上游 skill 的编排:先把想法打磨成共识,再把共识发布成 spec。本 skill 不写代码、不修改源码或测试、不自动 commit。
|
|
10
10
|
|
|
11
11
|
## 流程
|
|
12
12
|
|
|
13
|
+
### 0. 预检
|
|
14
|
+
|
|
15
|
+
- 只读确认 issue tracker、目标上下文、feature slug 和已有 spec/issue 状态。
|
|
16
|
+
- tracker 未配置、slug 不明确或目标路径不可写时,在任何 ADR/spec/issue 写入前报告阻塞。
|
|
17
|
+
- 已有同一 feature 的产物先读取并比较;相同共识不重复发布,设计变化进入变更流程。
|
|
18
|
+
|
|
13
19
|
### ① 形成共识
|
|
14
20
|
|
|
15
21
|
调用 [`grill-with-docs`](.agents/skills/grill-with-docs/SKILL.md),由 `grilling` 与 `domain-modeling` 完成采访、术语和设计决策。
|
|
16
22
|
|
|
17
23
|
- glossary 按上游规则 inline 更新;
|
|
18
|
-
-
|
|
19
|
-
-
|
|
24
|
+
- 只有同时满足 ADR 条件时才提出 ADR,但 ADR 等最终决策清单确认后再写入;
|
|
25
|
+
- 在本阶段让 [`to-spec`](.agents/skills/to-spec/SKILL.md) 做代码理解和 seam 分析;seam 是共识的一部分,不单独制造发布确认;
|
|
26
|
+
- 形成精简决策清单:目标、范围、关键选择、seam、未纳入范围和待验证假设;只展示清单,不展示任何 ADR/spec/issue 正文或草稿;
|
|
27
|
+
- 用户确认决策清单后,立即进入阶段 ②。
|
|
20
28
|
|
|
21
|
-
|
|
29
|
+
出口:决策清单已确认,glossary 已按需更新;尚未确认的 ADR/spec/issue 不写入。
|
|
22
30
|
|
|
23
31
|
### ② 发布 spec
|
|
24
32
|
|
|
25
|
-
|
|
33
|
+
将已确认的决策清单和 seam 分析交给 `to-spec`;此处只综合、写入和发布,不重新采访或再次确认 seam。
|
|
26
34
|
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
35
|
+
- 按 ADR → spec → issue 的顺序执行;issue 发布成功后设置 `ready-for-agent`;格式细则只读取 [`references/rules.md`](references/rules.md)。
|
|
36
|
+
- 相同 feature 复用已有产物,设计变化按 tracker 的更新语义保留历史;
|
|
37
|
+
- 任一步失败都保留已成功写入的内容,记录状态和失败点,重跑时从第一个未完成出口继续;不回滚、不重复发布。
|
|
30
38
|
|
|
31
|
-
出口:spec/issue
|
|
39
|
+
出口:ADR/spec/issue 已写入或发布,只报告路径或标识、状态和未纳入范围,不复制正文。
|
|
32
40
|
|
|
33
41
|
## 回合连续性
|
|
34
42
|
|
|
35
|
-
本 skill 是 Long-Horizon Skill
|
|
43
|
+
本 skill 是 Long-Horizon Skill。预检、阶段 ①、代码理解、决策清单确认后的阶段 ② 在同一任务链连续执行;进度汇报和阶段切换不是回合终点。仅在需要设计确认、决策清单确认、外部阻塞、用户主动停止或整个 skill 出口时暂停;确认完成后不要求用户额外回复“继续”。
|
|
36
44
|
|
|
37
45
|
## 本 skill 独有门禁
|
|
38
46
|
|
|
39
|
-
-
|
|
40
|
-
- spec/issue
|
|
41
|
-
-
|
|
47
|
+
- 文档正文永不展示;用户只确认精简决策清单,发布后只接收元数据报告;
|
|
48
|
+
- ADR/spec/issue 不设置额外草稿确认;
|
|
49
|
+
- 不写代码、不修改源码或测试、不自动 commit;实现 tickets 交给 `to-tickets`。
|
|
42
50
|
|
|
43
51
|
## 异常
|
|
44
52
|
|
|
45
53
|
- 用户放弃或没有可形成 spec 的主题时终止;
|
|
46
54
|
- issue tracker 未配置时报告配置阻塞,不绕过发布;
|
|
47
|
-
-
|
|
55
|
+
- 用户改变已确认设计时回到阶段 ①,按变更语义保留历史,不静默覆盖。
|
|
@@ -2,29 +2,43 @@
|
|
|
2
2
|
|
|
3
3
|
本文件只保存 `grill-to-spec` 相对上游 `grill-with-docs` / `to-spec` 的**增量约束**。Spec 的章节、User Story 形状、Implementation Decisions 等格式全部以 `to-spec` 为唯一事实源,本文件不复制上游模板。
|
|
4
4
|
|
|
5
|
+
## 预检与状态规则
|
|
6
|
+
|
|
7
|
+
- 写入前只读确认 issue tracker、目标上下文、feature slug、已有 spec/issue 和当前状态;tracker 未配置或目标不可写时不写 ADR/spec/issue。
|
|
8
|
+
- feature slug 是 spec 路径和 issue 幂等键;候选不明确或冲突时才询问。
|
|
9
|
+
- 记录共识、ADR、spec、issue、`ready-for-agent` 出口;重跑从第一个未完成出口继续,不重复已成功动作。
|
|
10
|
+
- 已有相同共识的 feature 只报告已有路径或标识;设计变化走变更流程,不创建重复 issue。
|
|
11
|
+
|
|
5
12
|
## Glossary 增量规则
|
|
6
13
|
|
|
7
14
|
- 懒创建:首个术语解析时才建 `CONTEXT.md`;多上下文时先确认归属,归属不清则询问。
|
|
8
15
|
- 只收本上下文特有术语;定义 WHAT 非 HOW,避免把 glossary 变成实现草稿。
|
|
9
|
-
- glossary 可按上游流程 inline
|
|
16
|
+
- glossary 可按上游流程 inline 更新,不额外增加确认轮次;设计变化时按历史保留规则修正。
|
|
10
17
|
|
|
11
18
|
## ADR 增量规则
|
|
12
19
|
|
|
13
20
|
- 只有同时满足“难逆转 / 无上下文费解 / 存在真实权衡”时才提议 ADR。
|
|
14
|
-
-
|
|
15
|
-
-
|
|
21
|
+
- ADR 不像 glossary 一样静默 inline 更新;等最终决策清单确认后直接落盘,不展示正文,不增加独立确认轮次。
|
|
22
|
+
- 用户改变决策时不静默覆盖旧 ADR;按项目 ADR 规则追加、废弃或标记 superseded。
|
|
16
23
|
|
|
17
24
|
## Spec 增量规则
|
|
18
25
|
|
|
19
26
|
- Spec 的结构与字段全部委托 `to-spec`,本文件不维护第二份模板。
|
|
20
|
-
- seam
|
|
21
|
-
-
|
|
27
|
+
- 代码理解和 seam 分析属于共识阶段;seam 纳入最终决策清单,不在发布阶段再次询问。
|
|
28
|
+
- 决策清单确认后直接写入 spec;不展示 spec 正文或草稿。
|
|
22
29
|
- 全文沿用已经确认的 glossary 词汇,并尊重所触区域既有 ADR。
|
|
23
30
|
|
|
24
31
|
## Issue 增量规则
|
|
25
32
|
|
|
26
|
-
- 按已配置的 issue tracker
|
|
27
|
-
-
|
|
33
|
+
- 按已配置的 issue tracker 直接发布唯一 spec issue;implementation tickets 交给 `to-tickets`。
|
|
34
|
+
- issue 正文不在对话中展示;发布成功后设置 `ready-for-agent`。
|
|
35
|
+
- issue 创建成功但 label/status 更新失败时保留 issue,报告标识和失败点,不删除、不误报为 ready。
|
|
36
|
+
- 设计变化委托 tracker 的原生更新语义:本地追加变更记录,远端按 body/comment/关联关系更新;不另造版本模板。
|
|
37
|
+
|
|
38
|
+
## 失败与 Git 边界
|
|
39
|
+
|
|
40
|
+
- 任一步失败都保留已成功写入的内容并报告部分状态;不做跨文件或跨 tracker 回滚,不盲目重试。
|
|
41
|
+
- 本 skill 不自动创建 Git commit;发布文档与 Git 提交是两个独立出口。
|
|
28
42
|
|
|
29
43
|
## 反模式
|
|
30
44
|
|
package/README.md
CHANGED
|
@@ -1,32 +1,26 @@
|
|
|
1
1
|
# matt-skills
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
面向项目仓库的 Agent skills 与配置模板。模板包含共享 skills、`AGENTS.md`、项目上下文占位文件,以及 pi / opencode 所需的项目配置。
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## 模板内容
|
|
6
6
|
|
|
7
|
-
```
|
|
7
|
+
```text
|
|
8
8
|
template/
|
|
9
|
-
├── AGENTS.md
|
|
10
|
-
├── .
|
|
11
|
-
|
|
12
|
-
├── .
|
|
13
|
-
|
|
14
|
-
│ ├── prompts/ issue-audit 命令(prompt template)
|
|
15
|
-
│ ├── docs/agents/ 5 个分文件镜像
|
|
16
|
-
│ └── CONTEXT.md 术语表镜像
|
|
17
|
-
└── .opencode/ opencode 项目配置
|
|
18
|
-
├── skills/ 空占位(项目自定义技能,含 .gitkeep + README.md)
|
|
19
|
-
├── agents/ issue-audit 子代理定义
|
|
20
|
-
├── commands/ issue-audit + 可分发的显式触发技能命令(grill-to-spec/wayfinder/to-spec/to-tickets/triage/improve-codebase-architecture/teach/handoff/writing-for-agents)
|
|
21
|
-
├── docs/agents/ 5 个分文件(运行时纪律 / 技能设计 / issue tracker / triage labels / domain)
|
|
22
|
-
├── CONTEXT.md 术语表
|
|
23
|
-
├── package.json 插件依赖清单
|
|
24
|
-
└── .gitignore
|
|
9
|
+
├── AGENTS.md Agent 行为路由与项目上下文入口
|
|
10
|
+
├── PROJECT.md 目标项目填写的目标、范围和主要入口
|
|
11
|
+
├── .agents/skills/ 共享 skills 的唯一项目级来源
|
|
12
|
+
├── .opencode/ opencode agents、commands、docs
|
|
13
|
+
└── .pi/ pi prompts、docs 与项目自定义 skills 占位
|
|
25
14
|
```
|
|
26
15
|
|
|
16
|
+
- `PROJECT.md` 描述项目是什么;操作规则放在 `AGENTS.md`。
|
|
17
|
+
- `.opencode/CONTEXT.md` / `.pi/CONTEXT.md` 保存领域术语与边界。
|
|
18
|
+
- `.opencode/skills/` 与 `.pi/skills/` 仅用于项目自定义 skills。
|
|
19
|
+
- `ci-guard`、`commit-check` 是本仓库维护用的 repo-local skills,不会分发到目标项目。
|
|
20
|
+
|
|
27
21
|
## 独有 skill 分发边界
|
|
28
22
|
|
|
29
|
-
|
|
23
|
+
本仓库有 7 个独有(proprietary)skills:
|
|
30
24
|
|
|
31
25
|
### 可分发的 5 个
|
|
32
26
|
|
|
@@ -36,194 +30,95 @@ template/
|
|
|
36
30
|
- `scaffold-functional-test`
|
|
37
31
|
- `show-me`
|
|
38
32
|
|
|
39
|
-
默认 programming 范围中的 4 个独有 skill 是 `tdd-implement`、`diagnose-fix`、`grill-to-spec`、`show-me`;`scaffold-functional-test` 可分发但默认可选。
|
|
40
|
-
|
|
41
33
|
### 仓库内部的 2 个
|
|
42
34
|
|
|
43
35
|
- `ci-guard`
|
|
44
36
|
- `commit-check`
|
|
45
37
|
|
|
46
|
-
|
|
38
|
+
repo-local skills 不会通过 `init`、`install`、`sync` 分发到用户项目。
|
|
47
39
|
|
|
48
40
|
## 初始化
|
|
49
41
|
|
|
50
|
-
|
|
42
|
+
在目标仓库根目录执行:
|
|
51
43
|
|
|
52
44
|
```sh
|
|
53
|
-
npx @heihei0299/matt-skills init #
|
|
54
|
-
npx @heihei0299/matt-skills init --all # 安装全部可分发
|
|
45
|
+
npx @heihei0299/matt-skills init # 安装默认 programming skills
|
|
46
|
+
npx @heihei0299/matt-skills init --all # 安装全部可分发 skills
|
|
55
47
|
```
|
|
56
48
|
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
选项:`--dest <path>` 指定目标目录(默认当前目录);`--all` 包含全部可分发的非默认 skill(包括 productivity 和 optional proprietary);已有目标使用 `init --all` 刷新,普通 `init` 跳过。
|
|
60
|
-
**增量同步(已有项目)**:已有项目更新到最新模板与技能:
|
|
49
|
+
已有项目同步:
|
|
61
50
|
|
|
62
51
|
```sh
|
|
63
|
-
npx @heihei0299/matt-skills sync
|
|
64
|
-
npx @heihei0299/matt-skills sync --all
|
|
65
|
-
npx @heihei0299/matt-skills sync --dry-run --json
|
|
66
|
-
npx @heihei0299/matt-skills sync --dest <path> --upstream <url> --ref <ref> --json # 选项可组合
|
|
52
|
+
npx @heihei0299/matt-skills sync # 安全增量同步默认范围
|
|
53
|
+
npx @heihei0299/matt-skills sync --all # 同步全部可分发 skills
|
|
54
|
+
npx @heihei0299/matt-skills sync --dry-run --json
|
|
67
55
|
```
|
|
68
56
|
|
|
69
|
-
`
|
|
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` 保存即可。
|
|
72
|
-
|
|
73
|
-
**手动方式(备选)**:无 npx 环境时,将 `template/` 整个文件夹复制到目标仓库根目录即可(已含全部可分发 skill):
|
|
57
|
+
`init` 默认保护已有 `AGENTS.md`;需要刷新完整模板时使用 `init --all`。`sync` 不删除目标项目的额外文件或自定义 skills。
|
|
74
58
|
|
|
75
|
-
|
|
76
|
-
cp -r template/. /path/to/target/
|
|
77
|
-
```
|
|
59
|
+
默认 programming 范围中的 4 个独有 skills 是 `tdd-implement`、`diagnose-fix`、`grill-to-spec`、`show-me`。
|
|
78
60
|
|
|
79
|
-
|
|
61
|
+
## CLI
|
|
80
62
|
|
|
81
63
|
```sh
|
|
82
|
-
|
|
64
|
+
npx @heihei0299/matt-skills list [--all] [--json]
|
|
65
|
+
npx @heihei0299/matt-skills install [--all] [--tools <list>] [--global] [--dest <dir>]
|
|
66
|
+
npx @heihei0299/matt-skills init [--all] [--dest <dir>]
|
|
67
|
+
npx @heihei0299/matt-skills sync [--all] [--dry-run] [--json] [--dest <dir>]
|
|
68
|
+
npx @heihei0299/matt-skills check [--all] [--json] [--upstream <url>] [--ref <ref>]
|
|
83
69
|
```
|
|
84
70
|
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
改动工作区后,必须同步到 `template/` 对应路径,路径映射如下(同步方向单向:工作区 → 模板快照):
|
|
88
|
-
|
|
89
|
-
| 工作区 | 模板 |
|
|
90
|
-
|--------|------|
|
|
91
|
-
| `.agents/skills/`(workspace 完整 skill 集合:upstream + proprietary) | `template/.agents/skills/`(仅可分发 skill) |
|
|
92
|
-
| `.agents/skills/` 的 harness 占位说明 | `template/.pi/skills/.gitkeep` + `README.md`、`template/.opencode/skills/.gitkeep` + `README.md`(空目录占位,供项目自定义) |
|
|
93
|
-
│ │ ├── commands/ issue-audit + 可分发的显式触发技能命令(grill-to-spec/wayfinder/to-spec/to-tickets/triage/improve-codebase-architecture/teach/handoff/writing-for-agents)
|
|
94
|
-
| `.pi/prompts/issue-audit.md`(pi 命令:opencode 版适配,去 subagent frontmatter) | `template/.pi/prompts/issue-audit.md` |
|
|
95
|
-
| `AGENTS.md` | `template/AGENTS.md`(引用映射为 `.opencode/` 路径) |
|
|
96
|
-
| `CONTEXT.md` | `template/.opencode/CONTEXT.md` + `template/.pi/CONTEXT.md` |
|
|
97
|
-
| `docs/agents/*` | `template/.opencode/docs/agents/*` + `template/.pi/docs/agents/*`(引用映射为 `.opencode/` 路径) |
|
|
98
|
-
|
|
99
|
-
共享技能统一在 `.agents/skills` 单一源,不再双份镜像到 `.opencode/skills` / `.pi/skills`。
|
|
100
|
-
`test/template-sync.test.js` 守护同步(含路径映射),漏同步测试即红。
|
|
71
|
+
常用选项:
|
|
101
72
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
以下为 opencode 专属能力,**pi 下不可用**(不移植,仅文档注明):
|
|
109
|
-
|
|
110
|
-
- `issue-audit`:opencode 以 subagent + command 形式分发(`.opencode/agents/`、`.opencode/commands/`);pi 无 subagent 机制,以 prompt template 命令分发(`.pi/prompts/issue-audit.md`,去 subagent 委托、保留完整审计流程)
|
|
111
|
-
- codegraph MCP:`opencode.jsonc` 配置的代码图服务,pi 无原生 MCP
|
|
112
|
-
- `explore` 子代理、`firecrawl` 网页抓取:opencode 会话能力
|
|
113
|
-
|
|
114
|
-
pi 下对应能力以内置工具或已装扩展为准(`AGENTS.md`「能力边界」已按此表述)。
|
|
73
|
+
- `--all`:包含全部可分发 skills,默认范围只包含 programming skills。
|
|
74
|
+
- `--dest <dir>`:指定目标目录。
|
|
75
|
+
- `--tools <list>`:选择 `codex`、`pi`、`opencode` 或 `claude`;项目级共享 skills 统一写入 `.agents/skills/`。
|
|
76
|
+
- `--global`:写入用户级 skills 目录。
|
|
77
|
+
- `--dry-run`:只检查差异,不写入;`--json` 输出机器可读结果。
|
|
115
78
|
|
|
116
79
|
## Codex CLI 支持
|
|
117
80
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
- **项目级技能**:`.agents/skills/`(唯一共享源)
|
|
121
|
-
- **全局技能**:`~/.codex/skills/`
|
|
122
|
-
- **不创建**:项目级 `.codex/skills/` 副本;Codex 技能不单独分叉
|
|
123
|
-
- **安装映射**:`--tools codex` 使用 `.agents/skills/`,`--global --tools codex` 使用 `~/.codex/skills/`
|
|
124
|
-
|
|
125
|
-
使用真实 Codex CLI 验证支持:
|
|
126
|
-
|
|
127
|
-
```sh
|
|
128
|
-
npm run codex:smoke # 默认 SKIP,不需要 Codex 凭证
|
|
129
|
-
CODEX_E2E=1 npm run codex:smoke # 显式运行真实 smoke test
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
真实 smoke test 使用临时 fixture、ephemeral 会话、read-only sandbox 和 JSONL 输出,验证 `AGENTS.md` 与最小 `codex-probe` skill 的 sentinel。结果分为 `PASS`、`SKIP`、`FAIL_ENV` 和 `FAIL_CONTRACT`;环境问题与契约失败分别返回非零退出码。运行结果会记录 `codex --version`,但不绑定最低 CLI 版本。
|
|
133
|
-
|
|
134
|
-
本期不包含 Codex Cloud、Codex-specific commands、plugins 或 MCP 配置。
|
|
135
|
-
## harness 目录结构
|
|
136
|
-
|
|
137
|
-
两个 harness 的技能加载目录结构如下(本项目只分发项目级目录,全局目录由用户自备):
|
|
138
|
-
|
|
139
|
-
### pi-agent
|
|
140
|
-
|
|
141
|
-
- **全局**:`~/.pi/agent/skills/`、`~/.agents/skills/`(用户级技能,自动发现);配置在 `~/.pi/agent/settings.json`
|
|
142
|
-
- **项目**:
|
|
143
|
-
- `.agents/skills/` — 可分发共享技能单一源(默认 programming,`--all` 全部可分发,自动发现)
|
|
144
|
-
- `.pi/skills/` — 项目自定义技能(pi 标准结构,自动发现,仅放项目本地技能)
|
|
145
|
-
- `.pi/prompts/` — pi 命令(prompt template)自动发现,如 `issue-audit.md` → `/issue-audit`
|
|
146
|
-
- `.pi/settings.json` — 已简化为空对象(历史指向 `.opencode/skills` 已移除,共享技能走 `.agents/skills`)
|
|
147
|
-
### opencode
|
|
148
|
-
|
|
149
|
-
- **项目**:`.agents/skills/`(可分发共享技能单一源,默认 programming,`--all` 全部可分发)、`.opencode/skills/`(项目自定义技能)、`.opencode/agents/`(子代理)、`.opencode/commands/`(命令:issue-audit + 可分发显式触发技能,`/命令名` 触发)、`.opencode/docs/`(文档)
|
|
150
|
-
|
|
151
|
-
同一份技能(Agent Skills 标准)与 `AGENTS.md` 行为路由在两种 harness 下均可加载:pi 与 codex/claude 从 `.agents/skills/` 自动发现;opencode 按本模板约定同样优先读取 `.agents/skills/`(`.opencode/skills/` 仅用于项目自定义)。
|
|
152
|
-
|
|
153
|
-
## 仓库 CLI
|
|
154
|
-
|
|
155
|
-
仓库内提供安装管理 CLI(`bin/cli.js`,依赖 `prompts`,见 `package.json`),同时作为 npm 包 `@heihei0299/matt-skills` 分发(`npx @heihei0299/matt-skills <command>`):
|
|
81
|
+
Codex 与其他 harness 共用项目级 `.agents/skills/` 唯一共享源;全局 skills 位于 `~/.codex/skills`。
|
|
156
82
|
|
|
157
83
|
```sh
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
node bin/cli.js list [--json] [--all] # 列出技能(默认编程)
|
|
161
|
-
node bin/cli.js install [选项] # 把技能复制到目标工具目录(交互式选择,默认编程)
|
|
162
|
-
node bin/cli.js check [--json] [--all] [--upstream <url>] [--ref <ref>] # 只读检查上游技能是否最新(等价 sync --dry-run,默认范围)
|
|
84
|
+
npm run codex:smoke
|
|
85
|
+
CODEX_E2E=1 npm run codex:smoke
|
|
163
86
|
```
|
|
164
87
|
|
|
165
|
-
|
|
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`)。
|
|
168
|
-
|
|
169
|
-
`install` 选项:
|
|
88
|
+
本项目不包含 Codex Cloud、Codex 专用 commands、plugins 或 MCP 配置。
|
|
170
89
|
|
|
171
|
-
|
|
172
|
-
- `--tools <t1,t2>`:指定工具,项目级已统一 `codex/pi/opencode/claude → .agents/skills`(共享技能单一源,`.pi/skills`/`.opencode/skills` 仅用于项目自定义)
|
|
173
|
-
- `--global`:安装到全局目录(`~/.codex/skills`、`~/.pi/agent/skills`、`~/.config/opencode/skills`、`~/.claude/skills`);`--project` 回到项目级
|
|
174
|
-
- `--all`:安装全部可分发 skill(交互勾选时默认只列 programming 范围);`--force`:覆盖已存在的技能
|
|
90
|
+
## 上游同步
|
|
175
91
|
|
|
92
|
+
非独有 skills 来自 [mattpocock/skills](https://github.com/mattpocock/skills)。
|
|
176
93
|
|
|
177
|
-
### 上游同步(自动更新)
|
|
178
|
-
|
|
179
|
-
本仓库的 `.agents/skills/` 中 **非独有技能** 来自 `mattpocock/skills` 上游。已实现双通道自动同步:
|
|
180
|
-
|
|
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`)
|
|
182
94
|
```sh
|
|
183
|
-
npx @heihei0299/matt-skills sync --dry-run --json
|
|
184
|
-
npx @heihei0299/matt-skills sync
|
|
185
|
-
npx @heihei0299/matt-skills sync --all
|
|
186
|
-
npx @heihei0299/matt-skills check --json # 等价 sync --dry-run
|
|
187
|
-
node scripts/sync-upstream.js --check # 等价底层脚本(CLI sync/check 的实现)
|
|
188
|
-
node scripts/sync-upstream.js --apply --dry-run
|
|
95
|
+
npx @heihei0299/matt-skills sync --dry-run --json # 检查上游差异
|
|
96
|
+
npx @heihei0299/matt-skills sync # 同步默认范围
|
|
97
|
+
npx @heihei0299/matt-skills sync --all # 同步全部可分发范围
|
|
189
98
|
```
|
|
190
99
|
|
|
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 边界投影。
|
|
192
|
-
上游重命名映射:`RENAMES = { "writing-great-skills": "writing-for-agents" }`,Actions/CLI 均会删除旧目录并复制新目录。
|
|
193
100
|
## 发布
|
|
194
101
|
|
|
195
|
-
推送 `v*`
|
|
102
|
+
推送 `v*` 标签会触发 GitHub Actions:全量测试、模板检查和 npm 发布。
|
|
196
103
|
|
|
197
104
|
```sh
|
|
198
|
-
# 1. 确保 main 分支为最新且测试全绿
|
|
199
|
-
git checkout main && git pull
|
|
200
105
|
npm test
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
git
|
|
204
|
-
git push origin v1.0.1
|
|
205
|
-
```
|
|
206
|
-
|
|
207
|
-
Action 流程:`checkout` → 校验标签在 `main` 分支 → `Node 24` → `npm ci` → `npm test` 全绿 → 以标签为准 `npm version <tag> --no-git-tag-version` → `npm publish --access public`(需在 GitHub Secrets 配置 `NPM_TOKEN`)。
|
|
208
|
-
|
|
209
|
-
本地手动发布(备选):
|
|
210
|
-
|
|
211
|
-
```sh
|
|
212
|
-
npm version <patch|minor|major>
|
|
213
|
-
npm publish
|
|
106
|
+
npm run build:template
|
|
107
|
+
git tag vX.Y.Z
|
|
108
|
+
git push origin main vX.Y.Z
|
|
214
109
|
```
|
|
215
110
|
|
|
216
|
-
|
|
217
|
-
- 发布内容 = `bin/` + `template/` + `.agents/skills/` + `scripts/` + `config/` + `README.md`,由 `package.json` 的 `files` 白名单控制,`npm pack` 可预览
|
|
218
|
-
- `template/` 与 `.agents/skills/` 是包内容:改动后需重新发版才对目标仓库生效
|
|
111
|
+
发布需要 GitHub Secrets 中配置 `NPM_TOKEN`。模板或共享 skills 的改动需要新版本才会分发给目标项目。
|
|
219
112
|
|
|
220
113
|
## 开发
|
|
221
114
|
|
|
222
115
|
```sh
|
|
223
|
-
npm test
|
|
224
|
-
npm run build:template
|
|
116
|
+
npm test
|
|
117
|
+
npm run build:template
|
|
225
118
|
```
|
|
226
119
|
|
|
227
|
-
|
|
120
|
+
测试位于 `test/`;模板由 `scripts/build-template.js` 从工作区生成,提交前应确保模板同步测试通过。
|
|
121
|
+
|
|
122
|
+
## 许可证
|
|
228
123
|
|
|
229
|
-
|
|
124
|
+
MIT
|
package/package.json
CHANGED
|
@@ -6,42 +6,50 @@ disable-model-invocation: true
|
|
|
6
6
|
|
|
7
7
|
# Grill to Spec
|
|
8
8
|
|
|
9
|
-
只做两个上游 skill 的编排:先把想法打磨成共识,再把共识发布成 spec。本 skill
|
|
9
|
+
只做两个上游 skill 的编排:先把想法打磨成共识,再把共识发布成 spec。本 skill 不写代码、不修改源码或测试、不自动 commit。
|
|
10
10
|
|
|
11
11
|
## 流程
|
|
12
12
|
|
|
13
|
+
### 0. 预检
|
|
14
|
+
|
|
15
|
+
- 只读确认 issue tracker、目标上下文、feature slug 和已有 spec/issue 状态。
|
|
16
|
+
- tracker 未配置、slug 不明确或目标路径不可写时,在任何 ADR/spec/issue 写入前报告阻塞。
|
|
17
|
+
- 已有同一 feature 的产物先读取并比较;相同共识不重复发布,设计变化进入变更流程。
|
|
18
|
+
|
|
13
19
|
### ① 形成共识
|
|
14
20
|
|
|
15
21
|
调用 [`grill-with-docs`](.agents/skills/grill-with-docs/SKILL.md),由 `grilling` 与 `domain-modeling` 完成采访、术语和设计决策。
|
|
16
22
|
|
|
17
23
|
- glossary 按上游规则 inline 更新;
|
|
18
|
-
-
|
|
19
|
-
-
|
|
24
|
+
- 只有同时满足 ADR 条件时才提出 ADR,但 ADR 等最终决策清单确认后再写入;
|
|
25
|
+
- 在本阶段让 [`to-spec`](.agents/skills/to-spec/SKILL.md) 做代码理解和 seam 分析;seam 是共识的一部分,不单独制造发布确认;
|
|
26
|
+
- 形成精简决策清单:目标、范围、关键选择、seam、未纳入范围和待验证假设;只展示清单,不展示任何 ADR/spec/issue 正文或草稿;
|
|
27
|
+
- 用户确认决策清单后,立即进入阶段 ②。
|
|
20
28
|
|
|
21
|
-
|
|
29
|
+
出口:决策清单已确认,glossary 已按需更新;尚未确认的 ADR/spec/issue 不写入。
|
|
22
30
|
|
|
23
31
|
### ② 发布 spec
|
|
24
32
|
|
|
25
|
-
|
|
33
|
+
将已确认的决策清单和 seam 分析交给 `to-spec`;此处只综合、写入和发布,不重新采访或再次确认 seam。
|
|
26
34
|
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
35
|
+
- 按 ADR → spec → issue 的顺序执行;issue 发布成功后设置 `ready-for-agent`;格式细则只读取 [`references/rules.md`](references/rules.md)。
|
|
36
|
+
- 相同 feature 复用已有产物,设计变化按 tracker 的更新语义保留历史;
|
|
37
|
+
- 任一步失败都保留已成功写入的内容,记录状态和失败点,重跑时从第一个未完成出口继续;不回滚、不重复发布。
|
|
30
38
|
|
|
31
|
-
出口:spec/issue
|
|
39
|
+
出口:ADR/spec/issue 已写入或发布,只报告路径或标识、状态和未纳入范围,不复制正文。
|
|
32
40
|
|
|
33
41
|
## 回合连续性
|
|
34
42
|
|
|
35
|
-
本 skill 是 Long-Horizon Skill
|
|
43
|
+
本 skill 是 Long-Horizon Skill。预检、阶段 ①、代码理解、决策清单确认后的阶段 ② 在同一任务链连续执行;进度汇报和阶段切换不是回合终点。仅在需要设计确认、决策清单确认、外部阻塞、用户主动停止或整个 skill 出口时暂停;确认完成后不要求用户额外回复“继续”。
|
|
36
44
|
|
|
37
45
|
## 本 skill 独有门禁
|
|
38
46
|
|
|
39
|
-
-
|
|
40
|
-
- spec/issue
|
|
41
|
-
-
|
|
47
|
+
- 文档正文永不展示;用户只确认精简决策清单,发布后只接收元数据报告;
|
|
48
|
+
- ADR/spec/issue 不设置额外草稿确认;
|
|
49
|
+
- 不写代码、不修改源码或测试、不自动 commit;实现 tickets 交给 `to-tickets`。
|
|
42
50
|
|
|
43
51
|
## 异常
|
|
44
52
|
|
|
45
53
|
- 用户放弃或没有可形成 spec 的主题时终止;
|
|
46
54
|
- issue tracker 未配置时报告配置阻塞,不绕过发布;
|
|
47
|
-
-
|
|
55
|
+
- 用户改变已确认设计时回到阶段 ①,按变更语义保留历史,不静默覆盖。
|
|
@@ -2,29 +2,43 @@
|
|
|
2
2
|
|
|
3
3
|
本文件只保存 `grill-to-spec` 相对上游 `grill-with-docs` / `to-spec` 的**增量约束**。Spec 的章节、User Story 形状、Implementation Decisions 等格式全部以 `to-spec` 为唯一事实源,本文件不复制上游模板。
|
|
4
4
|
|
|
5
|
+
## 预检与状态规则
|
|
6
|
+
|
|
7
|
+
- 写入前只读确认 issue tracker、目标上下文、feature slug、已有 spec/issue 和当前状态;tracker 未配置或目标不可写时不写 ADR/spec/issue。
|
|
8
|
+
- feature slug 是 spec 路径和 issue 幂等键;候选不明确或冲突时才询问。
|
|
9
|
+
- 记录共识、ADR、spec、issue、`ready-for-agent` 出口;重跑从第一个未完成出口继续,不重复已成功动作。
|
|
10
|
+
- 已有相同共识的 feature 只报告已有路径或标识;设计变化走变更流程,不创建重复 issue。
|
|
11
|
+
|
|
5
12
|
## Glossary 增量规则
|
|
6
13
|
|
|
7
14
|
- 懒创建:首个术语解析时才建 `CONTEXT.md`;多上下文时先确认归属,归属不清则询问。
|
|
8
15
|
- 只收本上下文特有术语;定义 WHAT 非 HOW,避免把 glossary 变成实现草稿。
|
|
9
|
-
- glossary 可按上游流程 inline
|
|
16
|
+
- glossary 可按上游流程 inline 更新,不额外增加确认轮次;设计变化时按历史保留规则修正。
|
|
10
17
|
|
|
11
18
|
## ADR 增量规则
|
|
12
19
|
|
|
13
20
|
- 只有同时满足“难逆转 / 无上下文费解 / 存在真实权衡”时才提议 ADR。
|
|
14
|
-
-
|
|
15
|
-
-
|
|
21
|
+
- ADR 不像 glossary 一样静默 inline 更新;等最终决策清单确认后直接落盘,不展示正文,不增加独立确认轮次。
|
|
22
|
+
- 用户改变决策时不静默覆盖旧 ADR;按项目 ADR 规则追加、废弃或标记 superseded。
|
|
16
23
|
|
|
17
24
|
## Spec 增量规则
|
|
18
25
|
|
|
19
26
|
- Spec 的结构与字段全部委托 `to-spec`,本文件不维护第二份模板。
|
|
20
|
-
- seam
|
|
21
|
-
-
|
|
27
|
+
- 代码理解和 seam 分析属于共识阶段;seam 纳入最终决策清单,不在发布阶段再次询问。
|
|
28
|
+
- 决策清单确认后直接写入 spec;不展示 spec 正文或草稿。
|
|
22
29
|
- 全文沿用已经确认的 glossary 词汇,并尊重所触区域既有 ADR。
|
|
23
30
|
|
|
24
31
|
## Issue 增量规则
|
|
25
32
|
|
|
26
|
-
- 按已配置的 issue tracker
|
|
27
|
-
-
|
|
33
|
+
- 按已配置的 issue tracker 直接发布唯一 spec issue;implementation tickets 交给 `to-tickets`。
|
|
34
|
+
- issue 正文不在对话中展示;发布成功后设置 `ready-for-agent`。
|
|
35
|
+
- issue 创建成功但 label/status 更新失败时保留 issue,报告标识和失败点,不删除、不误报为 ready。
|
|
36
|
+
- 设计变化委托 tracker 的原生更新语义:本地追加变更记录,远端按 body/comment/关联关系更新;不另造版本模板。
|
|
37
|
+
|
|
38
|
+
## 失败与 Git 边界
|
|
39
|
+
|
|
40
|
+
- 任一步失败都保留已成功写入的内容并报告部分状态;不做跨文件或跨 tracker 回滚,不盲目重试。
|
|
41
|
+
- 本 skill 不自动创建 Git commit;发布文档与 Git 提交是两个独立出口。
|
|
28
42
|
|
|
29
43
|
## 反模式
|
|
30
44
|
|
|
@@ -9,5 +9,5 @@ description: 编排 grill-with-docs → to-spec,把设计打磨成共识并发
|
|
|
9
9
|
**主题:** $ARGUMENTS
|
|
10
10
|
|
|
11
11
|
- 只编排与产出:设计打磨成共识 → 综合成 spec 发布,不写代码、不动源码
|
|
12
|
-
- 产出物限:领域文档(glossary/ADR
|
|
12
|
+
- 产出物限:领域文档(glossary/ADR)与一份 spec issue,不拆 implementation tickets
|
|
13
13
|
- 共识达成后直接写入/发布 ADR、spec 与 issue,不向用户展示正文;只报告路径或标识、状态和范围摘要
|
package/template/AGENTS.md
CHANGED
|
@@ -11,6 +11,13 @@
|
|
|
11
11
|
* 领域建模 → `domain-modeling`
|
|
12
12
|
* 无法归类 → `ask-matt`
|
|
13
13
|
\仅当关键歧义会改变结果时询问用户。
|
|
14
|
+
|
|
15
|
+
## 项目上下文
|
|
16
|
+
开始任务前按需读取:
|
|
17
|
+
- `PROJECT.md`(若存在):项目目标、范围和主要入口
|
|
18
|
+
- `README.md`(若存在):用户视角的使用与开发说明
|
|
19
|
+
- `.opencode/CONTEXT.md`(若存在):领域术语与边界
|
|
20
|
+
|
|
14
21
|
## CodeGraph
|
|
15
22
|
仓库内代码理解首先使用:
|
|
16
23
|
```bash
|