@namewta/speculo 0.2.3 → 0.2.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.
Files changed (131) 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 +1 -1
  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/references/workflow-scope-contract.md +3 -3
  29. package/template/skills/speculo-retro/SKILL.md +1 -1
  30. package/template/skills/speculo-retro/references/issue-drafting-sop.md +1 -1
  31. package/template/skills/worktree-isolation/references/merge-and-cleanup.md +2 -2
  32. package/template/vendor/README.md +3 -3
  33. package/template/vendor/khazix-skills/neat-freak/SKILL.md +210 -0
  34. package/template/vendor/khazix-skills/neat-freak/references/agent-paths.md +72 -0
  35. package/template/vendor/khazix-skills/neat-freak/references/governance.md +88 -0
  36. package/template/vendor/khazix-skills/neat-freak/references/sync-matrix.md +77 -0
  37. package/template/vendor/khazix-skills/neat-freak/references/verification.md +92 -0
  38. package/template/vendor/khazix-skills/neat-freak/scripts/audit-inventory.sh +106 -0
  39. package/template/workflows/person/INDEX.md +12 -0
  40. package/template/workflows/person/M-mao-zedong-cognitive-os/M-mao-zedong-cognitive-os.md +73 -74
  41. package/template/workflows/specdev/D-diagnose-bugs/D-diagnose-bugs.md +85 -0
  42. package/template/workflows/specdev/D-diagnose-bugs/cleanup-postmortem.md +37 -0
  43. package/template/workflows/specdev/D-diagnose-bugs/feedback-loop-techniques.md +84 -0
  44. package/template/workflows/specdev/D-diagnose-bugs/hypothesis-format.md +46 -0
  45. package/template/workflows/specdev/D-diagnose-bugs/instrumentation-rules.md +51 -0
  46. package/template/workflows/specdev/G-grill-with-docs/G-grill-with-docs.md +54 -0
  47. package/template/workflows/specdev/G-grill-with-docs/adr-format.md +77 -0
  48. package/template/workflows/specdev/G-grill-with-docs/context-format.md +63 -0
  49. package/template/workflows/specdev/G-grill-with-docs/domain-modeling-rules.md +93 -0
  50. package/template/workflows/specdev/G-grill-with-docs/grilling-protocol.md +54 -0
  51. package/template/workflows/specdev/G-grill-with-docs/log-format.md +99 -0
  52. package/template/workflows/specdev/I-implement/I-implement.md +85 -0
  53. package/template/workflows/specdev/I-implement/code-review-process.md +83 -0
  54. package/template/workflows/specdev/I-implement/codebase-design-glossary.md +109 -0
  55. package/template/workflows/specdev/I-implement/deepening.md +37 -0
  56. package/template/workflows/specdev/I-implement/design-it-twice.md +44 -0
  57. package/template/workflows/specdev/I-implement/tdd-examples.md +139 -0
  58. package/template/workflows/specdev/I-implement/tdd-rules.md +31 -0
  59. package/template/workflows/specdev/I-init-setup/I-init-setup.md +132 -0
  60. package/template/workflows/specdev/I-init-setup/domain-layout.md +90 -0
  61. package/template/workflows/specdev/I-init-setup/status-labels.md +54 -0
  62. package/template/workflows/specdev/I-init-setup/tracking-convention.md +58 -0
  63. package/template/workflows/specdev/INDEX.md +88 -0
  64. package/template/workflows/specdev/S-spec/S-spec.md +91 -0
  65. package/template/workflows/specdev/T-tickets/T-tickets.md +241 -0
  66. package/template/workflows/specdev/W-wayfinder/W-wayfinder.md +209 -0
  67. package/template/workflows/specdev/_state/adr/.gitkeep +0 -0
  68. package/template/workflows/specdev/_state/archive/.gitkeep +0 -0
  69. package/template/workflows/specdev/_state/changes/.gitkeep +0 -0
  70. package/template/workflows/specdev/_state/context/.gitkeep +0 -0
  71. package/template/workflows/{matt-pocock → specdev}/_state/status.json +1 -1
  72. package/template/commands/finalize.md +0 -37
  73. package/template/commands/knowledge-prune.md +0 -20
  74. package/template/skills/change-lifecycle/SKILL.md +0 -25
  75. package/template/skills/change-lifecycle/assets/completion-summary-template.md +0 -25
  76. package/template/skills/change-lifecycle/assets/completion-verification-template.md +0 -29
  77. package/template/skills/change-lifecycle/references/completion-gate.md +0 -19
  78. package/template/skills/change-lifecycle/references/finalize-archive.md +0 -32
  79. package/template/skills/knowledge-prune/SKILL.md +0 -29
  80. package/template/skills/knowledge-prune/references/audit-rules.md +0 -24
  81. package/template/skills/runtime-context/SKILL.md +0 -54
  82. package/template/skills/runtime-context/references/path-resolution.md +0 -41
  83. package/template/workflows/matt-pocock/PERSISTENCE.md +0 -80
  84. package/template/workflows/matt-pocock/WORKFLOW.md +0 -103
  85. package/template/workflows/matt-pocock/_state/archive/.gitkeep +0 -1
  86. package/template/workflows/matt-pocock/_state/changes/.gitkeep +0 -1
  87. package/template/workflows/matt-pocock/atomic-skills/ask-matt.md +0 -21
  88. package/template/workflows/matt-pocock/atomic-skills/claude-handoff.md +0 -21
  89. package/template/workflows/matt-pocock/atomic-skills/code-review.md +0 -21
  90. package/template/workflows/matt-pocock/atomic-skills/codebase-design.md +0 -21
  91. package/template/workflows/matt-pocock/atomic-skills/diagnosing-bugs.md +0 -21
  92. package/template/workflows/matt-pocock/atomic-skills/domain-modeling.md +0 -21
  93. package/template/workflows/matt-pocock/atomic-skills/grill-me.md +0 -21
  94. package/template/workflows/matt-pocock/atomic-skills/grill-with-docs.md +0 -21
  95. package/template/workflows/matt-pocock/atomic-skills/grilling.md +0 -21
  96. package/template/workflows/matt-pocock/atomic-skills/handoff.md +0 -21
  97. package/template/workflows/matt-pocock/atomic-skills/implement.md +0 -21
  98. package/template/workflows/matt-pocock/atomic-skills/improve-codebase-architecture.md +0 -21
  99. package/template/workflows/matt-pocock/atomic-skills/loop-me.md +0 -21
  100. package/template/workflows/matt-pocock/atomic-skills/prototype.md +0 -21
  101. package/template/workflows/matt-pocock/atomic-skills/research.md +0 -21
  102. package/template/workflows/matt-pocock/atomic-skills/resolving-merge-conflicts.md +0 -21
  103. package/template/workflows/matt-pocock/atomic-skills/setup-matt-pocock-skills.md +0 -21
  104. package/template/workflows/matt-pocock/atomic-skills/tdd.md +0 -21
  105. package/template/workflows/matt-pocock/atomic-skills/teach.md +0 -21
  106. package/template/workflows/matt-pocock/atomic-skills/to-spec.md +0 -21
  107. package/template/workflows/matt-pocock/atomic-skills/to-tickets.md +0 -21
  108. package/template/workflows/matt-pocock/atomic-skills/triage.md +0 -21
  109. package/template/workflows/matt-pocock/atomic-skills/wayfinder.md +0 -21
  110. package/template/workflows/matt-pocock/atomic-skills/wizard.md +0 -21
  111. package/template/workflows/matt-pocock/atomic-skills/writing-beats.md +0 -21
  112. package/template/workflows/matt-pocock/atomic-skills/writing-fragments.md +0 -21
  113. package/template/workflows/matt-pocock/atomic-skills/writing-great-skills.md +0 -21
  114. package/template/workflows/matt-pocock/atomic-skills/writing-shape.md +0 -20
  115. package/template/workflows/matt-pocock/routes/architecture.md +0 -24
  116. package/template/workflows/matt-pocock/routes/diagnose.md +0 -22
  117. package/template/workflows/matt-pocock/routes/experimental.md +0 -18
  118. package/template/workflows/matt-pocock/routes/idea-to-delivery.md +0 -63
  119. package/template/workflows/matt-pocock/routes/merge-conflicts.md +0 -19
  120. package/template/workflows/matt-pocock/routes/productivity.md +0 -25
  121. package/template/workflows/matt-pocock/routes/research-prototype.md +0 -20
  122. package/template/workflows/matt-pocock/routes/review.md +0 -19
  123. package/template/workflows/matt-pocock/routes/setup.md +0 -42
  124. package/template/workflows/matt-pocock/routes/triage.md +0 -25
  125. package/template/workflows/matt-pocock/routes/wayfinder.md +0 -27
  126. package/template/workflows/person/PERSISTENCE.md +0 -56
  127. package/template/workflows/person/WORKFLOW.md +0 -50
  128. package/template/workflows/person/_state/.config/LESSONS.md +0 -3
  129. package/template/workflows/person/_state/.config/RULES.md +0 -3
  130. package/template/workflows/person/_state/.config/context/.gitkeep +0 -1
  131. package/template/workflows/person/_templates/mao-consultation-output-template.md +0 -55
@@ -1,25 +0,0 @@
1
- ---
2
- id: change-lifecycle
3
- type: skill
4
- name: Change Lifecycle
5
- description: 验证、完成和归档任意 Speculo workflow change,返回可确认的状态与目录移动计划。
6
- ---
7
-
8
- # Change Lifecycle
9
-
10
- ## 输入
11
-
12
- - `runtime-context` 返回的 workflow、state、changes、archive 和可选 change 根。
13
- - `mode: finalize-active | archive-completed`。
14
- - 当前 route/phase 完成准则、change 状态与可选 worktree 状态。
15
-
16
- ## 流程
17
-
18
- 1. `finalize-active` 按 `references/completion-gate.md` 收集新鲜证据;任一关键结论缺证据即返回 blocked。
19
- 2. 两种模式均按 `references/finalize-archive.md` 验证名称、状态、索引和目标冲突。
20
- 3. 返回状态修改、移动、索引更新和可选 worktree 清理计划,等待调用方取得用户确认。
21
- 4. 调用方执行后重新读取源、目标、change 状态和 workflow 索引;存在部分完成即返回 blocked。
22
-
23
- 完成标准:返回 `verified | blocked | archived` 中唯一裁决及完整证据;本 skill 未自行持久化或执行未确认的破坏性动作。
24
-
25
- 报告模板见 `assets/completion-verification-template.md` 与 `assets/completion-summary-template.md`。
@@ -1,25 +0,0 @@
1
- > **服务命令:** `../../../commands/finalize.md`
2
- > **产物文件名:** `completion-summary.md`
3
- > **父目录规则:** 本模板产物写入 `YYYY-MM-DD-<kebab-name>/` change 目录内
4
-
5
- # Completion Summary
6
-
7
- ## 交付边界
8
-
9
- [TODO: 本 change 交付了什么、不含什么。]
10
-
11
- ## 关键变更
12
-
13
- [TODO: 用 3-6 条概括主要变更。]
14
-
15
- ## 验证证据
16
-
17
- [TODO: 指向 `completion-verification.md` 的关键结论与命令证据。]
18
-
19
- ## 遗留事项
20
-
21
- [TODO: 已知遗留、后续建议或转交的工作;无则写"无"。]
22
-
23
- ## 归档记录
24
-
25
- [TODO: 归档时间、源路径 → `speculo/.speculo/<workflow>/archive/<YYYY-MM>/<change>/`、用户确认记录。]
@@ -1,29 +0,0 @@
1
- > **服务命令:** `../../../commands/finalize.md`
2
- > **产物文件名:** `completion-verification.md`
3
- > **父目录规则:** 本模板产物写入 `YYYY-MM-DD-<kebab-name>/` change 目录内
4
-
5
- # Completion Verification
6
-
7
- ## 已运行命令(含证据)
8
-
9
- [TODO: 逐条记录本次运行的验证命令、退出码、通过/失败计数;无证据不得声称通过。]
10
-
11
- ## 未运行命令
12
-
13
- [TODO: 列出相关但未运行的命令及原因;对应结论不得声称通过。]
14
-
15
- ## 需求逐项核对
16
-
17
- [TODO: 重读来源,逐项列出需求 + satisfied/missing/partial + 来源引用。]
18
-
19
- ## 回归证据(如适用)
20
-
21
- [TODO: 记录红-绿循环验证;无 bug 修复可写 N/A。]
22
-
23
- ## 调试残留检查
24
-
25
- [TODO: 临时日志、DEBUG 标记、一次性脚本、推测性功能的清理结果。]
26
-
27
- ## 验证结论
28
-
29
- [TODO: verified 或 blocked;blocked 时写明实际状态与缺口。]
@@ -1,19 +0,0 @@
1
- # Completion Verification
2
-
3
- 本门控只服务 `finalize-active`。没有本次运行的新鲜证据时返回 blocked。
4
-
5
- ## 输入与产物
6
-
7
- - 输入:当前 change 产物、route/phase 完成准则、需求来源、VCS diff 和项目验证命令。
8
- - 产物:当前 change 下的 `completion-verification.md`,使用 `../assets/completion-verification-template.md`。
9
-
10
- ## 门控
11
-
12
- 1. 运行相关测试、类型检查、lint 和构建,逐条记录命令、退出码与通过/失败计数。
13
- 2. 重读 PRD、issue、spec 或用户任务,逐项标记 `satisfied | missing | partial` 并引用来源。
14
- 3. Bug 修复确认回归测试经过红、绿、回退修复再红、恢复再绿;无法证明时记录缺口。
15
- 4. 子代理参与时以 VCS diff 和实际文件为证据,不使用代理自报结论。
16
- 5. 搜索调试日志、一次性脚本、DEBUG 标记和未启用功能,清理或记录阻塞。
17
- 6. 全部关键项有证据时写 `verification_status: verified`,否则写 `blocked` 并停止归档。
18
-
19
- 完成标准:需求清单与每项结论均有新鲜证据,产物无 `[TODO:]`,change 状态已记录验证命令、需求清单和裁决。
@@ -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
-