How Spektacular Works

A deep dive into spec-driven development, from writing your first spec to shipping working code.

Quick start

Zero to code in under 5 minutes.

1

Install

Requires Go 1.21+ and a supported coding agent CLI (Claude Code, Bob, or Codex) installed and configured.

Terminal window
# install with go
go install github.com/jumppad-labs/spektacular@latest
# or download a pre-built binary from the releases page
# https://github.com/jumppad-labs/spektacular/releases
2

Initialise your project

Run this from the root of your codebase, naming the coding agent you want to use (claude, bob, or codex). Creates a .spektacular/ directory with config, knowledge base, and template files.

Terminal window
cd my-project
spektacular init claude
3

Create a spec

All interaction with Spektacular is through your agent, spektacular provides the agent skills that instruct it how to perform various capabilies like creating a new specification.

To create a new specification using the agent Claude Code you can run the following command in the agents terminal:

Terminal window
/spek-new

Spektacular will then interview you first, adaptive questions about what you’re building, before guiding you through drafting and confirming each section of the specification.

4

Generate a plan

Once the specification has been created, next you move on to generate a detailed technical plan for the implementation of the specification. This is also achieved by using a skill in your agents terminal.

Note: The aim of spektacular is to make conservative use of tokens for your coding agent. It has been designed that no agent context is required from the previous steps. For this reason you should clear your agents context before running the next command to generate a plan.

Terminal window
/clear # Clear the agents context before generating a plan
/spek-plan
5

Implement the plan

Finally, once the plan is complete and you are happy with it, it is time to start generating code. This is also acheived by using a skill in your agents terminal.

Terminal window
/clear
/spek-implement

The spec format

Specs are plain markdown files. No special syntax, just structured sections that give the planning agent what it needs.

# Feature: User Authentication
## Overview
Add OAuth2 login with Google and GitHub
providers to the existing Express app.
## Requirements
- [ ] Users can sign in with Google OAuth2
- [ ] Users can sign in with GitHub OAuth2
- [ ] Session persists across browser refreshes
- [ ] Logout clears session and redirects
## Constraints
- Must use existing Express backend
- No new dependencies over 50KB gzipped
- Cannot change the /api/users schema
## Acceptance Criteria
- [ ] Login redirects to provider, returns
with valid session
- [ ] Session cookie is httpOnly, secure,
sameSite=strict
- [ ] Logout flow works end-to-end
## Technical Approach
Use passport.js for OAuth2 strategy.
Integrate with existing session middleware.
## Success Metrics
- OAuth2 login completes in under 2 seconds
- Zero increase in /api/users error rate
## Non-Goals
Social login with Apple or Microsoft.
## Overview

A concise 2–3 sentence summary answering: what is being built, what problem does it solve, and who benefits? Grounds the agent before it reads anything else.

## Requirements

A checklist of discrete behaviours. Use active voice (“Users can…”). Each item should be independently verifiable and focus on what, not how.

## Constraints

Non-negotiable boundaries: existing APIs, dependency limits, performance budgets. Violations are plan failures. Leave blank if none.

## Acceptance Criteria

Binary pass/fail conditions, each traceable to a requirement and testable by someone who didn’t write the code. These become the verification steps in the output plan.

## Technical Approach

High-level technical direction: key architectural decisions, preferred patterns, integration points, and known risks. Leave blank to let the planner propose an approach.

## Success Metrics

How you’ll know it works well after delivery. Quantitative (“p99 latency < 200ms”) or behavioural (“users complete the flow without support”). Leave blank if not applicable.

## Non-Goals

Explicitly out of scope, prevents scope creep and over-engineering. Leave blank if there are no exclusions to call out.

The pipeline

Three stages: write the spec, generate a plan, then implement and validate, with the agent checking its own work against the spec at each handoff.

1 Specification

💡
idea
requirements,
constraints & criteria
New
adaptive interview,
then drafted sections
📄
spec.md
your requirements
in a standard format

Before Spektacular drafts a single section, it interviews you. Rather than working through a fixed script, the agent asks open questions about what you’re building, adapting each one to what you’ve already said, a technique called Flipped Interaction, drawn from prompt-engineering research on shifting conversational control to the agent.

Agent: What are you building, and who runs into the problem it solves?
You: A CLI users can point at a local repo to check for
outdated dependencies.
Agent: Should it just report outdated packages, or offer to
upgrade them too?
You: Report only, for now, upgrading is a separate feature.
Agent: Got it, I have enough to draft an Overview. One more
thing: does this touch the docs site too, or is it
CLI-only for now?

The interview stops once no further question would change the draft, not once every possible detail has been asked about.

In a project with more than one registered repo, the interview already knows the full roster, so a feature that reads as focused on one repo still gets asked about impact on the others, shaped by what each one actually is:

Agent: This project also has a "docs" repo registered
(role: documentation). Does exposing this as a new
CLI flag mean the docs site needs a new page or
section too?
You: Yes, it should get its own reference page.

From there, each section, Requirements, Constraints, Acceptance Criteria, and the rest, is drafted from what the interview established and presented back for you to confirm or correct, rather than asked from a blank prompt. Rejecting a draft opens a short follow-up conversation to understand why before anything changes, since a single correction can turn out to need more than one change. The spec itself stays plain markdown, no special syntax, just structured sections.

Specs don’t only start this way: during any open-ended discussion, the agent watches for the moment it produces something spec-worthy (a scoped decision, a multi-requirement feature) and proactively offers to capture it, calibrated by the spec_trigger_threshold config key. It always proposes before starting, never begins unilaterally.

2 Generate the Plan

📚
knowledge base
conventions, gotchas,
decisions, architecture
📄
spec.md
your requirements
Plan
explores codebase,
asks questions
📋
plan.md
+ research.md
+ context.md

Plan turns the spec into a detailed implementation plan. It loads your project knowledge base, explores the codebase, and surfaces clarifying questions before writing anything. The conventions, gotchas, decisions, and architecture it draws from the knowledge base are woven directly into the plan, so the output reflects how your project works rather than a generic approach. The plan, plus supporting research and context documents, are written to .spektacular/plans/.

Once the documents are written, the agent offers to walk through the plan conversationally: the approach and reasoning, how the work breaks into phases, and what was deliberately left out, before you commit to it. You can interrupt with questions or changes at any point; edits land directly in plan.md. Reading the documents yourself remains just as valid; the walkthrough is optional.

3 Implement the Plan

📋
plan.md
implementation plan
+ research + context
Implement
executes plan via
coding agent
validates against
acceptance criteria
code
working implementation
verified by criteria

Implement drives the coding agent through each phase of the plan and verifies the output against your acceptance criteria, so you know the implementation matches the spec.

Before it starts, Spektacular checks the plan’s phases against the spec’s Requirements and Acceptance Criteria checklist: any gap must be either filled in or explicitly accepted as a descope. After implementation finishes, it checks the spec’s checklist against what was actually built, and writes a changelog record of what shipped, why, and how it differed from the plan to .spektacular/changelog/.

Code is king

Once written, the spec and plan become a historical, archaeological record, not a live description of current behavior.

A coding agent asked how the system works today reads the code, not the spec: a spec and plan are a process document, not a product document, capturing the intent and scope at the time they were written, while the codebase keeps moving. Ask why something was built a particular way, though, and the agent will still open and cite the relevant spec, plan, or changelog record to explain the original reasoning.

Artifact metadata

Every spec, plan, and changelog record Spektacular writes carries the same lifecycle metadata, tracked automatically without any extra configuration.

This metadata is what makes the archaeology model workable at scale: as specs, plans, and changelog records pile up across a project’s history, status and dates are how you and your agent tell a still-active record from a closed one, or find the handful of records that matter out of hundreds. Every record supports filtering by this metadata from the CLI.

Ready to start?

Install Spektacular and generate your first plan in minutes.

$ brew install jumppad-labs/homebrew-repo/spektacular