@namewta/speculo 0.1.0

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 (130) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +89 -0
  3. package/dist/src/cli.d.ts +2 -0
  4. package/dist/src/cli.js +58 -0
  5. package/dist/src/cli.js.map +1 -0
  6. package/dist/src/index.d.ts +10 -0
  7. package/dist/src/index.js +60 -0
  8. package/dist/src/index.js.map +1 -0
  9. package/dist/src/utils.d.ts +1 -0
  10. package/dist/src/utils.js +11 -0
  11. package/dist/src/utils.js.map +1 -0
  12. package/package.json +54 -0
  13. package/speculo/.speculo/.config/LESSONS.md +9 -0
  14. package/speculo/.speculo/.config/RULES.md +9 -0
  15. package/speculo/.speculo/.config/adr/.gitkeep +1 -0
  16. package/speculo/.speculo/.config/context/.gitkeep +1 -0
  17. package/speculo/.speculo/archive/dev/.gitkeep +0 -0
  18. package/speculo/.speculo/archive/doc/.gitkeep +1 -0
  19. package/speculo/.speculo/commands/.gitkeep +0 -0
  20. package/speculo/.speculo/dev/.gitkeep +0 -0
  21. package/speculo/.speculo/dev/docs-sync-state.json +14 -0
  22. package/speculo/.speculo/dev-status.json +3 -0
  23. package/speculo/.speculo/doc/.gitkeep +1 -0
  24. package/speculo/.speculo/doc-status.json +3 -0
  25. package/speculo/commands/archive.md +53 -0
  26. package/speculo/commands/caveman.md +43 -0
  27. package/speculo/commands/grill-me.md +42 -0
  28. package/speculo/commands/handoff.md +42 -0
  29. package/speculo/commands/scaffold-exercises.md +50 -0
  30. package/speculo/commands/status.md +51 -0
  31. package/speculo/commands/write-a-skill.md +46 -0
  32. package/speculo/skills/caveman/SKILL.md +38 -0
  33. package/speculo/skills/caveman/references/compression-rules.md +102 -0
  34. package/speculo/skills/github-npm-ops/SKILL.md +53 -0
  35. package/speculo/skills/github-npm-ops/references/ci-and-security-ops.md +178 -0
  36. package/speculo/skills/github-npm-ops/references/failure-recovery.md +132 -0
  37. package/speculo/skills/github-npm-ops/references/issue-pr-triage.md +219 -0
  38. package/speculo/skills/github-npm-ops/references/package-json-checklist.md +171 -0
  39. package/speculo/skills/github-npm-ops/references/preflight-checklist.md +39 -0
  40. package/speculo/skills/github-npm-ops/references/publish-detection.md +68 -0
  41. package/speculo/skills/github-npm-ops/references/release-notes-injection.md +236 -0
  42. package/speculo/skills/github-npm-ops/references/release-pipeline.md +108 -0
  43. package/speculo/skills/github-npm-ops/references/setup-npm-token.md +63 -0
  44. package/speculo/skills/github-npm-ops/references/troubleshooting-playbook.md +305 -0
  45. package/speculo/skills/github-npm-ops/references/version-bump-flow.md +232 -0
  46. package/speculo/skills/github-npm-ops/references/workflow-yaml-reference.md +268 -0
  47. package/speculo/skills/grill-me/SKILL.md +40 -0
  48. package/speculo/skills/handoff/SKILL.md +41 -0
  49. package/speculo/skills/scaffold-exercises/SKILL.md +41 -0
  50. package/speculo/skills/scaffold-exercises/references/exercise-structure.md +85 -0
  51. package/speculo/skills/scaffold-exercises/references/lint-and-git.md +54 -0
  52. package/speculo/skills/speculo-write/SKILL.md +53 -0
  53. package/speculo/skills/speculo-write/references/asset-selection-sop.md +65 -0
  54. package/speculo/skills/speculo-write/references/command-authoring-sop.md +92 -0
  55. package/speculo/skills/speculo-write/references/migration-sop.md +101 -0
  56. package/speculo/skills/speculo-write/references/persistence-contract-sop.md +123 -0
  57. package/speculo/skills/speculo-write/references/skill-authoring-sop.md +195 -0
  58. package/speculo/skills/speculo-write/references/validation-checklist.md +73 -0
  59. package/speculo/skills/speculo-write/references/workflow-authoring-sop.md +130 -0
  60. package/speculo/workflows/dev/00-INDEX.md +56 -0
  61. package/speculo/workflows/dev/01-grill-with-docs/01-grill-with-docs.md +79 -0
  62. package/speculo/workflows/dev/01-grill-with-docs/ADR-FORMAT.md +49 -0
  63. package/speculo/workflows/dev/01-grill-with-docs/CONTEXT-FORMAT.md +65 -0
  64. package/speculo/workflows/dev/01-grill-with-docs/grill-context-scan.md +30 -0
  65. package/speculo/workflows/dev/01-grill-with-docs/grill-decision.md +38 -0
  66. package/speculo/workflows/dev/02-prd/02-prd.md +64 -0
  67. package/speculo/workflows/dev/02-prd/prd-synthesis.md +30 -0
  68. package/speculo/workflows/dev/02-prd/prd-zoom-out.md +29 -0
  69. package/speculo/workflows/dev/03-tdd/03-tdd.md +80 -0
  70. package/speculo/workflows/dev/03-tdd/deep-modules.md +33 -0
  71. package/speculo/workflows/dev/03-tdd/interface-design.md +31 -0
  72. package/speculo/workflows/dev/03-tdd/mocking.md +60 -0
  73. package/speculo/workflows/dev/03-tdd/refactoring.md +10 -0
  74. package/speculo/workflows/dev/03-tdd/tdd-finish.md +28 -0
  75. package/speculo/workflows/dev/03-tdd/tdd-loop.md +33 -0
  76. package/speculo/workflows/dev/03-tdd/tdd-plan.md +30 -0
  77. package/speculo/workflows/dev/03-tdd/tests.md +61 -0
  78. package/speculo/workflows/dev/D-docs-sync/D-docs-sync.md +97 -0
  79. package/speculo/workflows/dev/D-docs-sync/agents-contract.md +95 -0
  80. package/speculo/workflows/dev/D-docs-sync/changelog-contract.md +155 -0
  81. package/speculo/workflows/dev/D-docs-sync/docs-sync-diff.md +50 -0
  82. package/speculo/workflows/dev/D-docs-sync/docs-sync-finish.md +33 -0
  83. package/speculo/workflows/dev/D-docs-sync/docs-sync-state.md +32 -0
  84. package/speculo/workflows/dev/D-docs-sync/docs-sync-update.md +35 -0
  85. package/speculo/workflows/dev/D-docs-sync/readme-contract.md +124 -0
  86. package/speculo/workflows/dev/D-docs-sync/state-json-schema.md +155 -0
  87. package/speculo/workflows/dev/H-diagnose/H-diagnose.md +80 -0
  88. package/speculo/workflows/dev/H-diagnose/diagnose-fix.md +34 -0
  89. package/speculo/workflows/dev/H-diagnose/diagnose-guide.md +114 -0
  90. package/speculo/workflows/dev/H-diagnose/diagnose-loop.md +32 -0
  91. package/speculo/workflows/dev/H-diagnose/scripts/hitl-loop.template.sh +41 -0
  92. package/speculo/workflows/dev/I-to-issues/I-to-issues.md +70 -0
  93. package/speculo/workflows/dev/I-to-issues/issues-slices.md +31 -0
  94. package/speculo/workflows/dev/R-review/R-review.md +82 -0
  95. package/speculo/workflows/dev/R-review/review-setup.md +39 -0
  96. package/speculo/workflows/dev/R-review/review-two-axis.md +33 -0
  97. package/speculo/workflows/dev/_templates/diagnosis-template.md +19 -0
  98. package/speculo/workflows/dev/_templates/docs-sync-report-template.md +28 -0
  99. package/speculo/workflows/dev/_templates/docs-sync-state-template.json +14 -0
  100. package/speculo/workflows/dev/_templates/grill-context-map-template.md +19 -0
  101. package/speculo/workflows/dev/_templates/grill-decision-log-template.md +19 -0
  102. package/speculo/workflows/dev/_templates/issues-slices-template.md +19 -0
  103. package/speculo/workflows/dev/_templates/prd-overview-template.md +19 -0
  104. package/speculo/workflows/dev/_templates/prd-template.md +25 -0
  105. package/speculo/workflows/dev/_templates/regression-template.md +19 -0
  106. package/speculo/workflows/dev/_templates/review-report-template.md +16 -0
  107. package/speculo/workflows/dev/_templates/review-sources-template.md +24 -0
  108. package/speculo/workflows/dev/_templates/tdd-log-template.md +16 -0
  109. package/speculo/workflows/dev/_templates/tdd-plan-template.md +19 -0
  110. package/speculo/workflows/dev/_templates/tdd-verification-template.md +16 -0
  111. package/speculo/workflows/doc/00-INDEX.md +51 -0
  112. package/speculo/workflows/doc/B-writing-beats/B-writing-beats.md +77 -0
  113. package/speculo/workflows/doc/B-writing-beats/writing-beats-append.md +31 -0
  114. package/speculo/workflows/doc/B-writing-beats/writing-beats-options.md +29 -0
  115. package/speculo/workflows/doc/E-edit-article/E-edit-article.md +77 -0
  116. package/speculo/workflows/doc/E-edit-article/edit-article-plan.md +30 -0
  117. package/speculo/workflows/doc/E-edit-article/edit-article-rewrite.md +31 -0
  118. package/speculo/workflows/doc/F-writing-fragments/F-writing-fragments.md +78 -0
  119. package/speculo/workflows/doc/F-writing-fragments/writing-fragments-interview.md +32 -0
  120. package/speculo/workflows/doc/F-writing-fragments/writing-fragments-log.md +29 -0
  121. package/speculo/workflows/doc/S-writing-shape/S-writing-shape.md +79 -0
  122. package/speculo/workflows/doc/S-writing-shape/writing-shape-block.md +32 -0
  123. package/speculo/workflows/doc/S-writing-shape/writing-shape-opening.md +27 -0
  124. package/speculo/workflows/doc/_templates/edit-article-plan-template.md +24 -0
  125. package/speculo/workflows/doc/_templates/edit-article-template.md +6 -0
  126. package/speculo/workflows/doc/_templates/writing-article-template.md +6 -0
  127. package/speculo/workflows/doc/_templates/writing-beat-options-template.md +20 -0
  128. package/speculo/workflows/doc/_templates/writing-fragments-template.md +6 -0
  129. package/speculo/workflows/doc/_templates/writing-interview-log-template.md +20 -0
  130. package/speculo/workflows/doc/_templates/writing-shape-log-template.md +24 -0
@@ -0,0 +1,92 @@
1
+ # Command Authoring SOP
2
+
3
+ ## 入口结构
4
+
5
+ command 是单个 Markdown 文件:
6
+
7
+ ```text
8
+ speculo/commands/<name>.md
9
+ ```
10
+
11
+ 只要需要多阶段状态机、多个子规范或跨天交付,就升级为 workflow。
12
+
13
+ ## Frontmatter
14
+
15
+ ```yaml
16
+ ---
17
+ id: <name>
18
+ type: command
19
+ name: <人类可读名>
20
+ description: <一句话用途>
21
+ keywords: [<关键词>]
22
+ ---
23
+ ```
24
+
25
+ frontmatter 只写发现元数据。调用 skill、产物路径和破坏性边界写正文。
26
+
27
+ ## 正文结构
28
+
29
+ command 正文包含:
30
+
31
+ - `## 归档路径模式`
32
+ - `## 调用的 skills`
33
+ - `## 执行步骤`
34
+ - `## 产物模板`
35
+
36
+ 产物路径默认:
37
+
38
+ ```text
39
+ .speculo/commands/<YYYY-MM-DD>-<command>-<topic>/
40
+ ```
41
+
42
+ ## 调用 Skill
43
+
44
+ 如需复用 skill,用相对路径列出:
45
+
46
+ ```markdown
47
+ - `../skills/<name>/SKILL.md`:<何时读取>
48
+ ```
49
+
50
+ skill 输出归档到 command 产物目录。skill 自身不写 `.speculo/`。
51
+
52
+ ## 破坏性操作
53
+
54
+ 涉及目录移动、删除、外部 API、发布或归档时,command 必须:
55
+
56
+ 1. 先列影响清单
57
+ 2. 明确将修改哪些路径或外部资源
58
+ 3. 等待用户确认
59
+ 4. 执行后写报告
60
+
61
+ 没有确认时只输出计划,不执行破坏性动作。
62
+
63
+ ## 内联模板
64
+
65
+ command 产物模板内联在文件末尾。模板占位符使用 `[TODO: ...]`。
66
+
67
+ 适合内联模板的产物:
68
+
69
+ - status 快照
70
+ - archive 报告
71
+ - handoff pointer
72
+ - 一次性操作报告
73
+
74
+ 不适合 command 的产物:
75
+
76
+ - 多阶段 PRD
77
+ - TDD log
78
+ - 文档同步状态
79
+ - 跨多轮写作稿件
80
+
81
+ 这些应由 workflow 管理。
82
+
83
+ ## 更新检查
84
+
85
+ 新增 command 后检查:
86
+
87
+ - 项目若有 `docs/quick-reference.md` 等入口索引,是否需要新增条目
88
+ - README 内置入口列表
89
+ - CLI tests 是否需要断言复制该 command
90
+ - 是否需要新增 command 调用的 skill
91
+
92
+ `.speculo/commands/` 归档路径、frontmatter 最小集与写入责任见 `persistence-contract-sop.md`。
@@ -0,0 +1,101 @@
1
+ # Migration SOP
2
+
3
+ ## 目标
4
+
5
+ 把外部技能、旧 workflow、参考项目资产或临时目录内容,迁移成符合当前 Speculo 规范的 workflow、skill 或 command。
6
+
7
+ ## 读取顺序
8
+
9
+ 1. 读取本 skill 对应资产类型的 `references/`(`workflow-authoring-sop.md` / `skill-authoring-sop.md` / `command-authoring-sop.md` / `persistence-contract-sop.md`),规范已内化,不读仓库 `docs/`。
10
+ 2. 读取目标分类或同类资产的入口文件,对齐真实写法。
11
+ 3. 读取参考项目或源技能的 README / index,确定源材料边界。
12
+ 4. 只读取与本次迁移相关的源文件,不批量导入无关内容。
13
+
14
+ ## 提取原则
15
+
16
+ 保留源材料中的:
17
+
18
+ - 核心行为
19
+ - 触发条件
20
+ - 输入输出
21
+ - 铁律和边界
22
+ - 失败恢复
23
+ - 有价值的模板和检查表
24
+
25
+ 压缩或删除:
26
+
27
+ - 来源项目宣传语
28
+ - 安装说明
29
+ - 与 Speculo 无关的目录说明
30
+ - 已被当前规范替代的元数据
31
+ - 重复内容
32
+
33
+ ## 规范化规则
34
+
35
+ ### 路径
36
+
37
+ 把旧路径改成当前 Speculo 路径:
38
+
39
+ - change 产物:`.speculo/<cat>/<change>/`
40
+ - command 产物:`.speculo/commands/<YYYY-MM-DD>-<cmd>-<topic>/`
41
+ - 项目规则:`.speculo/.config/RULES.md`
42
+ - 项目经验:`.speculo/.config/LESSONS.md`
43
+ - 项目上下文:`.speculo/.config/context/`
44
+ - 项目 ADR:`.speculo/.config/adr/`
45
+
46
+ 不要创建新的项目根 state 文件,除非当前规范明确允许。
47
+
48
+ ### Frontmatter
49
+
50
+ 把外部 frontmatter 收敛成 Speculo 最小集:
51
+
52
+ - workflow:`id`、`category`、`name`、`description`、`keywords`
53
+ - skill:`id`、`type: skill`、`name`、`description`
54
+ - command:`id`、`type: command`、`name`、`description`、`keywords`
55
+
56
+ ### 渐进披露
57
+
58
+ 大段背景放入:
59
+
60
+ - workflow phase 文件
61
+ - workflow `_templates/`
62
+ - skill `references/`
63
+ - command 内联模板
64
+
65
+ 不要把长 reference 塞进入口文件。
66
+
67
+ ## 融合规则
68
+
69
+ 多个源技能融合为一个原子 skill 时:
70
+
71
+ - 入口 `SKILL.md` 只保留统一触发、输入输出和主流程
72
+ - 源技能细节按主题拆到 `references/`
73
+ - 去掉源技能之间互相引用的旧路径
74
+ - 合并重复铁律,保留更严格者
75
+ - 明确调用方负责持久化
76
+
77
+ 多个源技能融合进 workflow 时:
78
+
79
+ - 把 workflow-only 方法内置到 workflow 目录
80
+ - 不再作为根 skill 分发
81
+ - 每个源技能能力变成 phase、内置指引或模板
82
+
83
+ ## 索引与测试
84
+
85
+ 迁移完成后同步:
86
+
87
+ - 分类 `00-INDEX.md`
88
+ - `.speculo/<cat>-status.json` 初始骨架
89
+ - `.speculo/archive/<cat>/.gitkeep`
90
+ - 项目若有 docs quick reference / architecture / adopting 等索引,按需更新
91
+ - CLI tests 的 asset copying 断言
92
+
93
+ ## 残留扫描
94
+
95
+ 按源项目情况扫描旧绑定,例如:
96
+
97
+ ```bash
98
+ rg "\.specforge|\.docs-sync-state|docs/adr/|根目录.*CONTEXT" speculo docs
99
+ ```
100
+
101
+ 扫描命令应随迁移来源调整,目标是确认旧规范没有回流。
@@ -0,0 +1,123 @@
1
+ # Persistence Contract SOP
2
+
3
+ `.status.json` schema、目录命名、frontmatter 最小集与写入责任的内化规范。
4
+ 本文把 Speculo 持久化契约内化进本 skill,编写资产时**不读仓库 `docs/`**。
5
+
6
+ ## 目录命名
7
+
8
+ | 类别 | 模式 | 例 |
9
+ |------|------|---|
10
+ | Change 目录 | `YYYY-MM-DD-<kebab-name>` | `2026-05-28-user-auth` |
11
+ | Command 产物目录 | `YYYY-MM-DD-<cmd-name>-<topic>` | `2026-05-28-debug-login-500` |
12
+ | 归档目录 | `archive/<cat>/<YYYY-MM>/<change-name>/` | `archive/dev/2026-05/2026-05-20-payment-flow/` |
13
+
14
+ `<cat>` 只能是 `dev`、`doc`、`ops`。
15
+
16
+ ## `.status.json` 元字段(框架强制)
17
+
18
+ 每个 change 的状态写在 `.speculo/<cat>/<change>/.status.json`:
19
+
20
+ ```jsonc
21
+ {
22
+ "name": "string, change 目录名",
23
+ "category": "string, dev | doc | ops",
24
+ "change_status": "string, active | completed | archived",
25
+ "execution_mode": "string, 由 workflow 自治声明的命名预设",
26
+ "created_at": "string, ISO 8601",
27
+ "updated_at": "string, ISO 8601",
28
+ "current_phase": "string, 当前 phase id",
29
+ "phase_history": [
30
+ {
31
+ "phase": "string, phase id",
32
+ "entered_at": "string, ISO 8601",
33
+ "completed_at": "string|null, ISO 8601",
34
+ "status": "string, pending | in-progress | completed | skipped | revisited"
35
+ }
36
+ ]
37
+ }
38
+ ```
39
+
40
+ workflow 自治字段在入口正文 `## 状态扩展字段` 声明,由执行者写入**同一份** `.status.json`,不另开文件。
41
+
42
+ ## 顶层索引 schema(薄)
43
+
44
+ ```jsonc
45
+ // .speculo/<cat>-status.json
46
+ {
47
+ "active": [
48
+ { "name": "string", "current_phase": "string", "updated_at": "string, ISO 8601" }
49
+ ]
50
+ }
51
+ ```
52
+
53
+ - 归档后变更**必须从 active 段移除**。
54
+ - 索引可重建:扫 `.speculo/<cat>/*/.status.json` 即可重建。
55
+ - 全局 `STATUS.json` **不物理存在**。
56
+
57
+ ## Frontmatter 最小集
58
+
59
+ Frontmatter **仅承载发现元数据**(这是什么、叫什么、关于什么)。phases / 模板 / 依赖 / 调用 skill / 状态扩展字段 / 入口协议一律写进 Markdown 正文,用相对路径链接与小标题做渐进披露。
60
+
61
+ ```yaml
62
+ # workflow
63
+ id: <category>/<name> # 必填,全局唯一
64
+ category: dev|doc|ops # 必填
65
+ name: <人类可读名> # 必填
66
+ description: <一句话> # 必填
67
+ keywords: [...] # 可选
68
+
69
+ # command
70
+ id: <name> # 必填,唯一
71
+ type: command # 必填,固定值
72
+ name: <人类可读名> # 必填
73
+ description: <一句话> # 必填
74
+ keywords: [...] # 可选
75
+
76
+ # skill
77
+ id: <name> # 必填,唯一
78
+ type: skill # 必填,固定值
79
+ name: <人类可读名> # 必填
80
+ description: <一句话> # 必填
81
+ ```
82
+
83
+ ## Template 不需要 Frontmatter
84
+
85
+ 模板顶部用一段引用说明声明归属,占位符一律 `[TODO: ...]`:
86
+
87
+ ```markdown
88
+ > **服务工作流:** `<相对路径>`
89
+ > **产物文件名:** `<filename>`
90
+
91
+ # <标题>
92
+
93
+ ## <章节>
94
+ [TODO: 具体填写指引]
95
+ ```
96
+
97
+ ## 相对路径强约束
98
+
99
+ 正文引用的 skill / template / 其它 workflow / phase 子文档**必须用相对路径**,禁止裸 id 或绝对路径。
100
+
101
+ ## 写入责任
102
+
103
+ | 文件 | 用户可写 | AI 可写 |
104
+ |------|---------|---------|
105
+ | `.speculo/.config/RULES.md` | ✅ | ❌ |
106
+ | `.speculo/.config/LESSONS.md` | ⚠️ 可追加 | ✅ workflow 末尾追加 |
107
+ | `.speculo/.config/context/*` | ⚠️ 用户确认后 | ✅ 仅在用户确认后写入 |
108
+ | `.speculo/.config/adr/*` | ⚠️ 用户确认后 | ✅ 仅在用户确认后写入 |
109
+ | `.speculo/<cat>/<change>/*.md` | ⚠️ | ✅ |
110
+ | `.speculo/<cat>/<change>/.status.json` | ❌ | ✅ |
111
+ | `.speculo/*-status.json` | ❌ | ✅ |
112
+
113
+ **skill 不在此表**:skill 不直接写任何 `.speculo/` 或 `.status.json`,持久化由调用它的 workflow 或 command 负责。
114
+
115
+ ## 新分类骨架
116
+
117
+ 新增 `<cat>` 分类时初始化:
118
+
119
+ - `.speculo/<cat>-status.json`(`{ "active": [] }`)
120
+ - `.speculo/<cat>/.gitkeep`
121
+ - `.speculo/archive/<cat>/.gitkeep`
122
+
123
+ 项目级长期资料放 `.speculo/.config/`(`RULES.md`、`LESSONS.md`、`context/`、`adr/`),不要新增项目根 state 文件。
@@ -0,0 +1,195 @@
1
+ # Skill Authoring SOP
2
+
3
+ 本文是 Speculo 原子 skill 的编写规范,复刻通用「编写技能」流程并收敛到 Speculo 约束。
4
+ 本文已内化全部所需规范;编写 skill 时**不读仓库 `docs/`**,只读本 skill 的 `references/`。
5
+
6
+ ## 流程
7
+
8
+ 1. **收集需求** —— 向用户确认:
9
+ - 这个 skill 覆盖什么任务 / 领域?
10
+ - 应该处理哪些具体用例?
11
+ - 这是可复用的原子能力,还是该升级为 workflow、退化为 command?判定见 `asset-selection-sop.md`。
12
+ - 需要可执行脚本,还是只需要指令?
13
+ - 有没有外部源技能要迁移?迁移规则见 `migration-sop.md`。
14
+
15
+ 2. **起草 skill** —— 创建:
16
+ - `SKILL.md`,含 Speculo frontmatter 与五个固定章节。
17
+ - `SKILL.md` 接近 500 行时,把细节拆进 `references/`。
18
+ - 需要确定性操作时,加 `scripts/`。
19
+
20
+ 3. **与用户审查** —— 展示草稿并问:
21
+ - 覆盖你的用例了吗?
22
+ - 有遗漏或不清楚的地方吗?
23
+ - 哪些章节该更详细 / 更简洁?
24
+
25
+ ## 入口结构
26
+
27
+ skill 放在:
28
+
29
+ ```text
30
+ speculo/skills/<name>/SKILL.md
31
+ ```
32
+
33
+ 目录名用 lowercase kebab-case。整个 skill 目录必须**自包含**:复制到任何项目、只读 `SKILL.md` 即可判断是否使用、需要哪些输入、产生什么输出,不依赖本仓库的 `docs/` 或任何外部文件。
34
+
35
+ ```text
36
+ <name>/
37
+ ├── SKILL.md # 主指令(必需)
38
+ ├── references/ # 详细规范 / 变体(按需)
39
+ │ └── <task>-sop.md
40
+ ├── scripts/ # 确定性工具脚本(按需)
41
+ └── examples/ # 示例输入输出(按需)
42
+ ```
43
+
44
+ ## Frontmatter
45
+
46
+ ```yaml
47
+ ---
48
+ id: <name>
49
+ type: skill
50
+ name: <人类可读名>
51
+ description: <一句话能力说明;含触发场景,第三人称,可与相近 skill 区分>
52
+ ---
53
+ ```
54
+
55
+ description 是 **agent 决定加载哪个 skill 时唯一能看到的内容**,会和其它已装 skill 一起出现在系统提示里。给 agent 刚好够用的信息:(1) 提供什么能力,(2) 何时 / 为何触发(具体关键词、上下文、文件类型)。
56
+
57
+ 格式:
58
+
59
+ - 最多 1024 字符
60
+ - 第三人称
61
+ - 第一句:做什么
62
+ - 第二句:「当 [具体触发条件] 时使用」
63
+
64
+ **好的例子**:
65
+
66
+ ```
67
+ 创建或改造 Speculo workflows、skills、commands 的原子能力;当用户要求迁移外部技能或新增 workflow / skill / command 时使用。
68
+ ```
69
+
70
+ **坏例子**:
71
+
72
+ ```
73
+ 帮助处理技能。
74
+ ```
75
+
76
+ 坏例子让 agent 无法把这个 skill 和其它 authoring 类 skill 区分开。
77
+
78
+ ## 正文结构
79
+
80
+ `SKILL.md` 保持精简,五个固定章节:
81
+
82
+ - `## 何时使用`
83
+ - `## 输入`
84
+ - `## 输出`
85
+ - `## 执行步骤`
86
+ - `## 渐进披露`
87
+
88
+ 模板:
89
+
90
+ ```markdown
91
+ ---
92
+ id: <name>
93
+ type: skill
94
+ name: <人类可读名>
95
+ description: <能力 + 触发场景,第三人称>
96
+ ---
97
+
98
+ # <技能名>
99
+
100
+ ## 何时使用
101
+
102
+ [触发场景;列几条典型用户请求]
103
+
104
+ ## 输入
105
+
106
+ [需要的输入。本 skill 自带规范,不外读 docs/]
107
+
108
+ ## 输出
109
+
110
+ [产生什么产物 / 决策 / 检查清单]
111
+
112
+ ## 执行步骤
113
+
114
+ 1. [最小可工作主流程]
115
+ 2. ...
116
+
117
+ ## 渐进披露
118
+
119
+ - `references/<task>-sop.md`:<何时读取>
120
+ ```
121
+
122
+ ## 渐进披露
123
+
124
+ 所有 reference 都从 `SKILL.md` 直接引用,**单层**,不做多层隐藏。
125
+
126
+ 拆分 reference 的条件:
127
+
128
+ - `SKILL.md` 接近 500 行
129
+ - 内容覆盖多个主题或变体(例如不同资产类型的写法)
130
+ - 细节只在特定场景才需要
131
+ - 源材料较长,但可以按需读取
132
+
133
+ reference 文件用 kebab-case,**按任务而非来源**命名(`workflow-authoring-sop.md`,不是 `from-specforge.md`)。
134
+
135
+ ## 何时添加脚本
136
+
137
+ **加 `scripts/`**,当操作确定且反复执行:
138
+
139
+ - frontmatter 校验
140
+ - 路径残留扫描
141
+ - 模板命名检查
142
+ - JSON schema 检查
143
+
144
+ 脚本比反复生成代码更省 token、更可靠,且失败可以显式处理。
145
+
146
+ **不加 `scripts/`**,当能力主要是判断 / 设计 / 策略 / 协作:
147
+
148
+ - 规范判断
149
+ - 文档结构设计
150
+ - 迁移和融合策略
151
+ - 人机协作 SOP
152
+
153
+ ## 迁移外部 Skill
154
+
155
+ 迁移时**保留**:
156
+
157
+ - 触发场景
158
+ - 关键输入输出
159
+ - 铁律、边界、失败处理
160
+ - 可复用命令、检查表、模板片段
161
+
162
+ 迁移时**改写**:
163
+
164
+ - 外部工具名绑定
165
+ - 旧目录布局
166
+ - 旧 state 路径
167
+ - 不符合 Speculo frontmatter 的元数据
168
+ - 直接写 `.speculo/` 的行为描述
169
+
170
+ 多个源技能融合为一个原子 skill 时:入口 `SKILL.md` 只留统一触发与主流程,源技能细节按主题拆进 `references/`,合并重复铁律并保留更严格者。
171
+
172
+ ## 持久化边界
173
+
174
+ skill **禁止**直接写:
175
+
176
+ - `.speculo/<cat>/<change>/`
177
+ - `.speculo/*-status.json`
178
+ - `.status.json`
179
+
180
+ 如果某能力需要持久化,把写入责任交给调用它的 workflow 或 command,并在 skill 输出里提供可归档摘要。完整写入责任表见 `persistence-contract-sop.md`。
181
+
182
+ ## 审查清单
183
+
184
+ 起草后检查:
185
+
186
+ - [ ] description 含触发条件(「当……时使用」),可与相近 skill 区分
187
+ - [ ] frontmatter 是 Speculo 最小集(`id` / `type: skill` / `name` / `description`)
188
+ - [ ] `SKILL.md` 含五个固定章节,整体精简(细节已外移)
189
+ - [ ] reference 单层引用,按任务命名
190
+ - [ ] **自包含**:不引用 `docs/` 或仓库外文件
191
+ - [ ] skill 不直接写 `.speculo/` 或 `.status.json`,持久化交给调用方
192
+ - [ ] 没有 README / INSTALLATION / CHANGELOG 等冗余文件
193
+ - [ ] 没有时效性信息、旧项目路径、旧工具名或绝对路径绑定
194
+ - [ ] 术语一致、含具体示例、引用只有一层深度
195
+ - [ ] 若是内置资产,CLI tests 覆盖复制该 skill
@@ -0,0 +1,73 @@
1
+ # Validation Checklist
2
+
3
+ ## 结构检查
4
+
5
+ - [ ] 新 asset 路径符合 `speculo/workflows/`、`speculo/skills/` 或 `speculo/commands/` 约定
6
+ - [ ] workflow 入口文件名与目录名一致
7
+ - [ ] skill 入口命名为 `SKILL.md`
8
+ - [ ] command 是单个 `.md` 文件
9
+ - [ ] reference 文件都被入口直接引用
10
+ - [ ] 没有 README、INSTALLATION、CHANGELOG 等冗余 skill 文件
11
+
12
+ ## Frontmatter 检查
13
+
14
+ - [ ] workflow frontmatter 只包含发现元数据
15
+ - [ ] skill frontmatter 包含 `id`、`type: skill`、`name`、`description`
16
+ - [ ] command frontmatter 包含 `id`、`type: command`、`name`、`description`,可选 `keywords`
17
+ - [ ] 没有把 phases、templates、depends_on、status_extensions 写进 frontmatter
18
+
19
+ ## Workflow 检查
20
+
21
+ - [ ] 入口正文包含 `## 阶段`
22
+ - [ ] 入口正文包含 `## 依赖`
23
+ - [ ] 入口正文包含 `## 状态扩展字段`
24
+ - [ ] 入口正文包含 `## 完成与状态更新`
25
+ - [ ] 每个 phase 文件写清输入、产物、填写引导、边界、完成准则
26
+ - [ ] 模板放在对应分类 `_templates/`
27
+ - [ ] 模板顶部有服务 workflow 和产物文件名
28
+ - [ ] 模板占位符为 `[TODO: ...]`
29
+
30
+ ## Skill 检查
31
+
32
+ - [ ] `SKILL.md` 能让 agent 判断何时触发
33
+ - [ ] 输入、输出、执行步骤清晰
34
+ - [ ] 大段细节放入 `references/`
35
+ - [ ] 自包含:不引用 `docs/` 或仓库外文件,复制后只读 `SKILL.md` 即可用
36
+ - [ ] skill 不直接写 `.speculo/` 或 `.status.json`
37
+ - [ ] 如果需要持久化,明确由调用方 workflow 或 command 负责
38
+
39
+ ## Command 检查
40
+
41
+ - [ ] 归档路径位于 `.speculo/commands/`
42
+ - [ ] 调用 skill 使用相对路径
43
+ - [ ] 破坏性操作要求用户确认
44
+ - [ ] 产物模板内联且使用 `[TODO: ...]`
45
+
46
+ ## `.speculo/` 检查
47
+
48
+ - [ ] 新分类有 `.speculo/<cat>-status.json`
49
+ - [ ] 新分类有 `.speculo/<cat>/.gitkeep`
50
+ - [ ] 新分类有 `.speculo/archive/<cat>/.gitkeep`
51
+ - [ ] 项目级长期上下文写入 `.speculo/.config/context/`
52
+ - [ ] 项目级 ADR 写入 `.speculo/.config/adr/`
53
+ - [ ] 没有新增项目根 state 文件
54
+
55
+ ## 文档与测试
56
+
57
+ > 以下索引文件是 Speculo 仓库内的下游同步目标;项目无这些文件时跳过对应项。
58
+
59
+ - [ ] 项目若有 `docs/quick-reference.md`,包含新入口
60
+ - [ ] 项目若有 `docs/Speculo-architecture.md`,需要时更新内置结构
61
+ - [ ] 项目若有 `docs/adopting.md`,需要时更新安装后目录
62
+ - [ ] CLI tests 断言 `speculo init` 会复制新内置资产
63
+ - [ ] `pnpm test` 通过
64
+
65
+ ## 残留检查
66
+
67
+ 按迁移来源选择关键词扫描:
68
+
69
+ ```bash
70
+ rg "\.specforge|\.docs-sync-state|docs/adr/|根目录.*CONTEXT" speculo docs
71
+ ```
72
+
73
+ 命中结果必须逐条判断:历史说明可保留,执行规范和路径约定不能保留旧值。