@namewta/speculo 0.2.2 → 0.2.6

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 (134) hide show
  1. package/README.md +11 -15
  2. package/dist/src/index.js +72 -8
  3. package/dist/src/index.js.map +1 -1
  4. package/dist/src/migrate.js +8 -8
  5. package/dist/src/migrate.js.map +1 -1
  6. package/dist/src/workflows.js +2 -2
  7. package/dist/src/workflows.js.map +1 -1
  8. package/package.json +1 -1
  9. package/template/.speculo/README.md +3 -3
  10. package/template/AGENTS.md +4 -0
  11. package/template/CLAUDE.md +3 -0
  12. package/template/canonical/README.md +114 -0
  13. package/template/canonical/canonical-domain-modeling.md +289 -0
  14. package/template/canonical/canonical-skill-example.md +608 -0
  15. package/template/canonical/canonical-teach.md +296 -0
  16. package/template/commands/archive-and-consolidate.md +49 -0
  17. package/template/commands/docs-sync.md +2 -2
  18. package/template/commands/retro.md +9 -7
  19. package/template/commands/status.md +2 -2
  20. package/template/skills/archive-and-consolidate/SKILL.md +179 -0
  21. package/template/skills/archive-and-consolidate/assets/archive-plan-template.md +34 -0
  22. package/template/skills/archive-and-consolidate/assets/cleanup-candidate-template.md +69 -0
  23. package/template/skills/archive-and-consolidate/assets/consolidation-plan-template.md +67 -0
  24. package/template/skills/archive-and-consolidate/references/archive-rules.md +48 -0
  25. package/template/skills/archive-and-consolidate/references/cleanup-rules.md +73 -0
  26. package/template/skills/archive-and-consolidate/references/consolidation-rules.md +70 -0
  27. package/template/skills/archive-and-consolidate/references/knowledge-graduation.md +50 -0
  28. package/template/skills/docs-sync/SKILL.md +1 -1
  29. package/template/skills/docs-sync/references/readme-contract.md +2 -0
  30. package/template/skills/docs-sync/references/readme-writing-guide.md +294 -0
  31. package/template/skills/docs-sync/references/workflow-scope-contract.md +3 -3
  32. package/template/skills/speculo-retro/SKILL.md +1 -1
  33. package/template/skills/speculo-retro/references/issue-drafting-sop.md +1 -1
  34. package/template/skills/worktree-isolation/references/merge-and-cleanup.md +2 -2
  35. package/template/vendor/README.md +3 -3
  36. package/template/vendor/khazix-skills/neat-freak/SKILL.md +210 -0
  37. package/template/vendor/khazix-skills/neat-freak/references/agent-paths.md +72 -0
  38. package/template/vendor/khazix-skills/neat-freak/references/governance.md +88 -0
  39. package/template/vendor/khazix-skills/neat-freak/references/sync-matrix.md +77 -0
  40. package/template/vendor/khazix-skills/neat-freak/references/verification.md +92 -0
  41. package/template/vendor/khazix-skills/neat-freak/scripts/audit-inventory.sh +106 -0
  42. package/template/workflows/person/INDEX.md +12 -0
  43. package/template/workflows/person/M-mao-zedong-cognitive-os/M-mao-zedong-cognitive-os.md +73 -74
  44. package/template/workflows/specdev/D-diagnose-bugs/D-diagnose-bugs.md +85 -0
  45. package/template/workflows/specdev/D-diagnose-bugs/cleanup-postmortem.md +37 -0
  46. package/template/workflows/specdev/D-diagnose-bugs/feedback-loop-techniques.md +84 -0
  47. package/template/workflows/specdev/D-diagnose-bugs/hypothesis-format.md +46 -0
  48. package/template/workflows/specdev/D-diagnose-bugs/instrumentation-rules.md +51 -0
  49. package/template/workflows/specdev/G-grill-with-docs/G-grill-with-docs.md +54 -0
  50. package/template/workflows/specdev/G-grill-with-docs/adr-format.md +77 -0
  51. package/template/workflows/specdev/G-grill-with-docs/context-format.md +63 -0
  52. package/template/workflows/specdev/G-grill-with-docs/domain-modeling-rules.md +93 -0
  53. package/template/workflows/specdev/G-grill-with-docs/grilling-protocol.md +54 -0
  54. package/template/workflows/specdev/G-grill-with-docs/log-format.md +99 -0
  55. package/template/workflows/specdev/I-implement/I-implement.md +85 -0
  56. package/template/workflows/specdev/I-implement/code-review-process.md +83 -0
  57. package/template/workflows/specdev/I-implement/codebase-design-glossary.md +109 -0
  58. package/template/workflows/specdev/I-implement/deepening.md +37 -0
  59. package/template/workflows/specdev/I-implement/design-it-twice.md +44 -0
  60. package/template/workflows/specdev/I-implement/tdd-examples.md +139 -0
  61. package/template/workflows/specdev/I-implement/tdd-rules.md +31 -0
  62. package/template/workflows/specdev/I-init-setup/I-init-setup.md +132 -0
  63. package/template/workflows/specdev/I-init-setup/domain-layout.md +90 -0
  64. package/template/workflows/specdev/I-init-setup/status-labels.md +54 -0
  65. package/template/workflows/specdev/I-init-setup/tracking-convention.md +58 -0
  66. package/template/workflows/specdev/INDEX.md +81 -0
  67. package/template/workflows/specdev/S-spec/S-spec.md +91 -0
  68. package/template/workflows/specdev/T-tickets/T-tickets.md +241 -0
  69. package/template/workflows/specdev/W-wayfinder/W-wayfinder.md +209 -0
  70. package/template/workflows/specdev/_state/adr/.gitkeep +0 -0
  71. package/template/workflows/specdev/_state/archive/.gitkeep +0 -0
  72. package/template/workflows/specdev/_state/changes/.gitkeep +0 -0
  73. package/template/workflows/specdev/_state/context/.gitkeep +0 -0
  74. package/template/workflows/{matt-pocock → specdev}/_state/status.json +1 -1
  75. package/template/commands/finalize.md +0 -37
  76. package/template/commands/knowledge-prune.md +0 -20
  77. package/template/skills/change-lifecycle/SKILL.md +0 -25
  78. package/template/skills/change-lifecycle/assets/completion-summary-template.md +0 -25
  79. package/template/skills/change-lifecycle/assets/completion-verification-template.md +0 -29
  80. package/template/skills/change-lifecycle/references/completion-gate.md +0 -19
  81. package/template/skills/change-lifecycle/references/finalize-archive.md +0 -32
  82. package/template/skills/knowledge-prune/SKILL.md +0 -29
  83. package/template/skills/knowledge-prune/references/audit-rules.md +0 -24
  84. package/template/skills/runtime-context/SKILL.md +0 -54
  85. package/template/skills/runtime-context/references/path-resolution.md +0 -41
  86. package/template/workflows/matt-pocock/PERSISTENCE.md +0 -80
  87. package/template/workflows/matt-pocock/WORKFLOW.md +0 -103
  88. package/template/workflows/matt-pocock/_state/archive/.gitkeep +0 -1
  89. package/template/workflows/matt-pocock/_state/changes/.gitkeep +0 -1
  90. package/template/workflows/matt-pocock/atomic-skills/ask-matt.md +0 -21
  91. package/template/workflows/matt-pocock/atomic-skills/claude-handoff.md +0 -21
  92. package/template/workflows/matt-pocock/atomic-skills/code-review.md +0 -21
  93. package/template/workflows/matt-pocock/atomic-skills/codebase-design.md +0 -21
  94. package/template/workflows/matt-pocock/atomic-skills/diagnosing-bugs.md +0 -21
  95. package/template/workflows/matt-pocock/atomic-skills/domain-modeling.md +0 -21
  96. package/template/workflows/matt-pocock/atomic-skills/grill-me.md +0 -21
  97. package/template/workflows/matt-pocock/atomic-skills/grill-with-docs.md +0 -21
  98. package/template/workflows/matt-pocock/atomic-skills/grilling.md +0 -21
  99. package/template/workflows/matt-pocock/atomic-skills/handoff.md +0 -21
  100. package/template/workflows/matt-pocock/atomic-skills/implement.md +0 -21
  101. package/template/workflows/matt-pocock/atomic-skills/improve-codebase-architecture.md +0 -21
  102. package/template/workflows/matt-pocock/atomic-skills/loop-me.md +0 -21
  103. package/template/workflows/matt-pocock/atomic-skills/prototype.md +0 -21
  104. package/template/workflows/matt-pocock/atomic-skills/research.md +0 -21
  105. package/template/workflows/matt-pocock/atomic-skills/resolving-merge-conflicts.md +0 -21
  106. package/template/workflows/matt-pocock/atomic-skills/setup-matt-pocock-skills.md +0 -21
  107. package/template/workflows/matt-pocock/atomic-skills/tdd.md +0 -21
  108. package/template/workflows/matt-pocock/atomic-skills/teach.md +0 -21
  109. package/template/workflows/matt-pocock/atomic-skills/to-spec.md +0 -21
  110. package/template/workflows/matt-pocock/atomic-skills/to-tickets.md +0 -21
  111. package/template/workflows/matt-pocock/atomic-skills/triage.md +0 -21
  112. package/template/workflows/matt-pocock/atomic-skills/wayfinder.md +0 -21
  113. package/template/workflows/matt-pocock/atomic-skills/wizard.md +0 -21
  114. package/template/workflows/matt-pocock/atomic-skills/writing-beats.md +0 -21
  115. package/template/workflows/matt-pocock/atomic-skills/writing-fragments.md +0 -21
  116. package/template/workflows/matt-pocock/atomic-skills/writing-great-skills.md +0 -21
  117. package/template/workflows/matt-pocock/atomic-skills/writing-shape.md +0 -20
  118. package/template/workflows/matt-pocock/routes/architecture.md +0 -24
  119. package/template/workflows/matt-pocock/routes/diagnose.md +0 -22
  120. package/template/workflows/matt-pocock/routes/experimental.md +0 -18
  121. package/template/workflows/matt-pocock/routes/idea-to-delivery.md +0 -63
  122. package/template/workflows/matt-pocock/routes/merge-conflicts.md +0 -19
  123. package/template/workflows/matt-pocock/routes/productivity.md +0 -25
  124. package/template/workflows/matt-pocock/routes/research-prototype.md +0 -20
  125. package/template/workflows/matt-pocock/routes/review.md +0 -19
  126. package/template/workflows/matt-pocock/routes/setup.md +0 -42
  127. package/template/workflows/matt-pocock/routes/triage.md +0 -25
  128. package/template/workflows/matt-pocock/routes/wayfinder.md +0 -27
  129. package/template/workflows/person/PERSISTENCE.md +0 -56
  130. package/template/workflows/person/WORKFLOW.md +0 -50
  131. package/template/workflows/person/_state/.config/LESSONS.md +0 -3
  132. package/template/workflows/person/_state/.config/RULES.md +0 -3
  133. package/template/workflows/person/_state/.config/context/.gitkeep +0 -1
  134. package/template/workflows/person/_templates/mao-consultation-output-template.md +0 -55
@@ -1,32 +0,0 @@
1
- # Finalize And Archive
2
-
3
- 归档是破坏性目录移动,调用方必须先展示完整计划并取得明确确认。
4
-
5
- ## 共同预检
6
-
7
- - change 名称符合日期 kebab 规则(格式校验来源与 `runtime-context/SKILL.md` 第4步相同,创建时已保证;此处为冗余验证),且 `.status.json` 可解析。
8
- - 源位于 runtime context 的 `changes_root`,目标位于 `archive_root/<YYYY-MM>/<change>`。
9
- - 目标不存在,workflow `status.json` 与 change 状态一致。
10
- - worktree 模式已经合并回目标分支并清理,或调用方明确记录 blocked。
11
-
12
- ## finalize-active
13
-
14
- 1. 要求 `verification_status: verified`。
15
- 2. 在当前 change 写 `completion-summary.md`,记录交付边界、证据指针和遗留事项。
16
- 3. 将 `change_status` 置为 `completed`;若 workflow 允许沉淀经验,只写入其声明的 knowledge store。
17
- 4. 展示归档计划并等待确认,随后执行共同归档步骤。
18
-
19
- ## archive-completed
20
-
21
- 1. 仅接受 `change_status: completed`,不重新运行完成门控。
22
- 2. 批量模式先为全部候选完成共同预检;任一冲突、malformed 或 broken change 会阻塞整批动作。
23
- 3. 展示逐项计划并等待一次明确确认,随后按稳定顺序执行共同归档步骤。
24
-
25
- ## 共同归档步骤
26
-
27
- 1. 创建 archive 月目录并移动整个 change。
28
- 2. 从 workflow `status.json#active` 删除该 change。
29
- 3. 更新已移动的 `.status.json`:`change_status: archived`、`archived: true`、project-relative `archive_path`。
30
- 4. 重新读取目标、索引和状态;失败时返回已完成/未完成清单,不猜测成功。
31
-
32
- 完成标准:源不存在、目标完整、active 索引已移除且归档状态字段一致。
@@ -1,29 +0,0 @@
1
- ---
2
- id: knowledge-prune
3
- type: skill
4
- name: Knowledge Prune
5
- description: dry-run 审计 workflow 声明的知识与策略 namespace,返回可安全删除、合并或改写的候选清单。
6
- ---
7
-
8
- # Knowledge Prune
9
-
10
- 默认只分析,不自行写报告或修改文件。调用方负责 runtime context、用户确认和持久化。
11
-
12
- ## 输入
13
-
14
- - `runtime-context` 返回的 workflow/state 根。
15
- - `PERSISTENCE.md#persistence` 中 role 为 knowledge、policy 或 legacy-knowledge 的 namespace。
16
- - 用户确认状态:`dry-run | confirmed`。
17
-
18
- ## 流程
19
-
20
- 1. 读取 `references/audit-rules.md`,仅扫描已声明且真实存在的 namespace。
21
- 2. 为每个候选收集当前代码、文档、active change、archive 和交叉引用证据。
22
- 3. 按 `delete | merge | rewrite | keep | needs-confirmation` 返回候选;dry-run 到此完成。
23
- 4. confirmed 模式重新验证真实路径包含关系,再逐项执行用户批准的动作并返回结果。
24
-
25
- 完成标准:每个候选都有来源、证据和风险;未确认时文件系统未发生变化;本 skill 未自行选择报告路径。
26
-
27
- ## 渐进披露
28
-
29
- - `references/audit-rules.md`:生成候选、判定保护项或执行确认后的修改时读取。
@@ -1,24 +0,0 @@
1
- # Knowledge Prune Audit Rules
2
-
3
- ## 扫描范围
4
-
5
- 1. 读取目标 workflow `PERSISTENCE.md` 的 `<persistence>`,选择 role 为 `knowledge | policy | legacy-knowledge` 且真实存在的 store。
6
- 2. `create="lazy"` 但不存在的 store 记为 `missing`,不为审计而创建;`existing-only` store 只读。
7
- 3. 扫描代码、文档、active changes 和 archive 中对 ADR、CONTEXT、LESSONS、RULES 及具体文件名的引用。
8
-
9
- ## 候选
10
-
11
- - 指向不存在知识文件的引用。
12
- - 已 superseded、超过 30 天且无 active 引用的 ADR。
13
- - 只含占位符、模板说明或空内容的长期知识文件。
14
- - 当前代码、文档和 archive 均无证据支撑的领域术语。
15
- - 重复、过时、仅适用单次 change 或已被规则/ADR 吸收的经验。
16
-
17
- ## 保护规则
18
-
19
- - 仍被代码、文档、archive 或 active change 引用的内容归入 `keep`。
20
- - RULES、术语冲突、ADR/CONTEXT 改写和 existing-only legacy store 一律归入 `needs-confirmation`。
21
- - 删除前解析真实路径,确认仍位于目标 workflow state root 和已声明 store 内。
22
- - 不跨 workflow 合并知识,不修改 docs-sync state。
23
-
24
- 完成标准:所有已声明且存在的知识 store 均已扫描,每个候选恰好属于一个分组。
@@ -1,54 +0,0 @@
1
- ---
2
- id: runtime-context
3
- type: skill
4
- name: Runtime Context
5
- description: 解析 Speculo 项目根、资产根和 workflow 状态根,向 command/workflow/skill 返回经过边界校验的统一路径上下文。
6
- ---
7
-
8
- # Runtime Context
9
-
10
- 从项目根注册表和 workflow `PERSISTENCE.md` 构造一次运行所需的全部路径。调用方持有持久化责任;本 skill 只解析和验证路径。
11
-
12
- ## 输入
13
-
14
- - 当前工作目录或用户指定的项目目录。
15
- - workflow id,以及对应 `PERSISTENCE.md` 中的 `<runtime-context>` 和 `<persistence>`。
16
- - 可选 change 名称和 command id。
17
-
18
- ## 流程
19
-
20
- 1. 按 `references/path-resolution.md` 向上定位 `speculo/.speculo/workspace.json`;找不到唯一项目根时返回 blocked。
21
- 2. 读取注册表与 workflow 的 `PERSISTENCE.md`,解析 `workflow/state/commands/skills/vendor`。
22
- - 对每个解析后的 vendor root 执行存在性验证:目标目录必须存在,否则返回明确错误信息指明缺失的具体路径,禁止静默跳过。
23
- - 任一路径越界或目标缺失时返回 blocked。
24
- 3. 读取 `speculo/config.json`(若存在);不存在时以默认值静默降级(`language: "en"`、`persistence.root_override: null`、`defaults.confirm_before_external_write: true`、`defaults.report_language: "en"`)。
25
- 4. 读取固定状态骨架 `status.json/changes/archive`;选择 change 时派生 `change_root`,不把派生绝对路径写回状态。
26
- - **Change 名称格式校验:** change 名称必须匹配 `^\d{4}-\d{2}-\d{2}-[a-z0-9]+(-[a-z0-9]+)*$`(即 `YYYY-MM-DD-<kebab-topic>`)。
27
- - 创建 change 时自动以当天日期为前缀(`YYYY-MM-DD-`),用户只需提供 topic 部分。
28
- - 手动指定完整 change 名时,不匹配格式则阻塞并提示正确格式:`YYYY-MM-DD-<kebab-topic>`。
29
- - 已有不带日期前缀的历史 change 标注为遗留,不阻塞但记录警告。
30
- - 校验逻辑定义为单一来源(本步骤),归档端(`finalize-archive.md`)的日期 kebab 检查引用同一格式规则。
31
- 5. 返回 project-relative runtime context,供后续所有 skills 复用;后续调用不得重新猜测路径。
32
-
33
- ## 输出
34
-
35
- ```text
36
- project_root
37
- workflow_root
38
- state_root
39
- changes_root
40
- archive_root
41
- change_root?
42
- commands_root
43
- skills_root
44
- vendor_roots[]
45
- config?
46
- ```
47
-
48
- `config` 字段包含已解析的 `{language, persistence: {root_override}, defaults: {confirm_before_external_write, report_language}}`。
49
-
50
- 完成标准:所有返回路径均为项目根相对路径、位于声明根内且对应静态资产真实存在;vendor root 已通过存在性验证;change 名称已通过格式校验;本 skill 未创建任何运行时产物。
51
-
52
- ## 渐进披露
53
-
54
- - `references/path-resolution.md`:定位根注册表、解析 XML 根别名、config 定位与降级规则、change 名称格式约束或检查路径越界时读取。
@@ -1,41 +0,0 @@
1
- # Path Resolution
2
-
3
- ## 根定位
4
-
5
- 1. 从当前工作目录向上寻找 `speculo/.speculo/workspace.json`。
6
- 2. 第一个命中的目录是 `project_root`;同时命中多个候选或用户指定目录与候选不一致时停止并澄清。
7
- 3. `workspace.json#path_base` 必须为 `project-root`,所有 roots 必须是 POSIX 风格相对路径。
8
-
9
- ## Config 定位
10
-
11
- 1. 在 `project_root` 下查找 `speculo/config.json`。
12
- 2. 若存在,读取并解析其内容;若不存在,以默认值静默降级(`language: "en"`、`persistence.root_override: null`、`defaults.confirm_before_external_write: true`、`defaults.report_language: "en"`)。
13
- 3. config 对象由 runtime-context 统一输出,后续调用方不得重新猜测路径或自行解析。
14
-
15
- ## Workflow 绑定
16
-
17
- 读取 workflow 同级 `PERSISTENCE.md` 的 `<runtime-context>`:
18
-
19
- - `base` 必须引用 `workspace.json#roots` 中已有根。
20
- - `path` 不能是绝对路径,不能包含 `..` 或反斜杠。
21
- - `workflow` 和 `state` 必须分别解析到 `speculo/workflows/<workflow>` 与 `speculo/.speculo/<workflow>`。
22
- - vendor 可声明零个或多个具名根,例如 `vendor:matt-pocock`。
23
-
24
- 固定派生规则:
25
-
26
- ```text
27
- changes_root = state_root/changes
28
- archive_root = state_root/archive
29
- change_root = changes_root/<change>
30
- ```
31
-
32
- **Change 名称格式约束:** `<change>` 必须匹配 `^\d{4}-\d{2}-\d{2}-[a-z0-9]+(-[a-z0-9]+)*$`(即 `YYYY-MM-DD-<kebab-topic>`)。创建 change 时自动以当天日期为前缀,用户只需提供 topic 部分。手动指定完整名称时,不匹配格式则阻塞并提示正确格式。此格式约束在创建时即强制执行,归档时的日期 kebab 检查作为冗余验证与此处共享同一校验来源。已有不带日期前缀的历史 change 在文档中标注为遗留,归档时不阻塞。
33
-
34
- ## 边界检查
35
-
36
- - 解析后执行真实路径包含检查;符号链接逃逸与不存在的静态引用均阻塞。
37
- - **Vendor root 存在性验证:** 解析后的每个 vendor root 必须验证目标目录存在;缺失时返回明确错误信息指明缺失的具体路径,禁止静默跳过。此规则与 workflow/state/commands/skills 根的验证同等生效。
38
- - `<artifact root="change">` 只能落在当前 change。
39
- - `<artifact root="state">` 只能落在 `<persistence>` 声明的额外命名空间。
40
- - command 报告只能落在 `state/commands/<command>/`,skill 不自行选择路径。
41
- - raw vendor SKILL 只通过同 workflow 的一对一 atomic wrapper 激活;wrapper 先加载 `PERSISTENCE.md`,嵌套 skill 名称继续解析到 wrapper。
@@ -1,80 +0,0 @@
1
- # Matt Pocock Persistence
2
-
3
- 本文件是 `matt-pocock` 的唯一运行契约。`WORKFLOW.md` 与 `atomic-skills/*.md` 只能引用本文件,不得复制 runtime roots、store、change 启动或副作用规则。无论从 workflow 还是 atomic wrapper 进入,都先读取项目根 `speculo/.speculo/workspace.json`,再执行本文件。
4
-
5
- ## 运行时根
6
-
7
- ```xml
8
- <runtime-context>
9
- <root id="workflow" base="workflows" path="matt-pocock" />
10
- <root id="state" base="state" path="matt-pocock" />
11
- <root id="vendor:matt-pocock" base="vendor" path="matt-pocock" />
12
- </runtime-context>
13
- ```
14
-
15
- ## 持久化命名空间
16
-
17
- ```xml
18
- <persistence root="state">
19
- <store id="index" role="index" kind="file" path="status.json" create="initialize" />
20
- <store id="changes" role="active" kind="directory" path="changes" create="initialize" />
21
- <store id="archive" role="archive" kind="directory" path="archive" create="initialize" />
22
- <store id="knowledge" role="knowledge" kind="directory" path="knowledge" create="lazy" consumers="docs-sync,retro,knowledge-prune" />
23
- <store id="policy" role="policy" kind="directory" path="policy" create="lazy" consumers="docs-sync,knowledge-prune" />
24
- <store id="integrations" role="integration" kind="directory" path="integrations" create="lazy" />
25
- <store id="backlog" role="backlog" kind="directory" path="backlog" create="lazy" consumers="retro" />
26
- <store id="legacy-config" role="legacy-knowledge" kind="directory" path=".config" create="existing-only" legacy="true" consumers="docs-sync,retro,knowledge-prune" />
27
- </persistence>
28
- ```
29
-
30
- `status.json`、`changes/` 和 `archive/` 是固定骨架;lazy store 只在产生对应内容并确认长期归属时创建。已有 `.config/` 只读,不接收新内容。
31
-
32
- ## 启动协议
33
-
34
- ```xml
35
- <sequence>
36
- <phase id="resolve-runtime" order="1">
37
- <skill root="skills" path="runtime-context/SKILL.md" activation="required" />
38
- <completion>workspace、config、workflow/state/vendor roots 均已解析并通过边界与存在性检查;同一运行已解析时复用结果。</completion>
39
- </phase>
40
- <phase id="select-change" order="2">
41
- <artifact root="state" path="status.json" />
42
- <completion>已选择用户指定或唯一 active change;没有 active change 时原子创建 `changes/YYYY-MM-DD-&lt;kebab-topic&gt;/.status.json` 并更新索引;多个候选时先消歧。</completion>
43
- </phase>
44
- </sequence>
45
- ```
46
-
47
- 创建 change 时初始化 schema version 1、workflow/name/timestamps、`change_status: active`、空的 `route_history`、`skill_history` 与 `external_refs`。已有 change 缺少这些数组时按空数组读取,在下一次真实更新时补齐,不要求迁移。
48
-
49
- ## 状态字段
50
-
51
- ```xml
52
- <state-schema>
53
- <field name="current_route" type="string|null" />
54
- <field name="route_history" type="array" />
55
- <field name="skill_history" type="array" />
56
- <field name="external_refs" type="array" />
57
- <field name="legacy_source" type="object|null" />
58
- </state-schema>
59
- ```
60
-
61
- - route 调用维护 `current_route` 与 `route_history`;direct atomic 调用保持二者不变。
62
- - 每次 atomic wrapper 调用向 `skill_history` 追加 skill id、`direct|route` 模式、进入/完成时间、结果和真实的项目相对产物路径。
63
- - 外部系统结果只写入 `external_refs`;状态不保存派生绝对路径。
64
-
65
- ## 路径分配
66
-
67
- 1. route 的 `<artifact>` 指针优先,wrapper 使用调用方已声明路径。
68
- 2. direct 调用没有 route 产物声明时,运行时文件由目标 skill 在当前 change 内按需新建;只强制 `change_root` 边界,不强制 `atomic-skills/<id>` 子目录。
69
- 3. 项目代码、测试和用户明确要求的项目文档属于项目产物,可写入经确认的项目相对路径;同时把验证或结果指针记录到当前 change。
70
- 4. 长期知识、规则和集成配置先在 change 中形成,经确认后才写入已声明的 lazy store。raw skill 中的 `CONTEXT.md`、ADR、`docs/agents/`、`.out-of-scope/` 等逻辑位置分别映射到 `knowledge`、`integrations` 或 `policy`,不在项目根自行创建私有运行状态。
71
- 5. 临时原型、数据库、脚本和报告必须删除或吸收;保留的结论写入当前 change。raw skill 指向系统临时目录、当前目录或 `.scratch/` 时,同样受本规则约束。
72
-
73
- raw skill 内部提及另一个 `/skill` 时,解析到 `atomic-skills/<skill-id>.md`;只有该 wrapper 可以直接引用对应 vendor `SKILL.md`。
74
-
75
- ## 副作用边界
76
-
77
- - 发布 issue、评论、标签,写 secret,启动后台 agent,提交代码,继续 merge/rebase,合并或删除 worktree 前,展示动作与目标并取得明确确认。
78
- - 已确认动作的结果、URL、commit 或失败状态写入 `external_refs`;敏感值不得写入 change 或状态。
79
- - vendor 内容保持只读;所有路径改写和确认规则由本文件提供。
80
-
@@ -1,103 +0,0 @@
1
- ---
2
- id: matt-pocock
3
- type: workflow
4
- workflow: matt-pocock
5
- name: Matt Pocock Workflow
6
- description: 以路由和原子入口组合 Matt Pocock skills,并共享同一持久化契约
7
- keywords: [matt-pocock, engineering, productivity, grilling, tdd, review]
8
- ---
9
-
10
- # Matt Pocock Workflow
11
-
12
- 先读取 [PERSISTENCE.md](./PERSISTENCE.md)。该文件是 runtime roots、store、change 启动和副作用边界的唯一来源;本入口只负责选择组合 route 或单个 atomic skill。
13
-
14
- ## 进入协议
15
-
16
- ```xml
17
- <sequence>
18
- <phase id="load-persistence" order="1">
19
- <instructions root="workflow" path="PERSISTENCE.md" activation="required" />
20
- <completion>runtime context 与 current change 已按唯一持久化契约解析。</completion>
21
- </phase>
22
- <phase id="route" order="2">
23
- <instructions root="workflow" path="atomic-skills/ask-matt.md" activation="required" />
24
- <completion>已根据用户意图选择一个组合 route 或 atomic skill;歧义时一次只澄清一个决策。</completion>
25
- </phase>
26
- <phase id="lazy-config" order="3">
27
- <instructions root="workflow" path="routes/setup.md" />
28
- <when>目标 route 依赖尚未配置的 tracker、triage 或 domain 文档。</when>
29
- <completion>只补齐目标 route 必需的私有 namespace。</completion>
30
- </phase>
31
- </sequence>
32
- ```
33
-
34
- ## 路由
35
-
36
- ```xml
37
- <routes>
38
- <route id="idea-to-delivery" order="1" root="workflow" path="routes/idea-to-delivery.md"><when>用户要把想法、需求或明确任务推进为规范、实现和交付。</when></route>
39
- <route id="wayfinder" order="2" root="workflow" path="routes/wayfinder.md"><when>目标庞大且跨多个上下文窗口,通往终点的决策路径仍不可见。</when></route>
40
- <route id="triage" order="3" root="workflow" path="routes/triage.md"><when>需要分类收到的 issue 或外部 PR/MR。</when></route>
41
- <route id="diagnose" order="4" root="workflow" path="routes/diagnose.md"><when>存在疑难 bug、异常、失败或性能回退。</when></route>
42
- <route id="architecture" order="5" root="workflow" path="routes/architecture.md"><when>需要扫描或讨论代码仓深化机会。</when></route>
43
- <route id="review" order="6" root="workflow" path="routes/review.md"><when>需要从固定点审查 diff 或作为实现收尾。</when></route>
44
- <route id="merge-conflicts" order="7" root="workflow" path="routes/merge-conflicts.md"><when>仓库正处于 merge 或 rebase 冲突中。</when></route>
45
- <route id="research-prototype" order="8" root="workflow" path="routes/research-prototype.md"><when>需要一手资料研究或一次性原型回答单个设计问题。</when></route>
46
- <route id="productivity" order="9" root="workflow" path="routes/productivity.md"><when>需要 handoff、教学或 skill 写作指导。</when></route>
47
- <route id="experimental" order="10" root="workflow" path="routes/experimental.md"><when>用户明确要求使用 vendor/in-progress 中的实验能力。</when></route>
48
- </routes>
49
- ```
50
-
51
- ## 原子能力
52
-
53
- ```xml
54
- <atomic-skills source-root="vendor:matt-pocock" coverage="complete">
55
- <atomic-skill id="ask-matt" order="1" root="workflow" path="atomic-skills/ask-matt.md"><when>询问应使用哪种 skill 或 route。</when></atomic-skill>
56
- <atomic-skill id="claude-handoff" order="2" root="workflow" path="atomic-skills/claude-handoff.md"><when>明确要求把会话交给 Claude 后台 agent。</when></atomic-skill>
57
- <atomic-skill id="code-review" order="3" root="workflow" path="atomic-skills/code-review.md"><when>从固定点进行标准与规范双轴审查。</when></atomic-skill>
58
- <atomic-skill id="codebase-design" order="4" root="workflow" path="atomic-skills/codebase-design.md"><when>设计深层模块、接口或 seam。</when></atomic-skill>
59
- <atomic-skill id="diagnosing-bugs" order="5" root="workflow" path="atomic-skills/diagnosing-bugs.md"><when>以反馈循环诊断疑难 bug 或性能回退。</when></atomic-skill>
60
- <atomic-skill id="domain-modeling" order="6" root="workflow" path="atomic-skills/domain-modeling.md"><when>精炼领域词汇、上下文或 ADR。</when></atomic-skill>
61
- <atomic-skill id="grill-me" order="7" root="workflow" path="atomic-skills/grill-me.md"><when>用户明确要求对计划或设计进行访谈打磨。</when></atomic-skill>
62
- <atomic-skill id="grill-with-docs" order="8" root="workflow" path="atomic-skills/grill-with-docs.md"><when>在已有代码仓中访谈并同步领域决策。</when></atomic-skill>
63
- <atomic-skill id="grilling" order="9" root="workflow" path="atomic-skills/grilling.md"><when>其他能力需要复用逐问访谈循环。</when></atomic-skill>
64
- <atomic-skill id="handoff" order="10" root="workflow" path="atomic-skills/handoff.md"><when>用户明确要求为另一个会话保存交接上下文。</when></atomic-skill>
65
- <atomic-skill id="implement" order="11" root="workflow" path="atomic-skills/implement.md"><when>用户明确要求实现既有 spec 或 tickets。</when></atomic-skill>
66
- <atomic-skill id="improve-codebase-architecture" order="12" root="workflow" path="atomic-skills/improve-codebase-architecture.md"><when>用户明确要求扫描架构深化机会。</when></atomic-skill>
67
- <atomic-skill id="loop-me" order="13" root="workflow" path="atomic-skills/loop-me.md"><when>用户明确要求实验性的工作流规格访谈。</when></atomic-skill>
68
- <atomic-skill id="prototype" order="14" root="workflow" path="atomic-skills/prototype.md"><when>用一次性逻辑或 UI 原型回答设计问题。</when></atomic-skill>
69
- <atomic-skill id="research" order="15" root="workflow" path="atomic-skills/research.md"><when>需要以一手来源调查问题。</when></atomic-skill>
70
- <atomic-skill id="resolving-merge-conflicts" order="16" root="workflow" path="atomic-skills/resolving-merge-conflicts.md"><when>解决进行中的 merge 或 rebase 冲突。</when></atomic-skill>
71
- <atomic-skill id="setup-matt-pocock-skills" order="17" root="workflow" path="atomic-skills/setup-matt-pocock-skills.md"><when>用户明确要求配置 tracker、标签或领域布局。</when></atomic-skill>
72
- <atomic-skill id="tdd" order="18" root="workflow" path="atomic-skills/tdd.md"><when>以红绿重构循环构建一个垂直切片。</when></atomic-skill>
73
- <atomic-skill id="teach" order="19" root="workflow" path="atomic-skills/teach.md"><when>用户明确要求跨会话学习主题。</when></atomic-skill>
74
- <atomic-skill id="to-spec" order="20" root="workflow" path="atomic-skills/to-spec.md"><when>用户明确要求把既有讨论综合为 spec。</when></atomic-skill>
75
- <atomic-skill id="to-tickets" order="21" root="workflow" path="atomic-skills/to-tickets.md"><when>用户明确要求把计划或 spec 拆为 tickets。</when></atomic-skill>
76
- <atomic-skill id="triage" order="22" root="workflow" path="atomic-skills/triage.md"><when>用户明确要求分类 issue 或外部 PR。</when></atomic-skill>
77
- <atomic-skill id="wayfinder" order="23" root="workflow" path="atomic-skills/wayfinder.md"><when>用户明确要求为大型模糊目标建立调查地图。</when></atomic-skill>
78
- <atomic-skill id="wizard" order="24" root="workflow" path="atomic-skills/wizard.md"><when>用户明确要求实验性生成交互式 bash 向导。</when></atomic-skill>
79
- <atomic-skill id="writing-beats" order="25" root="workflow" path="atomic-skills/writing-beats.md"><when>用户明确要求用节拍路径组装文章。</when></atomic-skill>
80
- <atomic-skill id="writing-fragments" order="26" root="workflow" path="atomic-skills/writing-fragments.md"><when>用户明确要求访谈并积累写作碎片。</when></atomic-skill>
81
- <atomic-skill id="writing-great-skills" order="27" root="workflow" path="atomic-skills/writing-great-skills.md"><when>用户明确要求设计或审查 skill。</when></atomic-skill>
82
- <atomic-skill id="writing-shape" order="28" root="workflow" path="atomic-skills/writing-shape.md"><when>用户明确要求逐段塑造文章结构。</when></atomic-skill>
83
- </atomic-skills>
84
- ```
85
-
86
- ## 依赖与状态转移
87
-
88
- ```xml
89
- <dependencies>
90
- <dependency kind="hard" root="vendor:matt-pocock" path="README.md">选择本 workflow 时必须安装完整 matt-pocock vendor 目录。</dependency>
91
- </dependencies>
92
- ```
93
-
94
- ```xml
95
- <transitions>
96
- <transition from="route" to="phase"><when>route 已选定且所需 namespace 可用。</when></transition>
97
- <transition from="phase" to="route"><when>当前能力完成并需要进入另一条路线;同一目标继续复用当前 change。</when></transition>
98
- <transition from="active" to="archived">
99
- <command root="commands" path="finalize.md" />
100
- <when>用户确认交付边界且完成门禁通过。</when>
101
- </transition>
102
- </transitions>
103
- ```
@@ -1,21 +0,0 @@
1
- ---
2
- id: ask-matt
3
- type: atomic-skill
4
- workflow: matt-pocock
5
- name: Ask Matt
6
- description: 为当前情况选择合适的 Matt Pocock skill 或 route。
7
- stability: stable
8
- invocation: user-only
9
- ---
10
-
11
- # Ask Matt
12
-
13
- 直接调用前必须读取 [PERSISTENCE.md](../PERSISTENCE.md)。
14
-
15
- ```xml
16
- <sequence>
17
- <phase id="load-persistence" order="1"><instructions root="workflow" path="PERSISTENCE.md" activation="required" /><completion>current change 与写入边界已解析。</completion></phase>
18
- <phase id="invoke" order="2"><skill root="vendor:matt-pocock" path="engineering/ask-matt/SKILL.md" activation="adapted" /><completion>目标 skill 已执行并记录 skill history;后续 skill 名称继续解析到本目录 wrapper。</completion></phase>
19
- </sequence>
20
- ```
21
-
@@ -1,21 +0,0 @@
1
- ---
2
- id: claude-handoff
3
- type: atomic-skill
4
- workflow: matt-pocock
5
- name: Claude Handoff
6
- description: 将当前对话交给新的 Claude 后台 agent。
7
- stability: experimental
8
- invocation: user-only
9
- ---
10
-
11
- # Claude Handoff
12
-
13
- 本能力不稳定,仅在用户明确要求时启用。直接调用前必须读取 [PERSISTENCE.md](../PERSISTENCE.md)。
14
-
15
- ```xml
16
- <sequence>
17
- <phase id="load-persistence" order="1"><instructions root="workflow" path="PERSISTENCE.md" activation="required" /><completion>current change 与后台 agent 确认边界已解析。</completion></phase>
18
- <phase id="invoke" order="2"><skill root="vendor:matt-pocock" path="in-progress/claude-handoff/SKILL.md" activation="adapted" /><completion>目标 skill 已执行;启动结果已脱敏并记录到 skill history/external refs。</completion></phase>
19
- </sequence>
20
- ```
21
-
@@ -1,21 +0,0 @@
1
- ---
2
- id: code-review
3
- type: atomic-skill
4
- workflow: matt-pocock
5
- name: Code Review
6
- description: 从固定点执行标准与规范双轴代码审查。
7
- stability: stable
8
- invocation: model-allowed
9
- ---
10
-
11
- # Code Review
12
-
13
- 直接调用前必须读取 [PERSISTENCE.md](../PERSISTENCE.md)。
14
-
15
- ```xml
16
- <sequence>
17
- <phase id="load-persistence" order="1"><instructions root="workflow" path="PERSISTENCE.md" activation="required" /><completion>current change 与写入边界已解析。</completion></phase>
18
- <phase id="invoke" order="2"><skill root="vendor:matt-pocock" path="engineering/code-review/SKILL.md" activation="adapted" /><completion>双轴结果已返回,实际报告路径已记录到 skill history。</completion></phase>
19
- </sequence>
20
- ```
21
-
@@ -1,21 +0,0 @@
1
- ---
2
- id: codebase-design
3
- type: atomic-skill
4
- workflow: matt-pocock
5
- name: Codebase Design
6
- description: 使用深层模块词汇设计接口与 seam。
7
- stability: stable
8
- invocation: model-allowed
9
- ---
10
-
11
- # Codebase Design
12
-
13
- 直接调用前必须读取 [PERSISTENCE.md](../PERSISTENCE.md)。
14
-
15
- ```xml
16
- <sequence>
17
- <phase id="load-persistence" order="1"><instructions root="workflow" path="PERSISTENCE.md" activation="required" /><completion>current change 与知识边界已解析。</completion></phase>
18
- <phase id="invoke" order="2"><skill root="vendor:matt-pocock" path="engineering/codebase-design/SKILL.md" activation="adapted" /><completion>设计结论已返回,实际产物路径已记录到 skill history。</completion></phase>
19
- </sequence>
20
- ```
21
-
@@ -1,21 +0,0 @@
1
- ---
2
- id: diagnosing-bugs
3
- type: atomic-skill
4
- workflow: matt-pocock
5
- name: Diagnosing Bugs
6
- description: 用紧凑反馈循环诊断疑难 bug 或性能回退。
7
- stability: stable
8
- invocation: model-allowed
9
- ---
10
-
11
- # Diagnosing Bugs
12
-
13
- 直接调用前必须读取 [PERSISTENCE.md](../PERSISTENCE.md)。
14
-
15
- ```xml
16
- <sequence>
17
- <phase id="load-persistence" order="1"><instructions root="workflow" path="PERSISTENCE.md" activation="required" /><completion>current change 与诊断产物边界已解析。</completion></phase>
18
- <phase id="invoke" order="2"><skill root="vendor:matt-pocock" path="engineering/diagnosing-bugs/SKILL.md" activation="adapted" /><completion>诊断结果与回归证据已返回,路径已记录到 skill history。</completion></phase>
19
- </sequence>
20
- ```
21
-
@@ -1,21 +0,0 @@
1
- ---
2
- id: domain-modeling
3
- type: atomic-skill
4
- workflow: matt-pocock
5
- name: Domain Modeling
6
- description: 精炼领域词汇、上下文和架构决策。
7
- stability: stable
8
- invocation: model-allowed
9
- ---
10
-
11
- # Domain Modeling
12
-
13
- 直接调用前必须读取 [PERSISTENCE.md](../PERSISTENCE.md)。
14
-
15
- ```xml
16
- <sequence>
17
- <phase id="load-persistence" order="1"><instructions root="workflow" path="PERSISTENCE.md" activation="required" /><completion>current change 与 knowledge namespace 已解析。</completion></phase>
18
- <phase id="invoke" order="2"><skill root="vendor:matt-pocock" path="engineering/domain-modeling/SKILL.md" activation="adapted" /><completion>术语与决策先在 change 中形成,确认后的长期路径已记录。</completion></phase>
19
- </sequence>
20
- ```
21
-
@@ -1,21 +0,0 @@
1
- ---
2
- id: grill-me
3
- type: atomic-skill
4
- workflow: matt-pocock
5
- name: Grill Me
6
- description: 通过逐问访谈打磨计划或设计。
7
- stability: stable
8
- invocation: user-only
9
- ---
10
-
11
- # Grill Me
12
-
13
- 直接调用前必须读取 [PERSISTENCE.md](../PERSISTENCE.md)。
14
-
15
- ```xml
16
- <sequence>
17
- <phase id="load-persistence" order="1"><instructions root="workflow" path="PERSISTENCE.md" activation="required" /><completion>current change 与访谈记录边界已解析。</completion></phase>
18
- <phase id="invoke" order="2"><skill root="vendor:matt-pocock" path="productivity/grill-me/SKILL.md" activation="adapted" /><completion>访谈已收敛或明确 blocked,记录路径已写入 skill history。</completion></phase>
19
- </sequence>
20
- ```
21
-
@@ -1,21 +0,0 @@
1
- ---
2
- id: grill-with-docs
3
- type: atomic-skill
4
- workflow: matt-pocock
5
- name: Grill With Docs
6
- description: 在代码仓中访谈并同步领域语言与决策。
7
- stability: stable
8
- invocation: user-only
9
- ---
10
-
11
- # Grill With Docs
12
-
13
- 直接调用前必须读取 [PERSISTENCE.md](../PERSISTENCE.md)。
14
-
15
- ```xml
16
- <sequence>
17
- <phase id="load-persistence" order="1"><instructions root="workflow" path="PERSISTENCE.md" activation="required" /><completion>current change 与 knowledge namespace 已解析。</completion></phase>
18
- <phase id="invoke" order="2"><skill root="vendor:matt-pocock" path="engineering/grill-with-docs/SKILL.md" activation="adapted" /><completion>访谈与确认后的知识路径已记录到 skill history。</completion></phase>
19
- </sequence>
20
- ```
21
-
@@ -1,21 +0,0 @@
1
- ---
2
- id: grilling
3
- type: atomic-skill
4
- workflow: matt-pocock
5
- name: Grilling
6
- description: 复用逐问访谈循环直至关键分支清晰。
7
- stability: stable
8
- invocation: model-allowed
9
- ---
10
-
11
- # Grilling
12
-
13
- 直接调用前必须读取 [PERSISTENCE.md](../PERSISTENCE.md)。
14
-
15
- ```xml
16
- <sequence>
17
- <phase id="load-persistence" order="1"><instructions root="workflow" path="PERSISTENCE.md" activation="required" /><completion>current change 与访谈记录边界已解析。</completion></phase>
18
- <phase id="invoke" order="2"><skill root="vendor:matt-pocock" path="productivity/grilling/SKILL.md" activation="adapted" /><completion>访谈决策已返回,记录路径已写入 skill history。</completion></phase>
19
- </sequence>
20
- ```
21
-
@@ -1,21 +0,0 @@
1
- ---
2
- id: handoff
3
- type: atomic-skill
4
- workflow: matt-pocock
5
- name: Handoff
6
- description: 为另一个 agent 或会话保存脱敏交接文档。
7
- stability: stable
8
- invocation: user-only
9
- ---
10
-
11
- # Handoff
12
-
13
- 直接调用前必须读取 [PERSISTENCE.md](../PERSISTENCE.md)。
14
-
15
- ```xml
16
- <sequence>
17
- <phase id="load-persistence" order="1"><instructions root="workflow" path="PERSISTENCE.md" activation="required" /><completion>current change 已替代 raw 临时目录作为持久化边界。</completion></phase>
18
- <phase id="invoke" order="2"><skill root="vendor:matt-pocock" path="productivity/handoff/SKILL.md" activation="adapted" /><completion>脱敏交接文档路径已记录到 skill history。</completion></phase>
19
- </sequence>
20
- ```
21
-
@@ -1,21 +0,0 @@
1
- ---
2
- id: implement
3
- type: atomic-skill
4
- workflow: matt-pocock
5
- name: Implement
6
- description: 基于既有 spec 或 tickets 实现并验证工作。
7
- stability: stable
8
- invocation: user-only
9
- ---
10
-
11
- # Implement
12
-
13
- 直接调用前必须读取 [PERSISTENCE.md](../PERSISTENCE.md)。
14
-
15
- ```xml
16
- <sequence>
17
- <phase id="load-persistence" order="1"><instructions root="workflow" path="PERSISTENCE.md" activation="required" /><completion>current change、项目产物与确认边界已解析。</completion></phase>
18
- <phase id="invoke" order="2"><skill root="vendor:matt-pocock" path="engineering/implement/SKILL.md" activation="adapted" /><completion>实现与验证结果已返回;项目变更和运行记录各自位于正确边界。</completion></phase>
19
- </sequence>
20
- ```
21
-