Working with Specs
Chisel Specs provides a lifecycle-driven workflow for tracking features, architectural decisions, and work items as Markdown files alongside your code.
Creating a Spec
Section titled “Creating a Spec”chisel spec newYou will be prompted for a title and template. Chisel creates a new Markdown file in .chisel/specs/ with the appropriate frontmatter.
Templates
Section titled “Templates”- feature: For new features or enhancements. Includes sections for motivation, design, and acceptance criteria.
- adr: Architecture Decision Record. Includes context, decision, and consequences sections.
chisel spec new --template adrProviding Content Inline
Section titled “Providing Content Inline”Skip the template and supply the spec body in one command — handy for scripts and LLM agents that already have the content:
chisel spec new "API Rate Limiting" --content "## Summary\n\nThrottle requests per API key."cat design-notes.md | chisel spec new "API Rate Limiting" --content -Lifecycle States
Section titled “Lifecycle States”Every spec moves through a defined lifecycle:
- Draft — Initial idea or proposal. Still being shaped.
- Ready — Spec is complete and reviewed. Work can begin.
- InProgress — Active implementation underway.
- Shipped — Work is complete and deployed/merged.
- Archived — No longer relevant. Kept for historical reference.
Moving Specs Through Status
Section titled “Moving Specs Through Status”chisel spec status <id> <new-status>Examples:
chisel spec status 0001 readychisel spec status 0001 in-progresschisel spec status 0001 shippedStatus changes update the status field in the spec’s frontmatter — the file itself never moves, so links and paths stay stable across the entire lifecycle.
Listing and Searching
Section titled “Listing and Searching”chisel spec list # List all active specschisel spec list --status draft # Filter by statuschisel spec search "auth" # Full-text search across specschisel spec view <id> # View a specific specMachine Mode
Section titled “Machine Mode”All spec commands support --machine for structured YAML output, suitable for LLM context windows and script automation.
chisel spec list --machineDirectory Structure
Section titled “Directory Structure”.chisel/specs/├── user-auth-flow.md # status: in-progress├── api-rate-limiting.md # status: draft├── dark-mode.md # status: shipped└── deprecated-endpoint.md # status: archivedAll specs live in a single flat directory; each file’s lifecycle stage is the status field in its frontmatter. Workspaces created before this layout (with active/, shipped/, and archived/ subdirectories) are migrated automatically the first time any chisel spec command runs — files move into .chisel/specs/ and a summary of the moves is printed.
Why Local Specs?
Section titled “Why Local Specs?”By keeping specs as versioned Markdown files, your planning artifacts follow your code through branches, reverts, and history. There is no drift between your tracker and your repository.