intent-planner 0.13.1

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 (334) hide show
  1. package/LICENSE +21 -0
  2. package/README.en.md +225 -0
  3. package/README.md +225 -0
  4. package/bin/cli.mjs +289 -0
  5. package/package.json +46 -0
  6. package/src/install.mjs +527 -0
  7. package/templates/en/agents/claude/CLAUDE.md +62 -0
  8. package/templates/en/agents/codex/AGENTS.md +62 -0
  9. package/templates/en/agents/gemini/GEMINI.md +62 -0
  10. package/templates/en/claude/skills/CONTRACT.md +86 -0
  11. package/templates/en/claude/skills/intent-compass/SKILL.md +55 -0
  12. package/templates/en/claude/skills/intent-compass/rules/algo-qoc.md +62 -0
  13. package/templates/en/claude/skills/intent-compass/rules/constraint-surfacing.md +41 -0
  14. package/templates/en/claude/skills/intent-discover/SKILL.md +63 -0
  15. package/templates/en/claude/skills/intent-discover/rules/algo-drift-analysis.md +34 -0
  16. package/templates/en/claude/skills/intent-discover/rules/algo-gore-lite.md +35 -0
  17. package/templates/en/claude/skills/intent-discover/rules/algo-impact-analysis.md +37 -0
  18. package/templates/en/claude/skills/intent-discover/rules/algo-intent-recovery.md +39 -0
  19. package/templates/en/claude/skills/intent-discover/rules/designer-questions.md +78 -0
  20. package/templates/en/claude/skills/intent-discover/rules/drift-terrain.md +105 -0
  21. package/templates/en/claude/skills/intent-discover/rules/mode-selection.md +31 -0
  22. package/templates/en/claude/skills/intent-export-cc-sdd/SKILL.md +88 -0
  23. package/templates/en/claude/skills/intent-export-cc-sdd/rules/drift-export-check.md +75 -0
  24. package/templates/en/claude/skills/intent-export-cc-sdd/rules/export-questions.md +23 -0
  25. package/templates/en/claude/skills/intent-export-cc-sdd/rules/map-cc-sdd.md +62 -0
  26. package/templates/en/claude/skills/intent-export-openspec/SKILL.md +90 -0
  27. package/templates/en/claude/skills/intent-export-openspec/rules/drift-export-check.md +50 -0
  28. package/templates/en/claude/skills/intent-export-openspec/rules/export-questions.md +23 -0
  29. package/templates/en/claude/skills/intent-export-openspec/rules/map-openspec.md +75 -0
  30. package/templates/en/claude/skills/intent-from-spec/SKILL.md +60 -0
  31. package/templates/en/claude/skills/intent-from-spec/rules/extract-intent.md +56 -0
  32. package/templates/en/claude/skills/intent-from-spec/rules/gap-readout.md +54 -0
  33. package/templates/en/claude/skills/intent-from-spec/rules/load-bearing.md +48 -0
  34. package/templates/en/claude/skills/intent-from-spec/rules/omission-recap.md +42 -0
  35. package/templates/en/claude/skills/intent-improve/SKILL.md +70 -0
  36. package/templates/en/claude/skills/intent-improve/rules/improve-axes.md +121 -0
  37. package/templates/en/claude/skills/intent-overview/SKILL.md +63 -0
  38. package/templates/en/claude/skills/intent-overview/rules/aggregate-sources.md +61 -0
  39. package/templates/en/claude/skills/intent-overview/rules/gap-readout.md +54 -0
  40. package/templates/en/claude/skills/intent-overview/rules/mermaid-tree.md +78 -0
  41. package/templates/en/claude/skills/intent-overview/rules/progress-readout.md +119 -0
  42. package/templates/en/claude/skills/intent-packets/SKILL.md +97 -0
  43. package/templates/en/claude/skills/intent-packets/rules/algo-additive-slicing.md +55 -0
  44. package/templates/en/claude/skills/intent-packets/rules/algo-characterization-test.md +40 -0
  45. package/templates/en/claude/skills/intent-packets/rules/algo-example-mapping.md +47 -0
  46. package/templates/en/claude/skills/intent-packets/rules/algo-migration-slicing.md +47 -0
  47. package/templates/en/claude/skills/intent-packets/rules/decision-slots.md +88 -0
  48. package/templates/en/claude/skills/intent-packets/rules/export-route.md +54 -0
  49. package/templates/en/claude/skills/intent-packets/rules/first-packet.md +35 -0
  50. package/templates/en/claude/skills/intent-packets/rules/packet-format.md +207 -0
  51. package/templates/en/claude/skills/intent-packets/rules/walking-skeleton.md +35 -0
  52. package/templates/en/claude/skills/intent-release-note/SKILL.md +58 -0
  53. package/templates/en/claude/skills/intent-release-note/rules/format-changelog.md +40 -0
  54. package/templates/en/claude/skills/intent-release-note/rules/format-github-releases.md +41 -0
  55. package/templates/en/claude/skills/intent-release-note/rules/format-select.md +32 -0
  56. package/templates/en/claude/skills/intent-release-note/rules/source-scope.md +42 -0
  57. package/templates/en/claude/skills/intent-status/SKILL.md +171 -0
  58. package/templates/en/claude/skills/intent-status/rules/decision-table.md +47 -0
  59. package/templates/en/claude/skills/intent-to-spec/SKILL.md +68 -0
  60. package/templates/en/claude/skills/intent-to-spec/rules/fabrication-guard.md +41 -0
  61. package/templates/en/claude/skills/intent-to-spec/rules/format-integrated.md +42 -0
  62. package/templates/en/claude/skills/intent-to-spec/rules/format-nonprogram.md +45 -0
  63. package/templates/en/claude/skills/intent-to-spec/rules/format-upstream.md +41 -0
  64. package/templates/en/claude/skills/intent-to-spec/rules/source-scope.md +50 -0
  65. package/templates/en/claude/skills/intent-validate/SKILL.md +80 -0
  66. package/templates/en/claude/skills/intent-validate/rules/validate-checks.md +121 -0
  67. package/templates/en/claude/skills/intent-writeback/SKILL.md +71 -0
  68. package/templates/en/claude/skills/intent-writeback/rules/writeback-protocol.md +139 -0
  69. package/templates/en/codex/skills/CONTRACT.md +77 -0
  70. package/templates/en/codex/skills/intent-compass/SKILL.md +52 -0
  71. package/templates/en/codex/skills/intent-compass/rules/algo-qoc.md +62 -0
  72. package/templates/en/codex/skills/intent-compass/rules/constraint-surfacing.md +41 -0
  73. package/templates/en/codex/skills/intent-discover/SKILL.md +60 -0
  74. package/templates/en/codex/skills/intent-discover/rules/algo-drift-analysis.md +34 -0
  75. package/templates/en/codex/skills/intent-discover/rules/algo-gore-lite.md +35 -0
  76. package/templates/en/codex/skills/intent-discover/rules/algo-impact-analysis.md +37 -0
  77. package/templates/en/codex/skills/intent-discover/rules/algo-intent-recovery.md +39 -0
  78. package/templates/en/codex/skills/intent-discover/rules/designer-questions.md +78 -0
  79. package/templates/en/codex/skills/intent-discover/rules/drift-terrain.md +105 -0
  80. package/templates/en/codex/skills/intent-discover/rules/mode-selection.md +31 -0
  81. package/templates/en/codex/skills/intent-export-cc-sdd/SKILL.md +85 -0
  82. package/templates/en/codex/skills/intent-export-cc-sdd/rules/drift-export-check.md +75 -0
  83. package/templates/en/codex/skills/intent-export-cc-sdd/rules/export-questions.md +23 -0
  84. package/templates/en/codex/skills/intent-export-cc-sdd/rules/map-cc-sdd.md +62 -0
  85. package/templates/en/codex/skills/intent-export-openspec/SKILL.md +87 -0
  86. package/templates/en/codex/skills/intent-export-openspec/rules/drift-export-check.md +50 -0
  87. package/templates/en/codex/skills/intent-export-openspec/rules/export-questions.md +23 -0
  88. package/templates/en/codex/skills/intent-export-openspec/rules/map-openspec.md +75 -0
  89. package/templates/en/codex/skills/intent-from-spec/SKILL.md +58 -0
  90. package/templates/en/codex/skills/intent-from-spec/rules/extract-intent.md +56 -0
  91. package/templates/en/codex/skills/intent-from-spec/rules/gap-readout.md +54 -0
  92. package/templates/en/codex/skills/intent-from-spec/rules/load-bearing.md +48 -0
  93. package/templates/en/codex/skills/intent-from-spec/rules/omission-recap.md +42 -0
  94. package/templates/en/codex/skills/intent-improve/SKILL.md +67 -0
  95. package/templates/en/codex/skills/intent-improve/rules/improve-axes.md +121 -0
  96. package/templates/en/codex/skills/intent-overview/SKILL.md +61 -0
  97. package/templates/en/codex/skills/intent-overview/rules/aggregate-sources.md +61 -0
  98. package/templates/en/codex/skills/intent-overview/rules/gap-readout.md +54 -0
  99. package/templates/en/codex/skills/intent-overview/rules/mermaid-tree.md +78 -0
  100. package/templates/en/codex/skills/intent-overview/rules/progress-readout.md +119 -0
  101. package/templates/en/codex/skills/intent-packets/SKILL.md +94 -0
  102. package/templates/en/codex/skills/intent-packets/rules/algo-additive-slicing.md +55 -0
  103. package/templates/en/codex/skills/intent-packets/rules/algo-characterization-test.md +40 -0
  104. package/templates/en/codex/skills/intent-packets/rules/algo-example-mapping.md +47 -0
  105. package/templates/en/codex/skills/intent-packets/rules/algo-migration-slicing.md +47 -0
  106. package/templates/en/codex/skills/intent-packets/rules/decision-slots.md +88 -0
  107. package/templates/en/codex/skills/intent-packets/rules/export-route.md +54 -0
  108. package/templates/en/codex/skills/intent-packets/rules/first-packet.md +35 -0
  109. package/templates/en/codex/skills/intent-packets/rules/packet-format.md +207 -0
  110. package/templates/en/codex/skills/intent-packets/rules/walking-skeleton.md +35 -0
  111. package/templates/en/codex/skills/intent-release-note/SKILL.md +56 -0
  112. package/templates/en/codex/skills/intent-release-note/rules/format-changelog.md +40 -0
  113. package/templates/en/codex/skills/intent-release-note/rules/format-github-releases.md +41 -0
  114. package/templates/en/codex/skills/intent-release-note/rules/format-select.md +32 -0
  115. package/templates/en/codex/skills/intent-release-note/rules/source-scope.md +42 -0
  116. package/templates/en/codex/skills/intent-status/SKILL.md +169 -0
  117. package/templates/en/codex/skills/intent-status/rules/decision-table.md +47 -0
  118. package/templates/en/codex/skills/intent-to-spec/SKILL.md +66 -0
  119. package/templates/en/codex/skills/intent-to-spec/rules/fabrication-guard.md +41 -0
  120. package/templates/en/codex/skills/intent-to-spec/rules/format-integrated.md +42 -0
  121. package/templates/en/codex/skills/intent-to-spec/rules/format-nonprogram.md +45 -0
  122. package/templates/en/codex/skills/intent-to-spec/rules/format-upstream.md +41 -0
  123. package/templates/en/codex/skills/intent-to-spec/rules/source-scope.md +50 -0
  124. package/templates/en/codex/skills/intent-validate/SKILL.md +78 -0
  125. package/templates/en/codex/skills/intent-validate/rules/validate-checks.md +121 -0
  126. package/templates/en/codex/skills/intent-writeback/SKILL.md +68 -0
  127. package/templates/en/codex/skills/intent-writeback/rules/writeback-protocol.md +139 -0
  128. package/templates/en/intent/README.md +118 -0
  129. package/templates/en/intent/cc-sdd/README.md +28 -0
  130. package/templates/en/intent/compass-archive/README.md +9 -0
  131. package/templates/en/intent/compass-archive/archive/.gitkeep +0 -0
  132. package/templates/en/intent/compass-archive.md +7 -0
  133. package/templates/en/intent/constraint-library.md +32 -0
  134. package/templates/en/intent/constraint-starters.md +58 -0
  135. package/templates/en/intent/context-cost-cues.md +55 -0
  136. package/templates/en/intent/deltas/README.md +11 -0
  137. package/templates/en/intent/deltas/archive/.gitkeep +0 -0
  138. package/templates/en/intent/deltas.md +34 -0
  139. package/templates/en/intent/drift-log/README.md +11 -0
  140. package/templates/en/intent/drift-log/archive/.gitkeep +0 -0
  141. package/templates/en/intent/drift-log.md +41 -0
  142. package/templates/en/intent/drift-patterns.md +68 -0
  143. package/templates/en/intent/export-log/README.md +12 -0
  144. package/templates/en/intent/export-log/archive/.gitkeep +0 -0
  145. package/templates/en/intent/export-log.md +6 -0
  146. package/templates/en/intent/glossary.md +23 -0
  147. package/templates/en/intent/intent-compass.md +55 -0
  148. package/templates/en/intent/intent-tree.md +59 -0
  149. package/templates/en/intent/milestones/README.md +10 -0
  150. package/templates/en/intent/milestones/archive/.gitkeep +0 -0
  151. package/templates/en/intent/milestones.md +22 -0
  152. package/templates/en/intent/mode.local.md +23 -0
  153. package/templates/en/intent/mode.md +32 -0
  154. package/templates/en/intent/modes/README.md +28 -0
  155. package/templates/en/intent/modes/behavior-unknown.md +57 -0
  156. package/templates/en/intent/modes/feature-growth.md +57 -0
  157. package/templates/en/intent/modes/non-code.md +46 -0
  158. package/templates/en/intent/modes/refactor.md +56 -0
  159. package/templates/en/intent/modes/standard.md +50 -0
  160. package/templates/en/intent/nl-spec/README.md +18 -0
  161. package/templates/en/intent/openspec/proposal.md +15 -0
  162. package/templates/en/intent/openspec/spec-delta.md +25 -0
  163. package/templates/en/intent/overview/README.md +18 -0
  164. package/templates/en/intent/packets/README.md +29 -0
  165. package/templates/en/intent/packets/index.md +6 -0
  166. package/templates/en/intent/packets/plan.md +23 -0
  167. package/templates/en/intent/release-note/README.md +18 -0
  168. package/templates/en/intent/scripts/intent-check.mjs +786 -0
  169. package/templates/en/intent/scripts/pre-push +27 -0
  170. package/templates/en/intent/spec-ingest/README.md +18 -0
  171. package/templates/ja/agents/claude/CLAUDE.md +62 -0
  172. package/templates/ja/agents/codex/AGENTS.md +62 -0
  173. package/templates/ja/agents/gemini/GEMINI.md +62 -0
  174. package/templates/ja/claude/skills/CONTRACT.md +90 -0
  175. package/templates/ja/claude/skills/intent-compass/SKILL.md +55 -0
  176. package/templates/ja/claude/skills/intent-compass/rules/algo-qoc.md +62 -0
  177. package/templates/ja/claude/skills/intent-compass/rules/constraint-surfacing.md +41 -0
  178. package/templates/ja/claude/skills/intent-discover/SKILL.md +63 -0
  179. package/templates/ja/claude/skills/intent-discover/rules/algo-drift-analysis.md +34 -0
  180. package/templates/ja/claude/skills/intent-discover/rules/algo-gore-lite.md +35 -0
  181. package/templates/ja/claude/skills/intent-discover/rules/algo-impact-analysis.md +37 -0
  182. package/templates/ja/claude/skills/intent-discover/rules/algo-intent-recovery.md +39 -0
  183. package/templates/ja/claude/skills/intent-discover/rules/designer-questions.md +78 -0
  184. package/templates/ja/claude/skills/intent-discover/rules/drift-terrain.md +105 -0
  185. package/templates/ja/claude/skills/intent-discover/rules/mode-selection.md +31 -0
  186. package/templates/ja/claude/skills/intent-export-cc-sdd/SKILL.md +88 -0
  187. package/templates/ja/claude/skills/intent-export-cc-sdd/rules/drift-export-check.md +75 -0
  188. package/templates/ja/claude/skills/intent-export-cc-sdd/rules/export-questions.md +23 -0
  189. package/templates/ja/claude/skills/intent-export-cc-sdd/rules/map-cc-sdd.md +62 -0
  190. package/templates/ja/claude/skills/intent-export-openspec/SKILL.md +90 -0
  191. package/templates/ja/claude/skills/intent-export-openspec/rules/drift-export-check.md +50 -0
  192. package/templates/ja/claude/skills/intent-export-openspec/rules/export-questions.md +23 -0
  193. package/templates/ja/claude/skills/intent-export-openspec/rules/map-openspec.md +75 -0
  194. package/templates/ja/claude/skills/intent-from-spec/SKILL.md +60 -0
  195. package/templates/ja/claude/skills/intent-from-spec/rules/extract-intent.md +56 -0
  196. package/templates/ja/claude/skills/intent-from-spec/rules/gap-readout.md +54 -0
  197. package/templates/ja/claude/skills/intent-from-spec/rules/load-bearing.md +48 -0
  198. package/templates/ja/claude/skills/intent-from-spec/rules/omission-recap.md +42 -0
  199. package/templates/ja/claude/skills/intent-improve/SKILL.md +70 -0
  200. package/templates/ja/claude/skills/intent-improve/rules/improve-axes.md +121 -0
  201. package/templates/ja/claude/skills/intent-overview/SKILL.md +63 -0
  202. package/templates/ja/claude/skills/intent-overview/rules/aggregate-sources.md +61 -0
  203. package/templates/ja/claude/skills/intent-overview/rules/gap-readout.md +54 -0
  204. package/templates/ja/claude/skills/intent-overview/rules/mermaid-tree.md +78 -0
  205. package/templates/ja/claude/skills/intent-overview/rules/progress-readout.md +119 -0
  206. package/templates/ja/claude/skills/intent-packets/SKILL.md +97 -0
  207. package/templates/ja/claude/skills/intent-packets/rules/algo-additive-slicing.md +55 -0
  208. package/templates/ja/claude/skills/intent-packets/rules/algo-characterization-test.md +40 -0
  209. package/templates/ja/claude/skills/intent-packets/rules/algo-example-mapping.md +47 -0
  210. package/templates/ja/claude/skills/intent-packets/rules/algo-migration-slicing.md +47 -0
  211. package/templates/ja/claude/skills/intent-packets/rules/decision-slots.md +88 -0
  212. package/templates/ja/claude/skills/intent-packets/rules/export-route.md +54 -0
  213. package/templates/ja/claude/skills/intent-packets/rules/first-packet.md +35 -0
  214. package/templates/ja/claude/skills/intent-packets/rules/packet-format.md +207 -0
  215. package/templates/ja/claude/skills/intent-packets/rules/walking-skeleton.md +35 -0
  216. package/templates/ja/claude/skills/intent-release-note/SKILL.md +58 -0
  217. package/templates/ja/claude/skills/intent-release-note/rules/format-changelog.md +40 -0
  218. package/templates/ja/claude/skills/intent-release-note/rules/format-github-releases.md +41 -0
  219. package/templates/ja/claude/skills/intent-release-note/rules/format-select.md +32 -0
  220. package/templates/ja/claude/skills/intent-release-note/rules/source-scope.md +42 -0
  221. package/templates/ja/claude/skills/intent-status/SKILL.md +171 -0
  222. package/templates/ja/claude/skills/intent-status/rules/decision-table.md +47 -0
  223. package/templates/ja/claude/skills/intent-to-spec/SKILL.md +68 -0
  224. package/templates/ja/claude/skills/intent-to-spec/rules/fabrication-guard.md +41 -0
  225. package/templates/ja/claude/skills/intent-to-spec/rules/format-integrated.md +42 -0
  226. package/templates/ja/claude/skills/intent-to-spec/rules/format-nonprogram.md +45 -0
  227. package/templates/ja/claude/skills/intent-to-spec/rules/format-upstream.md +41 -0
  228. package/templates/ja/claude/skills/intent-to-spec/rules/source-scope.md +50 -0
  229. package/templates/ja/claude/skills/intent-validate/SKILL.md +80 -0
  230. package/templates/ja/claude/skills/intent-validate/rules/validate-checks.md +121 -0
  231. package/templates/ja/claude/skills/intent-writeback/SKILL.md +71 -0
  232. package/templates/ja/claude/skills/intent-writeback/rules/writeback-protocol.md +139 -0
  233. package/templates/ja/codex/skills/CONTRACT.md +81 -0
  234. package/templates/ja/codex/skills/intent-compass/SKILL.md +52 -0
  235. package/templates/ja/codex/skills/intent-compass/rules/algo-qoc.md +62 -0
  236. package/templates/ja/codex/skills/intent-compass/rules/constraint-surfacing.md +41 -0
  237. package/templates/ja/codex/skills/intent-discover/SKILL.md +60 -0
  238. package/templates/ja/codex/skills/intent-discover/rules/algo-drift-analysis.md +34 -0
  239. package/templates/ja/codex/skills/intent-discover/rules/algo-gore-lite.md +35 -0
  240. package/templates/ja/codex/skills/intent-discover/rules/algo-impact-analysis.md +37 -0
  241. package/templates/ja/codex/skills/intent-discover/rules/algo-intent-recovery.md +39 -0
  242. package/templates/ja/codex/skills/intent-discover/rules/designer-questions.md +78 -0
  243. package/templates/ja/codex/skills/intent-discover/rules/drift-terrain.md +105 -0
  244. package/templates/ja/codex/skills/intent-discover/rules/mode-selection.md +31 -0
  245. package/templates/ja/codex/skills/intent-export-cc-sdd/SKILL.md +85 -0
  246. package/templates/ja/codex/skills/intent-export-cc-sdd/rules/drift-export-check.md +75 -0
  247. package/templates/ja/codex/skills/intent-export-cc-sdd/rules/export-questions.md +23 -0
  248. package/templates/ja/codex/skills/intent-export-cc-sdd/rules/map-cc-sdd.md +62 -0
  249. package/templates/ja/codex/skills/intent-export-openspec/SKILL.md +87 -0
  250. package/templates/ja/codex/skills/intent-export-openspec/rules/drift-export-check.md +50 -0
  251. package/templates/ja/codex/skills/intent-export-openspec/rules/export-questions.md +23 -0
  252. package/templates/ja/codex/skills/intent-export-openspec/rules/map-openspec.md +75 -0
  253. package/templates/ja/codex/skills/intent-from-spec/SKILL.md +58 -0
  254. package/templates/ja/codex/skills/intent-from-spec/rules/extract-intent.md +56 -0
  255. package/templates/ja/codex/skills/intent-from-spec/rules/gap-readout.md +54 -0
  256. package/templates/ja/codex/skills/intent-from-spec/rules/load-bearing.md +48 -0
  257. package/templates/ja/codex/skills/intent-from-spec/rules/omission-recap.md +42 -0
  258. package/templates/ja/codex/skills/intent-improve/SKILL.md +67 -0
  259. package/templates/ja/codex/skills/intent-improve/rules/improve-axes.md +121 -0
  260. package/templates/ja/codex/skills/intent-overview/SKILL.md +61 -0
  261. package/templates/ja/codex/skills/intent-overview/rules/aggregate-sources.md +61 -0
  262. package/templates/ja/codex/skills/intent-overview/rules/gap-readout.md +54 -0
  263. package/templates/ja/codex/skills/intent-overview/rules/mermaid-tree.md +78 -0
  264. package/templates/ja/codex/skills/intent-overview/rules/progress-readout.md +119 -0
  265. package/templates/ja/codex/skills/intent-packets/SKILL.md +94 -0
  266. package/templates/ja/codex/skills/intent-packets/rules/algo-additive-slicing.md +55 -0
  267. package/templates/ja/codex/skills/intent-packets/rules/algo-characterization-test.md +40 -0
  268. package/templates/ja/codex/skills/intent-packets/rules/algo-example-mapping.md +47 -0
  269. package/templates/ja/codex/skills/intent-packets/rules/algo-migration-slicing.md +47 -0
  270. package/templates/ja/codex/skills/intent-packets/rules/decision-slots.md +88 -0
  271. package/templates/ja/codex/skills/intent-packets/rules/export-route.md +54 -0
  272. package/templates/ja/codex/skills/intent-packets/rules/first-packet.md +35 -0
  273. package/templates/ja/codex/skills/intent-packets/rules/packet-format.md +207 -0
  274. package/templates/ja/codex/skills/intent-packets/rules/walking-skeleton.md +35 -0
  275. package/templates/ja/codex/skills/intent-release-note/SKILL.md +56 -0
  276. package/templates/ja/codex/skills/intent-release-note/rules/format-changelog.md +40 -0
  277. package/templates/ja/codex/skills/intent-release-note/rules/format-github-releases.md +41 -0
  278. package/templates/ja/codex/skills/intent-release-note/rules/format-select.md +32 -0
  279. package/templates/ja/codex/skills/intent-release-note/rules/source-scope.md +42 -0
  280. package/templates/ja/codex/skills/intent-status/SKILL.md +169 -0
  281. package/templates/ja/codex/skills/intent-status/rules/decision-table.md +47 -0
  282. package/templates/ja/codex/skills/intent-to-spec/SKILL.md +66 -0
  283. package/templates/ja/codex/skills/intent-to-spec/rules/fabrication-guard.md +41 -0
  284. package/templates/ja/codex/skills/intent-to-spec/rules/format-integrated.md +42 -0
  285. package/templates/ja/codex/skills/intent-to-spec/rules/format-nonprogram.md +45 -0
  286. package/templates/ja/codex/skills/intent-to-spec/rules/format-upstream.md +41 -0
  287. package/templates/ja/codex/skills/intent-to-spec/rules/source-scope.md +50 -0
  288. package/templates/ja/codex/skills/intent-validate/SKILL.md +78 -0
  289. package/templates/ja/codex/skills/intent-validate/rules/validate-checks.md +121 -0
  290. package/templates/ja/codex/skills/intent-writeback/SKILL.md +68 -0
  291. package/templates/ja/codex/skills/intent-writeback/rules/writeback-protocol.md +139 -0
  292. package/templates/ja/intent/README.md +118 -0
  293. package/templates/ja/intent/cc-sdd/README.md +28 -0
  294. package/templates/ja/intent/compass-archive/README.md +9 -0
  295. package/templates/ja/intent/compass-archive/archive/.gitkeep +0 -0
  296. package/templates/ja/intent/compass-archive.md +7 -0
  297. package/templates/ja/intent/constraint-library.md +32 -0
  298. package/templates/ja/intent/constraint-starters.md +58 -0
  299. package/templates/ja/intent/context-cost-cues.md +55 -0
  300. package/templates/ja/intent/deltas/README.md +11 -0
  301. package/templates/ja/intent/deltas/archive/.gitkeep +0 -0
  302. package/templates/ja/intent/deltas.md +34 -0
  303. package/templates/ja/intent/drift-log/README.md +11 -0
  304. package/templates/ja/intent/drift-log/archive/.gitkeep +0 -0
  305. package/templates/ja/intent/drift-log.md +41 -0
  306. package/templates/ja/intent/drift-patterns.md +68 -0
  307. package/templates/ja/intent/export-log/README.md +12 -0
  308. package/templates/ja/intent/export-log/archive/.gitkeep +0 -0
  309. package/templates/ja/intent/export-log.md +6 -0
  310. package/templates/ja/intent/glossary.md +23 -0
  311. package/templates/ja/intent/intent-compass.md +55 -0
  312. package/templates/ja/intent/intent-tree.md +59 -0
  313. package/templates/ja/intent/milestones/README.md +10 -0
  314. package/templates/ja/intent/milestones/archive/.gitkeep +0 -0
  315. package/templates/ja/intent/milestones.md +22 -0
  316. package/templates/ja/intent/mode.local.md +23 -0
  317. package/templates/ja/intent/mode.md +32 -0
  318. package/templates/ja/intent/modes/README.md +28 -0
  319. package/templates/ja/intent/modes/behavior-unknown.md +57 -0
  320. package/templates/ja/intent/modes/feature-growth.md +57 -0
  321. package/templates/ja/intent/modes/non-code.md +46 -0
  322. package/templates/ja/intent/modes/refactor.md +56 -0
  323. package/templates/ja/intent/modes/standard.md +50 -0
  324. package/templates/ja/intent/nl-spec/README.md +18 -0
  325. package/templates/ja/intent/openspec/proposal.md +15 -0
  326. package/templates/ja/intent/openspec/spec-delta.md +25 -0
  327. package/templates/ja/intent/overview/README.md +18 -0
  328. package/templates/ja/intent/packets/README.md +29 -0
  329. package/templates/ja/intent/packets/index.md +6 -0
  330. package/templates/ja/intent/packets/plan.md +23 -0
  331. package/templates/ja/intent/release-note/README.md +18 -0
  332. package/templates/ja/intent/scripts/intent-check.mjs +786 -0
  333. package/templates/ja/intent/scripts/pre-push +27 -0
  334. package/templates/ja/intent/spec-ingest/README.md +18 -0
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: intent-from-spec
3
+ description: Inward ingestion skill that reads a user-provided natural-language spec (PRD / design spec / feature spec / issue / user story) read-only, extracts unstated intent candidates, surfaces silence as gaps against the existing rulers, qualitatively prioritizes by load-bearing, and presents an omission recap. All extractions are Assumptions (hypotheses); output is limited to derived artifacts under `.intent/spec-ingest/` and never modifies any canonical artifact.
4
+ ---
5
+
6
+ # intent-from-spec Skill
7
+
8
+ ## Core Mission
9
+ - **Success Criteria**:
10
+ - Reads the user-provided natural-language spec (a general development spec text such as a PRD / design spec / feature spec / issue / user story) read-only, and extracts intent candidates for purpose, outcomes, capabilities, invariants, constraints, anti-direction, and implicit assumptions. Marks all extracted candidates as Assumptions (inferred intent) and never mixes them with canonical (confirmed intent) (R1.1 / R1.2)
11
+ - Does not use source code, execution traces, or test results as extraction input. Input is limited to the user-specified natural-language spec text (R1.4)
12
+ - Picks up the must-hold constraints contained in the spec (technical / security requirements) without dropping them, as Compass Invariants candidates, and limits their destination to Invariants (reflection into steering (tech.md) / design is delegated downstream. R1.5 / R1.6)
13
+ - When no spec text is provided as input, performs no extraction, asks the user for the spec to ingest, and stops (fail-fast. R1.3)
14
+ - Reads the existing rulers (the inspection catalog in `validate-checks.md` and the common-core slots in `decision-slots.md`) against the spec, and enumerates the unfilled items as gaps. Shows in an observable form which category / slot each gap is the silence of, and presents it as a hypothesis rather than a confirmed defect (R2.1 / R2.2 / R2.3)
15
+ - While presenting gaps, does not stop processing; limits itself to warnings / awareness (same stance as drift-watch. R2.4)
16
+ - Qualitatively sorts the extractions / gaps by load-bearing (whether their loss would damage the correctness of what follows), and presents high items distinctly from low. The judgment merely reads and copies the "front-load / defer door" column in `decision-slots.md`, and holds no mathematical solver, numeric score, or threshold (R3.1 / R3.2 / R3.3)
17
+ - Summarizes "what was checked (presenting the frames) and what was left unfilled" as an omission recap, prompting reconfirmation (R4.1)
18
+ - Treats only approved items as candidates to load onto the canonical Intent structure, and retains unapproved items as Assumptions without discarding them. Performs no auto-reflection into canonical; promotion is delegated to the user's manual copy (R4.2 / R4.3 / R4.4)
19
+ - Limits output to derived artifacts under `.intent/spec-ingest/`, and never modifies any canonical `.intent/*.md`, application code, or the input spec (read-only. R5.2). Follows the `intent-*` naming convention and does not modify external spec tools or the kiro-* development environment (R5.6)
20
+
21
+ ## Execution Steps
22
+
23
+ ### Step 1: Confirm the input (natural-language spec text) exists (fail-fast)
24
+ - When the user runs `/intent-from-spec`, first confirm whether the natural-language spec text to ingest (a file path or pasted body) is provided.
25
+ - If no spec text is provided, **write nothing**, state the absence of the input explicitly, ask the user in natural language to provide the spec to ingest (a path or pasted body), and stop (fail-fast. R1.3). Do not write anything under `.intent/spec-ingest/` at this point.
26
+ - Do **not** use source code, execution traces, or test results as extraction input. Recovering intent from those is a separate path handled by behavior-unknown mode's code→Intent, outside this skill's scope (R1.4).
27
+ - The ruler sources of truth (`intent-validate/rules/validate-checks.md` / `intent-packets/rules/decision-slots.md`) and the canonical `.intent/*.md` (intent-tree / compass / mode, if present) are referenced read-only in later steps. Do not stop if absent (state the absence for anything that cannot be linked).
28
+
29
+ ### Step 2: Delegate to the four rules to extract, check, sort, and recap
30
+ - This skill has no extraction / checking / judgment / scoring logic of its own. The exact reading, transcription, and linking rules for each concern are delegated to the following four rules (referenced by relative path). Follow the exact headings, transcription destinations, and ID systems each rule specifies; mark all extracted candidates as Assumptions; only read the rulers without reimplementing them; and state gaps and unobserved areas explicitly without filling them in by guessing.
31
+ - `rules/extract-intent.md` — reads the spec text and extracts intent candidates across the seven categories of purpose / outcomes / capabilities / invariants / constraints / anti-direction / implicit assumptions. Marks all candidates as Assumptions and writes each out with a heading and granularity whose transcription destination (intent-tree's L0–L4 Assumptions / compass's Invariants, Anti-direction, Decision Rules) is uniquely determined. Picks up the must-hold constraints such as technical / security requirements without dropping them, as compass Invariants candidates, and limits their destination to Invariants (reflection into tech.md / design is not included in the output = delegated downstream. R1.1 / R1.2 / R1.4 / R1.5 / R1.6 / R5.1).
32
+ - `rules/gap-readout.md` — **reads** the stable kebab-case inspection IDs in `validate-checks.md` and the common-core 8 slot IDs in `decision-slots.md`, and enumerates the items unfilled against the input spec as gaps. Shows which ruler's silence each gap is (ID linking) and which category / slot's silence it is (observable evidence), and presents it as a hypothesis rather than a confirmed defect. Defines no new inspection IDs / slot IDs of its own. Since spec-ingest is a proposer, not an acceptance gate, it **may infer** slot applicability from the spec's silence **but does not confirm** (a different posture from validate). Does not stop processing; warnings only (R2.1 / R2.2 / R2.3 / R2.4).
33
+ - `rules/load-bearing.md` — for the gaps / intent candidates that gap-readout linked to slot IDs, qualitatively sorts high/low by merely reading and copying the **"front-load / defer door" column** in `decision-slots.md`. "Front-load" = high (dangerous if it falls), "deferrable" = low. Holds no mathematical solver, numeric score, or threshold, and invents no new discriminating axis. Items that cannot be linked to a slot ID are stated as load-bearing-unknown (absence). Presents high distinctly observable from low, and retains low without discarding it (R3.1 / R3.2 / R3.3).
34
+ - `rules/omission-recap.md` — summarizes as a list "the frames checked (what was read) / the filled areas / the unfilled areas (silence) / the areas that could not be checked (absence)", avoiding the "silence of silence" (the omission error where the AI hints at completeness and the human stops searching). Cites the existing IDs that gap-readout linked, without redefining them. Treats only approved items as candidates for canonical promotion, retains unapproved items as Assumptions, and guides that promotion is a manual copy in which the user carries approved items by hand into the discover / compass dialogue (no machine handoff. R4.1 / R4.2 / R4.3 / R4.4).
35
+
36
+ ### Step 3: Write the derived view to `.intent/spec-ingest/` last (full replacement, derived)
37
+ - Only after all extraction, checking, sorting, and recap are complete, **last** write `.intent/spec-ingest/spec-ingest.md` by **full replacement** (idempotent regeneration). Never write to any canonical `.intent/*.md` (intent-tree / compass, etc.), steering (tech.md), design, or the input spec.
38
+ - In the view header, declare that this view is derived / regenerable, not the source of truth, and Git-untracked, and that all intent candidates / gaps / load-bearing levels described are Assumptions (hypotheses) and remain provisional until the user's approval (R1.2).
39
+ - Compose the output per extract-intent's transcription-destination headings, at a granularity the user can copy 1:1 into intent-tree's Assumptions / compass's blocks (keeping the promotion seam manual).
40
+
41
+ ## Output Description
42
+ - `.intent/spec-ingest/spec-ingest.md` (derived, regenerable, Git-untracked; the view header declares it is not the source of truth and that all items are Assumptions). Its content includes:
43
+ - **Intent candidates (extraction)**: per extract-intent's output contract, presents purpose / outcomes / capabilities candidates (→ intent-tree L0–L4 Assumptions), Invariants candidates (→ compass Invariants, including technical / security constraints), Anti-direction candidates (→ compass Anti-direction), and implicit-assumption candidates (→ intent-tree Assumptions / compass Decision Rules), with headings whose transcription destination is uniquely determined. Each candidate carries its extraction basis (from which spec description / silence).
44
+ - **Gaps (silence)**: enumerates as hypotheses the gaps that gap-readout linked to IDs in `validate-checks.md` / `decision-slots.md`, together with which category / slot's silence each is.
45
+ - **Load-bearing sorting**: presents high items distinctly from low (e.g. grouping high at the top). Items that cannot be linked to a slot are stated as load-bearing-unknown.
46
+ - **Omission recap**: a list of the frames checked / filled areas / unfilled areas / areas that could not be checked, plus promotion guidance for the user to transcribe approved items by hand into discover / compass.
47
+ - Categories / axes without source material are stated as "no relevant description (silence) / unobserved" and omitted (never filled in by guessing).
48
+
49
+ ## Safety & Fallback
50
+ - **Write boundary**: writes are limited to under `.intent/spec-ingest/`. The canonical `.intent/*.md` (intent-tree / compass / mode, etc.), the ruler sources of truth (`validate-checks.md` / `decision-slots.md`), steering (tech.md), design, and the input spec are read-only — never created, modified, or deleted there (writes are confined to under `.intent/spec-ingest/`. R5.2).
51
+ - **Gaps are hypotheses (warnings only — never stop)**: gaps, load-bearing levels, and intent candidates are all Assumptions (hypotheses), not confirmed defects / severities. While presenting them, never stop processing; limit to warnings / awareness (same stance as drift-watch. R2.3 / R2.4).
52
+ - **Approval gate — promotion is manual**: reflection into canonical requires the user's explicit approval. Treat only approved items as candidates for canonical promotion, and retain unapproved items as Assumptions without discarding them. Perform no auto-reflection into canonical. Promotion is a manual copy in which the user carries approved items by hand into the discover / compass dialogue; spec-ingest does not call discover / compass, and discover / compass do not auto-read spec-ingest's output (no machine handoff = no hidden shared ownership. R4.2 / R4.3 / R4.4).
53
+ - **Does not reimplement the rulers**: never runs inspections / slot verification of its own; only reads the ID catalogs in `validate-checks.md` / `decision-slots.md` and the "front-load / defer door" column. Holds no inspection IDs / slot IDs / scoring / weighting engine of its own.
54
+ - **Zero external dependencies** (INV2 / R5.3). Introduces no external package, AST parser, or mathematical solver; limited to Node standard and natural-language heuristics, completing extraction within a natural-language workflow.
55
+ - **Does not modify application code** (R5.2). In the intent-planning phase, modifies neither application code nor the input spec (read-only).
56
+ - **Naming / no external modification**: follows the `intent-*` naming convention and does not modify external spec tools or the kiro-* development environment (R5.6).
57
+ - **When prerequisites are absent**: when no input spec text exists, write nothing, state the absence, ask the user in natural language to provide the spec to ingest (a path or pasted body), and stop (fail-fast. R1.3).
58
+ - **On partial gaps**: for any of the seven categories the spec is silent on, gaps that cannot be linked to the ruler catalogs, and items that cannot be linked to a slot and are load-bearing-unknown, state the area explicitly as "no relevant description (silence) / absent / unknown" and omit it (never fill in by guessing).
@@ -0,0 +1,56 @@
1
+ # Intent Candidate Extraction Procedure (read-only; all candidates are Assumptions)
2
+
3
+ The single source of truth by which the `intent-from-spec` skill reads the natural-language specification text the user provides (PRDs, design specs, feature specs, issues, user stories, and other general development specifications) and extracts candidates for intent that is not stated explicitly. SKILL.md holds only the procedure and report format; "what to read under which category, and toward which transcription destination to write it out" is governed by this rule. This rule only **reads** the specification; it does not modify the input specification, the canonical `.intent/*.md`, steering (tech.md, etc.), or the design at all (writes go only under `.intent/spec-ingest/`).
4
+
5
+ ## posture (a proposer, not an adjudicator)
6
+
7
+ What this rule performs is **extraction (proposal)** by the heuristics of LLM judgment, not certification of confirmed intent. Every extracted candidate is a **hypothesis (Assumption)** and is treated as provisional until the user confirms and approves it. Processing does not stop; it stays at presenting warnings and observations (consistent with the product invariant that inferred intent is treated as provisional until a human reviews it). Therefore this rule **may infer** slot applicability from the specification's statements and silences, **but does not finalize** it.
8
+
9
+ ## Input boundary (fixed)
10
+
11
+ - Input is **limited** to the natural-language specification text the user designates (path reference or paste).
12
+ - **Source code, execution traces, and test results are not used as input for intent extraction.** Recovering intent from those is a separate path handled by the code→Intent of behavior-unknown mode, and is out of scope for this rule.
13
+ - When no input is given, perform no extraction and ask the user for the specification to be supplied (write nothing).
14
+
15
+ ## Candidate categories to extract (7 kinds; all Assumptions)
16
+
17
+ Read the specification text and extract candidates in the following 7 categories. For each candidate, attach the extraction basis (which statement or which silence in the specification it was derived from). **Mark every extracted candidate as an Assumption (inferred intent) and do not mix it with canonical (confirmed intent).**
18
+
19
+ 1. **Purpose** — what this product/feature exists for.
20
+ 2. **Desired Outcomes** — the state changes one wants to cause for users, business, operations, and developer experience.
21
+ 3. **Capabilities** — the responsibilities/capabilities that support the outcomes (as capabilities, not feature names).
22
+ 4. **Invariants** — behavior, APIs, data, UX, and operational constraints that must never be broken. Includes "constraints to be upheld" such as technical and security requirements.
23
+ 5. **Constraints** — technical/security/operational requirements and preconditions to be upheld.
24
+ 6. **anti-direction** — directions one must not proceed in; local optima to avoid.
25
+ 7. **Implicit Assumptions** — matters the specification presupposes without stating them, and the judgments derived therefrom.
26
+
27
+ > Constraints to be upheld, such as technical and security requirements, are **not dropped**, whether stated explicitly or implicit. Pick these up reliably into the Invariants category and write them out as the Invariants candidates in the output contract below.
28
+
29
+ ## output contract (write out under headings whose transcription destination is uniquely determined)
30
+
31
+ Write each candidate at a heading and granularity that lets a person transcribe it 1:1 to its destination. Make the headings correspond uniquely to the destinations in the table below. The responsibility of this rule extends only to **writing out** the candidates; reflecting them into destinations (the canonical intent-tree / compass, and steering / design) is not performed here. Promotion occurs when the user manually carries approved candidates into the discover / compass dialogue (there is no machine handoff).
32
+
33
+ | Extraction category | Heading to write out | Destination (by hand; not reflected by this rule) |
34
+ |---|---|---|
35
+ | Purpose | `### Purpose candidates (→ intent-tree L0 Assumptions)` | intent-tree `## Assumptions` (corresponding to L0: Product Purpose) |
36
+ | Desired Outcomes | `### Outcome candidates (→ intent-tree L1 Assumptions)` | intent-tree `## Assumptions` (corresponding to L1: Desired Outcomes) |
37
+ | Capabilities | `### Capability candidates (→ intent-tree L2 Assumptions)` | intent-tree `## Assumptions` (corresponding to L2: Capabilities) |
38
+ | Invariants | `### Invariants candidates (→ compass Invariants)` | compass `## Invariants` |
39
+ | Constraints | `### Constraint candidates (→ compass Invariants)` | compass `## Invariants` |
40
+ | anti-direction | `### Anti-direction candidates (→ compass Anti-direction)` | compass `## Anti-direction` |
41
+ | Implicit Assumptions | `### Implicit-assumption candidates (→ intent-tree Assumptions / Decision Rules)` | intent-tree `## Assumptions`, and judgments derived from the assumptions become compass `## Decision Rules` candidates |
42
+
43
+ - **Purpose, Outcomes, and Capabilities** are written at a granularity that can be transcribed 1:1 into the corresponding L0–L4 level `## Assumptions` items of the intent-tree (do not write into the canonical L0–L4 body).
44
+ - **anti-direction** is written at a granularity transcribable into the compass `## Anti-direction` block.
45
+ - **Judgments derived from implicit assumptions** are written out as compass `## Decision Rules` candidates (candidates, not finalized ADRs).
46
+ - **Invariants and Constraints (constraints to be upheld, including technical/security requirements) are written out as candidates for the compass `## Invariants` block.** The destination of Invariants candidates is **limited** to the compass Invariants.
47
+
48
+ ## Downstream delegation (what not to include in output)
49
+
50
+ - Reflecting Invariants candidates into steering (tech.md) or design is handled by the existing flows (writeback / export / by hand). **Reflection into tech.md / design is not included in the output of this rule.** The responsibility of this rule stays at recording them as Invariants candidates under headings bound for the compass, preserving a single source of truth.
51
+ - Writing into the canonical intent-tree / compass is also not performed (promotion is by hand, after approval).
52
+
53
+ ## Handling of omissions / non-observation
54
+
55
+ - Among the 7 categories, those on which the specification is silent are not filled in by guessing but stated explicitly as "no corresponding statement (silence)." Treating silence itself as a gap is the responsibility of the gap-readout side; this rule presents, distinctly, the candidates it could extract and the absence of categories it could not extract.
56
+ - All outputs are made explicit as derived, regenerable, and not the source of truth. Nothing is written back to canonical.
@@ -0,0 +1,54 @@
1
+ # Silence Gap Readout Procedure (read-only; only reads the rulers; gaps are hypotheses)
2
+
3
+ The single source of truth by which the `intent-from-spec` skill holds the existing rulers up against the natural-language specification the user provides and surfaces the places where the specification is **silent** as gaps. SKILL.md holds only the procedure and report format; "which rulers to read and how, and which category/slot silence to bind them to" is governed by this rule. This rule only **reads** the rulers' catalogs; it does not define its own check IDs or slot IDs. The source of truth for the decision logic lives in the references, and this rule merely borrows that ID system as a vessel and sorts into it the items the specification fails to satisfy. Observation is limited to Read / Glob / Grep, and it does not modify the input specification, the canonical `.intent/*.md`, or the rulers' sources at all (writes go only under `.intent/spec-ingest/`).
4
+
5
+ ## posture (a proposer, not an accept/reject gate)
6
+
7
+ State this rule's posture at the top. It is a **different posture** from the adjacent `intent-validate`, and is not a contradiction.
8
+
9
+ - `intent-packets/rules/decision-slots.md` rules that "a tool (the slot validator) must not infer slot applicability from artifact content." That is because `intent-validate` is an **accept/reject gate (an adjudicator)** — if an adjudicator infers applicability from content, it produces unjust verdicts that stop or pass work on matters that were never declared.
10
+ - `intent-from-spec` is a **proposer**, not an adjudicator. Its output is not an accept/reject verdict but **Assumptions (hypotheses)** that require human confirmation.
11
+ - Therefore, with this rule, **spec-ingest may infer slot applicability from the specification's silences, but does not finalize it.** validate is forbidden from inferring because it is an adjudicator; for this rule, a proposer, to infer is not an exception to that discipline — it stands on a different posture from the start.
12
+ - Every inferred applicability is marked as a hypothesis and treated as provisional until the user confirms and approves it (consistent with the product invariant that inferred intent is treated as provisional until a human reviews it).
13
+
14
+ ## Rulers to read (reference IDs; do not define them)
15
+
16
+ This rule **reads** the ID catalogs of the following two existing sources of truth. The ranges, firing conditions, and severities of the IDs are owned by the references; this rule does not duplicate or redefine them ("the table is canonical").
17
+
18
+ 1. **The check catalog table in `intent-validate/rules/validate-checks.md`** — read the stable kebab-case ID set in the `ID` column (`invariant-conflict` / `anti-direction-violation` / `requirements-smell` / `decision-slot-empty` / `decision-slot-unsown`, and so on) and the severity-guideline column. Adding or changing checks is owned by that table, and this rule cites the ID column as-is (it does not re-derive them).
19
+ 2. **The common-core slot table in `intent-packets/rules/decision-slots.md`** — read the 8-slot ID set sown in all modes (`decision-consistency` / `decision-idempotency` / `decision-error-semantics` / `decision-authz` / `decision-quality-priority` / `decision-fit-criterion` / `decision-exception-flow` / `decision-downstream-trace`). The slots' classifications and closing destinations are owned by the reference, and this rule cites those IDs as-is.
20
+
21
+ > This rule **never defines new** check IDs or slot IDs of its own. It creates no IDs absent from the catalogs above and sorts observed gaps into the existing IDs.
22
+
23
+ ## Gap-enumeration procedure
24
+
25
+ Once intent-candidate extraction (extract-intent) is complete, read the catalogs above and, holding them up against the input specification, enumerate the **items that go unfilled** as gaps. Each gap shows the following three points in an observable form.
26
+
27
+ 1. **Which ruler's silence** — make explicit which it corresponds to among the stable kebab-case IDs of `validate-checks.md` or the common-core slot IDs of `decision-slots.md` (bind referenceable ones to an ID, and for ones that cannot be bound, omit the ID and state the absence explicitly).
28
+ 2. **Which category/slot silence** — show which absence in the specification (which check classification, which slot) the gap corresponds to, together with observable evidence (which part of the specification is silent).
29
+ 3. **Presentation as a hypothesis** — present it not as a confirmed defect but as a **hypothesis** the user should confirm ("there is a suspicion that the specification is silent on this item"). Do not certify confirmed defects.
30
+
31
+ ### Examples of binding (IDs are cited from the reference catalogs)
32
+
33
+ - The specification is silent on the consistency model at data change → bind it as silence of the `decision-consistency` slot of `decision-slots.md` and present as a hypothesis.
34
+ - The specification is silent on the return contract for abnormal input → silence of the `decision-error-semantics` slot.
35
+ - The specification is silent on access rights / the executing actor → silence of the `decision-authz` slot.
36
+ - Vague, subjective, or comparative wording remains in the requirement statements → bind to `requirements-smell` of `validate-checks.md`, quote it, and leave it to the user's judgment (do not write paraphrases back into the source of truth).
37
+ - A statement in a direction that could conflict with the compass Invariants → `invariant-conflict`; a statement in a direction to be avoided → bind to `anti-direction-violation` and present as a hypothesis.
38
+
39
+ > All of the above are examples, not the definitions of the IDs themselves. The ranges, firing conditions, and severities are owned by the reference catalogs.
40
+
41
+ ## Do not stop processing (warn only; same stance as drift-watch)
42
+
43
+ - Even while presenting gaps, do **not stop** processing. Because this rule is not an accept/reject gate, the existence of a gap does not stop work or what follows; it stays at presenting warnings and observations (consistent with drift-watch's "warn only; do not stop" stance).
44
+ - Every enumerated gap is a hypothesis and is held as an Assumption until the user confirms and approves it. It is neither approved nor rejected, and not discarded.
45
+
46
+ ## Avoid the "silence of silence" (also show what was checked)
47
+
48
+ - Beyond showing each gap, also present **what was checked (the frame of the rulers read)** to avoid the error of omission caused by the checked frame itself being invisible (summarizing the checked frame and the places that went unfilled is the responsibility of omission-recap, but this rule too makes "which vessel it was held up against" observable by stating the ID system it bound to).
49
+ - For places that cannot be referenced (no corresponding ID exists in the catalog; the ruler does not hold that viewpoint), do not fill in by guessing; **omit** the binding to an ID and state the absence explicitly.
50
+
51
+ ## Handling of output
52
+
53
+ - All outputs are derived, regenerable, and not the source of truth. Nothing is written back to the canonical intent-tree / compass (promotion is by hand, after approval).
54
+ - This rule does not modify the rulers' sources of truth (`validate-checks.md` / `decision-slots.md`) at all. It does not run checks or slot validation itself; it merely goes and reads the ID catalogs.
@@ -0,0 +1,48 @@
1
+ # load-bearing Sorting Procedure (read-only; only reads the table; holds no numbers)
2
+
3
+ The single source of truth by which the `intent-from-spec` skill qualitatively prioritizes the extracted intent candidates and surfaced gaps by "whether they are of a kind that, if dropped, damages the correctness of what follows (whether they are load-bearing)," and presents items with a high load-bearing degree in a form distinguishable from low ones. SKILL.md holds only the procedure and report format; "what to read as the discriminating axis and how to sort into high/low" is governed by this rule. This rule does **not invent** a new discriminating axis; it merely **reads and copies** a column of an existing source of truth. Observation is limited to Read / Glob / Grep, and it does not modify the input specification, the canonical `.intent/*.md`, or the rulers' sources at all (writes go only under `.intent/spec-ingest/`).
4
+
5
+ ## The discriminating axis is a read-the-table operation, not a fresh judgment
6
+
7
+ The core of this rule comes down to "**reading and copying an existing column of `decision-slots.md`**." It does not define or derive the high/low axis in this rule, and it holds no mathematical solver, numeric score, or threshold whatsoever. Sorting is a table-citing operation, not the performing of new weighting or scoring.
8
+
9
+ - The load-bearing degree per slot is already written in the **"front-load / defer door" column** of `intent-packets/rules/decision-slots.md`. This rule reads that column as the **primary discriminating axis**.
10
+ - That column **exists in all of** the common-core slot table and every mode-specific delta table (standard / refactor / behavior-unknown / feature-growth) of `decision-slots.md`. Therefore, whichever slot is cited, that column can be read unambiguously.
11
+ - The "rationale" column **exists only in the common-core table**. So it is not made the primary key of discrimination; it is used only as material to **supplement the explanation** of why something was judged high (borrowing only the wording for why dropping it is dangerous, while the high/low discrimination itself is performed on the "front-load / defer door" column).
12
+
13
+ ## The column read and the high/low correspondence
14
+
15
+ Copy the value of the "front-load / defer door" column of `decision-slots.md` as-is, as follows.
16
+
17
+ | Value of the "front-load / defer door" column | load-bearing degree | Meaning |
18
+ |------------------------------------------------|---------------------|---------|
19
+ | front-load (one-way; irreversible; floor of security / legal regulation) | **high** | Overturning it later has large external impact, and if dropped it damages the correctness of what follows. Silence on it is dangerous |
20
+ | deferrable (two-way; localizable and reversible) | **low** | It can be re-decided in both directions and is reversible, and can be patched locally later. Even if silent, it is unlikely to directly break what follows |
21
+
22
+ - Silence on a slot whose column value begins with "front-load" is **high**, and silence on a slot whose value begins with "deferrable" is **low**. No further gradation (intermediate values, numbers) is introduced in this rule.
23
+ - The parentheticals of "front-load" / "deferrable" (one-way/two-way, irreversible/reversible, floor of security / legal regulation, and so on) are the places where the table itself explains why that high/low is read so, and this rule cites that wording as-is for the reason of presentation (it does not redefine it).
24
+
25
+ ### Examples of copying (values are cited from the reference table)
26
+
27
+ - `decision-authz` (authorization) is "front-load (one-way: floor of security / legal regulation)" → silence is **high**. As the reason, append "irreversible; security floor" from the common-core table's "rationale" column as a supplement.
28
+ - `decision-consistency` (consistency model) is "front-load (one-way: overturning it later has large external impact)" → silence is **high**.
29
+ - `decision-error-semantics` (error semantics) is "deferrable (two-way)" → silence is **low**.
30
+ - `decision-data-migration` (data migration; feature-growth) is "front-load (one-way: irreversible)" → silence is **high**.
31
+
32
+ > All of these are examples of copying the values of the reference table, not re-adjudication in this rule. If a value changes, the reference table is canonical, and this rule merely follows and re-reads it.
33
+
34
+ ## Application to gaps and intent candidates
35
+
36
+ - For a gap that gap-readout bound to a slot ID of `decision-slots.md`, cite the "front-load / defer door" column of that slot row and attach high/low. For a gap that cannot be bound to a slot ID (one for which the catalog has no corresponding column), do not attach high/low by guessing; state the absence explicitly as **load-bearing unknown**.
37
+ - For intent candidates too (invariants, constraints, anti-directions, etc. that extract-intent picked up), if there is a corresponding slot, cite that row's column and attach high/low. In particular, Invariants candidates derived from technical / security requirements often fall on "front-load" slots such as `decision-authz`, and lean toward **high**.
38
+ - Both high and low are **hypotheses, not confirmed severities**. They are held as Assumptions until the user confirms and approves them, and this rule's sorting neither discards nor finalizes any item.
39
+
40
+ ## Present high and low distinguishably
41
+
42
+ - In presentation, distinguish high items from low ones in an **observable** way (e.g., grouping high ones at the top, attaching an explicit label, and so on). Do not pour all gaps out equally; let the user address the dangerous-if-dropped ones first.
43
+ - Distinction stays at labeling and does not cut low ones away. Low ones too are held as Assumptions and included in omission-recap's re-confirmation scope.
44
+
45
+ ## Handling of output
46
+
47
+ - All outputs are derived, regenerable, and not the source of truth. Nothing is written back to the canonical intent-tree / compass (promotion is by hand, after approval).
48
+ - This rule does not modify the rulers' source of truth (`decision-slots.md`) at all. It holds no scoring or weighting engine of its own; it merely goes and reads the "front-load / defer door" column.
@@ -0,0 +1,42 @@
1
+ # omission recap Procedure (summarize what was checked and what went unfilled, and prompt re-confirmation)
2
+
3
+ The single source of truth by which the `intent-from-spec` skill, after finishing extraction (extract-intent), readout (gap-readout), and qualitative sorting (load-bearing), summarizes **what was checked (presenting the frame) and what went unfilled** for the user and prompts re-confirmation. SKILL.md holds only the procedure and report format; "how to summarize the checked frame, how to hold unapproved items, and how to guide promotion of approved items" is governed by this rule. This rule defines no new checks or slots; it **summarizes as-is** the frame of the existing ID system (`validate-checks.md` / `decision-slots.md`) that gap-readout bound to. Observation is limited to Read / Glob / Grep, and it does not modify the input specification, the canonical `.intent/*.md`, or the rulers' sources at all (writes go only under `.intent/spec-ingest/`).
4
+
5
+ ## Why a recap is needed (avoid the "silence of silence")
6
+
7
+ State this rule's purpose at the top. Whereas the adjacent gap-readout "shows each gap," this rule bears the role of "**summarizing, as a list, the checked frame itself and the places that went unfilled.**"
8
+
9
+ - Merely showing each gap individually does not let the user see **how far the AI checked**. When the checked frame itself is invisible, the user jumps to the conclusion that "it is already covered" and stops their own search. This is the "**silence of silence**" (an error of omission / automation bias in which the human stops searching because the AI implied completeness).
10
+ - To avoid this, the recap **explicitly presents the frame of the rulers that were checked**. It lists "which rulers were read (the check catalog of validate-checks, the 8 slots of decision-slots), and of those which were filled, which were silent, and which could not be checked," and shows the very outline of the inspection to the user.
11
+ - Beyond the silences, it also makes explicit the **places that could not be checked** (no corresponding ID exists in the catalog; the ruler does not hold that viewpoint). It does not fill them in by guessing; it leaves absence as absence. Not claiming coverage is itself a responsibility of the recap.
12
+
13
+ ## What the recap summarizes
14
+
15
+ Receiving the output of extract-intent, gap-readout, and load-bearing, it lists the following in an observable form. In every case it cites as-is the existing IDs that gap-readout bound to, and does not re-derive or redefine them.
16
+
17
+ 1. **The checked frame (what was read)** — present the rulers read (the check catalog of `validate-checks.md`, the common-core 8 slots of `decision-slots.md`) and show the outline of the inspection.
18
+ 2. **The places that were filled (items the specification answered)** — show the frames the specification answered, making it observable that the recap did not "pick up only silences."
19
+ 3. **The places that went unfilled (silences)** — list the gaps gap-readout enumerated, together with the bound IDs. Record the qualitative sorting of load-bearing (high / low) in a distinguishable form alongside.
20
+ 4. **The places that could not be checked (absence)** — make explicit, without filling in by guessing, the places where there is no bound ID and judgment was withheld, as absence.
21
+
22
+ ## Approval gate (only approved items are promoted to canonical)
23
+
24
+ The recap is a presentation to prompt re-confirmation, not a finalization. Reflecting anything into canonical requires the user's explicit approval.
25
+
26
+ - Only when the user **confirms and approves** an item is that item made a target for placement onto the canonical intent structure (the intent-tree / compass Invariants, Anti-direction, Decision Rules) (Req 4.2).
27
+ - Items that have not gone through the user's confirmation are **not automatically reflected** into canonical (Req 4.3). At the moment the recap presents them, every item is still a hypothesis.
28
+ - Items that were not approved are **not discarded but held as Assumptions** (Req 4.4). This is a hold, not a rejection, and they remain in the derived area (`.intent/spec-ingest/`) for re-confirmation on later occasions.
29
+
30
+ ## Promotion is a human copy (it holds no machine handoff)
31
+
32
+ This is the crux of this feature's boundary, and not stating it would create hidden shared ownership.
33
+
34
+ - spec-ingest's output is **derived and regenerable**, not the canonical source of truth. spec-ingest merely writes out approved candidates into the derived area in a "**transcribable form**."
35
+ - Promotion to canonical is done by a **human copy in which the user carries approved items by hand into the discover / compass dialogue**. spec-ingest **does not call** discover / compass, and discover / compass **do not automatically read** spec-ingest's output. No automatic linkage (machine handoff) exists between them.
36
+ - Therefore the recap presents a **guide**: "please transcribe the items you approved, yourself, into the discover / compass dialogue." The recap itself never performs promotion. By writing out with headings and granularity that can be copied 1:1 into the transcription destination (the Assumptions of the intent-tree / each block of the compass), it makes the human transcription easy (keeping the seam of promotion in human hands).
37
+ - Through this separation, no double source of truth between the derived (spec-ingest) and the canonical (intent-tree / compass) is created, and the overlap of ownership (hidden shared ownership) is avoided.
38
+
39
+ ## Handling of output
40
+
41
+ - All outputs are derived, regenerable, and not the source of truth. Nothing is written back to the canonical intent-tree / compass (promotion is by hand, after approval).
42
+ - This rule does not modify the rulers' sources of truth (`validate-checks.md` / `decision-slots.md`) at all; it merely summarizes the output of gap-readout and load-bearing. It does not run checks or slot validation itself.
@@ -0,0 +1,67 @@
1
+ ---
2
+ name: intent-improve
3
+ description: After implementation, cross-check the .intent/ deliverables against the implementation reality on the three axes of completeness / correctness / coherence, classify the drift, and propose corrections. Reflects changes only after user approval. Guides missed write-backs to /intent-writeback.
4
+ ---
5
+
6
+ # intent-improve Skill
7
+
8
+ ## Core Mission
9
+ - **Success Criteria**:
10
+ - The `.intent/` deliverables and the implementation reality (codebase, tests, cc-sdd spec progress) are evaluated on the three axes (completeness / correctness / coherence)
11
+ - The evaluation results are presented in the 5 classifications (aligned / intent reinforcement recommended / corrective packet recommended / Decision Rules update recommended / invariant violation detected), with evidence (file / relevant text)
12
+ - Only the corrections the user approved are reflected into `.intent/` (the approval unit is per proposal)
13
+ - When an unrecorded write-back learning is detected, the skill does not write a delta itself but prompts the user to run `/intent-writeback`
14
+ - On a run whose 5 classifications include `Decision Rules update recommended` or `invariant violation detected`, following the provisions of `rules/improve-axes.md`, it also prompts the user to run `/intent-validate` (the check for conformance catch-up) (on a run that does not include them, it does not prompt; it only guides and does not itself make a conformance judgment)
15
+ - When drift-watch is on, the coherence detections are recorded into drift-log as stage:improve / outcome:missed and a pattern×outcome improvement report is presented (when off / missing / invalid / missing section / missing mode.md, nothing is done; the 5 classifications are unchanged)
16
+ - When drift-watch is on, context-cost-cues are matched and ways of progressing that eat context are named in a noticing tone (recorded to no log, not included in the pattern×outcome tally, the 5 classifications unchanged; when off, nothing is done)
17
+ - No application code has been changed at all
18
+
19
+ ## Execution Steps
20
+
21
+ ### Step 1: Collect the current state
22
+ - Read the `.intent/` deliverables (intent-tree.md / intent-compass.md / `.intent/packets/index.md` + the packet files under active/ (cross-cutting read for the completeness axis; do not read archive/) / the per-packet drafts under `cc-sdd/<slug>/` / deltas.md). If `.intent/` is absent, guide the user through setup (installing intent-planner and running `/intent-discover`) and stop.
23
+ - Read `.intent/mode.local.md` (falling back to `.intent/mode.md` if absent) for the mode state. If both are absent, continue with the standard default and announce it.
24
+ - Collect the implementation reality: the codebase (read-only via Read/Glob/Grep), the presence and placement of tests, the progress of `.kiro/specs/` (only if it exists), and the promoted / pending entries of deltas.md.
25
+ - If `.kiro/` is absent, continue without cc-sdd context. If deltas.md is absent, continue treating it as "no delta records" (non-blocking).
26
+ - If a target scope is specified by argument, narrow down to it; otherwise target the whole of `.intent/`.
27
+
28
+ ### Step 2: Evaluate on the three axes
29
+ - Read `rules/improve-axes.md` and cross-check `.intent/` against the implementation reality on the three axes of completeness / correctness / coherence.
30
+ - Always attach evidence (file / relevant text) to the evaluation. Do not present an evaluation whose evidence cannot be shown.
31
+
32
+ ### Step 3: Classify and report
33
+ - Classify the evaluation results into the 5 classifications (aligned / intent reinforcement recommended / corrective packet recommended / Decision Rules update recommended / invariant violation detected; multiple may apply) and present them organized per classification.
34
+ - When unrecorded write-back learnings or declined items with the "on-hold" tag are detected, also include guidance to `/intent-writeback` following the provisions of `rules/improve-axes.md`.
35
+ - On a run whose 5 classifications include `Decision Rules update recommended` or `invariant violation detected`, following the "Validate catch-up guidance" provisions of `rules/improve-axes.md`, also include guidance to `/intent-validate` (the check for conformance catch-up) alongside the writeback guidance (on a run that does not include them, do not include it; only guide and do not make the judgment yourself).
36
+ - When drift-watch is on (when off / missing / invalid / missing section / missing mode.md, do nothing): check the `drift-watch` value in the `## Drift-watch (user-managed)` section of `.intent/mode.md`, and only when it is `on`, following the provisions of `rules/improve-axes.md`, record the drift detected on the coherence axis (invariant violation / anti-direction conflict) into `.intent/drift-log.md` as a `stage: improve` / `outcome: missed` draft, and present a `pattern × outcome` cross-tabulated improvement report. Delegate the recording details (the fixed 9-key order, append-only, obtaining commit, creating drift-log when absent) to `rules/improve-axes.md` (do not duplicate them here). This recording **does not create a new correction class** (the 5 classifications above are unchanged), and does not write into deltas.md or hook writeback. When off / missing / invalid / missing section / missing mode.md, do not record or aggregate drift and proceed as before (byte-equivalent to current behavior). Note that the report of the 5 classifications above is always done regardless of the drift-watch value. In addition, when `drift-watch: on`, following the "Context cost cues" section at the end of `rules/improve-axes.md`, match `.intent/context-cost-cues.md` and name, in a noticing tone, ways of progressing that eat context (**recorded to no log, not included in the pattern × outcome tally, and the 5 classifications stay unchanged**; skip if the catalog is absent).
37
+
38
+ ### Step 4: Confirm approval per proposal for the corrections
39
+ - For each item that needs correction, present the correction proposal (a deliverable update proposal or a corrective packet proposal) and confirm the user's approval **per proposal** (do not force bulk approval).
40
+ - Proposals that were not approved end as presentation only (do not rewrite).
41
+
42
+ ### Step 5: Reflect only the approved corrections
43
+ - Reflect only the approved corrections into the canonical deliverables (intent-tree.md / intent-compass.md / under `.intent/packets/` (the target packet file / plan.md)).
44
+ - When the canonical under `.intent/packets/` has been changed (including when a delta promotion is reflected into the target packet file), regenerate `.intent/packets/index.md` from the frontmatter under active/.
45
+ - Corrections that change the Decision Rules follow the change convention of `rules/improve-axes.md` (add a new entry in ADR form + annotate the old entry as superseded with a reference to its successor and move it to `.intent/compass-archive/<rule-slug>.md` (a per-rule file)).
46
+ - Do not write into deltas.md (recording deltas and finalizing declined-item tags are the responsibility of `/intent-writeback`).
47
+
48
+ ## Output Description
49
+
50
+ **Reader**: a human developer who, after implementation, approves and corrects the drift between intent and implementation.
51
+ **What this output makes them grasp first**: "**here is the drift between implementation and intent (invariant violations come first if any). There are N items pending approval.** If there is a missed write-back, go to `/intent-writeback`." The breakdown of the three-axis evaluation is detail for the decision.
52
+
53
+ Lead the output with the conclusion (the drift and the pending approvals).
54
+
55
+ - **Divergence summary (top)**: show the key points of the detected corrections by classification. If there is an `invariant violation detected`, lead with it as the top priority. If everything is `aligned` (no drift), state explicitly "aligned, no correction needed".
56
+ - **Approval-pending list (next, per proposal)**: attach evidence (file / relevant text) to each correction proposal. Phrased so it is clear what gets reflected by approving what.
57
+ - **Writeback guidance** (when applicable): when an unrecorded write-back learning is detected, guidance to run `/intent-writeback`.
58
+ - **Validate catch-up guidance** (when applicable): on a run whose 5 classifications include `Decision Rules update recommended` / `invariant violation detected`, attach the guidance to run `/intent-validate` (the check for conformance catch-up) alongside the writeback guidance.
59
+ - **Details**: the three-axis evaluation summary (completeness / correctness / coherence) and the breakdown by classification (aligned / intent reinforcement recommended / corrective packet recommended / Decision Rules update recommended / invariant violation detected).
60
+ - **Improvement report** (when drift-watch=on): a report cross-tabulating drift-log by `pattern × outcome`. Always attach the honesty notes (`missed=0` is a suspicion of missing records / frequent `false-positive` suggests the anti-direction is too broad), align the aggregation keys to the type (pattern), and establish the group comparison (without group / with group) by the type id and the `commit` column of drift-log only (do not create an additional comparison mechanism).
61
+
62
+ ## Safety & Fallback
63
+ - Do not rewrite the `.intent/` deliverables without user approval. Confirm approval per proposal.
64
+ - Do not change application code (INV6. Code is read-only via Read/Glob/Grep).
65
+ - Do not write into `.kiro/` (progress is read-only). The absence of `.kiro/` continues without cc-sdd context.
66
+ - Do not write directly into deltas.md. Handling of missed write-backs and on-hold items is guidance to `/intent-writeback` only; the final updates are done by writeback.
67
+ - The absence of `.intent/` guides the user through setup and stops. The absence of mode.md does not stop; continue with the standard default and announce it.
@@ -0,0 +1,121 @@
1
+ # Improve: three-axis evaluation and classification criteria
2
+
3
+ Rules for cross-checking the `.intent/` deliverables against the implementation reality in post-implementation realignment. Used by the `intent-improve` skill. Whereas writeback is the regular per-packet path, improve is the cross-cutting safety net that also catches drift not tied to a packet.
4
+
5
+ ## The three evaluation axes
6
+
7
+ - **completeness** (whether the intended content has been realized): whether the Expected Behavior / Scope of the packet files under active/ appears in the implementation and tests (the cross-cutting read is limited to active/; do not read archive/). Detects unrealized or partially realized content.
8
+ - **correctness** (whether the realized content matches the intent): whether the implemented behavior matches the packet's Why / Expected Behavior. Detects realizations that differ from the intent and additions outside the intent.
9
+ - **coherence** (whether the implementation is consistent with the North Star, Invariants, and Decision Rules): whether the implementation contradicts the North Star / Invariants / Anti-direction / Decision Rules of intent-compass.md. Detects local optimizations and invariant violations. It also detects Decision entries whose Revisit when conditions in the Decision Rules of intent-compass.md can be read as met from the implementation reality and `deltas` (cross-read in split form: the split files `.intent/deltas/*.md` (source of truth if present, natural-key ascending) → read-fallback to the legacy single `.intent/deltas.md` (generated mirror) if absent; when both coexist, treat split as source of truth and do not double-count the mirror). Report such detections with evidence under the existing classification "Decision Rules update recommended" (do not create a new classification). In addition, as a separate path with a different input source, substring-match each event string in `.intent/milestones.md` against the `Revisit when` field of every Decision Rule, and re-propose any matched Decision Rule for review under the same "Decision Rules update recommended" classification. Rules whose `Revisit when` is explicitly recorded as "undecided" are excluded from matching (so as not to produce a false firing). To avoid over-matching on events that are too short, assume sufficiently specific events (at or above a certain length). This milestones-originated matching is read-only and report-only; it does not auto-rewrite the compass and does not create a new corrective classification. The implementation/deltas-originated Revisit detection and the milestones-originated matching coexist, and both are reported under the "Decision Rules update recommended" classification.
10
+
11
+ ## Classification (5 kinds; multiple may apply)
12
+
13
+ - **aligned**: no drift. Consistent on all three axes (no correction needed; still attach the evidence of consistency).
14
+ - **intent reinforcement recommended**: the implementation is sound, but the `.intent/` side is thin or left implicit. Present update proposals that add to or clarify the deliverables (intent-tree.md / intent-compass.md / packet files).
15
+ - **corrective packet recommended**: the drift is on the implementation side and code changes are needed. Since improve does not change code, present the corrective work as a new packet proposal (an addition proposal of a new packet file (under active/) → export → the regular path of cc-sdd implementation).
16
+ - **Decision Rules update recommended**: a judgment gained in implementation conflicts with the existing Decision Rules, or a new decision criterion is needed. A Decision entry whose Revisit when conditions are detected as met is also reported for review under this classification. Follow the "Decision Rules change convention" below.
17
+ - **invariant violation detected**: the implementation violates the Invariants. Report it with top priority and present a corrective packet proposal or a review of the invariant itself (the user's call).
18
+
19
+ When multiple classifications apply, list them all, and organize the report per classification.
20
+
21
+ ## Handling of evidence
22
+
23
+ - Sources of the implementation reality: the codebase (Read/Glob/Grep only; changes forbidden), the presence and placement of tests, the progress of `.kiro/specs/`, and `deltas` (promoted / pending; cross-read in split form). All of them are **read-only**.
24
+ - **Cross-read `deltas` in split form (CONTRACT "Split and archive convention for append-only records"; the same discipline as `intent-overview`'s `aggregate-sources.md`)**: read the split files `.intent/deltas/*.md` (source of truth if present, natural-key ascending) → read-fallback to the legacy single `.intent/deltas.md` (generated mirror) if absent; when both coexist, treat split as source of truth and do not double-count the mirror; archive is history and is not mixed into the active tally (read-only).
25
+ - Always attach evidence (file / relevant text) to the evaluation. Do not present an evaluation or correction proposal whose evidence cannot be shown.
26
+
27
+ ## Decision Rules change convention (the same convention as writeback)
28
+
29
+ - A correction that changes the Decision Rules **adds a new entry** in the existing ADR form of intent-compass.md (**Context** / **Decision** / **Why** / **Alternatives considered** / **Consequences** / **Revisit when**) and annotates the superseded old entry as superseded with a reference to the succeeding entry.
30
+ - Move the old entry annotated as superseded, with its 6 fields intact (do not summarize), into the retired Decision Rule's **per-rule file** `.intent/compass-archive/<rule-slug>.md` (CONTRACT split & archive convention; `<rule-slug>` via the existing slug rule — no new numbering; re-superseding the same rule collects into the same file). Create the `compass-archive/` directory if absent. Active Decision Rules entries remain written directly inside the compass.
31
+ - Do not delete the old entry (history is preserved in compass-archive.md). Do not introduce custom fields (e.g., Supersedes).
32
+ - Old 4-field entries recorded before the introduction of the 6-field format (those without Alternatives considered / Revisit when) remain valid; do not treat the missing fields as an error, flag them, or rewrite them.
33
+
34
+ ## Writeback guidance (division of roles as the safety net)
35
+
36
+ - When an unrecorded write-back learning is detected — no delta entry in `deltas` (cross-read in split form: the split files `.intent/deltas/*.md` (source of truth if present) → read-fallback to the legacy single `.intent/deltas.md` if absent; no double-count) corresponding to the current Source Packet (the latest export), or an unrecorded decision that surfaced in the implementation — do not write a delta yourself; prompt the user to run `/intent-writeback`.
37
+ - When declined items with the "on-hold" tag remain, only prompt for a re-proposal or a confirmed rejection. The final tag update (promote / confirm rejection / keep on hold) is the responsibility of `/intent-writeback`.
38
+ - improve does not write into the `deltas` record (in either split or legacy single-mirror form) (all recording and state updates of deltas are done by writeback).
39
+
40
+ ## Validate catch-up guidance (a bridge to the conformance check)
41
+
42
+ - Only when that run's 5 classifications include `Decision Rules update recommended` or `invariant violation detected` (= a run where a reflection that could affect compass's Decision Rules / Invariants may arise), attach, alongside the writeback guidance, one sentence prompting the user to run `/intent-validate` (the cross-check of whether a compass update has been caught up by each packet = the check for conformance staleness). On a run that is `aligned` only, or that does not include the two classifications above, do not attach it (avoid over-prompting).
43
+ - improve itself does not make the conformance staleness judgment (the estimate of the right moment). The estimate of the right moment is the responsibility of intent-status, and improve only guides. The definitive diagnosis is made by `/intent-validate`.
44
+ - This guidance is limited to adding a guidance sentence and does not change the three-axis evaluation (completeness / correctness / coherence) or the 5-classification logic at all (the 5 classifications are unchanged).
45
+
46
+ ## Recording to drift-log (drift-watch-linked)
47
+
48
+ Only when `drift-watch: on`, copy the drift detected on the coherence axis (invariant violation / anti-direction conflict) into `.intent/drift-log.md` as an after-the-fact record. When `off` / missing / invalid, do not record (byte-equivalent to current behavior; the off-guard is guaranteed on the SKILL.md side).
49
+
50
+ ### Recording procedure
51
+
52
+ - **Reuse the drift the coherence axis detected (invariant violation / anti-direction conflict) rather than detecting it anew**, and append it one at a time to `.intent/drift-log.md` as a `stage: improve` entry. The values are:
53
+ - `pattern: <the matched drift-patterns id | uncatalogued:<short name> | ->` (an id if identifiable, `uncatalogued:<short name>` for an actual drift outside the catalog, `-` if undeterminable)
54
+ - `stage: improve`
55
+ - `packet: <the attributable packet name | ->` (`-` if attribution cannot be determined)
56
+ - `mechanism: compass-invariant` (when an Invariant is violated) or `compass-anti-direction` (when the Anti-direction is conflicted; choose by which compass element was breached)
57
+ - `outcome: missed` (**a draft**: at improve time the drift has already happened and slipped through, so it is `missed` by default. The verdict is backed by the user's `user-verdict` being valid / false-alarm / unjudged)
58
+ - `user-verdict: unjudged`
59
+ - `recorded_at: <ISO 8601>`
60
+ - `commit: <short hash | ->`
61
+ - `note: <1-2 lines>` (what was violated / conflicted)
62
+ - If multiple drifts are detected, append one entry per drift.
63
+ - **Write in split form (CONTRACT "Split and archive convention for append-only records")**: drift-log is event-origin, so instead of appending to the end of a single `drift-log.md`, write one entry to a **per-date+slug split file** `drift-log/<date>-<slug>.md`. `<date>` is the recorded_at date; `<slug>` is derived from the pattern (the event) via the existing slug rule (`intent-packets/rules/packet-format.md`) — do not create new/sequential numbering. Because a different event touches a different file, tail collisions disappear by construction. Never rewrite or delete an existing entry (**append-only**).
64
+ - **Always write all 9 keys in the fixed order**: `pattern` → `stage` → `packet` → `mechanism` → `outcome` → `user-verdict` → `recorded_at` → `commit` → `note`. Do not write an entry that is missing even one of the 9 keys.
65
+ - **commit**: write the result of `git rev-parse --short HEAD`. When it cannot be obtained (non-repository, git CLI absent, etc.), use `-` (fail-open: keep recording).
66
+ - **When the `drift-log/` directory is absent**: create the directory, then write the split file. An old single `drift-log.md`, if still present, can be read side-by-side by readers (migration is handled by this slice's migration step). Follow the sample in the "Entry format" section of `.intent/drift-log.md` (`### drift-log entry`) for the entry format.
67
+
68
+ ### Do not create a new correction class (separating recording from correction)
69
+
70
+ - This recording **does not create a new correction class**. The "Classification (5 kinds)" above (aligned / intent reinforcement recommended / corrective packet recommended / Decision Rules update recommended / invariant violation detected) is left entirely unchanged. It merely **also copies** the drift detected on the coherence axis **into the drift-log schema**, separately from the correction classification.
71
+ - **drift-watch records, improve corrects**. Recording (drift-log) and correction (the 5 classes) are separate responsibilities and are not mixed. Appending to drift-log neither substitutes for nor alters any correction.
72
+
73
+ ## Improvement report (pattern × outcome cross-tabulation)
74
+
75
+ When `drift-watch: on`, improve also presents in its output an improvement report that cross-tabulates drift-log by `pattern × outcome`.
76
+
77
+ - **The aggregation keys are aligned to the type (pattern)**. The structure by which the user can later reconcile the "without group (past failures) / with group (the drift-watch-on period)" is established **by the type id and the `commit` column of drift-log only** (do not create an additional comparison mechanism).
78
+ - The report must always carry the following **honesty notes**:
79
+ - Read `missed=0` as "a suspicion of missing records," not "evidence it worked" (keeping only the moments it worked in the tally is confirmation bias).
80
+ - Frequent `false-positive` suggests the anti-direction is too broad.
81
+ - These notes are of the same intent as the honesty note in `.intent/drift-log.md` and guarantee a reading not biased toward the "worked" family (prevented / caught).
82
+
83
+ ### Reading packet-scope-overflow as an "instrument that measures the first defense's efficacy" (DR9 second defense)
84
+
85
+ Entries with `mechanism: packet-scope-overflow` (the second-defense detection drift-watch records when, after export, the user issues an implementation instruction that exceeds the target packet's `## Scope`) are read as an instrument that measures **whether the first defense (the convention-doc rule "go back to intent on scope overflow"—recall only, no enforcement) is actually working**. They ride the same pattern × outcome cross-tally, with one added reading discipline:
86
+
87
+ - `outcome: caught` (the user heeded the warning and returned to intent via `/intent-packets` → re-export) = a moment when the first and second defenses worked.
88
+ - `outcome: missed` (they ignored the warning and pushed through with cc-sdd) = a moment when the first defense's recall did not work = the **denominator of the intent-shift rate (the rate of scope creep)**. Only as these accumulate can "how much the first defense is failing" be observed (the chicken-and-egg: the mechanism that measures the first defense's efficacy lives inside the second defense itself).
89
+ - `outcome: false-positive` (it was actually a valid scope extension) = a sign the check may be over-sensitive.
90
+ - **Do not bring in numeric scoring or threshold solvers.** Do not assert "more caught means the first defense is working"; carry over the honesty notes as-is (`missed=0` = suspected missing record, frequent `false-positive` = over-sensitive check) and keep it to candidate presentation. Align the tally key to the type (pattern = `scope-creep` or `uncatalogued:scope-overflow`); build no extra comparison machinery.
91
+
92
+ ## Role boundary (the three-way split of recording, correction, and writeback)
93
+
94
+ - **drift-watch does not hook writeback** (Requirement R8). So as not to muddy writeback's single responsibility — the two-stage promotion of deltas — recording to drift-log does not interfere with the writeback path at all. The behavior of "Writeback guidance" above is unchanged.
95
+ - Recording (drift-log), correction (the 5 classes), and writeback (the two-stage promotion of deltas) are **three separate responsibilities**. Do not mix the three.
96
+
97
+ ## Context cost cues (tied to drift-watch)
98
+
99
+ Alongside the coherence-axis evaluation, run a matching that makes you **notice** whether the way you are doing the post-implementation realignment is eating context (tokens). This is a **separate catalog** from drift-patterns (types of intent drift); only the symptom differs — it is "a situation that eats context" rather than "intent drift". This is awareness, not a norm, and because it differs in nature from the "recording to drift-log" and "improvement report (pattern×outcome tally)" above, it is **kept as a separate procedure**.
100
+
101
+ - **Only when `drift-watch: on`** do this matching (do nothing when off / unset / invalid). When `.intent/context-cost-cues.md` is absent, skip the matching and announce that (do not stop).
102
+ - **This is not recorded to any log.** Unlike the coherence-deviation detection above (which appends to `drift-log.md` and tallies pattern×outcome), context cost cues are **not appended to `drift-log.md` or to any other log**. Reason: consumption cannot be measured and its outcome cannot be evaluated, so mixing it into the log would pollute the drift-log tally with guesses; furthermore, what eats context legitimately differs per person, so recording it would intrude on privacy. **Do not apply the "append procedure for drift-log" or the "improvement-report tally" above to this matching, and do not include it in the pattern×outcome tally.**
103
+ - **The 5 classes are unchanged**: this cue does not alter the existing 5 classes (aligned / strengthen intent / corrective packet / update Decision Rules / invariant violation) at all. It is presented as advice that leaves no log, separate from the corrective classes.
104
+
105
+ ### Procedure
106
+
107
+ 1. **Read context-cost-cues.md**
108
+ - Read `.intent/context-cost-cues.md` and obtain all types (seed + every type the user has grown). If absent, skip and announce (do not stop).
109
+
110
+ 2. **Match each type's symptom against how the realignment is proceeding**
111
+ - Check each type's `symptom` against the post-implementation realignment (the path/subject of reading code or done work). The `symptom` is a weak cue; if the fit is weak, stay silent (lean toward staying silent over false positives — to keep the awareness feature trustworthy).
112
+ - Use only the subject for matching. Do not read token consumption, git diffs, or runtime metrics.
113
+
114
+ 3. **When a type matches (present the cue; do not write to any log)**
115
+ - Name it to the user in a noticing tone. Example: "The way this realignment is proceeding may match `<id>` — this might be eating context."
116
+ - Add the type's "if this is unintentional" light alternative (thin entry point / JIT pull / limited input) as an **optional choice**. Example: "If this is unintentional, there is also <light alternative> (the judgment is yours)."
117
+ - **Do not correct or instruct.** Phrase it as a cue rather than an imperative or a verdict. Installing many skills or loading full content can be a legitimate high-cost choice, so do not dismiss a context-eating choice as unnecessary. Leave the judgment to the user.
118
+ - **Do not append to any log** (do not reuse the coherence-deviation append procedure or tally).
119
+
120
+ 4. **When no type matches**
121
+ - Name nothing. **Write nothing to any log** (do not record a miss either — this matching has no log at all).
@@ -0,0 +1,61 @@
1
+ ---
2
+ name: intent-overview
3
+ description: Read-only aggregation skill that reads the scattered .intent/ artifacts and generates a formatted read-through/overview view under .intent/overview/ as a derived view. Never modifies any canonical artifact.
4
+ ---
5
+
6
+ # intent-overview Skill
7
+
8
+ ## Core Mission
9
+ - **Success Criteria**:
10
+ - Reads the existing scattered `.intent/` artifacts (intent-tree / intent-compass / packets index & active / packets/plan / export-log / deltas / mode / drift-log) read-only, and generates a formatted overview view that humans and agents can read through at once at `.intent/overview/overview.md` (R1.1)
11
+ - Treats the output as a derived view and never creates, modifies, or deletes any canonical `.intent/*.md` artifact. Writes are limited to under `.intent/overview/` (R1.2)
12
+ - On re-run, regenerates the overview from the latest artifacts by full replacement, producing no duplication of the source of truth (idempotent regeneration. R1.3)
13
+ - When `.intent/` or a required artifact (e.g. intent-tree) is absent, writes nothing, states the absence explicitly, and guides the user to the skill to run first (e.g. `/intent-discover`) (R1.4)
14
+ - Makes clear that the output is derived / regenerable / not the source of truth (and Git-untracked) (the reader's concern takes priority, so this may be relegated to the end of the view. R1.5)
15
+ - Organizes the whole picture into concern-separated derived views (intent view / dependency-block view / progress view), reflecting progress not as a single percentage but along axes of differing nature
16
+ - Lays out all packets as a single progress rail at the top of the view, annotates each row with the five signals + `[current stage → next stage(s) to pass through]`, so that "which packet is 🔵 you are here now, which stages each will pass through next, and where the ⚪ remaining work / 🔴 unreflected items are" is visible at a glance (only mirroring the five signals and `state` read-only, without computing or inferring state)
17
+ - Aggregates while keeping canonical intent distinct from inferred intent, and design intent distinct from implementation reality; marks gaps and unobserved areas as "unfilled / unobserved" and never fills them in by guessing
18
+ - Does not call other skills directly; coordinates only via read-only access to scaffold files (`.intent/*.md`) and guidance in the output text (R6.5). Has no state machine / autonomous loop / resident process, and maintains zero external dependencies (R6.1 / R6.2)
19
+
20
+ ## Execution Steps
21
+
22
+ ### Step 1: Confirm `.intent/` and required artifacts exist (fail-fast)
23
+ - When the user requests generation of an overview view, first confirm that the `.intent/` directory exists.
24
+ - If `.intent/` or a required artifact (at minimum `.intent/intent-tree.md`) is absent, **write nothing**, state the absence explicitly, guide the user to the skill to run first (e.g. `/intent-discover`), and stop (fail-fast. R1.4). Do not create or update `.intent/overview/overview.md` at this point.
25
+ - Read `.intent/mode.md` (do not stop if absent; the enforcement / drift-watch values are referenced in later steps. Read-only — never modify it).
26
+
27
+ ### Step 2: Read sources and aggregate by delegating to the four rules
28
+ - This skill has no analysis / recovery / inspection logic of its own. The exact reading rules for each concern are delegated to the following four rules (referenced by relative path). Follow the exact headings, keys, and column names each rule specifies; keep canonical and inferred distinct; and state gaps and unobserved areas (never fill in by guessing).
29
+ - `rules/aggregate-sources.md` — intent-document aggregation (intent-tree L0–L4 / intent-compass North Star, Anti-direction, Invariants, Decision Rules / packets index & active / plan / export-log / deltas). Separate canonical intent from inferred intent (derived from intent-tree's Assumptions / Open Questions). Code recovery is read-only from the refactor-mode `algo-intent-recovery` output; do no AST / scanner recovery of your own. If recovery output is absent, state the absence and guide the user to that algo (R2.x / R4.x).
30
+ - `rules/mermaid-tree.md` — render intent-tree's L0→L4 as a pure Mermaid `graph`, with the corresponding text hierarchy alongside it as the source of truth. If intent-tree is empty/ungenerated, omit the Mermaid figure and state why (R3.x).
31
+ - `rules/gap-readout.md` — read the drift-log and intent-validate inspection axes **without reimplementing** them, and aggregate them as the "design intent vs implementation reality" gap. Aggregate drift only when `mode.md`'s `## Drift-watch` section is `on` and `drift-log.md` exists; when `off` / unspecified / absent, omit that block and state it as unobserved. Map validate axes to the stable kebab-case ID catalog in `validate-checks.md`. The `## Enforcement` / `## Drift-watch` sections are read-only — never modified (R5.x).
32
+ - `rules/progress-readout.md` — split progress not into a single percentage but into 3 axes (intent stability / realization completeness / evidence certainty), deriving each axis from reading existing artifacts and stating its provenance. Present axis-to-axis divergences as-is without collapsing them. Read packet frontmatter `depends_on` to derive block state read-only (dependencies are only read from declarations, never inferred or computed), and surface cycles / unresolved dependencies. Organize into concern-separated derived views (intent / dependency-block / progress). Omit any axis or view whose source artifact is absent, stating "unobserved / ungenerated" (R8.x / R9.x).
33
+ - Branching policy: branch on whether inferred intent is present and on drift-watch on/off; when absent, omit the relevant block and state its status (never fill in by guessing). For backward compatibility, read an existing packet without `depends_on` as "no dependencies", without `## Evidence` as "unfilled", and the old 3-value state (`draft|active|done`)'s `active` as "in progress (equivalent to implementing)" (follow the rules' specifications).
34
+
35
+ ### Step 3: Write the overview view last (full replacement, derived)
36
+ - Only after all reading and aggregation are complete, **last** write `.intent/overview/overview.md` by **full replacement** (idempotent regeneration. R1.3). Never write to any canonical `.intent/*.md`.
37
+ - The composition order of the content follows "Output Description" (the progress rail = the conclusion at the top, then the concern-separated views, **with the derived / not-the-source-of-truth notice at the END**). Prioritize the human reader's "where am I now / what happens next," and do not fill the start of the view with the derived notice.
38
+ - That this view is derived, regenerable, not the source of truth, and Git-untracked is made explicit in the end-of-view notice (R1.2 / R1.3 / R1.5). That each derived view is derived and regenerable (not the source of truth) is likewise shown in each view's notice (R9.5).
39
+
40
+ ## Output Description
41
+
42
+ **Reader**: a human developer who wants to read through the whole of `.intent/` (and the AI that reads it downstream).
43
+ **What this output makes them grasp first**: "of all packets, which one is 🔵 you are here now, which stages each will pass through next, and where the 🔴 unreflected / ⚪ remaining work are." Tool-internal notices such as derived / not-the-source-of-truth are not the reader's concern, so **relegate them to the END**.
44
+
45
+ Compose the head of the view in the following order (the order that gets a human to "where am I / what happens next" by the shortest path).
46
+
47
+ 1. **Progress rail (top, conclusion)**: lay out all packets vertically and annotate each row with the five signals (✅ reflected / 🔵 you are here / ⚪ not started / 🔴 unreflected / ◻ merged), followed by `[current stage → next stage(s) to pass through]` (per `progress-readout.md` "Annotate each row with `[current stage → next stage(s) to pass through]`"). This makes "which P is you-are-here now and which stages remain after this" and "where the unreflected / remaining work are" visible at a glance on a single sheet.
48
+ 2. **Concern-separated derived views** (the rail's breakdown):
49
+ - **Intent view**: the Mermaid figure of intent-tree (L0–L4) + the text hierarchy, intent-compass, and the packet list (with plan / export-log / deltas alongside as context). Canonical and inferred kept distinct.
50
+ - **Dependency-block view**: dependency relations based on packets' `depends_on` and the resulting block state (with cycles / unresolved dependencies surfaced if any).
51
+ - **Progress view**: the 3 axes (intent stability / realization completeness / evidence certainty) with each axis's provenance, axis-to-axis divergences, and the design-intent vs implementation-reality gap aggregation (since the progress rail is brought to the top in 1., concentrate here on the breakdown of the 3 axes).
52
+ 3. **End-of-view notice**: that this view as a whole and each view is derived / regenerable / Git-untracked and not the source of truth (R1.2 / R1.3 / R1.5 / R9.5). Any view or axis without source material is omitted, with the reason (unobserved / ungenerated) stated.
53
+
54
+ ## Safety & Fallback
55
+ - **Write boundary**: writes are limited to under `.intent/overview/`. The canonical `.intent/*.md` is read-only — never created, modified, or deleted there (the `Write` in the frontmatter is permitted solely for writing under `.intent/overview/`).
56
+ - **Does not call other skills directly**: coordination happens only via read-only access to scaffold files (`.intent/*.md`) and guidance in the output text (R6.5). It holds no decision logic for recovery (`algo-intent-recovery`) / inspection (intent-validate) / drift (drift-watch); it only reads the outputs and definitions they leave behind.
57
+ - **Has no state machine / autonomous loop / resident process** (R6.1). The output view itself serves as a snapshot at read time.
58
+ - **Zero external dependencies** (INV2 / R6.2). Introduces no external package; limited to Node standard and natural-language heuristics.
59
+ - **Does not modify application code** (INV6 / R6.3).
60
+ - **When prerequisites are absent**: when `.intent/` or a required artifact is missing, write nothing, state the absence, guide the user to the skill to run first (e.g. `/intent-discover`), and stop (R1.4).
61
+ - **On partial gaps**: when inferred intent is unfetched / drift-watch is off / intent-tree is empty, omit the relevant block and state "unfetched / unobserved / ungenerated" (never fill in by guessing). When Mermaid cannot be generated, present the text hierarchy as the source of truth, omit the figure, and note the reason.