@namewta/speculo 0.1.21 → 0.2.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 (288) hide show
  1. package/README.md +68 -78
  2. package/dist/src/cli.js +57 -34
  3. package/dist/src/cli.js.map +1 -1
  4. package/dist/src/index.d.ts +1 -3
  5. package/dist/src/index.js +128 -168
  6. package/dist/src/index.js.map +1 -1
  7. package/dist/src/migrate.d.ts +38 -0
  8. package/dist/src/migrate.js +646 -0
  9. package/dist/src/migrate.js.map +1 -0
  10. package/dist/src/workflows.d.ts +7 -37
  11. package/dist/src/workflows.js +49 -123
  12. package/dist/src/workflows.js.map +1 -1
  13. package/package.json +6 -4
  14. package/template/.speculo/README.md +20 -0
  15. package/template/.speculo/workspace.json +12 -0
  16. package/template/commands/docs-sync.md +28 -0
  17. package/template/commands/finalize.md +37 -0
  18. package/template/commands/knowledge-prune.md +20 -0
  19. package/template/commands/retro.md +15 -8
  20. package/template/commands/status.md +8 -51
  21. package/template/skills/agents-md-builder/SKILL.md +14 -101
  22. package/template/skills/change-lifecycle/SKILL.md +25 -0
  23. package/template/{workflows/dev/_templates → skills/change-lifecycle/assets}/completion-summary-template.md +2 -2
  24. package/template/{workflows/dev/_templates → skills/change-lifecycle/assets}/completion-verification-template.md +1 -1
  25. package/template/skills/change-lifecycle/references/completion-gate.md +19 -0
  26. package/template/skills/change-lifecycle/references/finalize-archive.md +32 -0
  27. package/template/skills/docs-sync/SKILL.md +22 -0
  28. package/template/skills/docs-sync/assets/report-template.md +45 -0
  29. package/template/skills/docs-sync/assets/state-template.json +20 -0
  30. package/template/skills/docs-sync/assets/workflow-scope-template.json +9 -0
  31. package/template/skills/docs-sync/references/agents-contract.md +43 -0
  32. package/template/skills/docs-sync/references/changelog-contract.md +39 -0
  33. package/template/skills/docs-sync/references/document-lifecycle-contract.md +38 -0
  34. package/template/skills/docs-sync/references/git-state-contract.md +67 -0
  35. package/template/skills/docs-sync/references/readme-contract.md +44 -0
  36. package/template/skills/docs-sync/references/workflow-scope-contract.md +50 -0
  37. package/template/skills/github-npm-ops/SKILL.md +14 -39
  38. package/template/skills/github-npm-ops/references/failure-recovery.md +1 -1
  39. package/template/skills/github-npm-ops/references/preflight-checklist.md +1 -1
  40. package/template/skills/github-npm-ops/references/release-notes-injection.md +1 -1
  41. package/template/skills/github-npm-ops/references/release-pipeline.md +13 -13
  42. package/template/skills/github-npm-ops/references/version-bump-flow.md +3 -3
  43. package/template/skills/knowledge-prune/SKILL.md +29 -0
  44. package/template/skills/knowledge-prune/references/audit-rules.md +24 -0
  45. package/template/skills/runtime-context/SKILL.md +43 -0
  46. package/template/skills/runtime-context/references/path-resolution.md +32 -0
  47. package/template/skills/speculo-retro/SKILL.md +13 -37
  48. package/template/skills/speculo-retro/references/friction-taxonomy.md +3 -3
  49. package/template/skills/speculo-retro/references/issue-drafting-sop.md +3 -3
  50. package/template/skills/worktree-isolation/SKILL.md +10 -46
  51. package/template/skills/worktree-isolation/references/audit-branch-tree.md +2 -2
  52. package/template/skills/worktree-isolation/references/create-worktree.md +6 -6
  53. package/template/skills/worktree-isolation/references/merge-and-cleanup.md +5 -5
  54. package/template/vendor/README.md +11 -10
  55. package/template/vendor/matt-pocock/README.md +41 -0
  56. package/template/vendor/matt-pocock/engineering/README.md +28 -0
  57. package/template/vendor/matt-pocock/engineering/ask-matt/SKILL.md +76 -0
  58. package/template/vendor/matt-pocock/engineering/code-review/SKILL.md +89 -0
  59. package/template/vendor/matt-pocock/engineering/codebase-design/DEEPENING.md +37 -0
  60. package/template/vendor/matt-pocock/engineering/codebase-design/DESIGN-IT-TWICE.md +44 -0
  61. package/template/vendor/matt-pocock/engineering/codebase-design/SKILL.md +114 -0
  62. package/template/vendor/matt-pocock/engineering/diagnosing-bugs/SKILL.md +134 -0
  63. package/template/vendor/matt-pocock/engineering/diagnosing-bugs/scripts/hitl-loop.template.sh +41 -0
  64. package/template/vendor/matt-pocock/engineering/domain-modeling/ADR-FORMAT.md +47 -0
  65. package/template/vendor/matt-pocock/engineering/domain-modeling/CONTEXT-FORMAT.md +60 -0
  66. package/template/vendor/matt-pocock/engineering/domain-modeling/SKILL.md +74 -0
  67. package/template/vendor/matt-pocock/engineering/grill-with-docs/SKILL.md +7 -0
  68. package/template/vendor/matt-pocock/engineering/implement/SKILL.md +15 -0
  69. package/template/vendor/matt-pocock/engineering/improve-codebase-architecture/HTML-REPORT.md +123 -0
  70. package/template/vendor/matt-pocock/engineering/improve-codebase-architecture/SKILL.md +66 -0
  71. package/template/vendor/matt-pocock/engineering/prototype/LOGIC.md +79 -0
  72. package/template/vendor/matt-pocock/engineering/prototype/SKILL.md +30 -0
  73. package/template/vendor/matt-pocock/engineering/prototype/UI.md +112 -0
  74. package/template/vendor/matt-pocock/engineering/research/SKILL.md +12 -0
  75. package/template/vendor/matt-pocock/engineering/resolving-merge-conflicts/SKILL.md +14 -0
  76. package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/SKILL.md +127 -0
  77. package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/domain.md +51 -0
  78. package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/issue-tracker-github.md +45 -0
  79. package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/issue-tracker-gitlab.md +46 -0
  80. package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/issue-tracker-local.md +30 -0
  81. package/template/vendor/matt-pocock/engineering/setup-matt-pocock-skills/triage-labels.md +15 -0
  82. package/template/vendor/matt-pocock/engineering/tdd/SKILL.md +36 -0
  83. package/template/vendor/matt-pocock/engineering/tdd/mocking.md +59 -0
  84. package/template/vendor/matt-pocock/engineering/tdd/tests.md +77 -0
  85. package/template/vendor/matt-pocock/engineering/to-spec/SKILL.md +75 -0
  86. package/template/vendor/matt-pocock/engineering/to-tickets/SKILL.md +113 -0
  87. package/template/vendor/matt-pocock/engineering/triage/AGENT-BRIEF.md +204 -0
  88. package/template/vendor/matt-pocock/engineering/triage/OUT-OF-SCOPE.md +104 -0
  89. package/template/vendor/matt-pocock/engineering/triage/SKILL.md +112 -0
  90. package/template/vendor/matt-pocock/engineering/wayfinder/SKILL.md +127 -0
  91. package/template/vendor/matt-pocock/in-progress/README.md +10 -0
  92. package/template/vendor/matt-pocock/in-progress/claude-handoff/SKILL.md +18 -0
  93. package/template/vendor/matt-pocock/in-progress/loop-me/SKILL.md +32 -0
  94. package/template/vendor/matt-pocock/in-progress/wizard/SKILL.md +45 -0
  95. package/template/vendor/matt-pocock/in-progress/wizard/template.sh +211 -0
  96. package/template/vendor/matt-pocock/in-progress/writing-beats/SKILL.md +67 -0
  97. package/template/vendor/matt-pocock/in-progress/writing-fragments/SKILL.md +78 -0
  98. package/template/vendor/matt-pocock/in-progress/writing-shape/SKILL.md +79 -0
  99. package/template/vendor/matt-pocock/productivity/README.md +18 -0
  100. package/template/vendor/matt-pocock/productivity/grill-me/SKILL.md +7 -0
  101. package/template/vendor/matt-pocock/productivity/grilling/SKILL.md +12 -0
  102. package/template/vendor/matt-pocock/productivity/handoff/SKILL.md +16 -0
  103. package/template/vendor/matt-pocock/productivity/teach/GLOSSARY-FORMAT.md +35 -0
  104. package/template/vendor/matt-pocock/productivity/teach/LEARNING-RECORD-FORMAT.md +46 -0
  105. package/template/vendor/matt-pocock/productivity/teach/MISSION-FORMAT.md +31 -0
  106. package/template/vendor/matt-pocock/productivity/teach/RESOURCES-FORMAT.md +32 -0
  107. package/template/vendor/matt-pocock/productivity/teach/SKILL.md +140 -0
  108. package/template/vendor/matt-pocock/productivity/writing-great-skills/GLOSSARY.md +201 -0
  109. package/template/vendor/matt-pocock/productivity/writing-great-skills/SKILL.md +83 -0
  110. package/template/workflows/matt-pocock/WORKFLOW.md +145 -0
  111. package/template/workflows/matt-pocock/_state/status.json +5 -0
  112. package/template/workflows/matt-pocock/routes/architecture.md +24 -0
  113. package/template/workflows/matt-pocock/routes/diagnose.md +22 -0
  114. package/template/workflows/matt-pocock/routes/experimental.md +18 -0
  115. package/template/workflows/matt-pocock/routes/idea-to-delivery.md +63 -0
  116. package/template/workflows/matt-pocock/routes/merge-conflicts.md +19 -0
  117. package/template/workflows/matt-pocock/routes/productivity.md +25 -0
  118. package/template/workflows/matt-pocock/routes/research-prototype.md +20 -0
  119. package/template/workflows/matt-pocock/routes/review.md +19 -0
  120. package/template/workflows/matt-pocock/routes/setup.md +42 -0
  121. package/template/workflows/matt-pocock/routes/triage.md +25 -0
  122. package/template/workflows/matt-pocock/routes/wayfinder.md +27 -0
  123. package/template/workflows/person/M-mao-zedong-cognitive-os/M-mao-zedong-cognitive-os.md +74 -59
  124. package/template/workflows/person/M-mao-zedong-cognitive-os/activate.md +2 -2
  125. package/template/workflows/person/M-mao-zedong-cognitive-os/deliver.md +5 -5
  126. package/template/workflows/person/M-mao-zedong-cognitive-os/diagnose.md +2 -2
  127. package/template/workflows/person/M-mao-zedong-cognitive-os/mobilize.md +4 -4
  128. package/template/workflows/person/M-mao-zedong-cognitive-os/strategize.md +3 -3
  129. package/template/workflows/person/WORKFLOW.md +68 -0
  130. package/template/workflows/person/_state/.config/LESSONS.md +3 -0
  131. package/template/workflows/person/_state/.config/RULES.md +3 -0
  132. package/template/workflows/person/_state/changes/.gitkeep +1 -0
  133. package/template/workflows/person/_state/status.json +5 -0
  134. package/template/.speculo/.config/LESSONS.md +0 -9
  135. package/template/.speculo/.config/RULES.md +0 -11
  136. package/template/.speculo/AGENTS.md +0 -30
  137. package/template/.speculo/archive/AGENTS.md +0 -28
  138. package/template/.speculo/archive/dev/.gitkeep +0 -0
  139. package/template/.speculo/archive/person/.gitkeep +0 -0
  140. package/template/.speculo/dev/.gitkeep +0 -0
  141. package/template/.speculo/dev/docs-sync-state.json +0 -14
  142. package/template/.speculo/dev-status.json +0 -3
  143. package/template/.speculo/doc-status.json +0 -3
  144. package/template/.speculo/person/.gitkeep +0 -0
  145. package/template/.speculo/person-status.json +0 -1
  146. package/template/commands/archive.md +0 -68
  147. package/template/commands/caveman.md +0 -50
  148. package/template/commands/config-prune.md +0 -59
  149. package/template/commands/grill-me.md +0 -48
  150. package/template/commands/handoff.md +0 -59
  151. package/template/commands/scaffold-exercises.md +0 -56
  152. package/template/commands/write-a-skill.md +0 -52
  153. package/template/skills/caveman/SKILL.md +0 -38
  154. package/template/skills/caveman/references/compression-rules.md +0 -102
  155. package/template/skills/config-prune/SKILL.md +0 -44
  156. package/template/skills/config-prune/references/audit-rules.md +0 -38
  157. package/template/skills/grill-me/SKILL.md +0 -40
  158. package/template/skills/handoff/SKILL.md +0 -73
  159. package/template/skills/scaffold-exercises/SKILL.md +0 -41
  160. package/template/skills/scaffold-exercises/references/exercise-structure.md +0 -85
  161. package/template/skills/scaffold-exercises/references/lint-and-git.md +0 -54
  162. package/template/skills/speculo-write/SKILL.md +0 -56
  163. package/template/skills/speculo-write/references/asset-selection-sop.md +0 -67
  164. package/template/skills/speculo-write/references/authoring-quality-levers.md +0 -61
  165. package/template/skills/speculo-write/references/command-authoring-sop.md +0 -98
  166. package/template/skills/speculo-write/references/migration-sop.md +0 -101
  167. package/template/skills/speculo-write/references/persistence-contract-sop.md +0 -271
  168. package/template/skills/speculo-write/references/skill-authoring-sop.md +0 -212
  169. package/template/skills/speculo-write/references/validation-checklist.md +0 -85
  170. package/template/skills/speculo-write/references/workflow-authoring-sop.md +0 -165
  171. package/template/vendor/codebase-design/DEEPENING.md +0 -37
  172. package/template/vendor/codebase-design/DESIGN-IT-TWICE.md +0 -44
  173. package/template/vendor/codebase-design/SKILL.md +0 -114
  174. package/template/vendor/officecli/SKILL.md +0 -415
  175. package/template/vendor/resolving-merge-conflicts/SKILL.md +0 -14
  176. package/template/workflows/dev/01-grill-with-docs/01-grill-with-docs.md +0 -107
  177. package/template/workflows/dev/01-grill-with-docs/grill-context-scan.md +0 -30
  178. package/template/workflows/dev/01-grill-with-docs/grill-decision.md +0 -38
  179. package/template/workflows/dev/02-prd/02-prd.md +0 -70
  180. package/template/workflows/dev/02-prd/prd-synthesis.md +0 -30
  181. package/template/workflows/dev/02-prd/prd-zoom-out.md +0 -29
  182. package/template/workflows/dev/03-tdd/03-tdd.md +0 -55
  183. package/template/workflows/dev/03-tdd/agents/tdd-finish-agent.md +0 -34
  184. package/template/workflows/dev/03-tdd/agents/tdd-implement-agent.md +0 -34
  185. package/template/workflows/dev/03-tdd/agents/tdd-plan-agent.md +0 -34
  186. package/template/workflows/dev/03-tdd/mocking.md +0 -43
  187. package/template/workflows/dev/03-tdd/refactoring.md +0 -10
  188. package/template/workflows/dev/03-tdd/tdd-finish.md +0 -34
  189. package/template/workflows/dev/03-tdd/tdd-loop.md +0 -36
  190. package/template/workflows/dev/03-tdd/tdd-plan.md +0 -37
  191. package/template/workflows/dev/03-tdd/tests.md +0 -61
  192. package/template/workflows/dev/04-finalize/04-finalize.md +0 -57
  193. package/template/workflows/dev/04-finalize/agents/completion-gate-agent.md +0 -35
  194. package/template/workflows/dev/04-finalize/completion-gate.md +0 -41
  195. package/template/workflows/dev/04-finalize/finalize-archive.md +0 -55
  196. package/template/workflows/dev/A-improve-architecture/A-improve-architecture.md +0 -60
  197. package/template/workflows/dev/A-improve-architecture/HTML-REPORT.md +0 -123
  198. package/template/workflows/dev/A-improve-architecture/architecture-grill.md +0 -30
  199. package/template/workflows/dev/A-improve-architecture/architecture-review.md +0 -29
  200. package/template/workflows/dev/A-improve-architecture/architecture-scan.md +0 -37
  201. package/template/workflows/dev/AGENTS.md +0 -95
  202. package/template/workflows/dev/D-docs-sync/D-docs-sync.md +0 -140
  203. package/template/workflows/dev/D-docs-sync/agents/docs-diff-agent.md +0 -34
  204. package/template/workflows/dev/D-docs-sync/agents/docs-update-agent.md +0 -34
  205. package/template/workflows/dev/D-docs-sync/agents-contract.md +0 -95
  206. package/template/workflows/dev/D-docs-sync/changelog-contract.md +0 -155
  207. package/template/workflows/dev/D-docs-sync/config-contract.md +0 -75
  208. package/template/workflows/dev/D-docs-sync/docs-sync-diff.md +0 -86
  209. package/template/workflows/dev/D-docs-sync/docs-sync-finish.md +0 -37
  210. package/template/workflows/dev/D-docs-sync/docs-sync-state.md +0 -47
  211. package/template/workflows/dev/D-docs-sync/docs-sync-update.md +0 -44
  212. package/template/workflows/dev/D-docs-sync/knowledge-extract.md +0 -66
  213. package/template/workflows/dev/D-docs-sync/readme-contract.md +0 -124
  214. package/template/workflows/dev/D-docs-sync/state-json-schema.md +0 -172
  215. package/template/workflows/dev/H-diagnose/H-diagnose.md +0 -108
  216. package/template/workflows/dev/H-diagnose/agents/diagnose-agent.md +0 -33
  217. package/template/workflows/dev/H-diagnose/agents/fix-agent.md +0 -34
  218. package/template/workflows/dev/H-diagnose/diagnose-fix.md +0 -34
  219. package/template/workflows/dev/H-diagnose/diagnose-guide.md +0 -144
  220. package/template/workflows/dev/H-diagnose/diagnose-loop.md +0 -41
  221. package/template/workflows/dev/H-diagnose/scripts/hitl-loop.template.sh +0 -41
  222. package/template/workflows/dev/I-to-issues/I-to-issues.md +0 -79
  223. package/template/workflows/dev/I-to-issues/issues-slices.md +0 -211
  224. package/template/workflows/dev/M-domain-modeling/ADR-FORMAT.md +0 -74
  225. package/template/workflows/dev/M-domain-modeling/CONTEXT-FORMAT.md +0 -67
  226. package/template/workflows/dev/M-domain-modeling/M-domain-modeling.md +0 -102
  227. package/template/workflows/dev/R-review/R-review.md +0 -75
  228. package/template/workflows/dev/R-review/agents/engineering-review-agent.md +0 -33
  229. package/template/workflows/dev/R-review/agents/spec-review-agent.md +0 -34
  230. package/template/workflows/dev/R-review/agents/standards-review-agent.md +0 -34
  231. package/template/workflows/dev/R-review/code-quality-checklist.md +0 -118
  232. package/template/workflows/dev/R-review/removal-checklist.md +0 -53
  233. package/template/workflows/dev/R-review/review-axes.md +0 -61
  234. package/template/workflows/dev/R-review/review-setup.md +0 -111
  235. package/template/workflows/dev/R-review/review-verdict.md +0 -43
  236. package/template/workflows/dev/R-review/security-checklist.md +0 -126
  237. package/template/workflows/dev/R-review/solid-checklist.md +0 -73
  238. package/template/workflows/dev/_templates/diagnosis-template.md +0 -20
  239. package/template/workflows/dev/_templates/docs-sync-report-template.md +0 -45
  240. package/template/workflows/dev/_templates/docs-sync-state-template.json +0 -14
  241. package/template/workflows/dev/_templates/domain-model-log-template.md +0 -20
  242. package/template/workflows/dev/_templates/grill-context-map-template.md +0 -20
  243. package/template/workflows/dev/_templates/grill-decision-log-template.md +0 -20
  244. package/template/workflows/dev/_templates/issues-slices-template.md +0 -106
  245. package/template/workflows/dev/_templates/overview-template.md +0 -19
  246. package/template/workflows/dev/_templates/prd-template.md +0 -26
  247. package/template/workflows/dev/_templates/regression-template.md +0 -20
  248. package/template/workflows/dev/_templates/review-report-template.md +0 -30
  249. package/template/workflows/dev/_templates/review-sources-template.md +0 -33
  250. package/template/workflows/dev/_templates/review-verdict-template.md +0 -33
  251. package/template/workflows/dev/_templates/tdd-log-template.md +0 -23
  252. package/template/workflows/dev/_templates/tdd-plan-template.md +0 -35
  253. package/template/workflows/dev/_templates/tdd-verification-template.md +0 -26
  254. package/template/workflows/doc/AGENTS.md +0 -80
  255. package/template/workflows/doc/B-writing-beats/B-writing-beats.md +0 -79
  256. package/template/workflows/doc/B-writing-beats/writing-beats-append.md +0 -31
  257. package/template/workflows/doc/B-writing-beats/writing-beats-options.md +0 -29
  258. package/template/workflows/doc/E-edit-article/E-edit-article.md +0 -79
  259. package/template/workflows/doc/E-edit-article/edit-article-plan.md +0 -30
  260. package/template/workflows/doc/E-edit-article/edit-article-rewrite.md +0 -31
  261. package/template/workflows/doc/F-writing-fragments/F-writing-fragments.md +0 -80
  262. package/template/workflows/doc/F-writing-fragments/writing-fragments-interview.md +0 -32
  263. package/template/workflows/doc/F-writing-fragments/writing-fragments-log.md +0 -29
  264. package/template/workflows/doc/S-writing-shape/S-writing-shape.md +0 -81
  265. package/template/workflows/doc/S-writing-shape/writing-shape-block.md +0 -32
  266. package/template/workflows/doc/S-writing-shape/writing-shape-opening.md +0 -27
  267. package/template/workflows/doc/T-teach/T-teach.md +0 -64
  268. package/template/workflows/doc/T-teach/teach-lesson-wrap.md +0 -63
  269. package/template/workflows/doc/T-teach/teach-lesson.md +0 -53
  270. package/template/workflows/doc/T-teach/teach-mission.md +0 -33
  271. package/template/workflows/doc/T-teach/teach-resources.md +0 -36
  272. package/template/workflows/doc/_templates/edit-article-plan-template.md +0 -25
  273. package/template/workflows/doc/_templates/edit-article-template.md +0 -7
  274. package/template/workflows/doc/_templates/teach-glossary-template.md +0 -26
  275. package/template/workflows/doc/_templates/teach-learning-record-template.md +0 -38
  276. package/template/workflows/doc/_templates/teach-lesson-html-template.md +0 -24
  277. package/template/workflows/doc/_templates/teach-mission-template.md +0 -19
  278. package/template/workflows/doc/_templates/teach-resources-template.md +0 -18
  279. package/template/workflows/doc/_templates/writing-article-template.md +0 -7
  280. package/template/workflows/doc/_templates/writing-beat-options-template.md +0 -21
  281. package/template/workflows/doc/_templates/writing-fragments-template.md +0 -7
  282. package/template/workflows/doc/_templates/writing-interview-log-template.md +0 -21
  283. package/template/workflows/doc/_templates/writing-shape-log-template.md +0 -25
  284. package/template/workflows/person/AGENTS.md +0 -72
  285. /package/template/{.speculo/.config/adr → workflows/matt-pocock/_state/archive}/.gitkeep +0 -0
  286. /package/template/{.speculo/.config/context → workflows/matt-pocock/_state/changes}/.gitkeep +0 -0
  287. /package/template/{.speculo/archive/doc → workflows/person/_state/.config/context}/.gitkeep +0 -0
  288. /package/template/{.speculo/doc → workflows/person/_state/archive}/.gitkeep +0 -0
@@ -1,415 +0,0 @@
1
- ---
2
- name: officecli
3
- description: Create, analyze, proofread, and modify Office documents (.docx, .xlsx, .pptx) using the officecli CLI tool. Use when the user wants to create, inspect, check formatting, find issues, add charts, or modify Office documents.
4
- ---
5
-
6
- # officecli
7
-
8
- AI-friendly CLI for .docx, .xlsx, .pptx. Single binary, no dependencies, no Office installation needed.
9
-
10
- ## Install
11
-
12
- If `officecli` is not installed:
13
-
14
- ```bash
15
- # macOS / Linux
16
- curl -fsSL https://d.officecli.ai/install.sh | bash
17
-
18
- # Windows (PowerShell)
19
- irm https://d.officecli.ai/install.ps1 | iex
20
- ```
21
-
22
- Verify with `officecli --version`. If still not found after install, open a new terminal.
23
-
24
- ---
25
-
26
- ## Strategy
27
-
28
- **L1 (read) → L2 (DOM edit) → L3 (raw XML)**. Always prefer higher layers. Add `--json` for structured output.
29
-
30
- **Before doc work, check Specialized Skills** (bottom of this file). Fundraising decks, academic papers, financial models, dashboards, and Morph animations need their own skill loaded first — `load_skill` once, then proceed.
31
-
32
- ---
33
-
34
- ## Help System (IMPORTANT)
35
-
36
- **When unsure about property names, value formats, or command syntax, ALWAYS run help instead of guessing.** One help query beats guess-fail-retry loops.
37
-
38
- `officecli help` ≡ `officecli --help`, and `officecli <cmd> --help` ≡ `officecli help <cmd>` — same content.
39
-
40
- ```bash
41
- officecli help # All commands + global options + schema entry points
42
- officecli help docx # List all docx elements
43
- officecli help docx paragraph # Full schema: properties, aliases, examples, readbacks
44
- officecli help docx set paragraph # Verb-filtered: only props usable with `set`
45
- officecli help docx paragraph --json # Structured schema (machine-readable)
46
- ```
47
-
48
- Format aliases: `word`→`docx`, `excel`→`xlsx`, `ppt`/`powerpoint`→`pptx`. Verbs: `add`, `set`, `get`, `query`, `remove`. MCP exposes the same schema via `{"command":"help","format":"docx","type":"paragraph"}`.
49
-
50
- ---
51
-
52
- ## Performance: Resident Mode
53
-
54
- **Every command auto-starts a resident on first access** (60s idle timeout) — file-lock conflicts are automatically avoided. Explicit `open`/`close` is still recommended for longer sessions (12min idle):
55
- ```bash
56
- officecli open report.docx # explicitly keep in memory
57
- officecli set report.docx ... # no file I/O overhead
58
- officecli close report.docx # save and release
59
- ```
60
-
61
- Opt out of auto-start: `OFFICECLI_NO_AUTO_RESIDENT=1`.
62
-
63
- ---
64
-
65
- ## Quick Start
66
-
67
- **PPT:**
68
- ```bash
69
- officecli create slides.pptx
70
- officecli add slides.pptx / --type slide --prop title="Q4 Report" --prop background=1A1A2E
71
- officecli add slides.pptx '/slide[1]' --type shape --prop text="Revenue grew 25%" --prop x=2cm --prop y=5cm --prop font=Arial --prop size=24 --prop color=FFFFFF
72
- ```
73
-
74
- **Word:**
75
- ```bash
76
- officecli create report.docx
77
- officecli add report.docx /body --type paragraph --prop text="Executive Summary" --prop style=Heading1
78
- officecli add report.docx /body --type paragraph --prop text="Revenue increased by 25% year-over-year."
79
- ```
80
-
81
- **Excel:**
82
- ```bash
83
- officecli create data.xlsx
84
- officecli set data.xlsx /Sheet1/A1 --prop value="Name" --prop bold=true
85
- officecli set data.xlsx /Sheet1/A2 --prop value="Alice"
86
- ```
87
-
88
- ---
89
-
90
- ## L1: Create, Read & Inspect
91
-
92
- ```bash
93
- officecli create <file> # Create blank .docx/.xlsx/.pptx (type from extension)
94
- officecli view <file> <mode> # outline | stats | issues | text | annotated | html
95
- officecli get <file> <path> --depth N # Get a node and its children [--json]
96
- officecli query <file> <selector> # CSS-like query
97
- officecli validate <file> # Validate against OpenXML schema
98
- ```
99
-
100
- ### view modes
101
-
102
- | Mode | Description | Useful flags |
103
- |------|-------------|-------------|
104
- | `outline` | Document structure | |
105
- | `stats` | Statistics (pages, words, shapes) | |
106
- | `issues` | Formatting/content/structure problems | `--type format\|content\|structure`, `--limit N` |
107
- | `text` | Plain text extraction | `--start N --end N`, `--max-lines N` |
108
- | `annotated` | Text with formatting annotations | |
109
- | `html` | Static HTML snapshot — same renderer as `watch`, no server needed | `--browser`, `--page N` (docx), `--start N --end N` (pptx) |
110
- | `screenshot` / `svg` / `pdf` / `forms` | PNG via headless browser / SVG (pptx slide) / PDF via exporter plugin / form-fields JSON via format-handler plugin | `-o`, `--screenshot-width/-height`, pptx `--grid N` |
111
-
112
- Use `view html` for one-shot snapshots (CI artifacts, archival, diffing); use `watch` when you need live refresh or browser-side click-to-select.
113
-
114
- ### get
115
-
116
- Any XML path via element localName. Use `--depth N` to expand children. Add `--json` for structured output. Default text output is grep-friendly: `path (type) "text" key=val key=val ...`
117
-
118
- ```bash
119
- officecli get report.docx '/body/p[3]' --depth 2 --json
120
- officecli get slides.pptx '/slide[1]' --depth 1 # list all shapes on slide 1
121
- officecli get data.xlsx '/Sheet1/B2' --json
122
- ```
123
-
124
- ### Stable ID Addressing
125
-
126
- Elements with stable IDs return `@attr=value` paths instead of positional indices. Prefer these in multi-step workflows — positional indices shift on insert/delete, stable IDs do not.
127
-
128
- ```
129
- /slide[1]/shape[@id=550950021] # PPT shape
130
- /slide[1]/table[@id=1388430425]/tr[1]/tc[2] # PPT table
131
- /body/p[@paraId=1A2B3C4D] # Word paragraph
132
- /comments/comment[@commentId=1] # Word comment
133
- ```
134
-
135
- PPT also accepts `@name=` (e.g. `shape[@name=Title 1]`), with morph `!!` prefix awareness. Elements without stable IDs (slide, run, tr/tc, row) fall back to positional indices.
136
-
137
- ### query
138
-
139
- CSS-like selectors: `[attr=value]`, `[attr!=value]`, `[attr~=text]`, `[attr>=value]`, `[attr<=value]`, `:contains("text")`, `:empty`, `:has(formula)`, `:no-alt`. Boolean `and`/`or` supported across `query`/`set`/`remove`: `cell[value>5000 or value<100]`, `cell[(type=Number or type=Date) and value>0]`. Excel row-by-column-name: `Sheet1!row[Salary>5000]`. `set` accepts selectors and Excel-native paths (parity with `get`/`query`). Bare unscoped selectors rejected on `set`/`remove`.
140
-
141
- ```bash
142
- officecli query report.docx 'paragraph[style=Normal] > run[font!=Arial]'
143
- officecli query slides.pptx 'shape[fill=FF0000]'
144
- ```
145
-
146
- ---
147
-
148
- ## Watch & Interactive Selection
149
-
150
- Live HTML preview that auto-refreshes on every file change. Browsers can click / shift-click / box-drag to select shapes; the CLI can read the current browser selection and act on it.
151
-
152
- ```bash
153
- officecli watch <file> [--port N] # Start preview server (default port 26315)
154
- officecli unwatch <file> # Stop
155
- officecli goto <file> <path> # Scroll watching browser(s) to element (docx: p / table / tr / tc)
156
- ```
157
-
158
- Open the printed `http://localhost:N` URL. Click to select; shift/cmd/ctrl+click to multi-select; drag from empty space to box-select. PPT/Word use blue outline; Excel uses native-style green selection (double-click cell to edit inline; drag a chart to reposition).
159
-
160
- ### `get <file> selected` — read what the user clicked
161
-
162
- ```bash
163
- officecli get <file> selected [--json]
164
- ```
165
-
166
- Returns DocumentNodes for whatever is currently selected. Empty result if nothing selected. Exit code != 0 if no watch is running.
167
-
168
- ```bash
169
- # User clicks shapes in the browser, then asks "make these red"
170
- PATHS=$(officecli get deck.pptx selected --json | jq -r '.data.Results[].path')
171
- for p in $PATHS; do officecli set deck.pptx "$p" --prop fill=FF0000; done
172
- ```
173
-
174
- ### Key properties
175
-
176
- - **Selection survives file edits.** Paths use stable `@id=` form.
177
- - **All connected browsers share one selection.** Last-write-wins.
178
- - **Same-file single-watch.** A given file can have only one watch process at a time.
179
- - **Group shapes select as a whole.** Drilling into individual children of a group is not supported in v1.
180
- - **Coverage:** `.pptx` shapes/pictures/tables/charts/connectors/groups; `.docx` top-level paragraphs and tables. Inherited layout/master decorations and Word nested elements (table cells, run-level) are not addressable. **`.xlsx` does not emit `data-path`** — `mark`/`selection` on xlsx always resolve `stale=true` (v2 candidate).
181
-
182
- ### Marks — edit proposals waiting for review
183
-
184
- Use `mark` when changes need human review BEFORE they hit the file. Marks live in the watch process only; a separate `set` pipeline applies accepted ones. For one-shot changes use `set` directly; for permanent file annotations use `add --type comment` (Word native).
185
-
186
- ```bash
187
- officecli mark <file> <path> [--prop find=... color=... note=... tofix=... regex=true] [--json]
188
- officecli unmark <file> [--path <p> | --all] [--json]
189
- officecli get-marks <file> [--json]
190
- ```
191
-
192
- Props: `find` (literal or regex when `regex=true`; raw form `find='r"[abc]"'`), `color` (hex / `rgb(...)` / 22 named whitelist), `note`, `tofix` (drives apply pipeline). **Path** must be `data-path` format from watch HTML — see subskills for full pipeline.
193
-
194
- ---
195
-
196
- ## L2: DOM Operations
197
-
198
- ### set — modify properties
199
-
200
- ```bash
201
- officecli set <file> <path> --prop key=value [--prop ...]
202
- ```
203
-
204
- **Any XML attribute is settable** via element path (found via `get --depth N`) — even attributes not currently present. Without `find=`, `set` applies format to the entire element.
205
-
206
- **Value formats:**
207
-
208
- | Type | Format | Examples |
209
- |------|--------|---------|
210
- | Colors | Hex (with/without `#`), named, RGB, theme | `FF0000`, `#FF0000`, `red`, `rgb(255,0,0)`, `accent1`..`accent6` |
211
- | Spacing | Unit-qualified | `12pt`, `0.5cm`, `1.5x`, `150%` |
212
- | Dimensions | EMU or suffixed | `914400`, `2.54cm`, `1in`, `72pt`, `96px` |
213
-
214
- **Dotted-attr aliases** — `font.<attr>` forms accepted on shape/run/paragraph/table/row/cell/section/styles, e.g. `--prop font.color=red --prop font.bold=true --prop font.size=14pt`. Run `officecli help <fmt> <element>` for the full list.
215
-
216
- ### find — format or replace matched text
217
-
218
- Use top-level `--find` / `--replace` on `set` (and `--find` on `query`). Legacy `--prop find=X` still works but emits a hint.
219
-
220
- ```bash
221
- # Format matched text (auto-splits runs)
222
- officecli set doc.docx '/body/p[1]' --find weather --prop bold=true --prop color=red
223
-
224
- # Regex matching (regex= still a prop flag)
225
- officecli set doc.docx '/body/p[1]' --find '\d+%' --prop regex=true --prop color=red
226
-
227
- # Replace text (use `/` for whole-document scope)
228
- officecli set doc.docx / --find draft --replace final
229
-
230
- # docx: tracked Find&Replace
231
- officecli set doc.docx / --find draft --replace final --prop revision.author=Alice
232
-
233
- # PPT — same syntax, different paths
234
- officecli set slides.pptx / --find draft --replace final
235
- ```
236
-
237
- **Path controls search scope:** `/` = whole document, `/body/p[1]` or `/slide[N]/shape[M]` = specific element, `/header[1]` / `/footer[1]` = headers/footers.
238
-
239
- **Notes:**
240
- - Case-sensitive by default. Case-insensitive: `--prop 'find=(?i)error' --prop regex=true`
241
- - Matches work across run boundaries
242
- - No match = silent success. `--json` includes `"matched": N`
243
- - **Excel:** only `find` + `replace` supported (no find + format props)
244
-
245
- ### add — add elements or clone
246
-
247
- ```bash
248
- officecli add <file> <parent> --type <type> [--prop ...]
249
- officecli add <file> <parent> --type <type> --after <path> [--prop ...] # insert after anchor
250
- officecli add <file> <parent> --type <type> --before <path> [--prop ...] # insert before anchor
251
- officecli add <file> <parent> --type <type> --index N [--prop ...] # 0-based position (legacy)
252
- officecli add <file> <parent> --from <path> # clone existing element
253
- ```
254
-
255
- `--after`, `--before`, `--index` are mutually exclusive. No position flag = append to end.
256
-
257
- **Element types (with aliases):**
258
-
259
- | Format | Types |
260
- |--------|-------|
261
- | **pptx** | slide (incl. hidden), shape (font.latin/ea/cs, direction=rtl, underline.color, highlight=COLOR (Add/Set/Get/HTML preview), effective.X+effective.X.src; arrow alias for rightArrow; slideMaster/slideLayout typed add/set/remove), picture (SVG, brightness/contrast/glow/shadow, rotation, link, tooltip), chart (direction=rtl, pieOfPie, barOfPie, axisLine/gridline per-attr setters, animation+chartBuild=byCategory|bySeries, line dropLines/hiLowLines/upDownBars, anchor=x,y,w,h shorthand), table (cell direction=rtl, fill/background, built-in PowerPoint style catalogue, /col[C] get + swap/copyFrom, row/col Move/CopyFrom), row (tr), connector (from/to accept @name=, startshape/endshape SetByPath), group (link, tooltip, deep walk by get/query/add/remove), video/audio (loop, autoStart alias), equation, notes (direction=rtl, lang), comment (legacy + modern p188 threaded round-trip), animation (15 emphasis + 16 exit presets, multi-effect chains, motion-path presets, repeat/restart/autoReverse, chart animations), transition (12 p15 presets + morph/p14), paragraph (para), run, zoom, ole (preview=, full dump round-trip via add-part+raw-set), placeholder (phType=...), model3d (rotation=ax,ay,az; full dump round-trip), smartart (dump round-trip via add-part). |
262
- | **docx** | paragraph (direction/font.latin/ea/cs, bold.cs/italic.cs/size.cs, lang.latin/ea/cs, wordWrap, framePr.\*, tabs shorthand), run (lang slots, direction, underline.color, position half-pts, **revision.type=ins\|del\|format\|moveFrom\|moveTo + revision.action=accept\|reject** with .author/.date — `/revision[@author=X]` selector for filtered accept/reject), table (direction=rtl, hMerge, **virtual column ops**: add/remove/move/copyfrom on /body/tbl[N]/col), row (tr), cell (td), image, header/footer (direction), section (pageNumFmt full enum, direction=rtl, rtlGutter, pgBorders=box), bookmark, comment, footnote, endnote, formfield, sdt, chart, equation, field (28 types), hyperlink, style (direction, indents, pbdr, lineSpacing on Add/Set), toc, watermark, break, ole, **num/abstractNum/lvl**, **tab**, **textbox/shape** (full Add+Get; geometry, fill, line, wrap, alt, anchor, **rotation, verticalText (eaVert/vert/vert270/wordArt\*), gradient, shadow, opacity**), embedded **OLE round-trip on dump→batch**. docDefaults.rtl, autoHyphenation, `get /` exposes locale + /comments /footnotes /endnotes. `create --minimal` for raw OOXML scaffolding. |
263
- | **xlsx** | sheet (visible/hidden/veryHidden, print margins, printTitleRows/Cols, rightToLeft sheetView, cascade-aware rename), row (c{N}= cell-content shorthand; add accepts --from /Sheet/col[L]; formula-ref rewrite on insert), col (formula-ref rewrite, named-range follow on move), cell (type=richtext+runs, merge=range/sweep, direction=rtl, phonetic; **--shift left\|up on remove, shift=right\|down on add** — Excel UI dialog parity; formula auto-detect; OFFSET/INDIRECT in calc), chart (per-axis RTL/title, anchor=x,y,w,h, pareto), image (SVG), comment (direction=rtl), table (listobject), namedrange (definedname, volatile, `[@name=X]`; formula-body inlined at parse), pivottable (cache CoW + cross-pivot sharing, labelFilter, topN, fillDownLabels, calculatedField), sparkline, validation, autofilter, shape, textbox, CF (databar/colorscale/iconset/formulacf/cellIs/topN/aboveAverage), ole, csv. Query supports `merge`/`mergedrange`. Workbook: password. Shape selector enumerates leaves inside grpSp. |
264
-
265
- ### Pivot tables (xlsx)
266
-
267
- ```bash
268
- officecli add data.xlsx /Sheet1 --type pivottable \
269
- --prop source="Sheet1!A1:E100" --prop rows=Region,Category \
270
- --prop cols=Year --prop values="Sales:sum,Qty:count" \
271
- --prop grandTotals=rows --prop subtotals=off --prop sort=asc
272
- ```
273
-
274
- Key props: `rows`, `cols`, `values` (Field:func[:showDataAs]), `filters`, `source`, `position`, `layout` (compact/outline/tabular), `repeatLabels`, `blankRows`, `aggregate`, `showDataAs` (percent_of_total/row/col, running_total), `grandTotals`, `subtotals`, `sort`. Aggregators: sum, count, average, max, min, product, stdDev, stdDevp, var, varp, countNums. Date columns auto-group. Run `officecli help xlsx pivottable` for full schema.
275
-
276
- ### Document-level properties (all formats)
277
-
278
- ```bash
279
- officecli set doc.docx / --prop docDefaults.font=Arial --prop docDefaults.fontSize=11pt
280
- officecli set doc.docx / --prop protection=forms --prop evenAndOddHeaders=true
281
- officecli set data.xlsx / --prop calc.mode=manual --prop calc.refMode=r1c1
282
- officecli set slides.pptx / --prop defaultFont=Arial --prop show.loop=true --prop print.what=handouts
283
- ```
284
-
285
- Run `officecli help <format> /` for all document-level properties (docDefaults, docGrid, CJK spacing, calc, print, show, theme, extended).
286
-
287
- ### Sort (xlsx)
288
-
289
- ```bash
290
- officecli set data.xlsx /Sheet1 --prop sort="C desc" --prop sortHeader=true
291
- officecli set data.xlsx '/Sheet1/A1:D100' --prop sort="A asc" --prop sortHeader=true
292
- ```
293
-
294
- Format: `COL DIR[, COL DIR ...]`. Rejects ranges with merged cells or formulas. Sidecar metadata (hyperlinks, comments, conditional formatting, drawings) follows rows automatically.
295
-
296
- ### Text-anchored insert (`--after find:X` / `--before find:X`)
297
-
298
- Locate an insertion point by text match within a paragraph. Inline types (run, picture, hyperlink) insert within the paragraph; block types (table, paragraph) auto-split it. PPT only supports inline.
299
-
300
- ```bash
301
- # Word: inline run after matched text
302
- officecli add doc.docx '/body/p[1]' --type run --after find:weather --prop text=" (sunny)"
303
-
304
- # Word: block table after matched text (auto-splits paragraph)
305
- officecli add doc.docx '/body/p[1]' --type table --after "find:First sentence." --prop rows=2 --prop cols=2
306
- ```
307
-
308
- ### Clone
309
-
310
- `officecli add <file> / --from '/slide[1]'` — copies with all cross-part relationships.
311
-
312
- ### move, swap, remove
313
-
314
- ```bash
315
- officecli move <file> <path> [--to <parent>] [--index N] [--after <path>] [--before <path>]
316
- officecli swap <file> <path1> <path2>
317
- officecli remove <file> '/body/p[4]'
318
- ```
319
-
320
- When using `--after` or `--before`, `--to` can be omitted — the target container is inferred from the anchor.
321
-
322
- ### batch — multiple operations in one save cycle
323
-
324
- Continues on error by default (returns exit 1 if any item fails). Use `--stop-on-error` to abort on the first failure. `--force` is the docx-protection bypass.
325
-
326
- `officecli dump <file> [<path>]` emits a replayable batch JSON for round-trip — `.docx` (full coverage) and `.pptx` (text/tables/pictures/charts/notes/theme + OLE/3D/video/audio/SmartArt/morph/p15 transitions via raw-set passthrough). Path defaults to `/` (whole document); pass a subtree path (`/body`, `/body/p[N]`, `/body/tbl[N]`, `/theme`, `/settings`, `/numbering`, `/styles`) to scope the dump. `officecli refresh <file.docx>` recalculates TOC page numbers / PAGE / cross-references after replay (Word backend on Windows; headless-HTML fallback elsewhere). `officecli plugins list` extends support to `.doc`, `.hwpx`, `.pdf` export.
327
-
328
- ```bash
329
- echo '[
330
- {"command":"set","path":"/Sheet1/A1","props":{"value":"Name","bold":"true"}},
331
- {"command":"set","path":"/Sheet1/B1","props":{"value":"Score","bold":"true"}}
332
- ]' | officecli batch data.xlsx --json
333
-
334
- officecli batch data.xlsx --commands '[{"op":"set","path":"/Sheet1/A1","props":{"value":"Done"}}]' --json
335
- officecli batch data.xlsx --input updates.json --force --json
336
- ```
337
-
338
- Supports: `add`, `set`, `get`, `query`, `remove`, `move`, `swap`, `view`, `raw`, `raw-set`, `validate`. Fields: `command` (or `op`), `path`, `parent`, `type`, `from`, `to`, `index`, `after`, `before`, `props`, `selector`, `mode`, `depth`, `part`, `xpath`, `action`, `xml`.
339
-
340
- ---
341
-
342
- ## L3: Raw XML
343
-
344
- Use when L2 cannot express what you need. No xmlns declarations needed — prefixes auto-registered.
345
-
346
- ```bash
347
- officecli raw <file> <part> # view raw XML
348
- officecli raw-set <file> <part> --xpath "..." --action replace --xml '<w:p>...</w:p>'
349
- officecli add-part <file> <parent> # create new document part (returns rId)
350
- ```
351
-
352
- `raw-set` actions: `append`, `prepend`, `insertbefore`, `insertafter`, `replace`, `remove`, `setattr`. Run `officecli help <format> raw` for available parts.
353
-
354
- ---
355
-
356
- ## Common Pitfalls
357
-
358
- | Pitfall | Correct Approach |
359
- |---------|-----------------|
360
- | `--name "foo"` | Use `--prop name="foo"` — all attributes go through `--prop` |
361
- | Unquoted `[N]` paths in zsh/bash | Always quote: `'/slide[1]'` or `"/slide[1]"` (shell glob-expands brackets) |
362
- | PPT `shape[1]` for content | `shape[1]` is typically the title placeholder. Use `shape[2]+` for content shapes |
363
- | `/shape[myname]` | Name indexing not supported. Use numeric index or `@name=` (PPT only) |
364
- | Guessing property names | Run `officecli help <format> <element>` to see exact names |
365
- | Modifying an open file | Close the file in PowerPoint/WPS first |
366
- | `\n` in shell strings | Use `\\n` for newlines in `--prop text="..."` |
367
- | `$` in shell text | `--prop text="$15M"` strips `$15`. Use single quotes: `--prop text='$15M'`, or heredoc batch |
368
-
369
- ---
370
-
371
- ## Specialized Skills
372
-
373
- `officecli load_skill <name>` — output is a SKILL.md, follow its rules.
374
-
375
- **Loading rule**:
376
- - Pick the most specific match in "When to use"; if none fits, load the format default (`word` / `pptx` / `excel`).
377
- - Scenes already contain the format default's rules — load **one** skill per artifact, never stack.
378
- - Loaded rules persist across turns; don't re-load each reply.
379
- - Two distinct artifacts → two separate loads.
380
-
381
- ### Word (.docx)
382
-
383
- | Name | When to use |
384
- |------|-------------|
385
- | `word` | Reports, letters, memos, proposals, generic documents |
386
- | `academic-paper` | Journal / conference / thesis: APA / Chicago / IEEE / MLA citations, equations, SEQ + PAGEREF cross-refs, multi-column journal layout, bibliography. NOT for business reports or letters (route those to `word`) |
387
-
388
- ### PowerPoint (.pptx)
389
-
390
- | Name | When to use |
391
- |------|-------------|
392
- | `pptx` | Generic decks: board reviews, sales decks, all-hands, product launches |
393
- | `pitch-deck` | **Fundraising only** — seed / Series A-C / SAFE / convertible / strategic raise. NOT for sales / product / board decks (route those to `pptx`) |
394
- | `morph-ppt` | Cinematic Morph-animated presentations. NOT for static decks (route those to `pptx`) |
395
- | `morph-ppt-3d` | 3D Morph: GLB models, camera moves, depth. NOT for 2D-only Morph (route those to `morph-ppt`) |
396
-
397
- ### Excel (.xlsx)
398
-
399
- | Name | When to use |
400
- |------|-------------|
401
- | `excel` | Generic workbooks, formulas, pivots, trackers |
402
- | `financial-model` | Financial models, scenarios, projections. NOT for general data analysis (route those to `excel`) |
403
- | `data-dashboard` | CSV/tabular data → KPI / analytics / executive dashboards with charts and sparklines. NOT for raw data tracking (route those to `excel`) |
404
-
405
- Example: a fundraising deck task → `officecli load_skill pitch-deck` → use the printed rules.
406
-
407
- ---
408
-
409
- ## Notes
410
-
411
- - Paths are **1-based** (XPath convention): `'/body/p[3]'` = third paragraph
412
- - `--index` is **0-based** (array convention): `--index 0` = first position
413
- - **Excel exception**: for `add --type row` and `add --type col`, `--index N` is **1-based** (matches OOXML RowIndex / column letter index). `--index 5` inserts at row 5 / column 5.
414
- - After modifications, verify with `validate` and/or `view issues`
415
- - **When unsure**, run `officecli help <format> <element>` instead of guessing
@@ -1,14 +0,0 @@
1
- ---
2
- name: resolving-merge-conflicts
3
- description: "适用于需要解决进行中的 git merge/rebase 冲突的场景。"
4
- ---
5
-
6
- 1. **查看当前状态**——merge/rebase 的当前状态。检查 git 历史以及冲突文件。
7
-
8
- 2. **找到每个冲突的主要来源。** 深入理解每次更改的原因以及原始意图。阅读提交消息、查看 PR、查看原始 issue/工单。
9
-
10
- 3. **解决每个冲突块。** 在可能的情况下保留两种意图。当不兼容时,选择与合并声明目标匹配的那个并注明权衡。**不要**发明新行为。始终解决;永远不要 `--abort`。
11
-
12
- 4. 发现项目的**自动化检查**并运行它们——通常是类型检查,然后是测试,然后是格式化。修复合并破坏的任何内容。
13
-
14
- 5. **完成 merge/rebase。** 暂存所有内容并提交。如果正在 rebase,继续 rebase 过程直到所有提交都被 rebase。
@@ -1,107 +0,0 @@
1
- ---
2
- id: dev/grill-with-docs
3
- category: dev
4
- name: Grill With Docs
5
- description: 结合项目术语、CONTEXT 与 ADR 对方案进行领域澄清和决策压力测试
6
- keywords: [grill, context, adr, 术语, 决策]
7
- ---
8
-
9
- # Grill With Docs 工作流执行指引
10
-
11
- 本工作流用于在 PRD 或实现前澄清领域语言、识别决策分支,并把已确认的上下文沉淀为当前 change 的可追踪产物。**领域建模的主动纪律(挑战术语、锐化语言、压测边界)与 CONTEXT / ADR 格式由横向工作流 `../M-domain-modeling/M-domain-modeling.md` 拥有**,本工作流引用之,专注把拷问结论落到当前 change 的 `context-map.md` 与 `decision-log.md`。
12
-
13
- ## 内置指引
14
-
15
- ### 何时使用
16
-
17
- 当 dev workflow 需要把用户方案与现有领域模型、术语表、ADR 或代码现实交叉验证时使用。
18
-
19
- ### 输入
20
-
21
- - 用户提出的计划、需求、设计或变更意图
22
- - `speculo/.speculo/.config/RULES.md` 和用户明确指出的项目规则、设计约束或长期文档
23
- - `speculo/.speculo/.config/context/CONTEXT.md`、`speculo/.speculo/.config/context/CONTEXT-MAP.md`、`speculo/.speculo/.config/adr/` 和相关代码
24
- - 当前 change 目录:`speculo/.speculo/dev/<change>/`(`<change>` 必须为 `YYYY-MM-DD-<kebab-name>`,例:`2026-06-12-user-auth`)
25
-
26
- ### 输出
27
-
28
- - `speculo/.speculo/dev/<change>/context-map.md`
29
- - `speculo/.speculo/dev/<change>/decision-log.md`
30
- - 已确认的术语、决策、开放问题和 ADR 候选
31
- - 需要用户进一步决策的问题,每次只问一个
32
-
33
- (`<change>` 为当前 change 目录名,格式 `YYYY-MM-DD-<kebab-name>`)
34
-
35
- ### 执行原则
36
-
37
- 针对计划的每个方面不断向用户提问,直到达成共识。沿着设计树的每条分支逐一展开,逐个解决决策之间的依赖关系。对于每个问题,给出推荐答案。
38
-
39
- 每次只问一个问题,等待用户对当前问题的反馈后再继续。如果某个问题可以通过探索代码库来回答,就直接探索代码库。
40
-
41
- 需要格式约定时读取 `../M-domain-modeling/CONTEXT-FORMAT.md` 或 `../M-domain-modeling/ADR-FORMAT.md`(格式单一事实源);主动拷问的具体手法见 `../M-domain-modeling/M-domain-modeling.md`「会话期间(主动纪律)」。项目 CONTEXT 或 ADR 的创建、修改必须写入 `speculo/.speculo/.config/` 下,并符合本 workflow 的用户确认策略;未确认内容只记录到当前 change 的 `decision-log.md`。
42
-
43
- ### Worktree 隔离(条件)
44
-
45
- **默认不启用。** 仅当用户**显式请求**把本 change 隔离推进(“用 worktree / 隔离这个 change / 不污染当前分支”)时,才进入下方 Phase 0,并读取 `../../../skills/worktree-isolation/SKILL.md` 的「创建」渐进披露执行隔离。
46
-
47
- - 用户未请求隔离时,**不读取**该 skill,跳过 Phase 0,按既有流程在当前分支推进,行为零变化。
48
- - 启用后,本 change 的代码与全部 Speculo 产物都落在隔离分支 `speculo/dev/<change>` 与 `.worktree/<change>/` 工作树内,原分支不被污染;状态里记录 `base_branch` 与 `change_branch`,供 review、finalize 跨阶段跟进。
49
- - 隔离前置不满足(非 git 仓库 / 工作区不净 / `speculo/.speculo/` 未被 git 跟踪)时由该 skill 降级为非 worktree 模式并报告,不强行创建。
50
-
51
- ## 阶段
52
-
53
- ### 0. Worktree Setup — 隔离环境建立(条件,仅 worktree 模式)
54
- - 规范:`../../../skills/worktree-isolation/SKILL.md`(读其 `references/create-worktree.md`)
55
- - 模板:无
56
- - 产物:隔离分支 `speculo/dev/<change>`、`.worktree/<change>/` 工作树,以及 `.status.json` 的 worktree 字段
57
- - 完成准则:
58
- - 用户未请求隔离时本 phase 标记 `skipped`,不读取该 skill
59
- - 启用时分支与工作树已创建,且后续工作均切入 `.worktree/<change>/`
60
- - `.status.json` 写入 `worktree_enabled`、`base_branch`、`change_branch`、`worktree_path`,`worktree_status: active`
61
-
62
- ### 1. Context Scan — 上下文扫描
63
- - 规范:`grill-context-scan.md`
64
- - 模板:`../_templates/grill-context-map-template.md`
65
- - 产物:`context-map.md`
66
- - 完成准则:
67
- - 已记录相关术语表、ADR、代码区域和缺口
68
- - `context-map.md` 无残留 `[TODO:]`
69
-
70
- ### 2. Decision Grill — 决策拷问
71
- - 规范:`grill-decision.md`
72
- - 模板:`../_templates/grill-decision-log-template.md`
73
- - 产物:`decision-log.md`
74
- - 完成准则:
75
- - 关键决策均有结论、推荐答案或开放问题
76
- - 需要写入 `speculo/.speculo/.config/context/` 或 `speculo/.speculo/.config/adr/` 的内容已获用户确认,或记录为候选
77
- - `decision-log.md` 无残留 `[TODO:]`
78
-
79
- ## 依赖
80
-
81
- - 软依赖:无
82
- - 硬依赖:无
83
-
84
- ## 状态扩展字段
85
-
86
- 本工作流需在同 change 的 `.status.json` 追加:
87
-
88
- - `dev_entry` (string) — 固定为 `dev/01`
89
- - `embedded_guides` (array) — 包含 `grill-with-docs`
90
- - `context_paths` (array) — 已读取的 CONTEXT、ADR、代码或配置路径
91
- - `decision_status` (open | resolved | blocked) — 决策澄清状态
92
- - `adr_candidates` (array) — ADR 候选清单
93
-
94
- 仅当用户请求 worktree 隔离(Phase 0)时追加,字段定义见 `../../../skills/worktree-isolation/SKILL.md` 的输出契约:
95
-
96
- - `worktree_enabled` (bool) — 是否启用隔离
97
- - `base_branch` (string) — 原分支
98
- - `change_branch` (string) — 隔离分支 `speculo/dev/<change>`
99
- - `worktree_path` (string) — `.worktree/<change>`
100
- - `worktree_status` (created | active | merged | removed) — 隔离生命周期状态,本 workflow 写到 `active`
101
-
102
- ## 完成与状态更新
103
-
104
- - 进入每个 phase 时更新 `current_phase` 和 `phase_history`。
105
- - phase 完成后更新 `updated_at`、产物路径和扩展字段。
106
- - 启用 worktree 隔离时,Phase 0 完成后写入 worktree 字段并置 `worktree_status: active`;未启用时 Phase 0 记 `skipped`,不写 worktree 字段。
107
- - 本 workflow 完成后不自动完成 change;默认移交 `../02-prd/02-prd.md` 或按用户要求停止。
@@ -1,30 +0,0 @@
1
- # Context Scan Phase
2
-
3
- ## 输入
4
-
5
- - 用户提出的计划、需求、设计或问题
6
- - `speculo/.speculo/.config/RULES.md` 和用户明确指出的项目规则、设计约束或长期文档
7
- - `speculo/.speculo/.config/context/CONTEXT.md`、`speculo/.speculo/.config/context/CONTEXT-MAP.md`、`speculo/.speculo/.config/adr/` 和相关代码
8
- - 本 workflow 入口文件中的内置领域拷问指引
9
-
10
- ## 产物
11
-
12
- - `speculo/.speculo/dev/<change>/context-map.md`,由 `../_templates/grill-context-map-template.md` 填写
13
-
14
- ## 填写引导
15
-
16
- 1. 先探索仓库事实,不向用户询问可从文件中确认的问题。
17
- 2. 记录存在的领域术语来源、ADR 来源、关键模块和调用者。
18
- 3. 标出缺失的术语表、缺失 ADR 或与用户描述冲突的代码事实。
19
- 4. 只记录事实和待确认项,不在本阶段做方案裁决。
20
- 5. 若 `speculo/.speculo/.config/context/CONTEXT-MAP.md` 存在,先读取它以判断涉及哪个上下文;若只有 `speculo/.speculo/.config/context/CONTEXT.md`,按单上下文处理;若都不存在,只记录“缺少术语表”,不在本阶段创建。
21
-
22
- ## 边界
23
-
24
- - 不直接修改 `speculo/.speculo/.config/context/` 或 `speculo/.speculo/.config/adr/`;修改动作留到 Decision Grill 阶段确认后执行。
25
- - 不创建实现计划或 PRD。
26
-
27
- ## 完成准则
28
-
29
- - `context-map.md` 无残留 `[TODO:]`
30
- - 已列出下一阶段必须追问的最高优先级问题
@@ -1,38 +0,0 @@
1
- # Decision Grill Phase
2
-
3
- ## 输入
4
-
5
- - `speculo/.speculo/dev/<change>/context-map.md`
6
- - 用户当前方案或目标
7
- - 本 workflow 入口文件中的内置领域拷问指引
8
- - `../M-domain-modeling/CONTEXT-FORMAT.md`、`../M-domain-modeling/ADR-FORMAT.md`(格式单一事实源);主动拷问手法见 `../M-domain-modeling/M-domain-modeling.md`
9
-
10
- ## 产物
11
-
12
- - `speculo/.speculo/dev/<change>/decision-log.md`,由 `../_templates/grill-decision-log-template.md` 填写
13
- - 可选:经用户确认后更新 `speculo/.speculo/.config/context/CONTEXT.md`、`speculo/.speculo/.config/context/CONTEXT-MAP.md` 或 `speculo/.speculo/.config/adr/*.md`
14
-
15
- ## 填写引导
16
-
17
- 1. 遵循 `01-grill-with-docs.md` 的内置指引,再按需读取 `../M-domain-modeling/` 的格式文档与主动拷问纪律。
18
- 2. 每次只问一个会改变决策树的问题,并给出推荐答案。
19
- 3. 对术语冲突、代码现实冲突和 ADR 候选直接指出。
20
- 4. 用户确认后,把决策写入 `decision-log.md`。
21
- 5. 只有用户明确同意时,才把术语写入 `speculo/.speculo/.config/context/` 或创建 `speculo/.speculo/.config/adr/` 下的 ADR。
22
- 6. 当用户使用的术语与 `speculo/.speculo/.config/context/` 中已有定义冲突时,立即指出冲突并要求在当前问题中消解。
23
- 7. 当用户使用含混或一词多义的术语时,提议一个精确的规范术语。
24
- 8. 当讨论领域关系时,用具体场景压力测试边界情况。
25
- 9. 当用户描述某个东西如何运作时,检查代码是否一致;若矛盾,直接指出。
26
- 10. 只有同时满足“难以逆转”“缺少上下文会令人意外”“真实权衡的结果”三个条件时,才提议 ADR。
27
-
28
- ## 边界
29
-
30
- - 不输出 PRD;PRD 由 `../02-prd/02-prd.md` 负责。
31
- - 不把未确认的 ADR 候选写成正式 ADR。
32
- - 不修改 `speculo/.speculo/.config/RULES.md` 或用户未明确授权的项目规则文档。
33
-
34
- ## 完成准则
35
-
36
- - 每个关键问题都有结论、推荐答案或 blocked 原因
37
- - `.status.json` 的 `decision_status` 已更新
38
- - `decision-log.md` 无残留 `[TODO:]`