@heihei0299/matt-skills 3.0.29 → 3.0.30

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -14,8 +14,8 @@
14
14
  template/
15
15
  ├── AGENTS.md Agent 行为路由与项目上下文入口
16
16
  ├── PROJECT.md 目标项目填写的目标、范围和主要入口
17
- ├── .opencode/ opencode agents、commands、docs
18
- └── .pi/ pi prompts、docs 与项目自定义 skills 占位
17
+ ├── .opencode/ opencode 基础框架(context、docs、skills 占位)
18
+ └── .pi/ pi 基础框架(context、docs、skills 占位)
19
19
  ```
20
20
 
21
21
  共享 Skills 不作为 Template Snapshot 的持久化副本;`init`、普通 `sync` 和项目级 `install` 都从 Workspace 的 canonical source 分发到唯一的 `.agents/skills/`。`.pi/skills/`、`.opencode/skills/` 和 `.claude/skills/` 仅用于项目自定义 skills。
@@ -25,6 +25,7 @@ template/
25
25
  - `.opencode/CONTEXT.md` / `.pi/CONTEXT.md` 保存领域术语与边界。
26
26
  - `.agents/skills/` 承载共享 skills;同步只处理可分发 skill 名称,不删除额外的项目自定义 skills。
27
27
  - `ci-guard`、`commit-check` 是本仓库维护用的 repo-local skills,不会分发到目标项目。
28
+ - `.pi`、`.codex` 不承载共享 skills;workspace 专用 commands、agents 和 prompts 也不会进入默认模板。
28
29
 
29
30
  ## 独有 skill 分发边界
30
31
 
@@ -65,7 +66,7 @@ npx @heihei0299/matt-skills sync --dry-run --json
65
66
 
66
67
  `init` 对已有 `AGENTS.md` 始终跳过;已有项目使用 `sync`。默认 `sync` 保留已有 `AGENTS.md` 和项目规则,`--all` 只扩大技能范围。需要显式刷新 `AGENTS.md` 时使用 `sync --refresh-agents`;无受管区块时会先备份为 `AGENTS.md.bak`。`sync` 不删除目标项目的额外文件或自定义 skills。
67
68
 
68
- 默认 workflow 范围固定为 11 个入口及依赖 skills,包含 `initialize-project`、`setup-matt-pocock-skills`、`grill-to-spec`、`grill-with-docs`、`to-spec`、`to-tickets`、`tdd-implement`、`grilling`、`domain-modeling`、`tdd` 和 `code-review`;其中默认独有 skills 是 `tdd-implement`、`grill-to-spec`、`initialize-project`。完整可分发集合(包括 `wayfinder`、`handoff` 和 `implement`)仍通过 `--all` 获取。
69
+ 默认 workflow 范围固定为 7 个入口及依赖 skills,包含 `initialize-project`、`setup-matt-pocock-skills`、`grill-with-docs`、`to-spec`、`to-tickets`、`grilling` 和 `domain-modeling`;其中默认独有 skills 是 `initialize-project`。`tdd` 及其他可分发 skills 仍通过 `--all` 获取。
69
70
 
70
71
  ## CLI
71
72
 
package/bin/cli.js CHANGED
@@ -314,6 +314,12 @@ async function promptSkills(skills) {
314
314
  message: '选择要安装的技能',
315
315
  choices: skills.map((s) => ({ title: s.name, value: s.name })),
316
316
  instructions: '输入过滤,空格勾选,回车确认',
317
+ onRender() {
318
+ if (this.inputValue && this.filteredOptions.length === 0) {
319
+ this.filteredOptions = [{ title: '没有匹配的技能', value: '__no-match__', disabled: true }];
320
+ this.cursor = 0;
321
+ }
322
+ },
317
323
  });
318
324
  return Array.isArray(res?.skills) ? res.skills : [];
319
325
  }
@@ -1,13 +1,9 @@
1
1
  [
2
- "code-review",
3
2
  "domain-modeling",
4
- "grill-to-spec",
5
3
  "grill-with-docs",
6
4
  "grilling",
7
5
  "initialize-project",
8
6
  "setup-matt-pocock-skills",
9
- "tdd",
10
- "tdd-implement",
11
7
  "to-spec",
12
8
  "to-tickets"
13
9
  ]
@@ -22,8 +22,6 @@
22
22
  "commit-check"
23
23
  ],
24
24
  "default": [
25
- "tdd-implement",
26
- "grill-to-spec",
27
25
  "initialize-project"
28
26
  ]
29
27
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@heihei0299/matt-skills",
3
- "version": "3.0.29",
3
+ "version": "3.0.30",
4
4
  "description": "Agent skills + 项目配置模板:一条命令初始化 opencode / pi-agent 项目(含 mattpocock/skills 上游技能)",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,10 +1,12 @@
1
1
  ## Workflow
2
2
  按任务选择最匹配的 skill / 工具:
3
3
  * 需要新增证据的代码理解 / 定位 / 调用链 / 依赖关系 / 数据流 → `codegraph explore`
4
- * 行为修改 / 功能实现 / bug 修复 / 逻辑调整 → `tdd`
5
- * 多来源调研 / 方案比较 / 技术选型 / 最佳实践 / 外部实现 → `research`
6
- `research` 仅用于多来源综合;单一资料、官方文档和实时事实直接查询。
7
- 未命中 skill 时直接执行。明确不改变行为的文案、注释、格式和机械修改无需 `tdd`。
4
+ * 目标项目首次初始化或刷新项目上下文 → `initialize-project`
5
+ * 首次使用 spec / tickets 流程,需要配置 issue tracker 和领域文档 → `setup-matt-pocock-skills`
6
+ * 模糊需求、设计讨论并同步 ADR / glossary → `grill-with-docs`
7
+ * 已有共识,需要发布 spec → `to-spec`
8
+ * 已有 spec / 计划,需要拆分可执行 tickets → `to-tickets`
9
+ 未命中 skill 时直接执行。明确不改变行为的文案、注释、格式和机械修改直接处理。
8
10
  仅当关键歧义无法从仓库事实解决,且会改变实现、范围、风险或验收结果时询问用户。
9
11
  ## Context / CodeGraph
10
12
  以当前代码、配置、测试和版本化文档为事实来源;更具体的项目指令优先。
@@ -18,10 +20,11 @@
18
20
  优先验证原问题、相关测试和直接受影响模块;不重复已有有效证据。
19
21
  公共 API、共享抽象、跨模块调用链或局部验证不足时扩大验证范围;普通修改不自动运行全量测试。
20
22
  ## Git
21
- * 仅在用户要求时 commit。
22
- * commit 前检查 diff,只 stage 本次任务文件。
23
- * 禁止 `git add .` / `git add -A`。
24
- * 不覆盖、回滚或混入已有未提交修改。
23
+ - 每个独立 issue/spec 对应一个 commit;不得按实现、测试、review 等阶段拆分。
24
+ - 仅在本次改动完成并通过相关验证后提交。checkpoint 例外,但须明确标注未完成或未通过的验证。
25
+ - commit 前检查 `git diff` 和 `git status`;只 stage 本次任务改动,不覆盖、回滚或提交用户及其他任务的既有修改。
26
+ - `commit` 不授权 `push` 或发布;远程写入须单独授权。
27
+ - commit 后报告 hash、验证命令及结果。
25
28
  ## Security
26
29
  * 不读取、输出或提交未经授权的真实 secrets。
27
30
  * 按现有 lockfile 恢复依赖可直接执行。
@@ -1,52 +0,0 @@
1
- ---
2
- description: 审计 feature 的 issue 完成情况(四维:完成度 / spec 遵守 / ADR 遵守 / 文档一致性),输出完整报告(对话 + .scratch/<slug>/audit-<时间戳>.md)。只审计,物理上无法修改其他任何文件。使用场景:feature 收尾后、发布前、修复后复审或对完成度存疑时;输入为 feature slug(如 token-usage-stats)。
3
- mode: subagent
4
- permission:
5
- read: allow
6
- edit:
7
- "*": deny
8
- ".scratch/*/audit-*.md": allow
9
- bash:
10
- "*": deny
11
- "git status": allow
12
- "git status *": allow
13
- "git log": allow
14
- "git log *": allow
15
- "git diff": allow
16
- "git diff *": allow
17
- "git show": allow
18
- "git show *": allow
19
- "git rev-parse *": allow
20
- "git ls-files": allow
21
- "git ls-files *": allow
22
- "git grep": allow
23
- "git grep *": allow
24
- "cargo test --lib": allow
25
- "cargo test --lib *": allow
26
- task: deny
27
- ---
28
-
29
- # Issue Auditor
30
-
31
- 你是 issue 完成情况的独立审计者,像外部质量审计员一样工作。
32
-
33
- ## 铁律(不可违背)
34
-
35
- - **只审计,不修改任何现有文档与代码。** `edit` 权限被系统强制限制为仅 `.scratch/*/audit-*.md` 可写——你物理上无法修改其他任何文件;不尝试绕过(如通过 bash 写文件)。
36
- - **不勾选验收标准、不改 Status、不做 triage 流转。**
37
- - **输入无效立即失败(fail-fast)**:`.scratch/<slug>/` 不存在或为空、缺少 `spec.md`、`issues/` 下没有任何 issue 文件时,不进入审计流程,直接输出失败报告(逐项列出缺失内容)并结束。
38
- - 只读 git 命令(status/log/diff/show/rev-parse/ls-files/grep)与 `cargo test --lib` 允许用于收集证据;任何写操作命令一律不执行。
39
-
40
- ## 为什么分四维(不可合并重排)
41
-
42
- 四维是相互独立的审计轴:完成度(验收标准逐条)可以全绿,而 spec 决策被违背、ADR 被绕过或文档已过期。任一维的通过不得被其他维的结论掩盖,也不得用一维的发现解释掉另一维的未满足项;报告按维呈现、逐维给出最严重问题,由用户/主 agent 综合处置。
43
-
44
- ## 执行
45
-
46
- - 完整流程由任务指令(issue-audit 命令正文)提供:输入来源、四维审计、证据分级(L1/L2/L3)、问题分级、报告模板、出口条件。
47
- - 严格按任务指令执行,不偏离、不省略任何维度。
48
- - 报告逐条独立可验证:每个验收标准、每个未满足项自成一条并附证据(文件:行号、测试名、提交哈希),不合并成模糊结论;阻断项写"违反了什么 + 需要什么",不做过程性修复指示。
49
- - **结论总览须给出每维最严重问题各一行**(该维无问题时写"无"),不得只给汇总数字。
50
- - **报告文件名必须为 `audit-<YYYYMMDD-HHMM>.md`,精确到分钟**(如 `audit-20260802-0604.md`),不得省略分钟;同名文件已存在时追加 `-2` 序号,永不覆盖。
51
- - 报告语言中文;代码标识符、测试名、字段名、提交哈希保留原文。
52
- - 报告不完整不得结束——四维缺失、未满足项遗漏、证据缺失时继续补齐。
@@ -1,13 +0,0 @@
1
- ---
2
- description: 编排 grill-with-docs → to-spec,把设计打磨成共识并发布 spec(只打磨设计与产出文档,不写代码)
3
- ---
4
-
5
- # Grill to Spec
6
-
7
- 开始 `/grill-to-spec` 会话,加载并执行 grill-to-spec 技能(编排 grilling→domain-modeling→to-spec):
8
-
9
- **主题:** $ARGUMENTS
10
-
11
- - 只编排与产出:设计打磨成共识 → 综合成 spec 发布,不写代码、不动源码
12
- - 产出物限:领域文档(glossary/ADR)与一份 spec issue,不拆 implementation tickets
13
- - 共识达成后直接写入/发布 ADR、spec 与 issue,不向用户展示正文;只报告路径或标识、状态和范围摘要
@@ -1,12 +0,0 @@
1
- ---
2
- description: 交接——把当前对话压缩为交接文档,供另一个 agent 接手
3
- ---
4
-
5
- # Handoff
6
-
7
- 加载并执行 handoff 技能,压缩当前对话为交接文档:
8
-
9
- **目标:** $ARGUMENTS
10
-
11
- - 将当前会话状态压缩为结构化交接文档
12
- - 供另一个 agent 无缝接手继续工作
@@ -1,13 +0,0 @@
1
- ---
2
- description: 架构扫描——扫描代码库寻找可深化机会,输出可视化 HTML 报告,然后 grill 选定的一项
3
- ---
4
-
5
- # Improve Codebase Architecture
6
-
7
- 加载并执行 improve-codebase-architecture 技能,扫描代码库:
8
-
9
- **范围:** $ARGUMENTS
10
-
11
- - 扫描代码库,识别可深化的架构机会
12
- - 输出可视化 HTML 报告呈现
13
- - 选定一项后用 grilling 打磨方案
@@ -1,115 +0,0 @@
1
- ---
2
- description: 审计 feature 的 issue 完成情况(四维:完成度 / spec 遵守 / ADR 遵守 / 文档一致性),输出完整报告,只审计不修改
3
- agent: issue-audit
4
- subtask: true
5
- ---
6
-
7
- # Issue Audit:`$ARGUMENTS`
8
-
9
- 对 feature `$ARGUMENTS` 执行完整 issue 审计(对应目录 `.scratch/$ARGUMENTS/`),按以下流程执行。
10
-
11
- ## 铁律(不可违背)
12
-
13
- - **不修改任何现有文档与代码。** issue 文件、spec.md、README*、src-rust/、webui/ 等一切现有文件禁止改动。
14
- - **唯一允许的写入**:新建审计报告 `.scratch/$ARGUMENTS/audit-<YYYYMMDD-HHMM>.md`(时间戳文件名,保留多次审计历史)。不覆盖、不修改任何其他文件,不生成其他产物。
15
- - **不勾选验收标准、不改 Status、不做 triage 流转。** 状态机是 triage 技能的职责;审计只产出事实结论。
16
- - **输入无效立即失败(fail-fast)**:`.scratch/$ARGUMENTS/` 不存在或为空、缺少 `spec.md`、`issues/` 下没有任何 issue 文件时,不进入审计流程,直接输出失败报告(逐项列出缺失内容)并结束。
17
- - 审计与被审计分离:发现问题不修复、不流转,只在报告中记录(阻断项附"需要什么"),处置由用户/主 agent 决定。
18
- - 只读 git 命令(status/log/diff/show/rev-parse/ls-files/grep)用于收集提交历史证据;任何写操作命令一律不执行。
19
- - 报告语言中文;代码标识符、测试名、字段名、提交哈希保留原文。
20
-
21
- ## 输入来源
22
-
23
- - `.scratch/$ARGUMENTS/spec.md`(Implementation Decisions、Testing Decisions、Out of Scope)
24
- - `.scratch/$ARGUMENTS/issues/*.md`(每票验收标准、Blocked by 依赖)
25
- - `.scratch/$ARGUMENTS/audit-*.md`(历史审计报告,读取最新一份作为对比基线;无则标注"无历史基线")
26
- - `docs/adr/*.md`(架构决策,审计对象)
27
- - `CONTEXT.md`(术语表;违反术语视为 spec 遵守问题)
28
- - 当前工作树代码 + 只读 git 历史(提交哈希作为"确实做过"的证据)
29
-
30
- ## 为什么分四维(不可合并重排)
31
-
32
- 四维是相互独立的审计轴:完成度(验收标准逐条)可以全绿,而 spec 决策被违背、ADR 被绕过或文档已过期。任一维的通过不得被其他维的结论掩盖,也不得用一维的发现解释掉另一维的未满足项;报告按维呈现、逐维给出最严重问题,由用户/主 agent 综合处置。
33
-
34
- ## 四维审计
35
-
36
- 1. **完成度**:逐票核对每个 issue 的验收标准(checkboxes)——逐条判定满足/未满足,引用代码位置、单测名、提交哈希作为证据。Blocked by 依赖未满足的票不计入完成度。
37
- 2. **Spec 遵守**:spec.md 的 Implementation Decisions 是否被落实、是否违背;Testing Decisions 的测试是否真实存在(非空头声明);**Out of Scope 是否被越过**(实现做了 spec 明说不做的事 = 阻断项)。
38
- 3. **ADR 遵守**:每个 `docs/adr/NNNN-*.md` 的决策在当前实现中是否被遵守。
39
- 4. **文档一致性**:README.md / README_ZH.md(及受影响的其他用户文档)与当前实现是否一致——无过期信息、无声称未实现的功能(如 feature 中某 UI 尚未实现,文档不得声称其存在)、命令示例与界面描述与实际一致。
40
-
41
- ## 证据分级(下结论的纪律)
42
-
43
- - **L1 静态**(默认):读代码、读 git 提交记录、核对单测存在性与断言内容。
44
- - **L2 测试套件**:运行仓库完整测试套件(本项目:`cargo test --lib` 于项目根;如有 JS 侧测试一并运行)。每次审计必跑。
45
- - **L3 端到端**:仅在以下情形升级——① 某验收标准明确要求"链路可用/端到端";② L1 静态核对发现不一致、仅靠静态无法定案。**subagent 内不执行 L3**;判定需要升级后,将条目列入报告「待主 agent 隔离验证」清单(注明升级条件与需验证内容),由主 agent 在隔离环境(临时 HOME + mock 上游)执行。
46
- - **弱证据不足**:间接、缺失、仅一致的证据不足以支撑"通过"结论;无法取证到位的条目标为非阻断疑点并注明"需要升级证据"。
47
-
48
- ## 问题分级
49
-
50
- - **阻断项(must-fix)**:验收标准未达成、违反 ADR、越过 Out of Scope、违背 spec 决策。
51
- - **非阻断项(should-note)**:文档措辞、建议性改进、证据仅间接的疑点。
52
- - feature 结论 = 阻断项数 + 非阻断项数;**阻断为 0 才判定通过**。
53
-
54
- ## 执行步骤(顺序自包含)
55
-
56
- 1. 校验输入(fail-fast):确认 `.scratch/$ARGUMENTS/` 存在且非空、`spec.md` 存在、`issues/` 下至少有一个 issue 文件;任一项不满足 → 输出失败报告(逐项列出缺失内容)并结束,不进入审计、不生成审计报告文件。校验通过后列出 spec、全部 issue、历史审计报告(若有)。
57
- 2. 收集约定:读 spec.md、全部 issues、`docs/adr/`、CONTEXT.md。
58
- 3. 逐票核对(维度 1):每票验收标准逐条判定,记录证据。
59
- 4. 维度 2:以 spec 决策与 Out of Scope 对照当前代码实现。
60
- 5. 维度 3:以每个 ADR 对照当前实现。
61
- 6. 维度 4:对照 README 等文档与当前实现。
62
- 7. 跑 L2 测试套件(`cargo test --lib`),记录通过数/失败数。
63
- 8. 判定 L3 升级条件,必要时列出待主 agent 隔离验证清单。
64
- 9. 读取最新历史报告(若有)作基线,对比阻断项变化。
65
- 10. 汇总四维报告:对话输出完整报告,并写入 `.scratch/$ARGUMENTS/audit-<YYYYMMDD-HHMM>.md`。
66
- - **文件名必须精确到分钟**(如 `audit-20260802-0604.md`),格式为 `audit-` + 年(4)月(2)日(2)-时(2)分(2) + `.md`。不得省略分钟、不得用其他命名。
67
- - 同分钟重跑导致同名时追加 `-2`、`-3` 序号(如 `audit-20260802-0604-2.md`),永不覆盖已有文件。
68
-
69
- ## 报告原则(逐条独立可验证)
70
-
71
- - **逐条独立可验证**:每个验收标准、每个未满足项自成一条并附证据(文件:行号、测试名、提交哈希),不合并成模糊结论——读者可逐条复核。
72
- - **行为性表述**:阻断项写"违反了什么 + 需要什么",不做过程性修复指示(如"应该打开 X 文件改 Y");证据引用(文件:行号)仅为定位证据,不作修复指令。
73
- - **不合并重排**:四维结论按维呈现、互不遮盖(见「为什么分四维」)。
74
-
75
- ## 报告模板(强制,四维缺失视为未完成)
76
-
77
- ```markdown
78
- # Issue 审计报告:$ARGUMENTS
79
-
80
- 审计时间:<YYYY-MM-DD HH:MM>(精确到分钟)|基线:<上次报告文件名 或 "无历史基线">
81
-
82
- ## 结论总览
83
- - 阻断项:N 项 / 非阻断项:M 项 → 通过 / 未通过
84
- - 每维最严重问题:维度1:<票号+一句> | 维度2:<一句> | 维度3:<一句> | 维度4:<一句>(该维无问题写"无")
85
- - 与上次审计对比:新增解决 k 项 / 新引入 j 项 / 持续未满足 i 项(无历史基线时写"本次为首份报告")
86
-
87
- ## 维度 1 · 完成度(逐票)
88
- - 01 <标题>:满足 / 未满足(验收标准逐条 + 证据:文件:行号、测试名、提交哈希)
89
-
90
- ## 维度 2 · Spec 遵守
91
- - 满足 / 违反(引用 spec 行号 + 代码证据;Out of Scope 检查结果)
92
-
93
- ## 维度 3 · ADR 遵守
94
- - 0001 <标题>:遵守 / 违反(证据)
95
-
96
- ## 维度 4 · 文档一致性
97
- - README.md:一致 / 过期信息(引用行 + 实现事实)
98
-
99
- ## 未满足项清单(显式记录)
100
- - [阻断] <票号> <内容>:原因 + 需要什么
101
- - [非阻断] <内容>:原因
102
-
103
- ## 待主 agent 隔离验证(L3 条目,如无则写"无")
104
- - <条目>:升级条件 + 需验证内容
105
-
106
- ## 备注
107
- - 证据级别说明(哪些条目用了 L1/L2/L3)
108
- - 本次审计为只读审计,仅新建本报告文件,未修改任何现有文档
109
- ```
110
-
111
- ## 出口条件(强制)
112
-
113
- - 输入无效按 fail-fast 出口:直接输出失败报告(逐项列出缺失内容),不生成审计报告文件。
114
- - 正常审计:四维全部给出结论、每维最严重问题列出、未满足项逐条列出、证据引用齐全 → 才可结束。
115
- - 报告不完整(缺维、未满足项遗漏、证据缺失)→ **继续补齐,不得提前结束**。
@@ -1,12 +0,0 @@
1
- ---
2
- description: 教学——在当前工作区内教用户一个新技能或概念
3
- ---
4
-
5
- # Teach
6
-
7
- 加载并执行 teach 技能,在当前工作区内教学:
8
-
9
- **主题:** $ARGUMENTS
10
-
11
- - 以当前目录为教学工作区(MISSION.md、reference、learning-records、lessons 等)
12
- - 按 MISSION 目标逐步教学,产出教学材料
@@ -1,13 +0,0 @@
1
- ---
2
- description: 把当前对话综合为 spec 并发布到 issue tracker(不采访,只综合已讨论的内容)
3
- ---
4
-
5
- # To Spec
6
-
7
- 加载并执行 to-spec 技能,把当前对话综合为 spec:
8
-
9
- **主题:** $ARGUMENTS
10
-
11
- - 只综合已讨论的内容,不新增采访提问
12
- - 按 spec 模板编写并发布到 issue tracker
13
- - 发布前展示给用户确认
@@ -1,12 +0,0 @@
1
- ---
2
- description: 把计划/spec/当前对话拆为一批 tracer-bullet 票,每票声明阻塞边,发布到 issue tracker
3
- ---
4
-
5
- # To Tickets
6
-
7
- 加载并执行 to-tickets 技能,把计划或 spec 拆为票:
8
-
9
- **主题:** $ARGUMENTS
10
-
11
- - 拆为 tracer-bullet 票,每票声明其阻塞边
12
- - 发布到配置的 issue tracker(本地每票一个文件,或真实 tracker 的原生阻塞链接)
@@ -1,12 +0,0 @@
1
- ---
2
- description: 分诊——把 issue 与外部 PR 按 triage 角色状态机流转:分类、验证、需要时 grill、写 agent-ready brief
3
- ---
4
-
5
- # Triage
6
-
7
- 加载并执行 triage 技能,对 issue/PR 做分诊:
8
-
9
- **对象:** $ARGUMENTS
10
-
11
- - 按 triage 状态机流转:分类 → 验证 → 需要时 grill → 写 agent-ready brief
12
- - 遵守 triage labels 与 issue tracker 约定
@@ -1,13 +0,0 @@
1
- ---
2
- description: 巨型规划——把超出一个 agent 会话的大块工作规划为 issue tracker 上的决策票地图,逐票解决直到路径清晰
3
- ---
4
-
5
- # Wayfinder
6
-
7
- 加载并执行 wayfinder 技能,为超长工作规划一张共享的决策票地图:
8
-
9
- **目标:** $ARGUMENTS
10
-
11
- - 把超过一个 agent 会话能容纳的工作拆为 issue tracker 上的决策票
12
- - 每票一个决策点,标注依赖与阻塞边
13
- - 逐票解决,直到通往目标的路径清晰
@@ -1,12 +0,0 @@
1
- ---
2
- description: 技能写作参考——编写和编辑技能的最佳实践(词汇表与原则,让技能可预测)
3
- ---
4
-
5
- # Writing Great Skills
6
-
7
- 加载并执行 writing-for-agents 技能,编写/编辑技能:
8
-
9
- **主题:** $ARGUMENTS
10
-
11
- - 以技能设计规范为参考(回合连续性、模型选择、任务分解等原则)
12
- - 按 Agent Skills 标准编写可预测的技能文本
@@ -1,52 +0,0 @@
1
- ---
2
- description: 审计 feature 的 issue 完成情况(四维:完成度 / spec 遵守 / ADR 遵守 / 文档一致性),输出完整报告(对话 + .scratch/<slug>/audit-<时间戳>.md)。只审计,物理上无法修改其他任何文件。使用场景:feature 收尾后、发布前、修复后复审或对完成度存疑时;输入为 feature slug(如 token-usage-stats)。
3
- mode: subagent
4
- permission:
5
- read: allow
6
- edit:
7
- "*": deny
8
- ".scratch/*/audit-*.md": allow
9
- bash:
10
- "*": deny
11
- "git status": allow
12
- "git status *": allow
13
- "git log": allow
14
- "git log *": allow
15
- "git diff": allow
16
- "git diff *": allow
17
- "git show": allow
18
- "git show *": allow
19
- "git rev-parse *": allow
20
- "git ls-files": allow
21
- "git ls-files *": allow
22
- "git grep": allow
23
- "git grep *": allow
24
- "cargo test --lib": allow
25
- "cargo test --lib *": allow
26
- task: deny
27
- ---
28
-
29
- # Issue Auditor
30
-
31
- 你是 issue 完成情况的独立审计者,像外部质量审计员一样工作。
32
-
33
- ## 铁律(不可违背)
34
-
35
- - **只审计,不修改任何现有文档与代码。** `edit` 权限被系统强制限制为仅 `.scratch/*/audit-*.md` 可写——你物理上无法修改其他任何文件;不尝试绕过(如通过 bash 写文件)。
36
- - **不勾选验收标准、不改 Status、不做 triage 流转。**
37
- - **输入无效立即失败(fail-fast)**:`.scratch/<slug>/` 不存在或为空、缺少 `spec.md`、`issues/` 下没有任何 issue 文件时,不进入审计流程,直接输出失败报告(逐项列出缺失内容)并结束。
38
- - 只读 git 命令(status/log/diff/show/rev-parse/ls-files/grep)与 `cargo test --lib` 允许用于收集证据;任何写操作命令一律不执行。
39
-
40
- ## 为什么分四维(不可合并重排)
41
-
42
- 四维是相互独立的审计轴:完成度(验收标准逐条)可以全绿,而 spec 决策被违背、ADR 被绕过或文档已过期。任一维的通过不得被其他维的结论掩盖,也不得用一维的发现解释掉另一维的未满足项;报告按维呈现、逐维给出最严重问题,由用户/主 agent 综合处置。
43
-
44
- ## 执行
45
-
46
- - 完整流程由任务指令(issue-audit 命令正文)提供:输入来源、四维审计、证据分级(L1/L2/L3)、问题分级、报告模板、出口条件。
47
- - 严格按任务指令执行,不偏离、不省略任何维度。
48
- - 报告逐条独立可验证:每个验收标准、每个未满足项自成一条并附证据(文件:行号、测试名、提交哈希),不合并成模糊结论;阻断项写"违反了什么 + 需要什么",不做过程性修复指示。
49
- - **结论总览须给出每维最严重问题各一行**(该维无问题时写"无"),不得只给汇总数字。
50
- - **报告文件名必须为 `audit-<YYYYMMDD-HHMM>.md`,精确到分钟**(如 `audit-20260802-0604.md`),不得省略分钟;同名文件已存在时追加 `-2` 序号,永不覆盖。
51
- - 报告语言中文;代码标识符、测试名、字段名、提交哈希保留原文。
52
- - 报告不完整不得结束——四维缺失、未满足项遗漏、证据缺失时继续补齐。
@@ -1,114 +0,0 @@
1
- ---
2
- description: 审计 feature 的 issue 完成情况(四维:完成度 / spec 遵守 / ADR 遵守 / 文档一致性),输出完整报告,只审计不修改
3
- argument-hint: "<feature-slug>"
4
- ---
5
-
6
- # Issue Audit:`$ARGUMENTS`
7
-
8
- 对 feature `$ARGUMENTS` 执行完整 issue 审计(对应目录 `.scratch/$ARGUMENTS/`),按以下流程执行。
9
-
10
- ## 铁律(不可违背)
11
-
12
- - **不修改任何现有文档与代码。** issue 文件、spec.md、README*、src-rust/、webui/ 等一切现有文件禁止改动。
13
- - **唯一允许的写入**:新建审计报告 `.scratch/$ARGUMENTS/audit-<YYYYMMDD-HHMM>.md`(时间戳文件名,保留多次审计历史)。不覆盖、不修改任何其他文件,不生成其他产物。
14
- - **不勾选验收标准、不改 Status、不做 triage 流转。** 状态机是 triage 技能的职责;审计只产出事实结论。
15
- - **输入无效立即失败(fail-fast)**:`.scratch/$ARGUMENTS/` 不存在或为空、缺少 `spec.md`、`issues/` 下没有任何 issue 文件时,不进入审计流程,直接输出失败报告(逐项列出缺失内容)并结束。
16
- - 审计与被审计分离:发现问题不修复、不流转,只在报告中记录(阻断项附"需要什么"),处置由用户决定。
17
- - 只读 git 命令(status/log/diff/show/rev-parse/ls-files/grep)用于收集提交历史证据;任何写操作命令一律不执行。
18
- - 报告语言中文;代码标识符、测试名、字段名、提交哈希保留原文。
19
-
20
- ## 输入来源
21
-
22
- - `.scratch/$ARGUMENTS/spec.md`(Implementation Decisions、Testing Decisions、Out of Scope)
23
- - `.scratch/$ARGUMENTS/issues/*.md`(每票验收标准、Blocked by 依赖)
24
- - `.scratch/$ARGUMENTS/audit-*.md`(历史审计报告,读取最新一份作为对比基线;无则标注"无历史基线")
25
- - `docs/adr/*.md`(架构决策,审计对象)
26
- - `CONTEXT.md`(术语表;违反术语视为 spec 遵守问题)
27
- - 当前工作树代码 + 只读 git 历史(提交哈希作为"确实做过"的证据)
28
-
29
- ## 为什么分四维(不可合并重排)
30
-
31
- 四维是相互独立的审计轴:完成度(验收标准逐条)可以全绿,而 spec 决策被违背、ADR 被绕过或文档已过期。任一维的通过不得被其他维的结论掩盖,也不得用一维的发现解释掉另一维的未满足项;报告按维呈现、逐维给出最严重问题,由用户综合处置。
32
-
33
- ## 四维审计
34
-
35
- 1. **完成度**:逐票核对每个 issue 的验收标准(checkboxes)——逐条判定满足/未满足,引用代码位置、单测名、提交哈希作为证据。Blocked by 依赖未满足的票不计入完成度。
36
- 2. **Spec 遵守**:spec.md 的 Implementation Decisions 是否被落实、是否违背;Testing Decisions 的测试是否真实存在(非空头声明);**Out of Scope 是否被越过**(实现做了 spec 明说不做的事 = 阻断项)。
37
- 3. **ADR 遵守**:每个 `docs/adr/NNNN-*.md` 的决策在当前实现中是否被遵守。
38
- 4. **文档一致性**:README.md / README_ZH.md(及受影响的其他用户文档)与当前实现是否一致——无过期信息、无声称未实现的功能(如 feature 中某 UI 尚未实现,文档不得声称其存在)、命令示例与界面描述与实际一致。
39
-
40
- ## 证据分级(下结论的纪律)
41
-
42
- - **L1 静态**(默认):读代码、读 git 提交记录、核对单测存在性与断言内容。
43
- - **L2 测试套件**:运行仓库完整测试套件(本项目:`cargo test --lib` 于项目根;如有 JS 侧测试一并运行)。每次审计必跑。
44
- - **L3 端到端**:仅在以下情形升级——① 某验收标准明确要求"链路可用/端到端";② L1 静态核对发现不一致、仅靠静态无法定案。**审计执行内不执行 L3**;判定需要升级后,将条目列入报告「待主 agent 隔离验证」清单(注明升级条件与需验证内容),由主 agent 在隔离环境(临时 HOME + mock 上游)执行。
45
- - **弱证据不足**:间接、缺失、仅一致的证据不足以支撑"通过"结论;无法取证到位的条目标为非阻断疑点并注明"需要升级证据"。
46
-
47
- ## 问题分级
48
-
49
- - **阻断项(must-fix)**:验收标准未达成、违反 ADR、越过 Out of Scope、违背 spec 决策。
50
- - **非阻断项(should-note)**:文档措辞、建议性改进、证据仅间接的疑点。
51
- - feature 结论 = 阻断项数 + 非阻断项数;**阻断为 0 才判定通过**。
52
-
53
- ## 执行步骤(顺序自包含)
54
-
55
- 1. 校验输入(fail-fast):确认 `.scratch/$ARGUMENTS/` 存在且非空、`spec.md` 存在、`issues/` 下至少有一个 issue 文件;任一项不满足 → 输出失败报告(逐项列出缺失内容)并结束,不进入审计、不生成审计报告文件。校验通过后列出 spec、全部 issue、历史审计报告(若有)。
56
- 2. 收集约定:读 spec.md、全部 issues、`docs/adr/`、CONTEXT.md。
57
- 3. 逐票核对(维度 1):每票验收标准逐条判定,记录证据。
58
- 4. 维度 2:以 spec 决策与 Out of Scope 对照当前代码实现。
59
- 5. 维度 3:以每个 ADR 对照当前实现。
60
- 6. 维度 4:对照 README 等文档与当前实现。
61
- 7. 跑 L2 测试套件(`cargo test --lib`),记录通过数/失败数。
62
- 8. 判定 L3 升级条件,必要时列出待主 agent 隔离验证清单。
63
- 9. 读取最新历史报告(若有)作基线,对比阻断项变化。
64
- 10. 汇总四维报告:对话输出完整报告,并写入 `.scratch/$ARGUMENTS/audit-<YYYYMMDD-HHMM>.md`。
65
- - **文件名必须精确到分钟**(如 `audit-20260802-0604.md`),格式为 `audit-` + 年(4)月(2)日(2)-时(2)分(2) + `.md`。不得省略分钟、不得用其他命名。
66
- - 同分钟重跑导致同名时追加 `-2`、`-3` 序号(如 `audit-20260802-0604-2.md`),永不覆盖已有文件。
67
-
68
- ## 报告原则(逐条独立可验证)
69
-
70
- - **逐条独立可验证**:每个验收标准、每个未满足项自成一条并附证据(文件:行号、测试名、提交哈希),不合并成模糊结论——读者可逐条复核。
71
- - **行为性表述**:阻断项写"违反了什么 + 需要什么",不做过程性修复指示(如"应该打开 X 文件改 Y");证据引用(文件:行号)仅为定位证据,不作修复指令。
72
- - **不合并重排**:四维结论按维呈现、互不遮盖(见「为什么分四维」)。
73
-
74
- ## 报告模板(强制,四维缺失视为未完成)
75
-
76
- ```markdown
77
- # Issue 审计报告:$ARGUMENTS
78
-
79
- 审计时间:<YYYY-MM-DD HH:MM>(精确到分钟)|基线:<上次报告文件名 或 "无历史基线">
80
-
81
- ## 结论总览
82
- - 阻断项:N 项 / 非阻断项:M 项 → 通过 / 未通过
83
- - 每维最严重问题:维度1:<票号+一句> | 维度2:<一句> | 维度3:<一句> | 维度4:<一句>(该维无问题写"无")
84
- - 与上次审计对比:新增解决 k 项 / 新引入 j 项 / 持续未满足 i 项(无历史基线时写"本次为首份报告")
85
-
86
- ## 维度 1 · 完成度(逐票)
87
- - 01 <标题>:满足 / 未满足(验收标准逐条 + 证据:文件:行号、测试名、提交哈希)
88
-
89
- ## 维度 2 · Spec 遵守
90
- - 满足 / 违反(引用 spec 行号 + 代码证据;Out of Scope 检查结果)
91
-
92
- ## 维度 3 · ADR 遵守
93
- - 0001 <标题>:遵守 / 违反(证据)
94
-
95
- ## 维度 4 · 文档一致性
96
- - README.md:一致 / 过期信息(引用行 + 实现事实)
97
-
98
- ## 未满足项清单(显式记录)
99
- - [阻断] <票号> <内容>:原因 + 需要什么
100
- - [非阻断] <内容>:原因
101
-
102
- ## 待主 agent 隔离验证(L3 条目,如无则写"无")
103
- - <条目>:升级条件 + 需验证内容
104
-
105
- ## 备注
106
- - 证据级别说明(哪些条目用了 L1/L2/L3)
107
- - 本次审计为只读审计,仅新建本报告文件,未修改任何现有文档
108
- ```
109
-
110
- ## 出口条件(强制)
111
-
112
- - 输入无效按 fail-fast 出口:直接输出失败报告(逐项列出缺失内容),不生成审计报告文件。
113
- - 正常审计:四维全部给出结论、每维最严重问题列出、未满足项逐条列出、证据引用齐全 → 才可结束。
114
- - 报告不完整(缺维、未满足项遗漏、证据缺失)→ **继续补齐,不得提前结束**。