Closing the intent-to-code chasm - specification-driven development with BDD verification chain
86
92%
Does it follow best practices?
Impact
86%
1.82xAverage score across 14 eval scenarios
Advisory
Suggest reviewing before use
Generate design artifacts from the feature specification using the plan template.
$ARGUMENTSYou MUST consider the user input before proceeding (if not empty).
Load constitution per constitution-loading.md (enforcement mode — extract rules, declare hard gate, halt on violations).
Run prerequisites check:
bash .tessl/tiles/tessl-labs/intent-integrity-kit/skills/iikit-02-plan/scripts/bash/check-prerequisites.sh --phase 02 --jsonWindows: pwsh .tessl/tiles/tessl-labs/intent-integrity-kit/skills/iikit-02-plan/scripts/powershell/check-prerequisites.ps1 -Phase 02 -Json
Parse JSON for FEATURE_SPEC, IMPL_PLAN, FEATURE_DIR, BRANCH. If missing spec.md: ERROR.
If JSON contains needs_selection: true: present the features array as a numbered table (name and stage columns). Follow the options presentation pattern in conversation-guide.md. After user selects, run:
bash .tessl/tiles/tessl-labs/intent-integrity-kit/skills/iikit-02-plan/scripts/bash/set-active-feature.sh --json <selection>Windows: pwsh .tessl/tiles/tessl-labs/intent-integrity-kit/skills/iikit-02-plan/scripts/powershell/set-active-feature.ps1 -Json <selection>
Then re-run the prerequisites check from step 1.
MANDATORY on every run (including re-runs when plan.md already exists) — you MUST complete this gate and report the results before proceeding to the Execution Flow. Do NOT skip this section.
Validate spec.md and output the results:
[NEEDS CLARIFICATION] — ask whether to proceed with assumptionsOutput the quality score using this format (from formatting-guide.md):
Spec Quality: X/10
Requirements: N FR-XXX found [✓|⚠|✗]
Measurable criteria: N of M SC-XXX have numeric targets [✓|⚠|✗]
Clarifications: N unresolved [✓|⚠|✗]
Story coverage: N of M stories have scenarios [✓|⚠|✗]
Cross-references: N orphan requirements [✓|⚠|✗]If score < 6: recommend /iikit-clarify first.
Using the plan template, define: Language/Version, Primary Dependencies, Storage, Testing, Target Platform, Project Type, Performance Goals, Constraints, Scale/Scope. Mark unknowns as "NEEDS CLARIFICATION".
When Tessl eval results are available for candidate technologies, include eval scores in the decision rationale in research.md. Higher eval scores indicate better-validated tiles and should factor into technology selection when choosing between alternatives.
If Tessl is installed, discover and install tiles for all technologies. See tessl-tile-discovery.md for the full procedure.
For each NEEDS CLARIFICATION item and dependency: research, document findings in research.md with decision, rationale, and alternatives considered. Include Tessl Tiles section if applicable.
Prerequisites: research.md complete
data-model.md (fields, relationships, validation, state transitions)contracts/quickstart.md with test scenariosbash .tessl/tiles/tessl-labs/intent-integrity-kit/skills/iikit-02-plan/scripts/bash/update-agent-context.sh claudepwsh .tessl/tiles/tessl-labs/intent-integrity-kit/skills/iikit-02-plan/scripts/powershell/update-agent-context.ps1 -AgentType claudeMANDATORY — you MUST update .specify/context.json after the plan is complete. Use jq to merge into the existing file (create if missing). Do NOT overwrite existing fields.
CONTEXT_FILE=".specify/context.json"
[[ -f "$CONTEXT_FILE" ]] || echo '{}' > "$CONTEXT_FILE"Architecture Node Classifications: If plan.md contains an architecture diagram, classify every named component as one of client, server, storage, or external and write the map to planview.nodeClassifications:
jq --argjson nodes '{
"Browser SPA": "client",
"API Gateway": "server",
"PostgreSQL": "storage",
"Stripe API": "external"
}' '.planview.nodeClassifications = $nodes' "$CONTEXT_FILE" > "$CONTEXT_FILE.tmp" && mv "$CONTEXT_FILE.tmp" "$CONTEXT_FILE"Classification rules: client = initiates requests | server = processes requests | storage = persists data | external = outside project boundary
Tessl Eval Scores: If Tessl tiles were installed in step 2, write eval scores to planview.evalScores:
jq --argjson evals '{
"workspace/tile-name": {"score": 85, "pct": 85, "scenarios": 3, "scored_at": "2026-01-15T10:00:00Z"}
}' '.planview.evalScores = $evals' "$CONTEXT_FILE" > "$CONTEXT_FILE.tmp" && mv "$CONTEXT_FILE.tmp" "$CONTEXT_FILE"Re-validate all technical decisions against constitutional principles. On violation: STOP, state violation, suggest compliant alternative.
Scan plan for governance content per phase-separation-rules.md (Plan section). Auto-fix by replacing with constitution references, re-validate.
Before writing any artifact: review against each constitutional principle. On violation: STOP with explanation and alternative.
Output: branch name, plan path, generated artifacts (research.md, data-model.md, contracts/*, quickstart.md), agent file update status, Tessl integration status (tiles installed, skills available, technologies without tiles, eval results saved), dashboard pre-computed data status (node classifications written, eval scores written).
On re-runs (plan.md already exists), after completing the Spec Quality Gate and Execution Flow above, you MUST compare the old and new plan and output a semantic diff. Use this exact format:
+-----------------------------------------------------+
| SEMANTIC DIFF: plan.md |
+-----------------------------------------------------+
| Tech Stack: |
| + Added: [new items] |
| ~ Changed: [modified items] |
| - Removed: [deleted items] |
| Architecture: |
| + Added: [new components] |
| ~ Changed: [modified components] |
| Dependencies: |
| + Added: [new deps] |
| - Removed: [old deps] |
+-----------------------------------------------------+
| DOWNSTREAM IMPACT |
| ⚠ tasks.md may need regeneration |
| ⚠ [other affected artifacts] |
+-----------------------------------------------------+Flag breaking changes that would invalidate existing tasks or test specs.
Run post-phase to commit, refresh dashboard, and compute next step in a single call:
bash .tessl/tiles/tessl-labs/intent-integrity-kit/skills/iikit-02-plan/scripts/bash/post-phase.sh --phase 02 --commit-files "specs/*/plan.md,specs/*/research.md,specs/*/data-model.md,specs/*/quickstart.md,specs/*/contracts/,.specify/context.json" --commit-msg "plan: <feature-short-name> technical design"Windows: pwsh .tessl/tiles/tessl-labs/intent-integrity-kit/skills/iikit-02-plan/scripts/powershell/post-phase.ps1 -Phase 02 -CommitFiles "specs/*/plan.md,specs/*/research.md,specs/*/data-model.md,specs/*/quickstart.md,specs/*/contracts/,.specify/context.json" -CommitMsg "plan: <feature-short-name> technical design"
Parse next_step from JSON. Present per model-recommendations.md:
Plan complete!
Next: [/clear → ] <next_step> (model: <tier>)
[- <alt_step> — <reason> (model: <tier>)]
- Dashboard: file://$(pwd)/.specify/dashboard.htmlevals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10
scenario-11
scenario-12
scenario-13
scenario-14
rules
skills
iikit-00-constitution
scripts
dashboard
iikit-01-specify
iikit-02-plan
iikit-03-checklist
scripts
bash
dashboard
iikit-04-testify
iikit-05-tasks
iikit-06-analyze
iikit-07-implement
iikit-08-taskstoissues
iikit-bugfix
scripts
dashboard
iikit-clarify
iikit-core
references
scripts
bash
dashboard
powershell
templates