Open source · MIT License

Spec-driven development,
fully automated.

The complete AI development workflow — architecture awareness, multi-agent review & auto-fix, and zero babysitting. Write your spec. LazySpecKit handles everything else: planning, implementation, validation, and a seven-agent review that finds AND fixes issues automatically.

What is SpecKit?

GitHub SpecKit is a structured workflow for AI-assisted development. It turns a natural-language spec into a formal plan, generates tasks, validates spec quality, implements code, and runs validation — all through slash commands.

📋

Structured Phases

Specify → Clarify → Plan → Tasks → Implement. Each phase builds on the last.

🔍

Quality Gates

Checklist + analyze catch spec issues before code is written.

LazySpecKit Adds

Full automation plus a multi-agent review & refine phase. Seven AI agents audit your code from different perspectives and auto-fix issues.

What is a Constitution?

A constitution is a short document that tells SpecKit about your project — its tech stack, conventions, and preferences — so that every generated plan, task, and code change aligns with how your project actually works.

🛠️

Tech Stack

Languages, frameworks, databases, infrastructure — so the agent picks the right tools.

🎨

Code Style

Naming conventions, file structure, patterns (e.g. “use repository pattern”, “functional components”).

🧪

Testing & Tooling

Test framework, coverage expectations, package manager, linter, CI requirements.

🔒

Constraints

Security policies, performance targets, accessibility, compliance, domain context.

Example constitution
# My Project Constitution
- TypeScript + React 19 frontend, Node.js + Express backend
- PostgreSQL with Prisma ORM
- Vitest for unit tests, Playwright for E2E
- pnpm workspaces monorepo
- All API routes require auth middleware
- Follow existing patterns in src/

The first time you run /LazySpecKit in a project without an existing constitution, it will ask you to provide one. Paste your text, and LazySpecKit passes it to SpecKit’s /speckit.constitution command. After that, it’s saved in your project and reused for every future run.

Install in one command

Requires bash + curl (or wget). Works on macOS, Linux, and Windows (Git Bash).

bash -c "$(curl -fsSL https://raw.githubusercontent.com/Hacklone/lazy-spec-kit/main/install.sh)"

Installs to ~/.local/bin (or ~/bin on Windows Git Bash)

Quick Start

Initialize your project, then use the prompt. Two steps, no config files to write.

Terminal
# For VS Code Copilot
lazyspeckit init --here --ai copilot

# For Claude Code
lazyspeckit init --here --ai claude

# Also install for Cursor or OpenCode
lazyspeckit init --here --ai copilot --ai cursor
lazyspeckit init --here --ai all

Then in your AI assistant:

AI Prompt
/LazySpecKit Add OAuth login with GitHub and Google. Store users in Postgres. Add tests.

For the fully hands-off experience — auto-answer clarification questions:

AI Prompt — auto-clarify (recommended)
/LazySpecKit --auto-clarify Add OAuth login with GitHub and Google. Store users in Postgres. Add tests.

Skip the review phase if you want:

AI Prompt — review disabled
/LazySpecKit --review=off Add OAuth login with GitHub and Google.

That's it. LazySpecKit takes over — implementation, validation, and (by default) a multi-agent review that fixes issues automatically. With --auto-clarify, you may not even need to answer a single question. ☕

How It Works

LazySpecKit automates the entire spec-driven development lifecycle. You interact at most once — or with --auto-clarify, potentially not at all. Everything else runs automatically.

Phase 0

Constitution if missing

Checks for an existing constitution. If none found, asks you to provide one — a short description of your project’s tech stack, conventions, and preferences. Created once, reused forever.

Phase 1

Architecture Context automatic

Loads 3 compact root files from .docs/architecture/ — index, summary, principles. Agents then selectively load relevant component overviews and detail files (modules, API, UI). Scales to large monorepos. Skipped if not configured.

Phase 2

Specify automatic

Runs /speckit.specify with your spec text. Matches against architecture routing table to selectively load relevant component overviews and detail files.

Phase 3

Clarify your input

Presents clarification questions. Answer once, then sit back. With --auto-clarify, high/medium-confidence questions are answered automatically — you're only asked about genuinely ambiguous items (if any).

Phase 4

Plan automatic

Generates a structured implementation plan from the clarified spec.

Phase 5

Tasks automatic

Breaks the plan into sequential, actionable tasks.

Phase 6

Quality Gates automatic

Runs /speckit.checklist and /speckit.analyze with multi-perspective checks (architecture, security, performance, UX). Auto-fixes spec issues until clean.

Phase 7

Implement automatic

Executes all tasks strictly in order.

Phase 8

Validate automatic

Detects and runs lint, typecheck, tests, and build. Reports results.

Phase 9

Review & Refine automatic

Seven AI agents — architecture, code quality, security, performance, spec compliance, accessibility, tests — review the code from different perspectives and auto-fix Critical/High findings. Up to 6 loops until clean.

Phase 10

Architecture Update automatic

Updates architecture docs to reflect new components, integrations, and decisions. Keeps documentation evergreen without manual effort.

Phase 11

Final Validation automatic

Full validation suite re-runs to guarantee everything is green before completion. No broken code ships.

Auto-Clarify — True Hands-Off Mode

SpecKit's clarification phase normally requires your input. With --auto-clarify, the agent answers for you.

AI Prompt — full autopilot
/LazySpecKit --auto-clarify Add a REST API with CRUD endpoints and tests.
🟢

High confidence

Clear best practice or strong repo signal. Auto-selected — no pause.

🟡

Medium confidence

Trade-offs exist but a reasonable default is available. Auto-selected — no pause.

🔴

Low confidence

Genuinely ambiguous — only these are presented to you in a structured A/B/C/D format for a quick reply.

How it works

Step 1

Structured questions

SpecKit's clarification questions are normalized into A/B/C/D options. Each gets an explicit Recommendation and Confidence level.

Step 2

Auto-select confident answers

High and Medium confidence recommendations are auto-selected. No user interaction needed.

Step 3

Ask only when unsure

Only Low-confidence questions (if any) are presented to you. If everything is High/Medium — you never see a single question.

Step 4

Continue automatically

Planning, implementation, validation, and review proceed without further interaction.

📝 Without auto-clarify

  • All clarification questions presented to you
  • You answer once in a structured format
  • Still just one interaction — but you need to be present

⚡ With --auto-clarify

  • Confident answers auto-selected by the agent
  • Only genuinely ambiguous items escalated to you
  • Often zero interaction — spec in, finished code out
  • The ultimate hands-off spec-driven workflow

--auto-clarify is off by default. Enable it when you want the fully autonomous experience.

Multi-Agent Review & Refine

Implementation is only half the job. LazySpecKit keeps going. Seven independent AI agents — each with a different perspective — review your code and fix what they find. Five are sourced from Agency and downloaded automatically.

🏗️

Architecture Reviewer

Evaluates structural decisions, separation of concerns, dependency direction, and abstraction boundaries.

Code Quality Reviewer

Checks readability, idiomatic patterns, error handling, duplication, and engineering best practices.

🔒

Security Reviewer

Identifies injection vulnerabilities, missing auth checks, credential leaks, and input validation gaps.

Performance Reviewer

Catches N+1 queries, missing indexes, redundant computation, memory leaks, and resource waste.

📋

Spec Compliance Reviewer

Verifies every requirement from the approved spec is implemented correctly and completely.

Accessibility Reviewer

Checks ARIA attributes, keyboard navigation, color contrast, screen reader support, and WCAG compliance.

🧪

Test Reviewer

Audits test coverage, edge cases, test quality, reliability, and identifies missing scenarios.

Review, fix, verify — automatically

Step 1

Analyze

All seven agents review the implemented changes from their perspective. Findings are categorized: Critical / High / Medium / Low.

Step 2

Auto-fix

LazySpecKit automatically fixes all Critical and High issues, plus low-effort Medium ones. Not just a report — actual code changes.

Step 3

Re-validate

Lint, typecheck, tests, and build re-run to confirm the fixes didn't break anything.

Step 4

Iterate

Agents review again — up to 6 loops — until no Critical or High findings remain. Then a final validation gate confirms green.

🔧 Without Review & Refine

  • Spec → Plan → Tasks → Implement → Validate
  • Implementation stops after validation passes
  • No post-implementation review
  • You review the code yourself
  • Hope for the best after validation passes

⚡ With Review & Refine (default)

  • Full automated lifecycle from spec to reviewed code
  • One command — answer questions once (or use auto-clarify), done
  • Auto-clarify: agent answers its own questions when confident
  • Seven AI agents review from different perspectives
  • Issues are auto-fixed, not just reported
  • Iterative convergence: review → fix → validate loops
  • Final validation gate ensures green before completion

Review & Refine is on by default. Disable with --review=off if you want to skip post-implementation review.

Custom Reviewers

Seven default reviewer skill files are installed during lazyspeckit init — five sourced from Agency, two from LazySpecKit. Edit any default to tune its behavior, or add new .md files to create additional reviewers.

.lazyspeckit/reviewers/
├── accessibility.md       # Accessibility & inclusion (from Agency)
├── architecture.md        # System design (from Agency)
├── code-quality.md        # Engineering craft
├── performance.md         # Runtime efficiency (from Agency)
├── security.md            # Application security (from Agency)
├── spec-compliance.md     # Requirements coverage (from Agency)
└── test.md                # QA & test quality

✏️ Customize Defaults

Edit the installed files directly to adjust focus areas, severity rules, or domain-specific guidance for any default reviewer.

➕ Add New Reviewers

Drop a new .md file with a unique name into the folder. It runs as an additional agent alongside the defaults.

.lazyspeckit/reviewers/accessibility.md
---
name: Accessibility Reviewer
perspective: WCAG compliance and inclusive UX
---

Focus on:
- Semantic HTML and ARIA attributes
- Keyboard navigation and focus management
- Color contrast ratios (WCAG AA minimum)
- Screen reader compatibility
- Alt text for images and media

Severity guide:
- Critical: interactive element unreachable by keyboard
- High: missing ARIA labels on form controls
- Medium: insufficient color contrast
- Low: missing skip-navigation link
name Reviewer display name — must be unique across all reviewers perspective One-line description of the review angle body Freeform instructions — what to look for, severity rules, domain-specific guidance. Injected as the reviewer's system prompt.

Agency Integration

Agency is a curated collection of specialized AI agent definitions. Five of LazySpecKit’s seven reviewers are downloaded from the Agency repo by default during init and upgrade. If you have Agency installed locally, matching agents are symlinked instead.

📥 Downloaded by default

Five reviewers are downloaded from the Agency GitHub repo during setup. No local Agency install required. A no-interaction header is injected so they work as review-only agents.

🔗 Local Agency override

If Agency is installed locally, init auto-detects it and symlinks matching agents instead. Updates to your local install flow through automatically. Use --no-agency to skip local overlay.

Agency agentLazySpecKit reviewer
testing/testing-reality-checker.mdspec-compliance.md
engineering/engineering-security-engineer.mdsecurity.md
testing/testing-performance-benchmarker.mdperformance.md
testing/testing-accessibility-auditor.mdaccessibility.md
engineering/engineering-backend-architect.mdarchitecture.md
Agency reviewers (downloaded by default)
# Agency reviewers are downloaded from the Agency repo by default
lazyspeckit init --here --ai copilot

# Custom Agency install path
lazyspeckit init --here --ai copilot --agency-path ~/my-agents

# Skip local Agency overlay (downloaded defaults are still used)
lazyspeckit init --here --ai copilot --no-agency
Add individual Agency agents
# Import an agent as a reviewer
lazyspeckit add-reviewer --from-agency testing/testing-accessibility-auditor.md

# Import with a custom name
lazyspeckit add-reviewer --from-agency testing-reality-checker --as spec-checker.md

Works on macOS, Linux, and Windows. If symlinks aren’t supported, LazySpecKit falls back to copying with a warning. Existing user-customized reviewers are never overwritten.

CLI Commands

Everything you can do with the lazyspeckit CLI.

lazyspeckit init [--ai <agent>...] [--no-agency] [--agency-path <dir>] [specify init args...]

Initializes SpecKit and installs LazySpecKit prompts. Use --ai to select agents: copilot, claude, cursor, opencode, or all. Downloads Agency reviewers by default. If Agency is installed locally, symlinks matching agents instead. Use --no-agency to skip local overlay. Use --no-architecture to skip architecture docs setup.

lazyspeckit upgrade [--here | <path>] [--ai <agent>...]

Upgrades SpecKit CLI, project files, LazySpecKit prompts, and reviewer skill files. Auto-detects all configured agents (Copilot, Claude, Cursor, OpenCode) from directory structure. Downloads latest Agency reviewers. SpecKit failures are non-fatal — prompts and reviewers always update.

lazyspeckit doctor [--here | <path>]

Shows diagnostics: versions, installed agents, SpecKit status, and prompt file presence. Makes no changes.

lazyspeckit self-update

Updates the CLI binary itself and upgrades the SpecKit CLI.

lazyspeckit add-reviewer --from-agency <agent> [--as <name>] [--agency-path <dir>] [--force]

Copies an Agency agent into .lazyspeckit/reviewers/ as a reviewer, with the no-interaction header injected automatically. Use --as to rename, --force to overwrite.

lazyspeckit version

Shows local and remote CLI versions. Hints if an update is available.

lazyspeckit architecture:init [--here | <path>]

Creates .docs/architecture/ with core template files (index, summary, principles), example component docs under components/, and directory structure. Never overwrites existing files.

lazyspeckit architecture:check [--here | <path>]

Scans the project and reports architecture documentation status. Lists documented components, integrations, and decisions. Suggests project directories that lack documentation. Runs automatically during upgrade and doctor.

lazyspeckit architecture:show [--here | <path>]

Displays architecture doc status: core files, documented components with doc counts, integrations, and architecture decision records.

AI Agents

All agents use the --ai flag. Use --ai all to install for every agent. upgrade auto-detects installed agents from directory structure.

VS Code Copilot

--ai copilot
.github/prompts/LazySpecKit.prompt.md
Primary agent. If /LazySpecKit doesn't appear, run Developer: Reload Window

Claude Code

--ai claude
.claude/commands/LazySpecKit.md
Primary agent. Restart your session or reopen the repo if the command doesn't appear

Cursor

--ai cursor
.cursor/rules/lazyspeckit.mdc
MDC format with YAML frontmatter. alwaysApply: false — use as an on-demand rule

OpenCode

--ai opencode
.opencode/agent/LazySpecKit.md
Standard Markdown agent file

Environment Variables

VariableDefaultDescription
LAZYSPECKIT_REFmainPin downloads to a branch, tag, or commit SHA
DEBUG0Set to 1 for bash trace output
NO_COLORSet to 1 to disable colored output
BIN_DIR~/.local/binOverride install location (install.sh only)
Pin to a specific version
LAZYSPECKIT_REF=v0.8.4 lazyspeckit self-update

Troubleshooting

lazyspeckit: command not found

Add export PATH="$HOME/.local/bin:$PATH" to your ~/.bashrc or ~/.zshrc, then restart your terminal. On Windows Git Bash, the default is ~/bin.

uv or uvx not found

LazySpecKit installs uv automatically. If it fails, run curl -LsSf https://astral.sh/uv/install.sh | sh manually.

Windows: winget not found from Git Bash

Run winget install --id Astral.Uv -e in PowerShell instead, then restart Git Bash.

Something else is broken

Run lazyspeckit doctor --here for diagnostics. Add DEBUG=1 for full trace output.

FAQ

What is a constitution and what should I put in it?
A constitution is a short project description that tells SpecKit about your tech stack, coding conventions, testing setup, and constraints. It's created once on first run and reused for every future spec. Include things like languages, frameworks, databases, test frameworks, code style preferences, and any hard constraints (security, compliance, etc.). See the Constitution section for examples.
Why does upgrade run specify init --force?
That's how SpecKit refreshes its project files (slash commands, templates). LazySpecKit automatically backs up and restores your constitution and custom templates.
What does LazySpecKit back up during upgrade?
Your constitution (.specify/memory/constitution.md) and custom templates (.specify/templates/). Both are restored after specify init --force.
Can I use both Copilot and Claude in the same repo?
Yes. Both init and upgrade install prompts for all detected agents. The prompt content is identical — only the file location differs.
Does LazySpecKit modify my source code?
The CLI only manages SpecKit configuration and prompt files. The /LazySpecKit prompt generates and modifies source code during implementation — that's the whole point.
What happens if SpecKit fails during upgrade?
SpecKit failures are non-fatal during upgrade. LazySpecKit always installs the latest prompts regardless. Your customizations are backed up and restored even on failure.
What is Review & Refine? How does LazySpecKit go beyond SpecKit?
LazySpecKit adds a full post-implementation phase that SpecKit doesn't have. After implementation and validation, six independent AI agents (architecture, code quality, security, performance, spec compliance, tests) review the code from different perspectives, automatically fix Critical and High issues, re-validate, and loop until clean. It's review and refinement, not reporting.
Can I disable the Review & Refine phase?
Yes. Pass --review=off before your spec text: /LazySpecKit --review=off <your spec>. This skips the multi-agent review entirely and stops after implementation + validation.
What does --auto-clarify do?
It lets the agent auto-select recommended answers for clarification questions when it's confident (High or Medium). Only genuinely ambiguous (Low confidence) questions are presented to you. If all questions are High/Medium, you never interact at all — spec in, finished code out.
Is --auto-clarify safe? Will it make bad decisions?
Each recommendation includes an explicit confidence level. High-confidence answers follow clear best practices or strong repo signals. Medium answers reflect reasonable trade-offs. The agent only auto-selects when it's confident — genuinely ambiguous items are always escalated to you.
Can I combine --auto-clarify with --review=off?
Yes: /LazySpecKit --auto-clarify --review=off <spec>. This gives you the fastest possible run — auto-answered clarification, no post-implementation review. Great for prototyping or when you plan to review manually.
What does LazySpecKit respect from my repo?
LazySpecKit respects agents.md governance files and architecture documentation in .docs/architecture/. A root-level agents.md applies repo-wide; nested ones apply to their directory subtree. Rules are enforced across all phases. Architecture docs inform planning, review, and service reuse.
What is .docs/architecture/ and do I need it?
It contains your project's architecture documentation — components, principles, and integration patterns. Structured for selective loading so agents only read docs relevant to the current task. Created automatically during lazyspeckit init. Without it, LazySpecKit still works but treats each spec in isolation. With it, specs reuse existing components, respect boundaries, and avoid duplication. Use --no-architecture to skip it.
How do architecture docs stay up to date?
LazySpecKit automatically updates architecture docs at the end of every run (Architecture Update phase). New components and integration points are reflected in the docs. Architecture Decision Records (ADRs) are created for significant decisions. Running lazyspeckit architecture:check or lazyspeckit upgrade also checks for gaps.
How is LazySpecKit different from OpenSpec?

Both care about spec-driven development — but they solve different problems. OpenSpec focuses on structured, versioned specification workflows. LazySpecKit focuses on automated execution and convergence to green.

FeatureOpenSpecLazySpecKit
Spec management & proposal workflow✔️Inherits from SpecKit
Structured validation of specs✔️✔️ via /speckit.analyze + auto-fix
Fully automated end-to-end lifecycle✔️
Deterministic phase gates✔️
Auto-clarify with confidence levels✔️
Hands-off mode (--auto-clarify)✔️
Multi-agent autonomous review loop✔️
Auto-fix review findings✔️
Guaranteed final validation✔️
OpenSpec Making specs explicit and collaborative. Structured proposal workflows, versioned spec artifacts, team-oriented change management.
LazySpecKit Taking a spec and autonomously driving it to validated, reviewed, green code — without babysitting. Automation depth and post-implementation refinement.

They are complementary philosophies. OpenSpec excels at making specifications a first-class collaborative artifact. LazySpecKit's differentiator is automation depth — from spec to reviewed, validated code with zero hand-holding.

Uninstall

Remove the CLI
# macOS / Linux
rm ~/.local/bin/lazyspeckit

# Windows Git Bash
rm ~/bin/lazyspeckit
Remove prompts from a repo
rm .github/prompts/LazySpecKit.prompt.md
rm .claude/commands/LazySpecKit.md