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.
- package/LICENSE +21 -0
- package/README.en.md +225 -0
- package/README.md +225 -0
- package/bin/cli.mjs +289 -0
- package/package.json +46 -0
- package/src/install.mjs +527 -0
- package/templates/en/agents/claude/CLAUDE.md +62 -0
- package/templates/en/agents/codex/AGENTS.md +62 -0
- package/templates/en/agents/gemini/GEMINI.md +62 -0
- package/templates/en/claude/skills/CONTRACT.md +86 -0
- package/templates/en/claude/skills/intent-compass/SKILL.md +55 -0
- package/templates/en/claude/skills/intent-compass/rules/algo-qoc.md +62 -0
- package/templates/en/claude/skills/intent-compass/rules/constraint-surfacing.md +41 -0
- package/templates/en/claude/skills/intent-discover/SKILL.md +63 -0
- package/templates/en/claude/skills/intent-discover/rules/algo-drift-analysis.md +34 -0
- package/templates/en/claude/skills/intent-discover/rules/algo-gore-lite.md +35 -0
- package/templates/en/claude/skills/intent-discover/rules/algo-impact-analysis.md +37 -0
- package/templates/en/claude/skills/intent-discover/rules/algo-intent-recovery.md +39 -0
- package/templates/en/claude/skills/intent-discover/rules/designer-questions.md +78 -0
- package/templates/en/claude/skills/intent-discover/rules/drift-terrain.md +105 -0
- package/templates/en/claude/skills/intent-discover/rules/mode-selection.md +31 -0
- package/templates/en/claude/skills/intent-export-cc-sdd/SKILL.md +88 -0
- package/templates/en/claude/skills/intent-export-cc-sdd/rules/drift-export-check.md +75 -0
- package/templates/en/claude/skills/intent-export-cc-sdd/rules/export-questions.md +23 -0
- package/templates/en/claude/skills/intent-export-cc-sdd/rules/map-cc-sdd.md +62 -0
- package/templates/en/claude/skills/intent-export-openspec/SKILL.md +90 -0
- package/templates/en/claude/skills/intent-export-openspec/rules/drift-export-check.md +50 -0
- package/templates/en/claude/skills/intent-export-openspec/rules/export-questions.md +23 -0
- package/templates/en/claude/skills/intent-export-openspec/rules/map-openspec.md +75 -0
- package/templates/en/claude/skills/intent-from-spec/SKILL.md +60 -0
- package/templates/en/claude/skills/intent-from-spec/rules/extract-intent.md +56 -0
- package/templates/en/claude/skills/intent-from-spec/rules/gap-readout.md +54 -0
- package/templates/en/claude/skills/intent-from-spec/rules/load-bearing.md +48 -0
- package/templates/en/claude/skills/intent-from-spec/rules/omission-recap.md +42 -0
- package/templates/en/claude/skills/intent-improve/SKILL.md +70 -0
- package/templates/en/claude/skills/intent-improve/rules/improve-axes.md +121 -0
- package/templates/en/claude/skills/intent-overview/SKILL.md +63 -0
- package/templates/en/claude/skills/intent-overview/rules/aggregate-sources.md +61 -0
- package/templates/en/claude/skills/intent-overview/rules/gap-readout.md +54 -0
- package/templates/en/claude/skills/intent-overview/rules/mermaid-tree.md +78 -0
- package/templates/en/claude/skills/intent-overview/rules/progress-readout.md +119 -0
- package/templates/en/claude/skills/intent-packets/SKILL.md +97 -0
- package/templates/en/claude/skills/intent-packets/rules/algo-additive-slicing.md +55 -0
- package/templates/en/claude/skills/intent-packets/rules/algo-characterization-test.md +40 -0
- package/templates/en/claude/skills/intent-packets/rules/algo-example-mapping.md +47 -0
- package/templates/en/claude/skills/intent-packets/rules/algo-migration-slicing.md +47 -0
- package/templates/en/claude/skills/intent-packets/rules/decision-slots.md +88 -0
- package/templates/en/claude/skills/intent-packets/rules/export-route.md +54 -0
- package/templates/en/claude/skills/intent-packets/rules/first-packet.md +35 -0
- package/templates/en/claude/skills/intent-packets/rules/packet-format.md +207 -0
- package/templates/en/claude/skills/intent-packets/rules/walking-skeleton.md +35 -0
- package/templates/en/claude/skills/intent-release-note/SKILL.md +58 -0
- package/templates/en/claude/skills/intent-release-note/rules/format-changelog.md +40 -0
- package/templates/en/claude/skills/intent-release-note/rules/format-github-releases.md +41 -0
- package/templates/en/claude/skills/intent-release-note/rules/format-select.md +32 -0
- package/templates/en/claude/skills/intent-release-note/rules/source-scope.md +42 -0
- package/templates/en/claude/skills/intent-status/SKILL.md +171 -0
- package/templates/en/claude/skills/intent-status/rules/decision-table.md +47 -0
- package/templates/en/claude/skills/intent-to-spec/SKILL.md +68 -0
- package/templates/en/claude/skills/intent-to-spec/rules/fabrication-guard.md +41 -0
- package/templates/en/claude/skills/intent-to-spec/rules/format-integrated.md +42 -0
- package/templates/en/claude/skills/intent-to-spec/rules/format-nonprogram.md +45 -0
- package/templates/en/claude/skills/intent-to-spec/rules/format-upstream.md +41 -0
- package/templates/en/claude/skills/intent-to-spec/rules/source-scope.md +50 -0
- package/templates/en/claude/skills/intent-validate/SKILL.md +80 -0
- package/templates/en/claude/skills/intent-validate/rules/validate-checks.md +121 -0
- package/templates/en/claude/skills/intent-writeback/SKILL.md +71 -0
- package/templates/en/claude/skills/intent-writeback/rules/writeback-protocol.md +139 -0
- package/templates/en/codex/skills/CONTRACT.md +77 -0
- package/templates/en/codex/skills/intent-compass/SKILL.md +52 -0
- package/templates/en/codex/skills/intent-compass/rules/algo-qoc.md +62 -0
- package/templates/en/codex/skills/intent-compass/rules/constraint-surfacing.md +41 -0
- package/templates/en/codex/skills/intent-discover/SKILL.md +60 -0
- package/templates/en/codex/skills/intent-discover/rules/algo-drift-analysis.md +34 -0
- package/templates/en/codex/skills/intent-discover/rules/algo-gore-lite.md +35 -0
- package/templates/en/codex/skills/intent-discover/rules/algo-impact-analysis.md +37 -0
- package/templates/en/codex/skills/intent-discover/rules/algo-intent-recovery.md +39 -0
- package/templates/en/codex/skills/intent-discover/rules/designer-questions.md +78 -0
- package/templates/en/codex/skills/intent-discover/rules/drift-terrain.md +105 -0
- package/templates/en/codex/skills/intent-discover/rules/mode-selection.md +31 -0
- package/templates/en/codex/skills/intent-export-cc-sdd/SKILL.md +85 -0
- package/templates/en/codex/skills/intent-export-cc-sdd/rules/drift-export-check.md +75 -0
- package/templates/en/codex/skills/intent-export-cc-sdd/rules/export-questions.md +23 -0
- package/templates/en/codex/skills/intent-export-cc-sdd/rules/map-cc-sdd.md +62 -0
- package/templates/en/codex/skills/intent-export-openspec/SKILL.md +87 -0
- package/templates/en/codex/skills/intent-export-openspec/rules/drift-export-check.md +50 -0
- package/templates/en/codex/skills/intent-export-openspec/rules/export-questions.md +23 -0
- package/templates/en/codex/skills/intent-export-openspec/rules/map-openspec.md +75 -0
- package/templates/en/codex/skills/intent-from-spec/SKILL.md +58 -0
- package/templates/en/codex/skills/intent-from-spec/rules/extract-intent.md +56 -0
- package/templates/en/codex/skills/intent-from-spec/rules/gap-readout.md +54 -0
- package/templates/en/codex/skills/intent-from-spec/rules/load-bearing.md +48 -0
- package/templates/en/codex/skills/intent-from-spec/rules/omission-recap.md +42 -0
- package/templates/en/codex/skills/intent-improve/SKILL.md +67 -0
- package/templates/en/codex/skills/intent-improve/rules/improve-axes.md +121 -0
- package/templates/en/codex/skills/intent-overview/SKILL.md +61 -0
- package/templates/en/codex/skills/intent-overview/rules/aggregate-sources.md +61 -0
- package/templates/en/codex/skills/intent-overview/rules/gap-readout.md +54 -0
- package/templates/en/codex/skills/intent-overview/rules/mermaid-tree.md +78 -0
- package/templates/en/codex/skills/intent-overview/rules/progress-readout.md +119 -0
- package/templates/en/codex/skills/intent-packets/SKILL.md +94 -0
- package/templates/en/codex/skills/intent-packets/rules/algo-additive-slicing.md +55 -0
- package/templates/en/codex/skills/intent-packets/rules/algo-characterization-test.md +40 -0
- package/templates/en/codex/skills/intent-packets/rules/algo-example-mapping.md +47 -0
- package/templates/en/codex/skills/intent-packets/rules/algo-migration-slicing.md +47 -0
- package/templates/en/codex/skills/intent-packets/rules/decision-slots.md +88 -0
- package/templates/en/codex/skills/intent-packets/rules/export-route.md +54 -0
- package/templates/en/codex/skills/intent-packets/rules/first-packet.md +35 -0
- package/templates/en/codex/skills/intent-packets/rules/packet-format.md +207 -0
- package/templates/en/codex/skills/intent-packets/rules/walking-skeleton.md +35 -0
- package/templates/en/codex/skills/intent-release-note/SKILL.md +56 -0
- package/templates/en/codex/skills/intent-release-note/rules/format-changelog.md +40 -0
- package/templates/en/codex/skills/intent-release-note/rules/format-github-releases.md +41 -0
- package/templates/en/codex/skills/intent-release-note/rules/format-select.md +32 -0
- package/templates/en/codex/skills/intent-release-note/rules/source-scope.md +42 -0
- package/templates/en/codex/skills/intent-status/SKILL.md +169 -0
- package/templates/en/codex/skills/intent-status/rules/decision-table.md +47 -0
- package/templates/en/codex/skills/intent-to-spec/SKILL.md +66 -0
- package/templates/en/codex/skills/intent-to-spec/rules/fabrication-guard.md +41 -0
- package/templates/en/codex/skills/intent-to-spec/rules/format-integrated.md +42 -0
- package/templates/en/codex/skills/intent-to-spec/rules/format-nonprogram.md +45 -0
- package/templates/en/codex/skills/intent-to-spec/rules/format-upstream.md +41 -0
- package/templates/en/codex/skills/intent-to-spec/rules/source-scope.md +50 -0
- package/templates/en/codex/skills/intent-validate/SKILL.md +78 -0
- package/templates/en/codex/skills/intent-validate/rules/validate-checks.md +121 -0
- package/templates/en/codex/skills/intent-writeback/SKILL.md +68 -0
- package/templates/en/codex/skills/intent-writeback/rules/writeback-protocol.md +139 -0
- package/templates/en/intent/README.md +118 -0
- package/templates/en/intent/cc-sdd/README.md +28 -0
- package/templates/en/intent/compass-archive/README.md +9 -0
- package/templates/en/intent/compass-archive/archive/.gitkeep +0 -0
- package/templates/en/intent/compass-archive.md +7 -0
- package/templates/en/intent/constraint-library.md +32 -0
- package/templates/en/intent/constraint-starters.md +58 -0
- package/templates/en/intent/context-cost-cues.md +55 -0
- package/templates/en/intent/deltas/README.md +11 -0
- package/templates/en/intent/deltas/archive/.gitkeep +0 -0
- package/templates/en/intent/deltas.md +34 -0
- package/templates/en/intent/drift-log/README.md +11 -0
- package/templates/en/intent/drift-log/archive/.gitkeep +0 -0
- package/templates/en/intent/drift-log.md +41 -0
- package/templates/en/intent/drift-patterns.md +68 -0
- package/templates/en/intent/export-log/README.md +12 -0
- package/templates/en/intent/export-log/archive/.gitkeep +0 -0
- package/templates/en/intent/export-log.md +6 -0
- package/templates/en/intent/glossary.md +23 -0
- package/templates/en/intent/intent-compass.md +55 -0
- package/templates/en/intent/intent-tree.md +59 -0
- package/templates/en/intent/milestones/README.md +10 -0
- package/templates/en/intent/milestones/archive/.gitkeep +0 -0
- package/templates/en/intent/milestones.md +22 -0
- package/templates/en/intent/mode.local.md +23 -0
- package/templates/en/intent/mode.md +32 -0
- package/templates/en/intent/modes/README.md +28 -0
- package/templates/en/intent/modes/behavior-unknown.md +57 -0
- package/templates/en/intent/modes/feature-growth.md +57 -0
- package/templates/en/intent/modes/non-code.md +46 -0
- package/templates/en/intent/modes/refactor.md +56 -0
- package/templates/en/intent/modes/standard.md +50 -0
- package/templates/en/intent/nl-spec/README.md +18 -0
- package/templates/en/intent/openspec/proposal.md +15 -0
- package/templates/en/intent/openspec/spec-delta.md +25 -0
- package/templates/en/intent/overview/README.md +18 -0
- package/templates/en/intent/packets/README.md +29 -0
- package/templates/en/intent/packets/index.md +6 -0
- package/templates/en/intent/packets/plan.md +23 -0
- package/templates/en/intent/release-note/README.md +18 -0
- package/templates/en/intent/scripts/intent-check.mjs +786 -0
- package/templates/en/intent/scripts/pre-push +27 -0
- package/templates/en/intent/spec-ingest/README.md +18 -0
- package/templates/ja/agents/claude/CLAUDE.md +62 -0
- package/templates/ja/agents/codex/AGENTS.md +62 -0
- package/templates/ja/agents/gemini/GEMINI.md +62 -0
- package/templates/ja/claude/skills/CONTRACT.md +90 -0
- package/templates/ja/claude/skills/intent-compass/SKILL.md +55 -0
- package/templates/ja/claude/skills/intent-compass/rules/algo-qoc.md +62 -0
- package/templates/ja/claude/skills/intent-compass/rules/constraint-surfacing.md +41 -0
- package/templates/ja/claude/skills/intent-discover/SKILL.md +63 -0
- package/templates/ja/claude/skills/intent-discover/rules/algo-drift-analysis.md +34 -0
- package/templates/ja/claude/skills/intent-discover/rules/algo-gore-lite.md +35 -0
- package/templates/ja/claude/skills/intent-discover/rules/algo-impact-analysis.md +37 -0
- package/templates/ja/claude/skills/intent-discover/rules/algo-intent-recovery.md +39 -0
- package/templates/ja/claude/skills/intent-discover/rules/designer-questions.md +78 -0
- package/templates/ja/claude/skills/intent-discover/rules/drift-terrain.md +105 -0
- package/templates/ja/claude/skills/intent-discover/rules/mode-selection.md +31 -0
- package/templates/ja/claude/skills/intent-export-cc-sdd/SKILL.md +88 -0
- package/templates/ja/claude/skills/intent-export-cc-sdd/rules/drift-export-check.md +75 -0
- package/templates/ja/claude/skills/intent-export-cc-sdd/rules/export-questions.md +23 -0
- package/templates/ja/claude/skills/intent-export-cc-sdd/rules/map-cc-sdd.md +62 -0
- package/templates/ja/claude/skills/intent-export-openspec/SKILL.md +90 -0
- package/templates/ja/claude/skills/intent-export-openspec/rules/drift-export-check.md +50 -0
- package/templates/ja/claude/skills/intent-export-openspec/rules/export-questions.md +23 -0
- package/templates/ja/claude/skills/intent-export-openspec/rules/map-openspec.md +75 -0
- package/templates/ja/claude/skills/intent-from-spec/SKILL.md +60 -0
- package/templates/ja/claude/skills/intent-from-spec/rules/extract-intent.md +56 -0
- package/templates/ja/claude/skills/intent-from-spec/rules/gap-readout.md +54 -0
- package/templates/ja/claude/skills/intent-from-spec/rules/load-bearing.md +48 -0
- package/templates/ja/claude/skills/intent-from-spec/rules/omission-recap.md +42 -0
- package/templates/ja/claude/skills/intent-improve/SKILL.md +70 -0
- package/templates/ja/claude/skills/intent-improve/rules/improve-axes.md +121 -0
- package/templates/ja/claude/skills/intent-overview/SKILL.md +63 -0
- package/templates/ja/claude/skills/intent-overview/rules/aggregate-sources.md +61 -0
- package/templates/ja/claude/skills/intent-overview/rules/gap-readout.md +54 -0
- package/templates/ja/claude/skills/intent-overview/rules/mermaid-tree.md +78 -0
- package/templates/ja/claude/skills/intent-overview/rules/progress-readout.md +119 -0
- package/templates/ja/claude/skills/intent-packets/SKILL.md +97 -0
- package/templates/ja/claude/skills/intent-packets/rules/algo-additive-slicing.md +55 -0
- package/templates/ja/claude/skills/intent-packets/rules/algo-characterization-test.md +40 -0
- package/templates/ja/claude/skills/intent-packets/rules/algo-example-mapping.md +47 -0
- package/templates/ja/claude/skills/intent-packets/rules/algo-migration-slicing.md +47 -0
- package/templates/ja/claude/skills/intent-packets/rules/decision-slots.md +88 -0
- package/templates/ja/claude/skills/intent-packets/rules/export-route.md +54 -0
- package/templates/ja/claude/skills/intent-packets/rules/first-packet.md +35 -0
- package/templates/ja/claude/skills/intent-packets/rules/packet-format.md +207 -0
- package/templates/ja/claude/skills/intent-packets/rules/walking-skeleton.md +35 -0
- package/templates/ja/claude/skills/intent-release-note/SKILL.md +58 -0
- package/templates/ja/claude/skills/intent-release-note/rules/format-changelog.md +40 -0
- package/templates/ja/claude/skills/intent-release-note/rules/format-github-releases.md +41 -0
- package/templates/ja/claude/skills/intent-release-note/rules/format-select.md +32 -0
- package/templates/ja/claude/skills/intent-release-note/rules/source-scope.md +42 -0
- package/templates/ja/claude/skills/intent-status/SKILL.md +171 -0
- package/templates/ja/claude/skills/intent-status/rules/decision-table.md +47 -0
- package/templates/ja/claude/skills/intent-to-spec/SKILL.md +68 -0
- package/templates/ja/claude/skills/intent-to-spec/rules/fabrication-guard.md +41 -0
- package/templates/ja/claude/skills/intent-to-spec/rules/format-integrated.md +42 -0
- package/templates/ja/claude/skills/intent-to-spec/rules/format-nonprogram.md +45 -0
- package/templates/ja/claude/skills/intent-to-spec/rules/format-upstream.md +41 -0
- package/templates/ja/claude/skills/intent-to-spec/rules/source-scope.md +50 -0
- package/templates/ja/claude/skills/intent-validate/SKILL.md +80 -0
- package/templates/ja/claude/skills/intent-validate/rules/validate-checks.md +121 -0
- package/templates/ja/claude/skills/intent-writeback/SKILL.md +71 -0
- package/templates/ja/claude/skills/intent-writeback/rules/writeback-protocol.md +139 -0
- package/templates/ja/codex/skills/CONTRACT.md +81 -0
- package/templates/ja/codex/skills/intent-compass/SKILL.md +52 -0
- package/templates/ja/codex/skills/intent-compass/rules/algo-qoc.md +62 -0
- package/templates/ja/codex/skills/intent-compass/rules/constraint-surfacing.md +41 -0
- package/templates/ja/codex/skills/intent-discover/SKILL.md +60 -0
- package/templates/ja/codex/skills/intent-discover/rules/algo-drift-analysis.md +34 -0
- package/templates/ja/codex/skills/intent-discover/rules/algo-gore-lite.md +35 -0
- package/templates/ja/codex/skills/intent-discover/rules/algo-impact-analysis.md +37 -0
- package/templates/ja/codex/skills/intent-discover/rules/algo-intent-recovery.md +39 -0
- package/templates/ja/codex/skills/intent-discover/rules/designer-questions.md +78 -0
- package/templates/ja/codex/skills/intent-discover/rules/drift-terrain.md +105 -0
- package/templates/ja/codex/skills/intent-discover/rules/mode-selection.md +31 -0
- package/templates/ja/codex/skills/intent-export-cc-sdd/SKILL.md +85 -0
- package/templates/ja/codex/skills/intent-export-cc-sdd/rules/drift-export-check.md +75 -0
- package/templates/ja/codex/skills/intent-export-cc-sdd/rules/export-questions.md +23 -0
- package/templates/ja/codex/skills/intent-export-cc-sdd/rules/map-cc-sdd.md +62 -0
- package/templates/ja/codex/skills/intent-export-openspec/SKILL.md +87 -0
- package/templates/ja/codex/skills/intent-export-openspec/rules/drift-export-check.md +50 -0
- package/templates/ja/codex/skills/intent-export-openspec/rules/export-questions.md +23 -0
- package/templates/ja/codex/skills/intent-export-openspec/rules/map-openspec.md +75 -0
- package/templates/ja/codex/skills/intent-from-spec/SKILL.md +58 -0
- package/templates/ja/codex/skills/intent-from-spec/rules/extract-intent.md +56 -0
- package/templates/ja/codex/skills/intent-from-spec/rules/gap-readout.md +54 -0
- package/templates/ja/codex/skills/intent-from-spec/rules/load-bearing.md +48 -0
- package/templates/ja/codex/skills/intent-from-spec/rules/omission-recap.md +42 -0
- package/templates/ja/codex/skills/intent-improve/SKILL.md +67 -0
- package/templates/ja/codex/skills/intent-improve/rules/improve-axes.md +121 -0
- package/templates/ja/codex/skills/intent-overview/SKILL.md +61 -0
- package/templates/ja/codex/skills/intent-overview/rules/aggregate-sources.md +61 -0
- package/templates/ja/codex/skills/intent-overview/rules/gap-readout.md +54 -0
- package/templates/ja/codex/skills/intent-overview/rules/mermaid-tree.md +78 -0
- package/templates/ja/codex/skills/intent-overview/rules/progress-readout.md +119 -0
- package/templates/ja/codex/skills/intent-packets/SKILL.md +94 -0
- package/templates/ja/codex/skills/intent-packets/rules/algo-additive-slicing.md +55 -0
- package/templates/ja/codex/skills/intent-packets/rules/algo-characterization-test.md +40 -0
- package/templates/ja/codex/skills/intent-packets/rules/algo-example-mapping.md +47 -0
- package/templates/ja/codex/skills/intent-packets/rules/algo-migration-slicing.md +47 -0
- package/templates/ja/codex/skills/intent-packets/rules/decision-slots.md +88 -0
- package/templates/ja/codex/skills/intent-packets/rules/export-route.md +54 -0
- package/templates/ja/codex/skills/intent-packets/rules/first-packet.md +35 -0
- package/templates/ja/codex/skills/intent-packets/rules/packet-format.md +207 -0
- package/templates/ja/codex/skills/intent-packets/rules/walking-skeleton.md +35 -0
- package/templates/ja/codex/skills/intent-release-note/SKILL.md +56 -0
- package/templates/ja/codex/skills/intent-release-note/rules/format-changelog.md +40 -0
- package/templates/ja/codex/skills/intent-release-note/rules/format-github-releases.md +41 -0
- package/templates/ja/codex/skills/intent-release-note/rules/format-select.md +32 -0
- package/templates/ja/codex/skills/intent-release-note/rules/source-scope.md +42 -0
- package/templates/ja/codex/skills/intent-status/SKILL.md +169 -0
- package/templates/ja/codex/skills/intent-status/rules/decision-table.md +47 -0
- package/templates/ja/codex/skills/intent-to-spec/SKILL.md +66 -0
- package/templates/ja/codex/skills/intent-to-spec/rules/fabrication-guard.md +41 -0
- package/templates/ja/codex/skills/intent-to-spec/rules/format-integrated.md +42 -0
- package/templates/ja/codex/skills/intent-to-spec/rules/format-nonprogram.md +45 -0
- package/templates/ja/codex/skills/intent-to-spec/rules/format-upstream.md +41 -0
- package/templates/ja/codex/skills/intent-to-spec/rules/source-scope.md +50 -0
- package/templates/ja/codex/skills/intent-validate/SKILL.md +78 -0
- package/templates/ja/codex/skills/intent-validate/rules/validate-checks.md +121 -0
- package/templates/ja/codex/skills/intent-writeback/SKILL.md +68 -0
- package/templates/ja/codex/skills/intent-writeback/rules/writeback-protocol.md +139 -0
- package/templates/ja/intent/README.md +118 -0
- package/templates/ja/intent/cc-sdd/README.md +28 -0
- package/templates/ja/intent/compass-archive/README.md +9 -0
- package/templates/ja/intent/compass-archive/archive/.gitkeep +0 -0
- package/templates/ja/intent/compass-archive.md +7 -0
- package/templates/ja/intent/constraint-library.md +32 -0
- package/templates/ja/intent/constraint-starters.md +58 -0
- package/templates/ja/intent/context-cost-cues.md +55 -0
- package/templates/ja/intent/deltas/README.md +11 -0
- package/templates/ja/intent/deltas/archive/.gitkeep +0 -0
- package/templates/ja/intent/deltas.md +34 -0
- package/templates/ja/intent/drift-log/README.md +11 -0
- package/templates/ja/intent/drift-log/archive/.gitkeep +0 -0
- package/templates/ja/intent/drift-log.md +41 -0
- package/templates/ja/intent/drift-patterns.md +68 -0
- package/templates/ja/intent/export-log/README.md +12 -0
- package/templates/ja/intent/export-log/archive/.gitkeep +0 -0
- package/templates/ja/intent/export-log.md +6 -0
- package/templates/ja/intent/glossary.md +23 -0
- package/templates/ja/intent/intent-compass.md +55 -0
- package/templates/ja/intent/intent-tree.md +59 -0
- package/templates/ja/intent/milestones/README.md +10 -0
- package/templates/ja/intent/milestones/archive/.gitkeep +0 -0
- package/templates/ja/intent/milestones.md +22 -0
- package/templates/ja/intent/mode.local.md +23 -0
- package/templates/ja/intent/mode.md +32 -0
- package/templates/ja/intent/modes/README.md +28 -0
- package/templates/ja/intent/modes/behavior-unknown.md +57 -0
- package/templates/ja/intent/modes/feature-growth.md +57 -0
- package/templates/ja/intent/modes/non-code.md +46 -0
- package/templates/ja/intent/modes/refactor.md +56 -0
- package/templates/ja/intent/modes/standard.md +50 -0
- package/templates/ja/intent/nl-spec/README.md +18 -0
- package/templates/ja/intent/openspec/proposal.md +15 -0
- package/templates/ja/intent/openspec/spec-delta.md +25 -0
- package/templates/ja/intent/overview/README.md +18 -0
- package/templates/ja/intent/packets/README.md +29 -0
- package/templates/ja/intent/packets/index.md +6 -0
- package/templates/ja/intent/packets/plan.md +23 -0
- package/templates/ja/intent/release-note/README.md +18 -0
- package/templates/ja/intent/scripts/intent-check.mjs +786 -0
- package/templates/ja/intent/scripts/pre-push +27 -0
- package/templates/ja/intent/spec-ingest/README.md +18 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# 意図ドキュメント集約手順(read-only・派生再生成)
|
|
2
|
+
|
|
3
|
+
`intent-overview` skill が散在した `.intent/` 意図成果物を 1 つの通読ビューへ集約・整形するための正本。SKILL.md は手順と報告形式のみを持ち、「何をどの見出し/列から読み、どう並べるか」は本表を参照する。本ルールは **read-only** であり、canonical な `.intent/*.md` を一切変更しない(書き込みは `.intent/overview/` 配下のみ)。逆算・検査・drift の判定ロジックは再実装せず、それらが残した出力を読むだけである。
|
|
4
|
+
|
|
5
|
+
## 集約対象と正確な参照(固定)
|
|
6
|
+
|
|
7
|
+
各成果物の見出し・列名は下表で固定する(変われば本ルールの追従が必要=Revalidation Trigger)。canonical な記述と inferred(推測)由来の記述は分離して提示し、混在させない。
|
|
8
|
+
|
|
9
|
+
| ソース | 読むファイル | 正確な見出し/列(固定) | ビューでの扱い |
|
|
10
|
+
|---|---|---|---|
|
|
11
|
+
| 意図ツリー | `.intent/intent-tree.md` | `## L0`〜`## L4`(階層本体)+ `## Assumptions`(+あれば `## Open Questions`) | L0–L4 を canonical として整形。Assumptions / Open Questions は inferred として別枠 |
|
|
12
|
+
| コンパス | `.intent/intent-compass.md` | `## North Star` / `## Anti-direction` / `## Invariants` / `## Decision Rules` | 4 節をそのまま整形して通読化 |
|
|
13
|
+
| packet 一覧 | `.intent/packets/index.md` | 列 `packet_id \| name \| state \| summary` | 一覧テーブルを集約。各 packet の状態を併記 |
|
|
14
|
+
| packet 本体 | `.intent/packets/active/*.md` | frontmatter 10 キー(`depends_on` を含む)+ 本文 `## Evidence` 節 | frontmatter と Evidence を読み取り、進捗・依存・証拠の文脈に紐づけ |
|
|
15
|
+
| プラン | `.intent/packets/plan.md` | `## Walking Skeleton` / `## Recommended First Packet` / `## Deferred` | packet 集約の「次の一手の文脈」として提示 |
|
|
16
|
+
| export 履歴 | 分割形 `.intent/export-log/*.md` 群(あれば正本・`exported_at` 昇順)/無ければ旧 `.intent/export-log.md`(生成ミラー) | 列 `packet \| exported_at \| commit` | export 履歴タイムラインとして提示(分割しても通読できる) |
|
|
17
|
+
| 学び(差分) | 分割形 `.intent/deltas/*.md` 群(あれば)+ 旧 `.intent/deltas.md`(共存時) | `Status` + 学びタグ | pending な学びとして packet 集約に紐づけ(分割しても通読できる) |
|
|
18
|
+
|
|
19
|
+
## active 面 / archive の見せ分け(通読ビューの2層・派生機械生成)
|
|
20
|
+
|
|
21
|
+
append-only 記録(deltas / export-log / drift-log / milestones / compass-archive)は分割により **active 面(現在の薄い射影)と archive(履歴)** に分かれる。overview の通読ビューはこの2層を**見せ分けて**提示する(INV25-(1)・DR33 の派生機械生成。新しい canonical ファイルを作らない・正本を変更しない read-only)。
|
|
22
|
+
|
|
23
|
+
| 層 | 読むもの | 通読ビューでの扱い |
|
|
24
|
+
|---|---|---|
|
|
25
|
+
| **active 面** | 各記録の分割ディレクトリ直下 `.intent/<rec>/*.md`(あれば正本・自然キー昇順)/無ければ旧 `.intent/<rec>.md`(生成ミラー) | 「現在」のセクションとして薄く提示(現在の射影)。分割形と旧ミラーが共存するときは分割形を正本とし、ミラーを二重に数えない |
|
|
26
|
+
| **archive(履歴)** | 各記録の `.intent/<rec>/archive/`(例 `deltas/archive/<年>/`・compass-archive は rule 単位)配下のファイル | 「履歴」セクションとして active 面とは**別枠**で提示する。active 集計(pending な学び・最新 export 等)には混ぜない |
|
|
27
|
+
|
|
28
|
+
- 見せ分けは**派生の機械生成**であり、新しい canonical ファイルを増やさない(書き込みは `.intent/overview/` 配下のみ・正本は read-only)。`archive/` が不在の環境では「履歴」セクションを省略する(エラーにしない)。
|
|
29
|
+
- 旧単一ファイル形式のみの環境(分割・archive 未配備)では active 面を旧ミラーから読み、「履歴」セクションは git 履歴に委ねる旨を添えて省略する(後方互換・推測で埋めない)。
|
|
30
|
+
|
|
31
|
+
## packet frontmatter と state 値域(固定)
|
|
32
|
+
|
|
33
|
+
- frontmatter は **10 キー**(`depends_on` を含む)。`depends_on` は packet_id の集合(依存先)。
|
|
34
|
+
- `state` は **5 値**のいずれか: `draft | ready | implementing | verifying | done`。
|
|
35
|
+
- packet 本体の `## Evidence` 節は検証結果・検査軸 ID(kebab-case)を含む。
|
|
36
|
+
|
|
37
|
+
## 後方互換(旧スキーマの読み替え)
|
|
38
|
+
|
|
39
|
+
新スキーマ(10 キー・5 値)が未配備の環境でも後方互換で読む。欠落は推測で埋めない。
|
|
40
|
+
|
|
41
|
+
| 観測される状態 | 読み替え |
|
|
42
|
+
|---|---|
|
|
43
|
+
| `depends_on` が不在 | 「依存なし(空集合)」として読む |
|
|
44
|
+
| `## Evidence` 節が不在 | 「未記入」として読む |
|
|
45
|
+
| 旧 3 値 state(`draft \| active \| done`)が残る | `active` を「進行中(実装中相当)」として読む。`draft` / `done` はそのまま |
|
|
46
|
+
|
|
47
|
+
## inferred(逆算)の扱い — 委譲・読むのみ
|
|
48
|
+
|
|
49
|
+
- 本ルールはコードからの意図逆算を **独自に行わない**。AST 走査・静的解析・外部スキャナは使わない(INV2・R4.4)。
|
|
50
|
+
- refactor モードの `algo-intent-recovery` が intent-tree に残した inferred intent(`## Assumptions` / `## Open Questions` 由来)を **読み取って** inferred として明示し、canonical な L0–L4 本体と分離して提示する(R4.1 / R4.3 / R2.4)。
|
|
51
|
+
- **逆算が未取得のとき**(refactor モードの discover が未実行で、`## Assumptions` に inferred が無い): その不在を明示し、`algo-intent-recovery` を含む refactor モードの discover 実行を案内する。推測で埋めない(R4.2)。
|
|
52
|
+
|
|
53
|
+
## 欠落・未記入の扱い
|
|
54
|
+
|
|
55
|
+
- 集約対象の成果物が未記入または部分的なときは、該当箇所を **「未記入」** として明示する。推測で埋めない(R2.5)。
|
|
56
|
+
- ソースファイル自体が不在のときは、その不在を明示し、先に実行すべき該当スキルを案内する(書き込みはしない)。
|
|
57
|
+
|
|
58
|
+
## 出力の規律
|
|
59
|
+
|
|
60
|
+
- canonical な意図(tree の L0–L4 / compass 4 節 / packets / plan / export-log / deltas)と inferred な意図(recovery 由来)を **区別したまま** 並べる。
|
|
61
|
+
- 生成するビューは **派生(derived)・再生成可能** であり正本ではない旨を明示する。canonical へは書き戻さない。
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# ギャップ集約: 設計意図 vs 実装実態
|
|
2
|
+
|
|
3
|
+
`intent-overview` skill が「設計意図 vs 実装実態」のギャップ節を組み立てるための正本。SKILL.md は手順と報告形式のみを持ち、何を・どの条件で・どう読むかは本ファイルを参照する。本層は drift-watch / intent-validate の検査軸を**再実装せず読みに行く**だけであり、判定ロジックを持たない。すべての観測は Read / Glob / Grep に限り、canonical 成果物(mode.md / drift-log.md / validate-checks.md)を一切変更しない。
|
|
4
|
+
|
|
5
|
+
## 不変の規律(read-only クロスカット層)
|
|
6
|
+
|
|
7
|
+
- 本層は drift-watch / intent-validate の出力・定義を**読むだけ**で、検知や検査を自前で実行しない(Out of Boundary)。
|
|
8
|
+
- `mode.md` の `## Enforcement(ユーザー管理)` / `## Drift-watch(ユーザー管理)` セクションは**読み取りのみ**で、変更しない(intent-status と同規律)。
|
|
9
|
+
- 不在・未観測のブロックは推測で埋めず、その状態(未観測 / 未取得)を明示して省略する。
|
|
10
|
+
|
|
11
|
+
## drift-log の条件付き読み取り(R5.1 / R5.4)
|
|
12
|
+
|
|
13
|
+
drift-log を読むのは、次の **両条件が同時に成立**するときに限る。
|
|
14
|
+
|
|
15
|
+
1. `mode.md` の `## Drift-watch(ユーザー管理)` セクションが `on` である。
|
|
16
|
+
2. `.intent/drift-log.md` が存在する。
|
|
17
|
+
|
|
18
|
+
両条件が成立するときのみ、drift-log を Read / Grep で読み、検知エントリを集約してギャップ節に提示する。`off` / 未記載 / drift-log 不在のいずれかの場合は、ギャップ集約ブロックを**省略**し、その状態を「未観測(drift-watch が off、または drift-log なし)」として明示する。drift-watch の既定は `off` であり、未観測は欠陥ではなく初期状態として扱う。
|
|
19
|
+
|
|
20
|
+
### drift-log の固定スキーマ(9 キー・固定順)
|
|
21
|
+
|
|
22
|
+
各エントリは次の 9 キーを固定順の Markdown リストで持つ(drift-log.md の正本に一致)。本層はこのキー集合・順序を前提に読むだけで、書式を改変しない。
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
pattern → stage → packet → mechanism → outcome → user-verdict → recorded_at → commit → note
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
- `packet` は **3 番目**の正式キーである(`stage` の次・`mechanism` の前)。
|
|
29
|
+
- 集計は `outcome` と `user-verdict` の 2 列から行う。
|
|
30
|
+
- `outcome`: `prevented` / `caught` / `missed` / `false-positive` / `not-applicable` の 5 値。
|
|
31
|
+
- `user-verdict`: `valid` / `false-alarm` / `unjudged` の 3 値。
|
|
32
|
+
- 提示は最低限 `pattern × outcome` のクロス集計(drift-log.md の運用説明に一致)に、`user-verdict`(利用者の確定)を併記する。`outcome` は drift-watch の下書き、`user-verdict` は利用者の確定であり、両者を混同して提示しない。
|
|
33
|
+
|
|
34
|
+
### missed=0 の読み方(確証バイアスの回避)
|
|
35
|
+
|
|
36
|
+
`missed=0`(防げず通った記録がゼロ)を「効いた証拠」として断定しない。**「記録漏れの疑い」**として提示する(intent-status の先例・drift-log.md の冒頭注記に倣う)。効いた瞬間(`prevented` / `caught`)だけが残るのは確証バイアスであり、効かなかった瞬間(`missed` / `false-positive` / `not-applicable`)も均等に記録される前提で読む。
|
|
37
|
+
|
|
38
|
+
## intent-validate 検査軸のマッピング(R5.2 / R5.3)
|
|
39
|
+
|
|
40
|
+
intent-validate は `allowed-tools: Read, Glob, Grep` の read-only スキルであり、**検査結果を永続ファイルに書かない**。したがって本層は「validate の結果ファイル」を読むのではなく、`intent-validate/rules/validate-checks.md` の**検査軸 ID カタログ**を読み、俯瞰内のギャップ観点をその ID 体系で整理する。
|
|
41
|
+
|
|
42
|
+
- 参照先: `intent-validate/rules/validate-checks.md` の検査カタログ表(`ID` 列=安定 kebab-case ID、`深刻度の目安` 列=重要度分類)。検査の追加・変更はこの表が正であり、本層は ID 列をそのまま引く(再導出しない)。
|
|
43
|
+
- 重要度分類は `validate-checks.md` の 3 分類(`要修正` / `推奨` / `情報`)をそのまま用いる。
|
|
44
|
+
- 依存健全性の検査軸 `dependency-cycle`(`depends_on` の循環 A→…→A)・`dependency-broken-ref`(存在しない packet_id への参照)は本カタログに実在し、いずれも `要修正` 級である。依存・ブロックビュー(progress-readout)で循環・未解決依存が観測されたら、対応するこの安定 ID に紐づけて提示する。
|
|
45
|
+
- 検査ロジックそのものは**再実装しない**(R5.2)。本層は ID 体系という器を借り、俯瞰で観測したギャップ観点をその器に振り分けるだけである。
|
|
46
|
+
- 検査結果が参照可能な箇所は安定 kebab-case ID に紐づけて提示する。参照不能な箇所(validate 未実行・結果が成果物に残っていない)は ID への紐づけを**省略**し、不在を明示する(R5.3 の「参照可能である」条件付き要件を、参照不能時は省略で吸収する)。
|
|
47
|
+
|
|
48
|
+
## 出力ブロックの構成
|
|
49
|
+
|
|
50
|
+
ギャップ節は次の要素で構成する(素材が無い要素は省略し理由を明示)。
|
|
51
|
+
|
|
52
|
+
1. **drift 集約**(両条件成立時のみ): `pattern × outcome` のクロス集計に `user-verdict` を併記。`missed=0` は「記録漏れの疑い」と注記。
|
|
53
|
+
2. **検査軸マッピング**: 俯瞰で観測したギャップ観点を `validate-checks.md` の安定 kebab-case ID 体系で整理。参照可能なものは ID に紐づけ、不能なものは省略・不在明示。
|
|
54
|
+
3. **mode の現況**: `## Enforcement` / `## Drift-watch` の現在値を読み取りのみで併記(変更しない)。
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# intent-tree の Mermaid 可視化規則
|
|
2
|
+
|
|
3
|
+
`intent-overview` skill が `intent-tree.md` の L0→L4 階層を図として描画する際の正本。SKILL.md は手順と報告形式のみを持ち、Mermaid の生成方法・エスケープ規約・テキスト併記の規律は本規則を参照する。本規則の出力先は `.intent/overview/` 配下の派生ビューに限られ、canonical(`intent-tree.md` を含む `.intent/*.md`)には一切書き込まない(read-only)。判断は自然言語ヒューリスティクスと既存成果物の読み取りに限り、AST・外部スキャナ・外部レンダラには依存しない(INV2)。
|
|
4
|
+
|
|
5
|
+
## 描画対象と純 Mermaid 原則(R3.1)
|
|
6
|
+
|
|
7
|
+
- 描画対象は `intent-tree.md` の `## L0:`〜`## L4:` 各見出し配下の項目。L0 を最上位(頂点)、L4(packet 候補=P)を最下位(末端)とする木構造を、自前で書き起こした純粋な Mermaid `graph` テキストとして出力する。
|
|
8
|
+
- 方向は上から下への階層が読みやすいため `graph TD`(Top-Down)を既定とする。
|
|
9
|
+
- 出力は ` ```mermaid ` ~ ` ``` ` のコードフェンスで囲んだ Mermaid 構文のみとする。外部プラグイン・カスタム記法・画像生成・テーマ拡張・外部レンダラを使わない(INV2=依存ゼロ。図の正しさはレンダラ実装に依存させず、テキスト併記で担保する)。
|
|
10
|
+
- エッジは**必ず「上位 L レベル → 下位 L レベル」の向き**(`L<n> --> L<n+1>`)で `-->` で結ぶ。逆向き(下位→上位)のエッジは引かない。`graph TD` のランク(縦位置)はエッジの向きで決まるため、向きを誤ると L4(P)が上に浮く・L1/L2 が下に潜るなどレイアウトが崩れる。**L0 が最上段・L4 が最下段になることを、エッジの向きで常に保証する**。
|
|
11
|
+
|
|
12
|
+
## ランク崩れの防止(孤立ノードを作らない)(R3.1)
|
|
13
|
+
|
|
14
|
+
`graph TD` では、入ってくるエッジを 1 本も持たないノード(孤立ノード)はランク付けの起点となり**最上段へ浮く**。その結果「L1/L2 が下で混在し P(L4)が上に来る」といった崩れが起きる。これを防ぐため、**L0 を除くすべてのノードは必ず 1 本以上の親エッジを持たせ、孤立させない**。
|
|
15
|
+
|
|
16
|
+
- **親が一意に読める項目**: 直近上位レベルの該当する親ノードから `親 --> 子` でつなぐ。
|
|
17
|
+
- **親が一意に読めない項目(推測で特定の親に接続しない)**: その項目を孤立させず、**直近上位レベル全体のアンカーへつなぐ**。具体的には、各レベル `L<n>`(n≥1)に対し、上位レベル `L<n-1>` の項目が複数あって親を一意に決められないときは、`L<n-1>` 配下の項目をまとめる**レベルアンカー・ノード** `L<n-1>_anchor`(ラベル例 `["L<n-1>(親候補複数)"]`)を 1 つ定義し、`L<n-1>` の各実ノードから `L<n-1>_anchor` へ、さらに `L<n-1>_anchor --> 子` でつなぐ。これにより親が曖昧な子も縦ランク上は正しく `L<n-1>` の下に置かれ、上へ浮かない。アンカーを使った(=親が一意でなかった)事実はテキスト階層側の注記で明示する(推測で特定の親に断定しない規律は保つ)。
|
|
18
|
+
- **上位レベルが空のために親を持てない項目**(例: L2 はあるが L1 が未記入): 当該項目を孤立させず、**存在する最も近い上位レベル**(この例では L0)へ直接つなぎ、間に未記入レベルがある旨をテキスト階層側に明示する。中間レベルが空でも下位レベルが上へ浮かないようにする。
|
|
19
|
+
- いずれの場合も**エッジの向きは常に上位→下位**で、L0 が最上段・L4(P)が最下段になる縦順序を保つ。
|
|
20
|
+
|
|
21
|
+
## ノード ID 規約(衝突回避)
|
|
22
|
+
|
|
23
|
+
ノード ID はレンダラが解釈する識別子であり、ラベル(表示文字列)と分離する。ID は機械的・安定に導出し、ラベル本文からは生成しない。
|
|
24
|
+
|
|
25
|
+
- **使用可能文字**: 半角英数字と下線 `_` のみ。先頭は英字とする。日本語・記号・空白を ID に含めない。
|
|
26
|
+
- **導出規則**: ID は `L<レベル番号>_<同レベル内 0 始まりの出現順インデックス>` で機械的に導出する。例: L0 の唯一項目は `L0_0`、L2 の 1 番目は `L2_0`、L2 の 2 番目は `L2_1`。
|
|
27
|
+
- **衝突回避**: 上記規則は (レベル, 同レベル内インデックス) が一意であるため ID も一意になる。ラベル文字列に依存しないので、同名・空・特殊文字を含む項目があっても ID は衝突しない。同じ項目が複数の親を持つ(共有される)場合も、ノードは初出 ID 1 つのみ定義し、以降はその ID を再利用してエッジだけを追加する(ノードを再定義しない)。
|
|
28
|
+
|
|
29
|
+
## ラベル規約(特殊文字エスケープ/除去)
|
|
30
|
+
|
|
31
|
+
ラベルは `ID["..."]` の角括弧+二重引用符記法で囲む。ラベル本文には Mermaid 構文を壊す文字を入れない。
|
|
32
|
+
|
|
33
|
+
- **禁止文字**: ラベル本文に `(` `)` `[` `]` `"` `/` を含めてはならない。これらは項目テキストから機械的に除去(その文字を削除して前後を詰める)する。除去によって意味が変わりうるため、除去を行ったノードがある場合はその旨を後述のテキスト階層側の注記で補う(テキスト階層は除去せず原文を保持する)。
|
|
34
|
+
- **改行・パイプ**: 改行はラベル内では半角スペース 1 個に畳む。`|`(パイプ)はラベルから除去する。
|
|
35
|
+
- **長さ**: 図の可読性のため、ラベルが概ね 40 文字を超える場合は先頭 40 文字に切り詰め末尾を `…` とする(切り詰めた場合もテキスト階層側は全文を保持する)。
|
|
36
|
+
- ラベル本文が空(項目が未記入)の項目は、ラベルを `["(未記入)"]` ではなく `["未記入"]`(禁止文字を含めない)とし、テキスト階層側で「未記入」として明示する(推測で埋めない)。
|
|
37
|
+
|
|
38
|
+
## テキスト階層を正本として常に併記(R3.2)
|
|
39
|
+
|
|
40
|
+
- Mermaid 図のすぐ後に、対応するテキスト階層(インデント付き箇条書き)を**常に**併記する。図が壊れて描画されない環境でも通読が止まらないようにするためで、テキスト階層こそが俯瞰ビューにおける読み取りの拠り所(このビュー内での正本)である。
|
|
41
|
+
- テキスト階層は `intent-tree.md` の原文を保持する。ラベルで行ったエスケープ・除去・切り詰めはテキスト階層側には適用せず、原文のまま記す(除去・切り詰めをラベルで行った場合は、対応するテキスト行に補足できる)。
|
|
42
|
+
- ビューには本ブロックが派生(derived)であり、`intent-tree.md` を正本として再生成可能であること(手編集せず再実行で更新されること)を明示する。
|
|
43
|
+
|
|
44
|
+
## intent-tree が空/未生成のとき(R3.3)
|
|
45
|
+
|
|
46
|
+
- `intent-tree.md` が存在しない、または `## L0:`〜`## L4:` のいずれにも項目が無い(全レベル未記入)場合は、**Mermaid 図を出力しない**。
|
|
47
|
+
- 図を省略した理由(「intent-tree が空/未生成のため可視化対象がない」)を明示し、先に実行すべきスキル(`/intent-discover`)を案内する。推測でノードを生成しない。
|
|
48
|
+
- 一部のレベルのみ未記入の場合は図を省略せず、未記入レベルを「未記入」ラベル+テキスト階層側の明示で表現する。
|
|
49
|
+
|
|
50
|
+
## 例(L0→L2 の小さなツリー)
|
|
51
|
+
|
|
52
|
+
`intent-tree.md` が次のように読み取れたとする(L0 に 1 項目、L1 に 1 項目、L2 に 2 項目、L2 の 2 番目に禁止文字 `(` `)` を含む):
|
|
53
|
+
|
|
54
|
+
- L0: 散在した意図を一度に通読できるようにする
|
|
55
|
+
- L1: 全体像を掴んだまま会話を続けられる
|
|
56
|
+
- L2: 意図ドキュメントの集約/L2: Mermaid 可視化(図と表)
|
|
57
|
+
|
|
58
|
+
このとき生成する Mermaid ブロック(L0 が頂点、各エッジは上位→下位。すべての L2 が L1 の下に接続され孤立しない):
|
|
59
|
+
|
|
60
|
+
```mermaid
|
|
61
|
+
graph TD
|
|
62
|
+
L0_0["散在した意図を一度に通読できるようにする"]
|
|
63
|
+
L1_0["全体像を掴んだまま会話を続けられる"]
|
|
64
|
+
L2_0["意図ドキュメントの集約"]
|
|
65
|
+
L2_1["Mermaid 可視化図と表"]
|
|
66
|
+
L0_0 --> L1_0
|
|
67
|
+
L1_0 --> L2_0
|
|
68
|
+
L1_0 --> L2_1
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
併記するテキスト階層(正本。原文を保持し、ラベルの除去は適用しない):
|
|
72
|
+
|
|
73
|
+
- L0: 散在した意図を一度に通読できるようにする
|
|
74
|
+
- L1: 全体像を掴んだまま会話を続けられる
|
|
75
|
+
- L2: 意図ドキュメントの集約
|
|
76
|
+
- L2: Mermaid 可視化(図と表) ← 図のラベルでは `()` を除去
|
|
77
|
+
|
|
78
|
+
> このブロックは派生(derived)です。正本は `intent-tree.md` であり、`/intent-overview` の再実行で再生成されます。手編集しないでください。
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# 進捗の多軸読み取りと関心別ビューの構成
|
|
2
|
+
|
|
3
|
+
`intent-overview` skill が、packet の進捗を単一%にせず3軸で映し、`depends_on` からブロック状態を read-only 導出し、関心ごとの派生ビューを構成するための正本。本ルールは**読み取り専用**であり、進捗軸も依存関係も**算出・採点・推論しない**。進捗・依存・証拠の正本は `intent-planner-packet-progress` が整えた packet(frontmatter + `## Evidence` 節)であり、overview はそれを**映すだけ**である。算出が必要な検査(依存健全性・validate 軸)は intent-validate / drift-watch / algo-intent-recovery の責務で、本ルールはその**結果を読みに行く**のみ。
|
|
4
|
+
|
|
5
|
+
## 大原則(read-only mirror)
|
|
6
|
+
|
|
7
|
+
- packet 正本(`active/*.md` の frontmatter 10 キー + 本文 `## Evidence` 節)が進捗・依存・証拠の**唯一の正本**。overview はそこから派生ビューを再生成するだけで、正本を変更せず・二重化しない。
|
|
8
|
+
- 進捗を**単一の総合%に圧縮しない**。性質の異なる3軸に分けて提示する。
|
|
9
|
+
- 各軸・各ビューは「既存成果物のどこを読んだか」を出所として明示する。AI の自己申告ではなく、ファイルの読み取りに基づくことを示す。
|
|
10
|
+
- 対応する成果物が無い軸・ビューは「未観測 / 未記入 / 依存なし」と明示し、**推測で埋めない**。
|
|
11
|
+
|
|
12
|
+
## 工程レール(read-only mirror)
|
|
13
|
+
|
|
14
|
+
進捗の3軸(質的分解)の**前**に、全 packet を1本の縦レールとして並べ、各 packet が「いまどの段に居るか」を一望させる。レールは3軸を圧縮した総合指標ではなく、3軸の**手前にある俯瞰**である(レールで全体の現在地を掴み、各 packet の内訳は3軸で読む、という補完関係)。レールも read-only mirror であり、状態を**算出・推論・採点しない**。既存成果物(packet frontmatter `state` / `superseded_by`・`export-log.md`・`deltas.md`)を読み、下表の5信号のどれに当たるかを**機械的に判定して映すだけ**である。
|
|
15
|
+
|
|
16
|
+
### 5信号と判定(すべて `.intent/` から機械観測可能)
|
|
17
|
+
|
|
18
|
+
各 packet を `state` × export-log の行有無 × deltas の対応エントリ有無で突合し、**上から評価して最初に当たった信号**を1つだけ付ける(first-match)。
|
|
19
|
+
|
|
20
|
+
| 信号 | 意味 | 判定条件 | 出所 |
|
|
21
|
+
|------|------|----------|------|
|
|
22
|
+
| ◻ 統合済 | 後継 packet に統合され役目を終えた | `superseded_by` が非空 | packet frontmatter |
|
|
23
|
+
| ✅ 反映済 | 実装が完了し intent へ書き戻し済み | `state: done` **かつ** deltas にこの packet の promoted/closed エントリあり | packet + deltas.md |
|
|
24
|
+
| 🔵 今ここ | いま手をつけている1工程(export 済み・未反映) | export-log に行あり・deltas に対応エントリ無し のうち、**現行 Source Packet(export-log 最新行)に一致**するもの | export-log 最新行 + deltas.md |
|
|
25
|
+
| 🔴 反映漏れ | 実装の証跡があるのに intent へ未反映(取り残し) | export-log に行あり・deltas に対応エントリ無し のうち、現行 Source Packet 以外 | export-log + deltas.md |
|
|
26
|
+
| ⚪ 未着手 | まだ cc-sdd へ export していない | export-log にこの packet の行が無い(active だが未 export) | export-log + packets/active |
|
|
27
|
+
|
|
28
|
+
- **🔵 と 🔴 はどちらも「export 済み・未反映」**。違いは「いま手をつけている1つ(最新行=🔵)」か「過去の取り残し(それ以外=🔴)」かだけである。これにより、進行中の1工程と、書き戻し漏れで埋もれた N 個を視覚的に分離する。🔴 は別の警告ブロックを新設せず、**レール上のズレ(実装は進んだのに反映が遅れている)として浮かせる**。これは下記「軸間のズレを潰さずそのまま提示する」の具体化であり、新しい検査の追加ではない。
|
|
29
|
+
|
|
30
|
+
### 各行に `[現在の工程 → 次に通る工程]` を併記する(パイプライン射影)
|
|
31
|
+
|
|
32
|
+
5信号は「**反映の進捗**(export 済みか・書き戻し済みか)」を映すが、それだけでは「**この packet がいま意図づくり〜実装〜書き戻しのどの工程に居て、この後どの工程が残っているか**」が読めない。そこで各 packet 行に、信号に続けて `[現在の工程 → 次に通る工程]` を**併記する**。これは新しい観測・算出ではなく、既に「進捗の3軸」軸2で読み取る packet frontmatter の `state`(宣言値)を、下記の**固定パイプライン上の位置として読み替えて映すだけ**である(推論・採点をしない read-only mirror の規律を保つ)。
|
|
33
|
+
|
|
34
|
+
- **固定パイプライン(工程の正順)**: `discover → compass → packets → export → 実装(cc-sdd) → verify → writeback`。これは intent-planner の標準フロー(status の決定表 `decision-table.md` 脚注5 のコマンド順)と同じ並びであり、ここを工程順序の参照とする。各コマンド工程と packet `state` の対応は次のとおり読む。
|
|
35
|
+
- `state: draft` = 起案中 → **次に通る工程: compass → packets**(意図と判断基準を詰める段)
|
|
36
|
+
- `state: ready` = 着手可(依存解決済み・実装待ち) → **次に通る工程: export → 実装**
|
|
37
|
+
- `state: implementing` = 実装中 → **次に通る工程: verify → writeback**
|
|
38
|
+
- `state: verifying` = 実装済み・検証待ち(Evidence 未確定) → **次に通る工程: writeback**(Evidence 確定後)
|
|
39
|
+
- `state: done` = 完了 → **次に通る工程: なし(このレーン完了)**
|
|
40
|
+
- **「現在の工程」は5信号と `state` の合成で書く**。例: 信号が 🔵 今ここ で `state: implementing` なら `🔵 今ここ [implementing → 次: verify→writeback]`、⚪ 未着手で `state: ready` なら `⚪ 未着手 [ready → 次: export→実装]`、⚪ 未着手で `state: draft` なら `⚪ 未着手 [draft → 次: compass→packets]`。これにより「P いくつをやっていて、この先どの工程が残るか」が1行で読める。
|
|
41
|
+
- **次工程はパイプライン定義からの射影であり推論しない**。`state` を**次に来る固定工程に対応づけて映すだけ**で、所要時間・難易度・成否を予測しない。`depends_on` に未 `done` の依存があってブロック中の packet は、次工程の前に `(依存 <packet_id> 待ちでブロック中)` と併記する(ブロック判定は「依存・ブロックビュー」の read-only 導出に従い、推論・算出しない)。
|
|
42
|
+
- **後方互換**: 旧3値 `state: active` は `implementing` 相当として `[active(=実装中) → 次: verify→writeback]` と読む。`state` 自体を観測できない packet は工程併記を断定せず `[工程: 未観測]` と明示する(推測で埋めない)。
|
|
43
|
+
- **deltas の対応付けは新しい突合規則を作らない**。「現行 Source Packet=export-log 最新行」「packet 名のテキスト照合」「対応 delta の有無の機械判定は初回サイクルのみ有効」という既存正本の規律(aggregate-sources / deltas.md 運用説明)をそのまま流用する。2巡目以降(再 export・再実装後)の反映要否は機械判定せず「ユーザー判断」と明示する。
|
|
44
|
+
- **残工程の一望**: ⚪ の行がそのまま「これから着手する残工程」を表し、各行の `[現在の工程 → 次に通る工程]` 併記によって「その packet がこの後どの工程を通るか」まで一望できる。レールは残工程と反映漏れを1枚で一望させることが目的であり、依存でブロック中の packet は下記「依存・ブロックビュー」の導出に従ってレール行に併記してよい(依存は推論・算出しない)。
|
|
45
|
+
- **後方互換**: 旧3値 `state: active` は「進行中」として扱い、export-log の行有無で 🔵/🔴/⚪ を判定する。`superseded_by` 不在は「統合なし」。deltas 不在は「未反映」。`state` 自体を観測できない packet は信号を断定せず「未観測」と明示する(推測で埋めない)。
|
|
46
|
+
- **derived の明示**: レールも派生(derived)・再生成可能であり正本ではない。正本は packet frontmatter・export-log・deltas であり、レールはその読み取り時点のスナップショットである。
|
|
47
|
+
|
|
48
|
+
## 進捗の3軸(単一%にしない)
|
|
49
|
+
|
|
50
|
+
進捗は次の3軸に分けて提示する。各軸は既存成果物の読み取りから**導く**(算出・採点はしない)。各軸には必ず出所(どの成果物のどこから導いたか)を併記する。
|
|
51
|
+
|
|
52
|
+
### 軸1: 意図の安定度
|
|
53
|
+
|
|
54
|
+
「上位の意図がどれだけ確定しているか」を定性的に映す軸。
|
|
55
|
+
|
|
56
|
+
- **出所**: `intent-tree.md`(L0–L4 の未記入箇所・`## Open Questions`・`## Assumptions`)、`intent-compass.md`(North Star / Anti-direction / Invariants / Decision Rules の未記入)。
|
|
57
|
+
- **読み方**: 未記入の L レベルや空の見出し、`## Open Questions` の残件数、`## Assumptions`(inferred=推測由来)が canonical な確定記述に占める比率を**定性的に**示す。比率を厳密な数値スコアにしない(read-only mirror の規律。定量採点は持たない)。
|
|
58
|
+
- inferred(`## Assumptions` / `## Open Questions` 由来)と canonical(L0–L4 の確定記述)を**混在させず**、安定度の評価でも区別を保つ。
|
|
59
|
+
- 素材(tree/compass)が無ければ「未観測」と明示する。
|
|
60
|
+
|
|
61
|
+
### 軸2: 実現の完了度
|
|
62
|
+
|
|
63
|
+
「どこまで作ったか(開発の現在地)」を映す軸。
|
|
64
|
+
|
|
65
|
+
- **出所**: packet frontmatter の `state`。
|
|
66
|
+
- **値域(5値)**: `draft | ready | implementing | verifying | done`。各値は相互排他で、packet はちょうど1つの段階を取る。
|
|
67
|
+
- `draft` = 起案中・未確定 / `ready` = 着手可(依存解決済み・実装待ち) / `implementing` = 実装中 / `verifying` = 実装済み・検証待ち(Evidence 未確定) / `done` = 証拠取得済み・完了。
|
|
68
|
+
- **後方互換**: 旧3値(`draft | active | done`)が残る packet は、`active` を「進行中(`implementing` 相当)」として読む。`state` キー自体を観測できない既存 packet は「実現の完了度: 未観測」とし、推測で埋めない。
|
|
69
|
+
- `state` は**宣言的記録**であり、overview は遷移を判定・進行させない(状態機械を持たない)。読み取った値をそのまま映す。
|
|
70
|
+
|
|
71
|
+
### 軸3: 証拠の確定度
|
|
72
|
+
|
|
73
|
+
「実装結果がどれだけ検証で裏づけられているか」を映す軸。
|
|
74
|
+
|
|
75
|
+
- **出所**: packet 本文 `## Evidence` 節の有無と確定度、`intent-validate` の検査軸(`validate-checks.md` の安定 kebab-case ID)、`drift-log.md`(drift-watch が `on` で存在する場合)との突き合わせ。
|
|
76
|
+
- **読み方**: `## Evidence` に確定した検証結果(実施日・対応する検査軸 ID・出所=intent-validate / drift-watch / 人確認)があるかを読む。Evidence の各エントリが参照する検査軸 ID を、`validate-checks.md` の ID 体系に紐づけて整理する。
|
|
77
|
+
- **検査軸の読み取り**: intent-validate は結果を永続ファイルに書かないため、`validate-checks.md` の**検査軸 ID カタログ**(安定 kebab-case ID と重要度分類)を読み、証拠の観点をその ID 体系で整理する。検査ロジックは**再実装しない**。
|
|
78
|
+
- **後方互換**: `## Evidence` 節が無い既存 packet は「証拠の確定度: 未記入」として描き、欠落を推測で補完しない。
|
|
79
|
+
- validate 未実行・Evidence 不在・drift-log 不在で証拠が読めない場合は「未観測」と明示する。
|
|
80
|
+
|
|
81
|
+
## 軸間のズレを潰さずそのまま提示する
|
|
82
|
+
|
|
83
|
+
3軸は性質が異なるため、軸ごとの値がズレることがある。**そのズレを単一指標に押し潰さず、ズレとして明示**する。出所を併記してどの成果物の差から生じたズレかを辿れるようにする。
|
|
84
|
+
|
|
85
|
+
- 例: 「`verifying` だが Evidence 未確定」— 実現の完了度(軸2)は進んでいるが証拠の確定度(軸3)が未確定。
|
|
86
|
+
- 例: 「`done` だが上位 invariant との trace に穴」— 証拠の確定度(軸3)は揃ったが意図の安定度(軸1)との間にギャップ。
|
|
87
|
+
|
|
88
|
+
`verifying` 段階は仕様上「実現は進んだが証拠は未確定」を表す状態である。したがって overview は `verifying` の packet について、実現の完了度(軸2)と証拠の確定度(軸3)の差を**そのまま映す**(一方を他方に合わせて丸めない)。
|
|
89
|
+
|
|
90
|
+
## 依存・ブロックビュー(read-only 導出)
|
|
91
|
+
|
|
92
|
+
packet 間の依存とブロック状態を、宣言の**読み取りのみ**で提示する。
|
|
93
|
+
|
|
94
|
+
- **出所**: packet frontmatter の `depends_on`(依存先 packet の `packet_id` の集合。既定 `[]`)。
|
|
95
|
+
- **ブロックの導出(read-only)**: 「`depends_on` の中に `state` が `done` でない packet がある」= その packet は**ブロック中**として表示する。依存は**推論・算出しない**。宣言された `depends_on` を読むだけで導出し、packet に書き戻さない(packet-progress R3.3 / R3.5 と整合)。
|
|
96
|
+
- **循環・未解決依存の明示**: 循環(A→…→A)や、存在しない `packet_id` を参照する壊れた依存があれば明示する。
|
|
97
|
+
- intent-validate の `dependency-cycle` / `dependency-broken-ref` の検査結果が参照可能なら、それに紐づけて提示する(検査ロジックは再実装しない)。
|
|
98
|
+
- 検査結果が無い場合に限り、読み取り時点の素朴な検出(宣言された `depends_on` 集合の単純な追跡)を**注記レベル**で併記してよい。これは検査の代替ではなく読み取り時の補助である旨を明示する。
|
|
99
|
+
- **後方互換**: `depends_on` キーが無い既存 packet は「依存なし(空集合と等価)」として描き、依存を推測で補完しない。
|
|
100
|
+
|
|
101
|
+
## 関心別の派生ビュー(view-based 提示)
|
|
102
|
+
|
|
103
|
+
全体像を1枚の長文に混ぜず、関心ごとの派生ビューに整理する。最低限、次の3ビューを構成する。
|
|
104
|
+
|
|
105
|
+
- **意図ビュー**: aggregate-sources(tree / compass / packets / plan / export-log / deltas の集約)由来。canonical と inferred を区別したまま提示する。
|
|
106
|
+
- **依存・ブロックビュー**: 上記「依存・ブロックビュー」。`depends_on` とそれに基づくブロック状態、循環・未解決依存。
|
|
107
|
+
- **進捗ビュー**: 上記「進捗の3軸」。3軸と軸間のズレ。
|
|
108
|
+
|
|
109
|
+
各ビューについて次を守る。
|
|
110
|
+
|
|
111
|
+
- **単一正本から再生成**: 各ビューは canonical な `.intent/*.md` から再生成し、ビュー間で正本を二重化しない。同じ情報を複数ビューに重複保持しない(各ビューは正本への射影)。
|
|
112
|
+
- **素材不在のビューは省略**: 派生の素材となる成果物が無ければ当該ビューを**省略し、その理由(未観測 / 未生成 / 依存なし)を明示**する。空のビューを推測で埋めない。
|
|
113
|
+
- **derived の明示**: 各ビューに「これは派生(derived)・再生成可能であり正本ではない」ことを明示する。正本は元の `.intent/*.md` であり、ビューは読み取り時点のスナップショットである。
|
|
114
|
+
|
|
115
|
+
## 後方互換のまとめ
|
|
116
|
+
|
|
117
|
+
- `depends_on` 不在 → 依存・ブロックビューは「依存なし」として描く(欠落を推測で埋めない)。
|
|
118
|
+
- `## Evidence` 不在 → 証拠の確定度(軸3)は「未記入」として描く(欠落を推測で埋めない)。
|
|
119
|
+
- 旧3値 `state`(`active`)→ `implementing` 相当の「進行中」として読む。`state` 自体を観測できない packet は実現の完了度を「未観測」とする。
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: intent-packets
|
|
3
|
+
description: Intent Tree と Intent Compass から、cc-sdd に渡す前の Packet Plan を作る。各 packet は parent intent を持ち、behavior-preserving / testable / rollbackable。実装はしない。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# intent-packets Skill
|
|
7
|
+
|
|
8
|
+
## Core Mission
|
|
9
|
+
- **Success Criteria**:
|
|
10
|
+
- 改修見込みの規模に応じた数の packet 候補があり(数合わせをしない・小規模なら 1 個でよい・1〜7 を緩い目安とする)、各 packet が parent intent を参照している
|
|
11
|
+
- 各 packet が `.intent/packets/active/` 配下の個別ファイル(1 packet = 1 ファイル)として起案されている
|
|
12
|
+
- 各 packet が Scope / Non-scope / Expected Behavior / Decisions / Safety(Invariants) / Validation / Evidence / Rollback / cc-sdd Mapping を持つ(`Evidence` は結果が無ければ空節で保持)
|
|
13
|
+
- 各 packet の `## Decisions` 節で、`decision-slots.md` の共通コアスロット(+ mode 別差分)が4ステータス(回答済み / 未定 / 非該当 / ADR候補)のいずれかで閉じている(既定値を埋めない・黙って飛ばさない)
|
|
14
|
+
- 各 packet が behavior-preserving / testable / rollbackable な粒度である
|
|
15
|
+
- 既存の packet ファイルを破壊していない(差分更新案として提示している)
|
|
16
|
+
- アプリケーションコードを一切変更していない
|
|
17
|
+
|
|
18
|
+
## Execution Steps
|
|
19
|
+
|
|
20
|
+
### Step 1: 前提を読む
|
|
21
|
+
- `.intent/intent-tree.md` と `.intent/intent-compass.md` を読む。どちらか無ければ「先に該当コマンドを実行」を案内して停止する。
|
|
22
|
+
- 読み取り時、compass / intent-tree の確定文体に紛れた未確定動詞(想定 / 流用 / 予定 / TBD / 暫定 等)を見たら、推測で確定させず Open Questions または未定スロット(理由・再訪条件(Revisit when)併記)への変換案として提示する。確定値への昇格は利用者の確認に委ねる。既に Open Questions / Deferred / 未定スロットへ記録済みの箇所は重複変換しない。
|
|
23
|
+
- `.intent/mode.local.md`(無ければ旧 `.intent/mode.md`)の mode 状態を読む。無ければ standard を既定とし Open Questions に告知する(停止しない)。
|
|
24
|
+
- `.intent/packets/index.md` と、既存の `.intent/packets/active/` 配下の packet ファイルを読む(差分更新の基礎にする)。
|
|
25
|
+
- 旧 install 対応: `.intent/packets/`・`plan.md`・`index.md`・`README.md` が不在なら、skill が自ら作成してから処理を行う(scaffold の再インストールを待たない)。
|
|
26
|
+
- 事後起草の判別(実装が先行していた場合): 起動の文脈や利用者の申告から「**対応する Packet が無いまま実装が進んだ/完了した**」ことが分かる場合は、これを通常の起草と同じ手順で扱う(事後でも Packet を起こす。実装済みであることは起草を省く理由にしない)。このとき:
|
|
27
|
+
- 確定している事実(既に実装された結線・挙動)は `what + constraints + oracle` として packet ファイルに記録する。
|
|
28
|
+
- **まだ固定できない仕様**(起動契機・閾値・判定手段など、実装に踏み切れていない/暫定で置いている決定)は、推測で埋めず Open Questions と Deferred(`未定(遅延中・再訪条件付き)`、再訪条件を必ず併記)として**明示的に器に入れる**。「仕様が固定できないから Packet を作らない」は誤り — 未確定をそのまま保持できることが Packet の役割。
|
|
29
|
+
- 起草の順序を案内する: **まず本スキルで Packet を起こし(起草フェーズ)、そのあと `/intent-writeback` で実装の現実から得た学びを delta 経由で canonical へ戻す(実装後フェーズ)**。この2つは方向が逆であり、Packet 起草を飛ばして writeback だけを行わない(フェーズ境界は writeback-protocol.md §3 を正とする)。
|
|
30
|
+
|
|
31
|
+
### Step 2: モード定義のアルゴリズムを適用する
|
|
32
|
+
- `.intent/mode.local.md`(無ければ `.intent/mode.md`)の `definition` が指すモード定義を開き、Packet 分解フェーズに割り当てられた algo rule(`rules/algo-*.md`)を読み、適用する(standard なら `rules/algo-example-mapping.md`、refactor なら `rules/algo-migration-slicing.md`、behavior-unknown なら `rules/algo-example-mapping.md` + `rules/algo-characterization-test.md`)。例は網羅ではない。常にモード定義の表を正とする。
|
|
33
|
+
|
|
34
|
+
### Step 3: Packet を分解する
|
|
35
|
+
- Example Mapping に従い、各 L2/L3 能力を「ルール・例・疑問・切り出し」に展開する。
|
|
36
|
+
- 例から Expected Behavior、Validation、Rollback を導く。
|
|
37
|
+
- 改修見込みの大きさに応じた数の packet にまとめる(数を目標に数合わせをしない・小規模なら 1 個でよい・1〜7 を緩い目安とする)。大きさは「触れる concern の数 × 既存境界への波及の広さ」で質的に測り、工数見積もり等の数値は持ち込まない。各 packet に parent intent(L0/L1/L2/L3 への参照)を必ず持たせる。
|
|
38
|
+
- 各 packet を `.intent/packets/active/<packet_id>.md` の個別ファイルとして起案する。ID 付与・frontmatter キーの記入・本文セクション構成(`## Decisions` 節・`## Evidence` 節を含む)は `rules/packet-format.md` を読み、従う(キー一覧・値域は正本が単一の真実源)。
|
|
39
|
+
- `updated_at` の打刻(書き手の責務): packet ファイルを書き込んだら、その更新時点を frontmatter の `updated_at`(ISO 8601)に記録する。新規作成時は `created_at` と同一時点を `updated_at` に記入し、既存 packet の内容を変更したときはその時点を `updated_at` に更新する。内容変更を伴わない再実行では `updated_at` を変えない(冪等。無変更で打刻しない)。日時は `created_at` と同じくシェルの `date` で取得する。日時を取得できない場合は推測の日付を書かず、その旨を報告する。打刻は書き手(本スキル)の責務であり、read-only の検証層(intent-validate)には持たせない。
|
|
40
|
+
- `rules/decision-slots.md` を読み、completeness schema のスロットを各 packet の `## Decisions` 節へ播く(スロット定義・値域・ID の正本は decision-slots.md。本節はその投影)。
|
|
41
|
+
- 共通コアスロット(全モードで播く8 ID)を全 packet に播き、`.intent/mode.local.md`(無ければ `.intent/mode.md`)の mode に応じた差分スロットを加算する(standard / refactor / behavior-unknown / feature-growth)。スロット定義は decision-slots.md の表が正であり、SKILL 本体にハードコードしない。
|
|
42
|
+
- 各スロットを4ステータス(回答済み / 未定 / 非該当 / ADR候補へ送る)のいずれかで**必ず閉じる**(「黙って飛ばす」を構造的に防ぐ)。「妥当な既定値」「推奨値」を埋めない(anchoring 回避)。スロットの該当性・値を成果物から推論・自動充填しない(人が宣言する)。
|
|
43
|
+
- discover が tree L3 直下に「決定が要る点(④)」として記録した posture を反映する(具体値が無くても、当該スロットの存在は閉じ対象にする)。
|
|
44
|
+
- 既存成果物が既にカバーするスロットは作り直さず、その閉じ先を参照する(例: `decision-fit-criterion` は `## Validation`、`decision-exception-flow` は `## Expected Behavior`、`decision-characterization` は `algo-characterization-test.md`)。`## Decisions` には値を二重に書かず「既存節で閉じている」旨を宣言する(重複定義しない)。
|
|
45
|
+
- `未定` のスロットは理由・downstream への注意書き・再訪条件(Revisit when)を併記する。`非該当` のスロットは該当しない根拠を併記し、黙って落とさない。
|
|
46
|
+
- 投与量の仕分け(前倒し / 遅延): 各決定を「人間が前倒しで固定する(visible rule)」か「エージェントに委譲して遅延する(hidden / discretion)」かに仕分ける。
|
|
47
|
+
- 前倒し5基準(不可逆・後からの変更が高コスト/複数モジュール・外部利用者へ波及(外部影響)/曖昧だと受入テスト・観測が弱くなる(受入オラクル)/セキュリティ・法規制の床/複数 packet を拘束する)のいずれかに該当する決定は**前倒しで固定**する。2つ以上を満たす architecture-significant な決定は ADR 候補として compass の Decision Rules へ送る。
|
|
48
|
+
- 設計規則の内側に局所化でき、可逆(cheap-to-reverse)で探索可能な決定は `未定(遅延中・再訪条件付き)` として保持し、エージェントの裁量ゾーンに委ねてよい(放置しない。再訪条件を必ず併記する)。
|
|
49
|
+
- 前倒しの対象は「決定そのものの早期確定」に限らず、**学習・リスク発見・テストオラクル形成の前倒し**を優先する(結論の早期固定を強制しない)。
|
|
50
|
+
- `state` は `packet-format.md` の5値域から宣言的に記入する。進行段階の確定(特に `verifying`/`done`)は AI の自己申告のみで行わず、人または検査ゲート(intent-validate / drift-watch の結果)に基づく。`state=done` は `## Evidence` 節に確定済みの検証結果があることを前提とする。
|
|
51
|
+
- `depends_on` には依存先 packet の `packet_id` を宣言的に記入する(既定 `[]`・空でもキーを省略しない)。ツールは依存を推論・算出しない。
|
|
52
|
+
- `## Evidence` 節には、検証した結果・実施日・検査軸 ID(`validate-checks.md` の kebab-case ID)・出所(intent-validate / drift-watch / 人確認)を記入する。Evidence は AI の自己申告ではなく検査結果または人確認に基づき、出所を辿れる形で記録する。結果が無ければ空節で保持し推測で埋めない。
|
|
53
|
+
- 既存 packet の `state: active` は `implementing` への移行案として、`depends_on`/`## Evidence` の欠落は遅延補完案(`depends_on: []` の差分追記)として、既存の差分更新案の規律に乗せて提示する(一括移行を強制せず・移動のみ・削除しない)。
|
|
54
|
+
- 既存の packet ファイルがあれば読み、上書きではなく破壊せず差分更新案として提示する。
|
|
55
|
+
- Compass の**プロジェクト普遍**の invariant を各 packet の Safety に反映し、packet 固有の invariant は packet ファイルの Safety / Invariants に直接起案する(compass には書かない)。
|
|
56
|
+
- `.intent/intent-compass.md` の `## Open Questions` に「packet 固有制約(候補)」として保留された制約を読む。各候補について、当該 packet の作業範囲(Scope/Non-scope)に合致するものを利用者に自然言語で確認し、回答を得たうえで、その packet ファイルの Safety / Invariants へ転記し、転記済みのエントリを compass の `## Open Questions` から除く(保留の二重管理を残さない)。どの packet にも合致しない候補は compass の `## Open Questions` に保留したまま残す。
|
|
57
|
+
|
|
58
|
+
### Step 4: 終端判定・優先順位・分割を提示する
|
|
59
|
+
- 分解の終端判定(複合停止条件): 各 packet が次の6条件をすべて満たした時点で、それ以上の分割を止める。①一 packet が一つの主要 concern に対応する ②受入基準が観測可能な入力・条件・期待結果に落ちている ③解法空間の境界(固定 / 裁量 / 禁止)が明示されている ④cheap-to-reverse(後戻りが安い) ⑤トレース先が明確(parent intent / spec_refs を辿れる) ⑥単体完結: packet 単体の done が、利用者/呼び出し側から見て中途半端でない一貫した挙動の区切りになっている(half-done な振る舞いの done を作らない)。⑥は④とは別の独立条件である — ④は「作る側のロールバック安全性(中間状態が戻せる)」、⑥は「呼び出し側から見た完了形の意味的一貫性」で観測の主体が違う(④へ吸収しない)。満たすまでは粗い、満たした後の細分化は過剰。
|
|
60
|
+
- 検証可能性の床は discriminative testability とする: 単に「テストが書ける(testability)」では足りず、「誤った実装を落とせるオラクルがある」ことを満たす。落とせるオラクルが見当たらない packet は受入基準が未成熟と判定し、Validation / Expected Behavior を観測可能な形へ詰め直す。
|
|
61
|
+
- 受入基準が複数の concern または複数の品質属性トレードオフをまたぐ packet は「まだ粗い」と判定し、concern 単位への分割を提案する(一 packet 一 concern へ寄せる)。
|
|
62
|
+
- 作業単位を実装手順(how の完全指定)まで細分化しない。`what + constraints + oracle`(何を / 境界制約 / 誤実装を落とすオラクル)の指定に留め、規則の内側はエージェントの裁量に委ねる。
|
|
63
|
+
- 既存の粒度規律(behavior-preserving / testable / rollbackable・数は規模に応じて可変で 1〜7 を緩い目安・数合わせをしない)を維持し、「一 packet = 一 concern」と⑥単体完結を終端判定に明示的に用いる。
|
|
64
|
+
- packet の優先順位を示す。
|
|
65
|
+
- `rules/walking-skeleton.md` を読み、rule の適用条件に従って適用する。
|
|
66
|
+
- `rules/first-packet.md` を読み、適用する。
|
|
67
|
+
- 大きすぎる packet には分割案を提示する。
|
|
68
|
+
- 利用者確認を得た packet の `state` を draft から `ready`(着手可・依存解決済み)へ宣言的に更新し、`index.md` を再生成する(値域・再生成手順は `rules/packet-format.md` 参照)。実装中/検証待ち/完了への進行(`implementing`/`verifying`/`done`)は人または検査ゲートに基づく後続の宣言で行う。
|
|
69
|
+
- supersede: 計画見直しで既存 packet を後続 packet で置き換える場合、後続 packet の起案と同時に旧 packet へ `superseded_by` を記入し、`archive/<年>/` へ移動して index を再生成する。
|
|
70
|
+
- **in-flight ガード**: 置換対象が export 済み(`.intent/export-log.md` に行あり)かつ終端状態(promoted / closed)の delta が無い場合、実装進行中の可能性を警告し、利用者確認なしに移動しない。
|
|
71
|
+
- export 済み packet の改名要求は、改名ではなく supersede として扱う(`rules/packet-format.md` の name 可変性規則)。
|
|
72
|
+
- 実装変更はしない。
|
|
73
|
+
|
|
74
|
+
## Output Description
|
|
75
|
+
|
|
76
|
+
**読み手**: 作業単位を切り出して実装フローへ渡す人間開発者。
|
|
77
|
+
**この出力で最初に掴ませること**: 「**最初に着手すべき packet はこれ(=次に export すべき packet)。次の一手は案件種別に応じた出口**」。packet 一覧・優先順位・分割案はその根拠となる詳細。
|
|
78
|
+
|
|
79
|
+
出力は結論(着手 packet と次のコマンド)を先頭に立てる。
|
|
80
|
+
|
|
81
|
+
- **最初に着手すべき packet(先頭・理由付き)**: 推薦 packet = 次に export すべき packet(同一)。なぜそれを先頭にするかの理由を添える。
|
|
82
|
+
- **次の一手(1行・案件種別で分岐)**: `rules/export-route.md`(出口判定レーン)を read-only で適用し、案件種別から出口を選んで提示する。cc-sdd を無条件で推さない(決め打ち禁止):
|
|
83
|
+
- target format(`.intent/mode.local.md` の `format` 行)が有効値で明示されていれば、その出口を推薦する: `cc-sdd` → `/intent-export-cc-sdd` / `openspec` → `/intent-export-openspec` / `to-spec` → `/intent-to-spec`。
|
|
84
|
+
- `format` 未指定(不在/プレースホルダ/値域外)なら、mode(non-code / standard 系)と前提(`.kiro/` の有無)から推論して候補筆頭を提示する(non-code+`.kiro/`不在 → `/intent-to-spec` / standard+`.kiro/`存在 → `/intent-export-cc-sdd`)。
|
|
85
|
+
- 一意に決まらないときは単一の出口に畳まず候補を列挙する(出口は利用者の意図次第・判定の詳細は `rules/export-route.md` が正)。
|
|
86
|
+
- **詳細**: `.intent/packets/active/` 配下の packet ファイル群(新規起案・既存への差分更新案。規模に応じた数の packet・1〜7 が緩い目安、各 parent intent 付き)、`.intent/packets/plan.md` と `.intent/packets/index.md` の更新、packet の優先順位、大きすぎる packet の分割案。
|
|
87
|
+
|
|
88
|
+
## Safety & Fallback
|
|
89
|
+
- Intent Tree / Compass が無ければ停止して該当コマンドを案内する。
|
|
90
|
+
- mode.md 不在は停止せず standard 既定で続行し告知する。
|
|
91
|
+
- packet を実装タスクに落としすぎない(Issue より上位、spec より手前)。
|
|
92
|
+
- packet ファイルは削除しない(移動のみ)。
|
|
93
|
+
- シェルコマンドの用途は、日時取得・`.intent/packets/` 配下のディレクトリ作成(mkdir)と移動に限る(アプリケーションコードを変更しない invariant は維持)。
|
|
94
|
+
- アプリケーションコードは変更しない。
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# Algorithm: Additive Slicing
|
|
2
|
+
|
|
3
|
+
新機能を、既存の振る舞いに影響を与えない順序で付加していく「付加スライス」へ分解する技法。`feature-growth` モードの Packet 分解フェーズで Example Mapping と併用する。接合面(seam)の確立 → 新機能の付加的な積み上げ → 既存への結線、の3段でスライスを構成し、各スライスが既存挙動を保ったまま独立にデリバリーできる道筋を導く。Migration Slicing が drift リスト(直すべきズレ)を入力に取るのに対し、Additive Slicing は影響リストと新機能の intent を入力に取る — 入力が違うため、両者は置き換え可能ではない。
|
|
4
|
+
|
|
5
|
+
## 手順
|
|
6
|
+
|
|
7
|
+
入力=新機能の intent(GORE-lite で階層化され Example Mapping で具体化済み)と、discover の Impact Analysis が出した影響リスト(各項目=触れる境界 / 依存する既存契約 / 影響の種類)。薄い影響リストはスライスを推測にする — 接合点を設計できる厚みが無ければ discover へ戻る。
|
|
8
|
+
|
|
9
|
+
1. **接合面(seam)を確立するスライスを切る**
|
|
10
|
+
- 影響リストの「拡張する / 変更が必要」項目から、新機能が既存と接する接合点を特定し、**既存への最小変更で接合点を作る behavior-preserving なスライス**を最初に置く。
|
|
11
|
+
- 確立された戦術を参照する: **Branch by Abstraction**(Fowler / Hammant)のインターフェース挿入、**Parallel Change (expand-contract)**(Danilo Sato)の expand 段、**seam 概念**(Feathers, Working Effectively with Legacy Code)。いずれも「既存の振る舞いを変えずに、新実装を差し込める点を作る」ための手筋。
|
|
12
|
+
- seam 確立スライスの完了時点で、既存の観測可能な振る舞いが変わっていないこと。
|
|
13
|
+
|
|
14
|
+
2. **新機能を付加的に積む**
|
|
15
|
+
- seam の先に、**既存コードに触れない新規コードのみのスライス群**として新機能を積む。この段のスライスは結線前で既存から到達されないため、既存挙動への影響をゼロに保ったまま積める。
|
|
16
|
+
- Example Mapping で具体化した例が、各スライスの Expected Behavior に流れる。
|
|
17
|
+
|
|
18
|
+
3. **結線して有効化する**
|
|
19
|
+
- 最後に、**seam 経由で新機能を有効化する結線スライス**を置く。結線は単体で無効化に戻せること(その具体化が各 packet の Toggle Plan)。
|
|
20
|
+
|
|
21
|
+
4. **SPIDR で候補を探索・分割する**
|
|
22
|
+
- スライス候補の探索と、大きすぎるスライスの分割には、**SPIDR**(Mike Cohn: Spike / Paths / Interfaces / Data / Rules の5切り口)を補助ヒューリスティクスとして使う。
|
|
23
|
+
- 段との相性の目安: seam 段=Interfaces、付加段=Paths / Rules、結線段=Data / Rules。
|
|
24
|
+
|
|
25
|
+
5. **各スライスに検証点・rollback・toggle plan を付ける**
|
|
26
|
+
- 既存挙動の回帰検証点を付け、behavior-preserving が観測可能であること → **Validation**。
|
|
27
|
+
- 失敗時にどう戻すか(スライス単位で巻き戻せること)→ **Rollback**。
|
|
28
|
+
- どの範囲が off-by-default か / toggle の削除条件はいつか → **Toggle Plan**。
|
|
29
|
+
|
|
30
|
+
6. **影響リストの終端を確認する**
|
|
31
|
+
- 影響リストの各項目が「いずれかのスライスの Safety / Invariants で保護される」か「Open Questions へ送られる」かのいずれかに終端していることを確認する。どちらにもなっていない項目を残さない。
|
|
32
|
+
|
|
33
|
+
## packet の組み立て
|
|
34
|
+
|
|
35
|
+
3段の順序付き付加スライス群を packet にまとめる。各 packet は次を満たす。
|
|
36
|
+
|
|
37
|
+
- **Parent Intent**: 対応する L1/L2/L3 への参照(必須)。影響リスト項目の保護なら元の項目も示す。
|
|
38
|
+
- **Scope / Non-scope**: そのスライスが含む付加 / 含まない付加。
|
|
39
|
+
- **Expected Behavior**: Example Mapping の「例」由来。seam・結線スライスでは「保たれる既存の振る舞い」も併記する。
|
|
40
|
+
- **Safety / Invariants**: 移行中も崩してはならない不変条件。影響リストのどの項目を保護するかを明示する(compass の Invariants 由来)。
|
|
41
|
+
- **Validation / Rollback**: 上記由来。
|
|
42
|
+
- **Toggle Plan**: どの範囲が off-by-default か / toggle の削除条件はいつか(Hodgson の Release Toggles)。toggle の実装難易度の見積もりは計画の範囲外 — 存在と寿命の計画までを書く。
|
|
43
|
+
- **cc-sdd Mapping**: cc-sdd へどう渡すかの方針。
|
|
44
|
+
|
|
45
|
+
## 規律
|
|
46
|
+
|
|
47
|
+
- 各スライスは **behavior-preserving / testable / rollbackable** であること。
|
|
48
|
+
- **影響リストのトレーサビリティ**: 入力の影響リストにある各項目は、いずれかのスライスの Safety / Invariants で保護されるか、Open Questions へ送られるか、必ずいずれかに終端させる。項目を黙って落とさない。
|
|
49
|
+
- **段の順序を守る**: seam 確立 → 付加 → 結線。seam を作らずに既存モジュールへ直埋めしない。
|
|
50
|
+
- 数は改修見込みの大きさに応じて可変とし、数合わせをしない(小規模なら 1 個でよい・1〜7 を緩い目安とする)。大きすぎるスライスは SPIDR の切り口で分割案を提示する。
|
|
51
|
+
- これは Intent の詰め方(packet 分解の技法)であって、付加の実行コードではない。コードを変更しない。
|
|
52
|
+
|
|
53
|
+
## 出力
|
|
54
|
+
|
|
55
|
+
順序付き付加スライス群(seam 確立 → 付加 → 結線)。各スライスは上記構造を持ち、Scope / Validation / Rollback / Toggle Plan が各 packet に流れる。packet ファイル(`active/` 配下)を更新(案として提示)する。
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Algorithm: Characterization Test
|
|
2
|
+
|
|
3
|
+
未知のレガシーの「観測可能な振る舞い」を、現状のまま固定するテスト観点として捉える技法。`behavior-unknown` モードの Packet 分解フェーズで Example Mapping と併用する。**振る舞いが不明な対象では本技法を先に走らせ**、観測した事実を Example Mapping へ渡す(知らない挙動の「例」は書けないため、観測が先)。意図を構造化する前に「今どう動いているか」を安全網として固定し、packet の Expected Behavior と Validation を観測事実から導く。
|
|
4
|
+
|
|
5
|
+
## 手順
|
|
6
|
+
|
|
7
|
+
入力=振る舞いが不明な対象(レガシーコード・既存挙動)。Example Mapping の出力には依存しない(むしろ本技法の観測が Example Mapping の入力になる)。
|
|
8
|
+
|
|
9
|
+
1. **現状の振る舞いを観測し、判断せず固定する**
|
|
10
|
+
- 対象の現状の入出力・副作用を観測し、「正しいか」を判断せずそのまま characterization test(現状の挙動をそのまま固定するテスト)の観点として書き留める。
|
|
11
|
+
- これはテスト観点の計画であって、実際のテストコード実装ではない。
|
|
12
|
+
|
|
13
|
+
2. **固定した振る舞いを意図的/偶発に仕分け、Example Mapping へ渡す**
|
|
14
|
+
- 固定した各振る舞いについて、どれが意図的でどれが偶発かを仕分ける。意図的な観測事実は後続の Example Mapping で「ルール・例」へ整理する素材になる。
|
|
15
|
+
- 偶発(意図と切り離せない副作用・依存)は **Open Questions** へ送り、推測で意図に昇格させない。
|
|
16
|
+
|
|
17
|
+
3. **characterization test を Validation の起点にする**
|
|
18
|
+
- 仕分けた振る舞い観点を各 packet の **Validation** の起点とし、リファクタ時の回帰検知に使えるようにする。
|
|
19
|
+
- 失敗時にどう戻すか → **Rollback**。
|
|
20
|
+
|
|
21
|
+
## packet の組み立て
|
|
22
|
+
|
|
23
|
+
固定した振る舞い観点群を packet にまとめる。各 packet は次を満たす。
|
|
24
|
+
|
|
25
|
+
- **Parent Intent**: 対応する L1/L2/L3 への参照(必須)。観測由来なら元の振る舞いも示す。
|
|
26
|
+
- **Scope / Non-scope**: 含む振る舞い / 含まない振る舞い。
|
|
27
|
+
- **Expected Behavior**: 上記で固定した現状の観測振る舞い由来。
|
|
28
|
+
- **Safety / Invariants**: 固定した振る舞いのうち崩してはならない不変条件。
|
|
29
|
+
- **Validation / Rollback**: 上記由来。
|
|
30
|
+
- **cc-sdd Mapping**: cc-sdd へどう渡すかの方針。
|
|
31
|
+
|
|
32
|
+
## 規律
|
|
33
|
+
|
|
34
|
+
- **観測であって判断ではない**: 現状の振る舞いはそのまま事実として固定し、正しさの判断や原因論には踏み込まない。
|
|
35
|
+
- 意図的か偶発かが判断できないものは推測で埋めず **Open Questions** へ送る。
|
|
36
|
+
- これは Intent の詰め方(振る舞いを観測して詰める技法)であって、実際のテストコード実装ではない。コードを変更しない。
|
|
37
|
+
|
|
38
|
+
## 出力
|
|
39
|
+
|
|
40
|
+
現状振る舞いを固定したテスト観点群(意図的/偶発の仕分け付き)。各観点の Expected Behavior / Validation が各 packet に流れる。packet ファイル(`active/` 配下)を更新(案として提示)する。
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Algorithm: Example Mapping
|
|
2
|
+
|
|
3
|
+
抽象的な能力を、観測可能な具体例に落とす技法。`standard` / `behavior-unknown` モードの Packet 分解フェーズで使う。能力を「ルール・例・疑問・切り出し」に展開し、packet の Expected Behavior と Validation を導く。behavior-unknown モードでは、先行する Characterization Test が固定した観測事実を「例」の入力に取る(観測が先・整理が後)。
|
|
4
|
+
|
|
5
|
+
## 手順
|
|
6
|
+
|
|
7
|
+
各 L2/L3 能力について、4色のカードを書く要領で展開する。
|
|
8
|
+
|
|
9
|
+
1. **ルール(その能力が従う規則)**
|
|
10
|
+
- 能力が満たすべき規則・制約を箇条書きにする。
|
|
11
|
+
|
|
12
|
+
2. **例(観測可能な具体シナリオ)**
|
|
13
|
+
- 各ルールについて「こうなったら、こう振る舞う」という具体例を挙げる。
|
|
14
|
+
- これが packet の **Expected Behavior**(完了後に観測できる振る舞い)になる。
|
|
15
|
+
|
|
16
|
+
3. **疑問(未確定)**
|
|
17
|
+
- 例を書こうとして埋まらないもの、判断が要るものは「疑問」として残す。
|
|
18
|
+
- これは packet の **Open Questions**、または Compass へ差し戻す。
|
|
19
|
+
|
|
20
|
+
4. **切り出し(今回やらないと決めたこと)**
|
|
21
|
+
- 展開の途中で「このルール・例は今回の packet から外す」と判断したものは、黙って落とさず**切り出し**として明示的に記録する。後続 packet の種、または Open Questions になる。
|
|
22
|
+
|
|
23
|
+
5. **例から Validation と Rollback を導く**
|
|
24
|
+
- 各例をどう検証するか(テスト / 手動確認 / 型検査 / ログ確認)→ **Validation**。
|
|
25
|
+
- 失敗時にどう戻すか → **Rollback**。
|
|
26
|
+
|
|
27
|
+
## packet の組み立て
|
|
28
|
+
|
|
29
|
+
展開結果を packet にまとめる。各 packet は次を満たす。
|
|
30
|
+
|
|
31
|
+
- **Parent Intent**: 対応する L0/L1/L2/L3 への参照(必須)。
|
|
32
|
+
- **Scope / Non-scope**: 含むこと / 含まないこと。
|
|
33
|
+
- **Expected Behavior**: 上記「例」由来。
|
|
34
|
+
- **Safety / Invariants**: Compass の invariant 由来。
|
|
35
|
+
- **Validation / Rollback**: 上記由来。
|
|
36
|
+
- **cc-sdd Mapping**: cc-sdd へどう渡すかの方針。
|
|
37
|
+
|
|
38
|
+
## 規律
|
|
39
|
+
|
|
40
|
+
- packet は **behavior-preserving / testable / rollbackable** であること。保つべき既存の振る舞いが無い新規開発では、behavior-preserving は「他に影響を与えず単体で導入・撤去できる」と読み替える。
|
|
41
|
+
- 数は改修見込みの大きさに応じて可変とし、数合わせをしない(小規模なら 1 個でよい・1〜7 を緩い目安とする)。大きすぎる packet は分割案を提示する。
|
|
42
|
+
- 実装タスクに落としすぎない(Issue より上位、spec より手前)。
|
|
43
|
+
- コードを変更しない。
|
|
44
|
+
|
|
45
|
+
## 出力
|
|
46
|
+
|
|
47
|
+
packet ファイル(`active/` 配下)を更新(案として提示)する。各 packet は上記構造を持つ。展開の4欄(ルール / 例 / 疑問 / 切り出し)のうち、ルール・例は各 packet の Expected Behavior に流れ、疑問は Open Questions へ、切り出しは `plan.md` の Deferred 節へ残す。
|