Closing the intent-to-code chasm - specification-driven development with BDD verification chain
Overall
score
96%
Does it follow best practices?
Validation for skill structure
Closing the intent-to-code chasm
An AI coding assistant toolkit that preserves your intent from idea to implementation, with cryptographic verification at each step. Compatible with Claude Code, OpenAI Codex, Google Gemini, and OpenCode.
.feature files), phase discipline (never skip phases), and constitution enforcement (never violate CONSTITUTION.md). Defense-in-depth alongside skills, scripts, and git hooks..feature files exist, code commits are mechanically gated — three gates: step definitions exist, runner dependency in project dep files, verify-steps.sh dry-run passes. Covers all 8 supported frameworks..feature files (replaces test-specs.md). The implement skill enforces a full red-green-verify cycle: hash integrity → step coverage → RED → GREEN → step quality.verify-steps.sh (dry-run coverage for 8 BDD frameworks), verify-step-quality.sh (AST-based analysis detecting empty/tautological assertions), setup-bdd.sh (auto-scaffolding).npx.@FR-XXX tags in .feature files trace to spec.md requirements.When you tell an AI what you want, there's a gap between your intent and the code it produces. Requirements get lost, assumptions slip in, tests get modified to match bugs. The Intent Integrity Chain is a methodology to close that chasm.
IIKit implements this chain:
Intent ──▶ Spec ──▶ .feature ──▶ Steps ──▶ Code
↑ ↑ ↑ ↑
│ │ │ └── step quality verified (no assert True)
│ │ └────────────── hash locked (no tampering)
│ └───────────────────────── @FR-XXX tags traced
└───────────────────────────────── clarified until alignedKey principle: No part of the chain validates itself. .feature files are locked before implementation. Step definitions are verified for coverage and quality. If requirements change, you go back to the spec.
# Install via Tessl
tessl install tessl-labs/intent-integrity-kitDon't have Tessl? Install it first:
npm install -g @tessl/cli
Note:
tessl installis the only supported installation method. During publish, shared reference and template files are copied into each skill for self-containment. Cloning the repo directly does not produce self-contained skills.
# 1. Launch your AI assistant
claude # or: codex, gemini, opencode
# 2. Initialize the project
/iikit-core init
# 3. Define project governance
/iikit-00-constitution
# 4. Specify a feature
/iikit-01-specify Build a CLI task manager with add, list, complete commands
# 5. Plan the implementation
/iikit-03-plan
# 6. Generate tests from requirements
/iikit-05-testify
# 7. Break into tasks
/iikit-06-tasks
# 8. Implement (with integrity verification)
/iikit-08-implementEach phase builds on the previous. Never skip phases.
┌────────────────────────────────────────────────────────────────────────────┐
│ /iikit-core → Initialize project, status, help │
├────────────────────────────────────────────────────────────────────────────┤
│ 0. /iikit-00-constitution → Project governance (tech-agnostic) │
│ 1. /iikit-01-specify → Feature specification (WHAT, not HOW) │
│ 2. /iikit-02-clarify → Resolve ambiguities until spec is clear │
│ 3. /iikit-03-plan → Technical plan (HOW - frameworks, etc.) │
│ 4. /iikit-04-checklist → Quality checklists (unit tests for English) │
│ 5. /iikit-05-testify → Gherkin .feature files from requirements │
│ 6. /iikit-06-tasks → Task breakdown │
│ 7. /iikit-07-analyze → Cross-artifact consistency check │
│ 8. /iikit-08-implement → Execute with integrity verification │
│ 9. /iikit-09-taskstoissues → Export to GitHub Issues │
└────────────────────────────────────────────────────────────────────────────┘The core of IIKit is preventing circular verification — where AI modifies tests to match buggy code.
/iikit-05-testify generates Gherkin .feature files from your spec's Given/When/Then scenarios.feature files) is stored in context.json and as a git note/iikit-08-implement enforces the full BDD chain before marking any task complete:
.feature files not tampered since testifyverify-steps.sh — all Gherkin steps have matching step definitions (dry-run)verify-step-quality.sh — no empty bodies, no assert True, no missing assertions╭─────────────────────────────────────────────────────────────────────────╮
│ BDD VERIFICATION CHAIN │
├─────────────────────────────────────────────────────────────────────────┤
│ .feature hash: valid │
│ Step coverage: PASS (24/24 steps defined) │
│ Step quality: PASS (0 empty, 0 tautological) │
│ TDD status: mandatory │
├─────────────────────────────────────────────────────────────────────────┤
│ Overall: PASS │
╰─────────────────────────────────────────────────────────────────────────╯spec.md with new requirements/iikit-05-testify to regenerate .feature filesThis ensures test changes are intentional and traceable to requirement changes.
The workflow is linear the first time through. After that, you'll often go back to refine things. Here's how.
Option A — Re-run the skill: /iikit-01-specify with updated description. It detects the existing spec.md, shows a semantic diff (added/removed/changed requirements), warns about downstream impact, and asks before overwriting.
Option B — Edit directly: Open specs/NNN-feature/spec.md and edit the markdown. This is fine for small tweaks (rewording a requirement, adding an edge case). Then re-run downstream phases to propagate changes.
What to re-run after:
| What changed | Re-run |
|---|---|
| Added/removed requirements | /iikit-03-plan then /iikit-06-tasks |
| Changed acceptance criteria (Given/When/Then) | /iikit-05-testify (re-generates .feature files, re-locks hash) |
| Clarified wording only | Nothing — downstream artifacts still valid |
Option A — Re-run: /iikit-03-plan detects the existing plan.md, shows a semantic diff of tech stack and architecture changes, and flags breaking changes with downstream impact.
Option B — Edit directly: Edit plan.md or research.md for targeted changes (swap a library, update a version, add a design decision).
What to re-run after:
| What changed | Re-run |
|---|---|
| Swapped a framework/library | /iikit-06-tasks (tasks may differ) |
| Changed data model | /iikit-05-testify then /iikit-06-tasks |
| Added a design constraint | /iikit-04-checklist (new quality checks) |
| Minor version bump | Nothing |
Re-run /iikit-06-tasks. It preserves [x] completion status on existing tasks, maps old task IDs to new ones by similarity, and warns about changes to already-completed tasks.
Changed requirements? → edit spec.md → /iikit-03-plan → /iikit-06-tasks
Changed acceptance criteria? → edit spec.md → /iikit-05-testify
Changed tech stack? → /iikit-03-plan (or edit plan.md) → /iikit-06-tasks
Changed a library? → edit research.md → /iikit-06-tasks
Need more quality checks? → /iikit-04-checklist
Everything looks wrong? → /iikit-07-analyze (finds inconsistencies)Rule of thumb: Edit the artifact directly for small changes. Re-run the skill for significant changes — it shows you the diff and warns about downstream impact. Then cascade forward through the phases that depend on what you changed.
Understanding what belongs where is critical:
| Content Type | Constitution | Specify | Plan |
|---|---|---|---|
| Governance principles | ✓ | ||
| Quality standards | ✓ | ||
| User stories | ✓ | ||
| Requirements (functional) | ✓ | ||
| Acceptance criteria (Given/When/Then) | ✓ | ||
| Technology stack | ✓ | ||
| Framework choices | ✓ | ||
| Data models | ✓ | ||
| Architecture decisions | ✓ |
Constitution is spec-agnostic. It transcends individual features - that's why it lives at the root, not in /specs.
IIKit is distributed as a Tessl tile - a versioned package of AI-optimized context.
What Tessl provides:
tessl install tessl-labs/intent-integrity-kit adds IIKit to any projectHow IIKit uses Tessl:
| Phase | What happens |
|---|---|
/iikit-03-plan | Discovers and installs tiles for your tech stack |
/iikit-08-implement | Queries mcp__tessl__query_library_docs before writing library code |
your-project/
├── CONSTITUTION.md # Project governance (spec-agnostic)
├── AGENTS.md # Agent instructions
├── tessl.json # Installed tiles
├── .specify/ # IIKit working directory
│ └── context.json # Feature state
└── specs/
└── NNN-feature-name/
├── spec.md # Feature specification
├── plan.md # Implementation plan
├── tasks.md # Task breakdown
├── research.md # Tech research + tiles
├── data-model.md # Data structures
├── contracts/ # API contracts
├── checklists/ # Quality checklists
└── tests/
└── features/ # Locked Gherkin .feature files| Agent | Instructions File |
|---|---|
| Claude Code | CLAUDE.md -> AGENTS.md |
| OpenAI Codex | AGENTS.md |
| Google Gemini | GEMINI.md -> AGENTS.md |
| OpenCode | AGENTS.md |
IIKit builds on GitHub Spec-Kit, which pioneered specification-driven development for AI coding assistants. The phased workflow, artifact structure, and checklist gating concepts originate from Spec-Kit.
IIKit extends Spec-Kit with:
.feature files, pre-commit enforcement) to prevent circular validation where AI modifies tests to match buggy codeMIT License - See LICENSE for details.
Install with Tessl CLI
npx tessl i tessl-labs/intent-integrity-kit@2.3.5