@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,51 @@
1
+ ---
2
+ id: doc/index
3
+ category: doc
4
+ name: Doc Workflow Index
5
+ description: 文档写作、塑形、编辑与素材管理的横向工作流导航入口
6
+ keywords: [doc, writing, article, fragments, edit, 文档, 写作]
7
+ ---
8
+
9
+ # Doc Workflow Index
10
+
11
+ 本文件是 doc 分类的导航入口。进入时先读取 `../../.speculo/doc-status.json`,再按其中 active change 读取 `../../.speculo/doc/<change>/.status.json`,根据用户意图推荐横向 workflow。
12
+
13
+ ## 入口别名
14
+
15
+ | 别名 | 入口 | 用途 |
16
+ |------|------|------|
17
+ | `doc/F` | `F-writing-fragments/F-writing-fragments.md` | 追问式访谈,沉淀异质 fragment 素材 |
18
+ | `doc/B` | `B-writing-beats/B-writing-beats.md` | 逐个 beat 推进文章旅程 |
19
+ | `doc/S` | `S-writing-shape/S-writing-shape.md` | 读取素材堆并对话式塑造成文章 |
20
+ | `doc/E` | `E-edit-article/E-edit-article.md` | 重组章节、提升清晰度并收紧表达 |
21
+
22
+ ## 进入协议
23
+
24
+ 1. 若用户未指定 change,扫描 `../../.speculo/doc-status.json` 和 `../../.speculo/doc/*/.status.json`,列出 active changes。
25
+ 2. 若只有一个 active change,默认继续该 change;若有多个 active change,要求用户选择。
26
+ 3. 若没有 active change,按用户意图创建新的 doc change 目录,并初始化 `.status.json` 与 `../../.speculo/doc-status.json`。
27
+ 4. 推荐入口时优先使用用户显式别名;没有别名时按用户意图推荐一个横向 workflow。
28
+ 5. 执行任何 workflow 前,读取该 workflow 入口文件、阶段文件和模板。
29
+
30
+ ## 执行模式
31
+
32
+ - `fragments`:从主题和对话中采集素材,进入 `doc/F`。
33
+ - `beats`:已有素材,想逐个转向推进叙事,进入 `doc/B`。
34
+ - `shape`:已有素材堆或粗稿,想塑造成可发布文章,进入 `doc/S`。
35
+ - `edit`:已有文章草稿,想编辑、重组、润色,进入 `doc/E`。
36
+
37
+ ## 状态汇报
38
+
39
+ 输出 doc 状态时至少包含:
40
+
41
+ - active change 数量与每个 change 的 `current_phase`
42
+ - 每个 change 的当前文档路径、素材路径和最近写入时间
43
+ - `phase_history` 最后一项为 `blocked` 或 `updated_at` 超过 14 天未变化的 change
44
+ - 推荐下一步入口和原因
45
+
46
+ ## 完成与状态更新
47
+
48
+ - 所有 doc workflow 必须维护同一 change 的 `.status.json`。
49
+ - 进入 phase 时更新 `current_phase`,并在 `phase_history` 追加 `in-progress` 记录。
50
+ - phase 完成时写入 `completed_at` 和 `status: completed`。
51
+ - 用户确认文章、素材采集或编辑边界完成后,才把 `change_status` 置为 `completed`。
@@ -0,0 +1,77 @@
1
+ ---
2
+ id: doc/writing-beats
3
+ category: doc
4
+ name: Writing Beats
5
+ description: 从素材堆中选择起始 beat,并逐个 beat 推进文章旅程
6
+ keywords: [beats, narrative, article, writing, 叙事, 文章]
7
+ ---
8
+
9
+ # Writing Beats 工作流执行指引
10
+
11
+ 本工作流用于把文章塑造成一段由 beat 组成的旅程。用户从原始素材中选择起始 beat;执行者只写当前 beat,然后给出下一步转向选项,直到文章自然结束。
12
+
13
+ ## 内置指引
14
+
15
+ ### 何时使用
16
+
17
+ 当用户已有原始素材,并想把它组织成叙事旅程而不是一次性论证时使用。
18
+
19
+ ### 输入
20
+
21
+ - 用户提供的原始素材 Markdown 路径,或同 change 的 `fragments.md`
22
+ - 当前文章文件:默认 `.speculo/doc/<change>/article.md`
23
+ - 当前 doc change 目录:`.speculo/doc/<change>/`
24
+
25
+ ### 输出
26
+
27
+ - `.speculo/doc/<change>/article.md`
28
+ - `.speculo/doc/<change>/beat-log.md`
29
+ - 每轮 2-3 个候选下一个 beat
30
+
31
+ ### 执行原则
32
+
33
+ beat 是旅程中的一个动作:铺开一个场景、落下一个观点、提出一个问题、插入旁白或扭转角度。一个 beat 可以是一句话、一小段或几段;如果需要 5 段和 3 个小标题,它就不是一个 beat,必须拆开。
34
+
35
+ 每次只追加一个 beat。不要提前写后续内容。每次写入前都从磁盘重新读取 `article.md`,保留用户编辑。用户要求重写某个 beat 或回到某个 beat 试另一个方向时,只编辑对应区域。
36
+
37
+ 文章在旅程完成时结束,不要求素材堆清空。
38
+
39
+ ## 阶段
40
+
41
+ ### 1. Beat Options — 候选 beat
42
+ - 规范:`writing-beats-options.md`
43
+ - 模板:`../_templates/writing-beat-options-template.md`
44
+ - 产物:`beat-log.md`
45
+ - 完成准则:
46
+ - 已展示 2-3 个候选起始或下一个 beat
47
+ - 已记录用户选择和选择理由
48
+
49
+ ### 2. Beat Append — 写入当前 beat
50
+ - 规范:`writing-beats-append.md`
51
+ - 模板:`../_templates/writing-article-template.md`
52
+ - 产物:`article.md`
53
+ - 完成准则:
54
+ - 只写入当前选定 beat
55
+ - 写入前已重新读取 `article.md`
56
+ - `article.md` 无残留 `[TODO:]`
57
+
58
+ ## 依赖
59
+
60
+ - 软依赖:`../F-writing-fragments/F-writing-fragments.md`,scope: same-change
61
+ - 硬依赖:无;用户也可以直接提供素材文件
62
+
63
+ ## 状态扩展字段
64
+
65
+ 本工作流需在同 change 的 `.status.json` 追加:
66
+
67
+ - `doc_entry` (string) — 固定为 `doc/B`
68
+ - `source_material_paths` (array) — 素材来源路径
69
+ - `document_paths` (array) — 至少包含 `article.md` 和 `beat-log.md`
70
+ - `beat_count` (number) — 已写入 beat 数量
71
+ - `current_beat_status` (choosing | appended | revising | completed | blocked) — 当前 beat 状态
72
+
73
+ ## 完成与状态更新
74
+
75
+ - 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
76
+ - 每次写入 beat 后更新 `beat_count`、`current_beat_status` 和 `updated_at`。
77
+ - 文章自然结束且用户确认后,可把 `change_status` 置为 `completed`。
@@ -0,0 +1,31 @@
1
+ # Beat Append Phase
2
+
3
+ ## 输入
4
+
5
+ - 用户在 Beat Options 阶段选择的 beat
6
+ - 原始素材 Markdown,或 `.speculo/doc/<change>/fragments.md`
7
+ - `.speculo/doc/<change>/article.md`
8
+
9
+ ## 产物
10
+
11
+ - `.speculo/doc/<change>/article.md`,由 `../_templates/writing-article-template.md` 填写或追加
12
+
13
+ ## 填写引导
14
+
15
+ 1. 写入前重新读取 `article.md`。
16
+ 2. 从素材堆中抽取内容来填充当前 beat,可以改写、拆分、重组或引用。
17
+ 3. 只写当前 beat,写完就停。
18
+ 4. beat 长度由它自身需要决定;过长时拆成后续 beat。
19
+ 5. 写入后更新 `beat-log.md`,记录实际写入摘要和下一轮可转向方向。
20
+
21
+ ## 边界
22
+
23
+ - 不提前写下一个 beat。
24
+ - 不忽略用户在上一轮之后对文章做的编辑。
25
+ - 不因为素材未用完而强行继续。
26
+
27
+ ## 完成准则
28
+
29
+ - 当前 beat 已写入 `article.md`
30
+ - 已更新 `.status.json` 的 `beat_count` 和 `current_beat_status`
31
+ - `article.md` 无残留 `[TODO:]`
@@ -0,0 +1,29 @@
1
+ # Beat Options Phase
2
+
3
+ ## 输入
4
+
5
+ - 原始素材 Markdown,或 `.speculo/doc/<change>/fragments.md`
6
+ - `.speculo/doc/<change>/article.md` 的当前内容;如果不存在,视为空文章
7
+ - `.speculo/doc/<change>/beat-log.md`
8
+
9
+ ## 产物
10
+
11
+ - `.speculo/doc/<change>/beat-log.md`,由 `../_templates/writing-beat-options-template.md` 填写或追加
12
+
13
+ ## 填写引导
14
+
15
+ 1. 完整读取素材和当前文章。
16
+ 2. 若文章为空,提出 2-3 个候选起始 beat;每个代表不同入口。
17
+ 3. 若文章已有内容,提出 2-3 个候选下一个 beat;每个代表从当前位置可以转向的不同方向。
18
+ 4. 候选只做预览,不写入 `article.md`。
19
+ 5. 要求用户选择一个候选,或组合出混合版本。
20
+
21
+ ## 边界
22
+
23
+ - 不一次性规划完整提纲。
24
+ - 不写入文章正文。
25
+
26
+ ## 完成准则
27
+
28
+ - `beat-log.md` 已记录候选、推荐选项、用户选择或 blocked 原因
29
+ - 用户已选择当前要写的 beat,或明确要求暂停
@@ -0,0 +1,77 @@
1
+ ---
2
+ id: doc/edit-article
3
+ category: doc
4
+ name: Edit Article
5
+ description: 通过重组章节、提升清晰度、收紧表达来编辑和改进文章草稿
6
+ keywords: [edit, article, revise, clarity, draft, 编辑, 修订]
7
+ ---
8
+
9
+ # Edit Article 工作流执行指引
10
+
11
+ 本工作流用于编辑已有文章草稿。先按标题和信息依赖确认章节顺序,再逐节重写,提升清晰度、连贯性和流畅度。
12
+
13
+ ## 内置指引
14
+
15
+ ### 何时使用
16
+
17
+ 当用户想编辑、修订、改进文章草稿,或要求重组章节、收紧表达、提升清晰度时使用。
18
+
19
+ ### 输入
20
+
21
+ - 用户提供的文章草稿路径,或 `.speculo/doc/<change>/article.md`
22
+ - 用户明确的发布目标、语气偏好或约束
23
+ - 当前 doc change 目录:`.speculo/doc/<change>/`
24
+
25
+ ### 输出
26
+
27
+ - `.speculo/doc/<change>/edit-plan.md`
28
+ - `.speculo/doc/<change>/edited-article.md`
29
+ - 已确认的章节顺序、依赖关系和逐节编辑结果
30
+
31
+ ### 执行原则
32
+
33
+ 首先根据标题把文章分成多个章节,思考每个章节表达的主要观点。把信息视为有向无环图:某些信息片段依赖其他信息片段,章节顺序和内容顺序必须尊重这些依赖。
34
+
35
+ 与用户确认章节后再逐节重写。每段最多 240 个字符。编辑时优先提升清晰度、连贯性和流畅度,不改变用户没有授权改变的核心主张。
36
+
37
+ ## 阶段
38
+
39
+ ### 1. Edit Plan — 章节与依赖确认
40
+ - 规范:`edit-article-plan.md`
41
+ - 模板:`../_templates/edit-article-plan-template.md`
42
+ - 产物:`edit-plan.md`
43
+ - 完成准则:
44
+ - 已按章节列出主观点和依赖关系
45
+ - 用户已确认章节顺序或给出修改意见
46
+ - `edit-plan.md` 无残留 `[TODO:]`
47
+
48
+ ### 2. Section Rewrite — 逐节重写
49
+ - 规范:`edit-article-rewrite.md`
50
+ - 模板:`../_templates/edit-article-template.md`
51
+ - 产物:`edited-article.md`
52
+ - 完成准则:
53
+ - 已按确认顺序逐节编辑
54
+ - 每段不超过 240 个字符,除非用户明确要求保留长段
55
+ - `edited-article.md` 无残留 `[TODO:]`
56
+
57
+ ## 依赖
58
+
59
+ - 软依赖:`../S-writing-shape/S-writing-shape.md` 或 `../B-writing-beats/B-writing-beats.md`,scope: same-change
60
+ - 硬依赖:无;用户也可以直接提供草稿文件
61
+
62
+ ## 状态扩展字段
63
+
64
+ 本工作流需在同 change 的 `.status.json` 追加:
65
+
66
+ - `doc_entry` (string) — 固定为 `doc/E`
67
+ - `draft_paths` (array) — 草稿来源路径
68
+ - `document_paths` (array) — 至少包含 `edit-plan.md` 和 `edited-article.md`
69
+ - `section_count` (number) — 已识别章节数
70
+ - `edit_status` (planning | rewriting | reviewed | completed | blocked) — 编辑状态
71
+
72
+ ## 完成与状态更新
73
+
74
+ - 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
75
+ - 完成 edit plan 后更新 `section_count` 和 `edit_status`。
76
+ - 每节重写后更新 `updated_at` 和 `edit_status`。
77
+ - 用户确认 edited article 完成后,可把 `change_status` 置为 `completed`。
@@ -0,0 +1,30 @@
1
+ # Edit Plan Phase
2
+
3
+ ## 输入
4
+
5
+ - 用户提供的文章草稿路径,或 `.speculo/doc/<change>/article.md`
6
+ - 用户明确的语气、长度、发布目标和不可改变的主张
7
+
8
+ ## 产物
9
+
10
+ - `.speculo/doc/<change>/edit-plan.md`,由 `../_templates/edit-article-plan-template.md` 填写
11
+
12
+ ## 填写引导
13
+
14
+ 1. 完整读取草稿。
15
+ 2. 根据标题和内容把文章分成章节。
16
+ 3. 为每个章节写出主要观点。
17
+ 4. 把信息依赖视为有向无环图,检查章节顺序是否尊重依赖关系。
18
+ 5. 标出需要移动、合并、删除或拆分的章节。
19
+ 6. 与用户确认章节顺序;未确认前不要重写全文。
20
+
21
+ ## 边界
22
+
23
+ - 不直接开始润色全文。
24
+ - 不改变用户核心主张。
25
+
26
+ ## 完成准则
27
+
28
+ - `edit-plan.md` 已记录章节、主观点、依赖关系和推荐顺序
29
+ - 用户已确认编辑计划,或明确指出要调整的章节
30
+ - `edit-plan.md` 无残留 `[TODO:]`
@@ -0,0 +1,31 @@
1
+ # Section Rewrite Phase
2
+
3
+ ## 输入
4
+
5
+ - `.speculo/doc/<change>/edit-plan.md`
6
+ - 用户确认后的章节顺序
7
+ - 原始草稿
8
+
9
+ ## 产物
10
+
11
+ - `.speculo/doc/<change>/edited-article.md`,由 `../_templates/edit-article-template.md` 填写
12
+
13
+ ## 填写引导
14
+
15
+ 1. 按确认后的章节顺序逐节编辑。
16
+ 2. 重写每节以提升清晰度、连贯性和流畅度。
17
+ 3. 每段最多 240 个字符;超过时拆段。
18
+ 4. 保留必要的术语、代码实体、引用和用户明确要求保留的句子。
19
+ 5. 若某节依赖前文未解释的信息,调整顺序或补最小必要上下文。
20
+ 6. 每完成一节,允许用户审阅并要求局部修改。
21
+
22
+ ## 边界
23
+
24
+ - 不新增用户没有授权的新论点。
25
+ - 不把文章改成另一种发布平台格式,除非用户明确要求。
26
+
27
+ ## 完成准则
28
+
29
+ - 已按 `edit-plan.md` 完成所有确认章节
30
+ - `.status.json` 的 `edit_status` 已更新
31
+ - `edited-article.md` 无残留 `[TODO:]`
@@ -0,0 +1,78 @@
1
+ ---
2
+ id: doc/writing-fragments
3
+ category: doc
4
+ name: Writing Fragments
5
+ description: 通过追问式访谈采集异质写作素材,并追加到当前 doc change 的 fragments 文档
6
+ keywords: [fragments, ideate, raw material, writing, 写作素材]
7
+ ---
8
+
9
+ # Writing Fragments 工作流执行指引
10
+
11
+ 本工作流用于在强加结构之前发展想法。它围绕用户想写的主题持续追问,捕捉 fragment,并把素材追加到当前 doc change 的 `fragments.md`。
12
+
13
+ ## 内置指引
14
+
15
+ ### 何时使用
16
+
17
+ 当用户想发展想法、采集写作原材料,或提到 `fragments`、`ideate`、`raw material`、素材、片段时使用。
18
+
19
+ ### 输入
20
+
21
+ - 用户给出的主题、初始 prompt 或已有素材
22
+ - 用户在会话中补充的主张、小场景、锋利句子、半成形想法
23
+ - 当前 doc change 目录:`.speculo/doc/<change>/`
24
+
25
+ ### 输出
26
+
27
+ - `.speculo/doc/<change>/fragments.md`
28
+ - `.speculo/doc/<change>/interview-log.md`
29
+ - 可继续用于 `../B-writing-beats/B-writing-beats.md` 或 `../S-writing-shape/S-writing-shape.md` 的素材堆
30
+
31
+ ### 执行原则
32
+
33
+ 从用户说的第一句话开始捕捉 fragment,包括初始 prompt。不要强加阶段、提纲或结构;本 workflow 的目标是让素材变多、变锋利,而不是过早排序。
34
+
35
+ fragment 是任何可能保留到最终文章中的文字片段。它必须能被作者读懂,但不需要让陌生读者立刻看懂。判断标准是“这是不是一段好文字”,不是“这是不是一个自洽论证”。
36
+
37
+ 第一次写入 `fragments.md` 时,在顶部放一个 H1 作为工作标题;除此之外不要放 metadata、TOC 或日期。fragments 之间用水平分隔线分隔。正文内部不要标题、标签或人为顺序。
38
+
39
+ 每次写入前都重新读取 `fragments.md`,保留用户在会话期间做的编辑。不要覆盖文件;只追加,除非用户明确要求原地编辑、删除或合并某个 fragment。
40
+
41
+ ## 阶段
42
+
43
+ ### 1. Fragment Interview — 追问式采集
44
+ - 规范:`writing-fragments-interview.md`
45
+ - 模板:`../_templates/writing-fragments-template.md`
46
+ - 产物:`fragments.md`
47
+ - 完成准则:
48
+ - 已把本轮出现的可保留 fragment 追加到 `fragments.md`
49
+ - `fragments.md` 无残留 `[TODO:]`
50
+
51
+ ### 2. Interview Log — 采集状态记录
52
+ - 规范:`writing-fragments-log.md`
53
+ - 模板:`../_templates/writing-interview-log-template.md`
54
+ - 产物:`interview-log.md`
55
+ - 完成准则:
56
+ - 已记录追问方向、已采集素材类型和下一轮高价值问题
57
+ - `interview-log.md` 无残留 `[TODO:]`
58
+
59
+ ## 依赖
60
+
61
+ - 软依赖:无
62
+ - 硬依赖:无
63
+
64
+ ## 状态扩展字段
65
+
66
+ 本工作流需在同 change 的 `.status.json` 追加:
67
+
68
+ - `doc_entry` (string) — 固定为 `doc/F`
69
+ - `source_material_paths` (array) — 用户提供或本 workflow 读取的素材路径
70
+ - `document_paths` (array) — 至少包含 `fragments.md`
71
+ - `fragment_count` (number) — 当前已采集 fragment 数量
72
+ - `writing_status` (collecting | paused | completed | blocked) — 素材采集状态
73
+
74
+ ## 完成与状态更新
75
+
76
+ - 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
77
+ - 每次追加 fragment 后更新 `updated_at`、`document_paths` 和 `fragment_count`。
78
+ - 本 workflow 完成后不自动完成 change;默认可继续移交 `../B-writing-beats/B-writing-beats.md`、`../S-writing-shape/S-writing-shape.md` 或按用户要求停止。
@@ -0,0 +1,32 @@
1
+ # Fragment Interview Phase
2
+
3
+ ## 输入
4
+
5
+ - 用户的主题、初始 prompt 或已有素材
6
+ - `.speculo/doc/<change>/fragments.md` 的当前内容;若不存在,按模板创建
7
+ - 当前对话中出现的主张、小场景、锋利句子、半成形想法、引用或观察
8
+
9
+ ## 产物
10
+
11
+ - `.speculo/doc/<change>/fragments.md`,由 `../_templates/writing-fragments-template.md` 填写或追加
12
+
13
+ ## 填写引导
14
+
15
+ 1. 如果 `fragments.md` 不存在,先创建 H1 工作标题。
16
+ 2. 持续追问用户“你到底注意到了什么”,不要强加提纲、阶段或文章结构。
17
+ 3. 任一方产生可保留 fragment 时,先重新读取 `fragments.md`,再追加到文件末尾。
18
+ 4. fragment 之间使用独立的 `---` 分隔。
19
+ 5. fragment 可以是句子、段落、列表、代码、引用或一组相关观察,以素材自然形态为准。
20
+ 6. 用户要求“删掉最后一个”“改得更锋利”“合并那两个”时,按具体 fragment 原地编辑,其他内容保持不变。
21
+
22
+ ## 边界
23
+
24
+ - 不塑造文章结构。
25
+ - 不添加 metadata、TOC、日期、标签。
26
+ - 不为了保存每个 fragment 反复询问许可。
27
+
28
+ ## 完成准则
29
+
30
+ - 本轮值得保留的 fragment 已写入 `fragments.md`
31
+ - 写入前已重新读取文件并保留用户编辑
32
+ - `fragments.md` 无残留 `[TODO:]`
@@ -0,0 +1,29 @@
1
+ # Interview Log Phase
2
+
3
+ ## 输入
4
+
5
+ - `.speculo/doc/<change>/fragments.md`
6
+ - 本轮访谈对话
7
+ - 用户明确指出的删除、重写、合并或保留偏好
8
+
9
+ ## 产物
10
+
11
+ - `.speculo/doc/<change>/interview-log.md`,由 `../_templates/writing-interview-log-template.md` 填写
12
+
13
+ ## 填写引导
14
+
15
+ 1. 记录本轮追问方向,不要把 log 写成文章提纲。
16
+ 2. 标出已采集 fragment 的类型:主张、小场景、锋利句子、半成形想法、引用、观察组等。
17
+ 3. 标出下一轮最值得追问的 1-3 个方向。
18
+ 4. 记录用户对语气、删改、保留的偏好。
19
+
20
+ ## 边界
21
+
22
+ - 不重排 `fragments.md`。
23
+ - 不替用户决定最终文章结构。
24
+
25
+ ## 完成准则
26
+
27
+ - `interview-log.md` 能让下一次会话继续访谈
28
+ - 已更新 `.status.json` 的 `fragment_count` 和 `writing_status`
29
+ - `interview-log.md` 无残留 `[TODO:]`
@@ -0,0 +1,79 @@
1
+ ---
2
+ id: doc/writing-shape
3
+ category: doc
4
+ name: Writing Shape
5
+ description: 读取原始素材 Markdown,并通过对话式会话塑造成可发布文章
6
+ keywords: [shape, article, markdown, draft, writing, 塑形]
7
+ ---
8
+
9
+ # Writing Shape 工作流执行指引
10
+
11
+ 本工作流用于把一份原始素材 Markdown 文件塑造成独立文章。素材堆只读;文章产物默认写入当前 doc change 的 `article.md`。
12
+
13
+ ## 内置指引
14
+
15
+ ### 何时使用
16
+
17
+ 当用户有一堆笔记、fragments 或粗稿,并想把它变成可发布内容时使用。
18
+
19
+ ### 输入
20
+
21
+ - 用户提供的原始素材 Markdown 路径,或 `.speculo/doc/<change>/fragments.md`
22
+ - 当前文章文件:默认 `.speculo/doc/<change>/article.md`
23
+ - 当前 doc change 目录:`.speculo/doc/<change>/`
24
+
25
+ ### 输出
26
+
27
+ - `.speculo/doc/<change>/article.md`
28
+ - `.speculo/doc/<change>/shape-log.md`
29
+ - 已确认的开头、论点顺序、格式选择和缺口
30
+
31
+ ### 执行原则
32
+
33
+ 先从头到尾读完素材堆,再做其他事。不要编辑原始素材文件,它对本 workflow 是只读的。
34
+
35
+ 这是反向的追问式会话:问题不是“你注意到了什么”,而是“这篇文章到底在论证什么,读者需要按什么顺序听到它”。要反驳虚弱的转场;如果一段话没有赢得自己的位置,就删掉它。
36
+
37
+ 每个块达成一致后立即追加到 `article.md`。每次写入前都重新读取文章文件,保留用户编辑。
38
+
39
+ ## 阶段
40
+
41
+ ### 1. Opening Choice — 候选开头
42
+ - 规范:`writing-shape-opening.md`
43
+ - 模板:`../_templates/writing-shape-log-template.md`
44
+ - 产物:`shape-log.md`
45
+ - 完成准则:
46
+ - 已完整读取素材
47
+ - 已展示 2-3 个候选开头
48
+ - 用户已选择或组合出开头
49
+
50
+ ### 2. Block Shaping — 逐块塑形
51
+ - 规范:`writing-shape-block.md`
52
+ - 模板:`../_templates/writing-article-template.md`
53
+ - 产物:`article.md`
54
+ - 完成准则:
55
+ - 每个写入块都有明确功能和格式选择
56
+ - 写入前已重新读取 `article.md`
57
+ - `article.md` 无残留 `[TODO:]`
58
+
59
+ ## 依赖
60
+
61
+ - 软依赖:`../F-writing-fragments/F-writing-fragments.md`,scope: same-change
62
+ - 硬依赖:无;用户也可以直接提供素材文件
63
+
64
+ ## 状态扩展字段
65
+
66
+ 本工作流需在同 change 的 `.status.json` 追加:
67
+
68
+ - `doc_entry` (string) — 固定为 `doc/S`
69
+ - `source_material_paths` (array) — 只读素材来源路径
70
+ - `document_paths` (array) — 至少包含 `article.md` 和 `shape-log.md`
71
+ - `opening_status` (unselected | selected | revised) — 开头状态
72
+ - `format_decisions` (array) — prose、list、table、callout、quote、code 等格式选择记录
73
+ - `writing_status` (shaping | revising | completed | blocked) — 文章塑形状态
74
+
75
+ ## 完成与状态更新
76
+
77
+ - 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
78
+ - 每次写入块后更新 `format_decisions`、`writing_status` 和 `updated_at`。
79
+ - 文章完成由用户决定;用户确认完成后,可把 `change_status` 置为 `completed`。
@@ -0,0 +1,32 @@
1
+ # Block Shaping Phase
2
+
3
+ ## 输入
4
+
5
+ - 用户选定的开头与当前文章
6
+ - 原始素材 Markdown,或 `.speculo/doc/<change>/fragments.md`
7
+ - `.speculo/doc/<change>/shape-log.md`
8
+
9
+ ## 产物
10
+
11
+ - `.speculo/doc/<change>/article.md`,由 `../_templates/writing-article-template.md` 填写或追加
12
+
13
+ ## 填写引导
14
+
15
+ 1. 每轮先问:基于当前文章,读者接下来需要听到什么。
16
+ 2. 从素材堆中抽取 fragment,改写以适配上下文段落。
17
+ 3. 公开讨论格式选择:散文、列表、表格、callout、引用、代码块。
18
+ 4. 如果素材堆缺少文章需要的东西,明确指出缺口,让用户补充或删除相关章节。
19
+ 5. 每个块达成一致后重新读取 `article.md`,再追加。
20
+ 6. 如果用户想重写某段,只原地编辑那个具体段落。
21
+
22
+ ## 边界
23
+
24
+ - 不挖掘素材堆中不存在的新 fragments;只指出缺口。
25
+ - 不编辑原始素材文件。
26
+ - 不发布或适配特定平台格式,除非用户明确要求。
27
+
28
+ ## 完成准则
29
+
30
+ - 每个新增块都有明确作用和格式选择记录
31
+ - `shape-log.md` 已记录重要删改、缺口和格式争议
32
+ - `article.md` 无残留 `[TODO:]`
@@ -0,0 +1,27 @@
1
+ # Opening Choice Phase
2
+
3
+ ## 输入
4
+
5
+ - 原始素材 Markdown,或 `.speculo/doc/<change>/fragments.md`
6
+ - `.speculo/doc/<change>/article.md` 的当前内容;如果不存在,视为空文章
7
+
8
+ ## 产物
9
+
10
+ - `.speculo/doc/<change>/shape-log.md`,由 `../_templates/writing-shape-log-template.md` 填写或追加
11
+
12
+ ## 填写引导
13
+
14
+ 1. 完整读取素材堆,形成整体理解。
15
+ 2. 起草 2-3 个候选开头;每个开头暗示文章不同论点或角度。
16
+ 3. 全部展示给用户,要求选择一个或组合出混合版本。
17
+ 4. 记录被选开头承诺了什么;后续所有段落都必须服务这个承诺,或推动用户修改开头。
18
+
19
+ ## 边界
20
+
21
+ - 不编辑素材文件。
22
+ - 不在用户选择前写入文章正文。
23
+
24
+ ## 完成准则
25
+
26
+ - `shape-log.md` 已记录候选开头、推荐选项、用户选择和开头承诺
27
+ - `.status.json` 的 `opening_status` 已更新
@@ -0,0 +1,24 @@
1
+ > **服务工作流:** `../E-edit-article/E-edit-article.md`
2
+ > **产物文件名:** `edit-plan.md`
3
+
4
+ # Edit Plan
5
+
6
+ ## 草稿来源
7
+
8
+ [TODO: 记录草稿路径、版本或用户提供方式。]
9
+
10
+ ## 章节与主观点
11
+
12
+ [TODO: 按章节列出每节主要观点。]
13
+
14
+ ## 信息依赖
15
+
16
+ [TODO: 说明哪些信息必须先出现,哪些章节应移动、合并、删除或拆分。]
17
+
18
+ ## 推荐顺序
19
+
20
+ [TODO: 给出推荐章节顺序和理由。]
21
+
22
+ ## 用户确认
23
+
24
+ [TODO: 记录用户确认、修改意见或 blocked 原因。]
@@ -0,0 +1,6 @@
1
+ > **服务工作流:** `../E-edit-article/E-edit-article.md`
2
+ > **产物文件名:** `edited-article.md`
3
+
4
+ # [TODO: 编辑后文章标题]
5
+
6
+ [TODO: 按确认后的章节顺序写入编辑后正文。每段默认不超过 240 个字符。]
@@ -0,0 +1,6 @@
1
+ > **服务工作流:** `../B-writing-beats/B-writing-beats.md` 或 `../S-writing-shape/S-writing-shape.md`
2
+ > **产物文件名:** `article.md`
3
+
4
+ # [TODO: 文章标题]
5
+
6
+ [TODO: 文章正文。由 workflow 每次只追加一个 beat 或一个确认后的内容块。]
@@ -0,0 +1,20 @@
1
+ > **服务工作流:** `../B-writing-beats/B-writing-beats.md`
2
+ > **产物文件名:** `beat-log.md`
3
+
4
+ # Beat Log
5
+
6
+ ## 当前文章位置
7
+
8
+ [TODO: 摘要当前文章停在什么位置。]
9
+
10
+ ## 候选 Beats
11
+
12
+ [TODO: 列出 2-3 个候选起始 beat 或下一个 beat,并说明各自通向哪里。]
13
+
14
+ ## 用户选择
15
+
16
+ [TODO: 记录用户选择的 beat、组合要求或暂停原因。]
17
+
18
+ ## 写入记录
19
+
20
+ [TODO: 写入后记录当前 beat 摘要和下一轮可转向方向。]