Skip to content
/

SpecSmith

specsmith · radioastronomyio/specsmith · ★ 0 · last commit 2026-04-06

Defines a minimal two-part spec contract (outcome + test gates) that compels verifiable thinking before agentic implementation, with zero tooling dependencies.

Best whenThe value is in the thinking that produces the spec, not the format that contains it — a spec written on a napkin is a real spec.
Skip ifTool dependency (CLI, IDE plugin, package setup), Synthetic example specs in the methodology repo
vs seeds
spec-kitopenspec, and kiro.
Primitive shape
No installable primitives
00

Summary

SpecSmith — Summary

SpecSmith is a pure methodology — no CLI, no package, no runtime dependencies — that defines "outcome-driven specification" as the minimum viable spec format for agentic software development. Its irreducible contract is two things: define the outcome (what done looks like) and define the test gates (how to verify it was achieved). The canonical template adds structured sections (constraints, scope, dependencies, references), but the methodology explicitly permits "minimum form" — a spec written on a napkin with one outcome and one test gate. SpecSmith positions itself against tool-dependent approaches (GitHub Spec Kit, OpenSpec, Kiro) by arguing the methodology's value is in the thinking, not the format: if you can write Markdown and your agent can run tests, you can use SpecSmith. The primary case study is Holdfast, a roguelite deckbuilder built entirely via spec-driven agentic development with 377 tests across 4 milestone cycles. Compared to the seeds, SpecSmith is closest to agent-os in its "maximally portable, zero primitives" philosophy — but differs by being spec-methodology-first rather than CLAUDE.md-first; it is the purest Archetype 4 entry in this batch.

01

Overview

SpecSmith — Overview

Origin

SpecSmith was created by VintageDon (GitHub: @vintagedon) at radioastronomyio. It was formalized from months of practical agentic development across infrastructure automation, game development, and ML pipelines — after the patterns proved reliable. The first attempt ("spec-driven-ai", July 2025) tried to be methodology, infrastructure testbed, and research platform simultaneously and was retired. SpecSmith is the extracted, minimal methodology.

Philosophy

SpecSmith's core thesis is:

"The value is in the thinking that produces the spec, not the format that contains it."

The methodology is built on a stable, two-part contract:

  1. Define the outcome — what done looks like (from the perspective of someone who will accept or reject the result, not someone who will build it)
  2. Define the proof — how to verify the outcome was achieved

Everything else is optional structure.

Manifesto-style Quotes

  • "A spec's job is to capture two things clearly: what the outcome looks like, and how to verify the outcome was achieved."
  • "SpecSmith meets you where you are. You do not need to learn a framework to start."
  • "Start with what you want to accomplish. Then ask: how does the agent know it accomplished that? Write those two things down. That's a spec."
  • "A spec written on a napkin with one outcome and one test assertion is a real spec."
  • "The format scales with you."
  • "Most approaches either prescribe rigid templates with phase gates and tooling dependencies, or leave practitioners with nothing more than a blank prompt window. The first camp adds friction. The second produces inconsistent results."

Lineage

Sean Grove's specification-as-code presentation planted the seed. The approach grew out of real agentic development before it had a name. Formalized after the proof existed, not before.

Two Forms

  • Minimum form: One outcome sentence + 2-3 test gates. No frontmatter. No section structure. Barrier to entry is zero.
  • Canonical form: Full template with YAML frontmatter, numbered sections, structured test gate tables, explicit scope boundaries, dependency references.

What SpecSmith Is NOT

"SpecSmith is a methodology with a reference template. It is not a toolkit, CLI, IDE plugin, or framework."

02

Architecture

SpecSmith — Architecture

Distribution

  • Type: Methodology documentation only (standalone-repo / methodology-doc)
  • Install: None — clone or copy spec/specsmith-spec-template.md into your project
  • Language: None (pure Markdown)
  • Version analyzed: 1.0 (April 6, 2026)
  • License: Code: MIT; Content: CC-BY-4.0

No Runtime Dependencies

SpecSmith has:

  • No CLI binary
  • No package manager entry (no npm, no pip, no cargo)
  • No Node.js, Python, Go, or any other runtime requirement
  • No IDE plugin or extension

Directory Tree

specsmith/
├── methodology/                   # Methodology documentation
│   ├── granularity.md             # Precision slider concept (stub)
│   ├── composition.md             # Modular spec composition (stub)
│   ├── iteration.md               # Spec evolution / spec-as-code (stub)
│   └── README.md
├── docs/                          # Documentation standards
│   └── documentation-standards/
├── spec/                          # The canonical spec template
│   └── specsmith-spec-template.md
├── staging/                       # Pre-commit staging area
├── assets/                        # Infographics
├── AGENTS.md                      # Agent context loading
├── LICENSE                        # MIT (code)
├── LICENSE-DATA                   # CC-BY-4.0 (content)
└── README.md

Target AI Tools

Any agent that can read Markdown. Explicitly tool-agnostic.

Required Setup

  1. Read spec/specsmith-spec-template.md
  2. Write your first spec: one outcome, two or three test gates
  3. Hand it to your agent of choice and build

AGENTS.md Pattern

The repo includes an AGENTS.md file that defines context loading order for agents working on the SpecSmith repo itself:

  1. AGENTS.md → repository identity
  2. README.md → methodology overview
  3. spec/specsmith-spec-template.md → canonical format
  4. methodology/ → concept docs
  5. docs/documentation-standards/ → standards
03

Components

SpecSmith — Components

Commands

None. SpecSmith ships no slash commands, CLI commands, or agent commands.

Skills

None.

Subagents

None.

Hooks

None.

MCP Servers

None.

Scripts

None.

Templates (1)

File Purpose
spec/specsmith-spec-template.md The canonical spec template with all optional sections

Core Primitive: The Spec

The only primitive is the spec itself, which has:

Minimum form:

outcome: <what done looks like>
test_gates:
  - <how to verify gate 1>
  - <how to verify gate 2>

Canonical form sections:

  1. Outcome — observable state after work is complete
  2. Test Gates — table of (what is proven) × (how it is proven)
  3. Constraints — non-negotiable boundaries
  4. Scope — pre-existing / create / out-of-scope
  5. Dependencies — other specs this depends on
  6. References — external resources

Key Concepts (from methodology/)

Concept Description Status
Granularity Precision slider from lightweight to compliance-grade Stub (planned)
Composition Specs referencing other specs as dependencies Stub (planned)
Iteration Specs are source-controlled and evolve via git PRs Stub (planned)

RAVGVR Interaction Pattern

Mentioned in README as a validated interaction pattern for agentic spec-driven work: R-A-V-G-V-R (exact meaning not fully documented in the repo).

05

Prompts

SpecSmith — Prompts

Prompt 1: Canonical Spec Template

Source: spec/specsmith-spec-template.md

Technique: Structured outcome-first template with explicit authorial perspective instruction.

# [Spec Title]

[1-2 sentences: What this spec covers. State the capability or system being specified, 
not the implementation approach.]

---

## 1. Outcome

[Define what done looks like. This is the single most important section. Write it from 
the perspective of someone who will accept or reject the result, not someone who will 
build it.]

[A good outcome statement is verifiable without reading the implementation. It describes 
the observable state of the world after the work is complete.]

---

## 2. Test Gates

[Each gate is a concrete verification that the outcome has been achieved. Gates should 
be runnable: CLI commands, test assertions, inspection steps, or documented evidence.]

| Gate | Verification |
|------|-------------|
| [What is proven] | [How it is proven] |

---

## 3. Constraints

[Non-negotiable boundaries the implementation must respect. Constraints define what 
cannot be violated, distinct from outcomes which define what must be achieved.]

---

## 4. Scope

**Pre-existing (do not create or modify):**
**Create:**
**Out of scope:**

---

## 5. Dependencies

| Dependency | Relationship |
|------------|-------------|
| [Spec or module name](path) | What it provides to this spec |

Notable technique: The outcome section explicitly instructs the writer to adopt the acceptor's perspective, not the builder's. This is a deliberate framing to prevent outcome statements that describe implementation steps rather than observable results.


Prompt 2: Minimum Form Example (from README)

Source: README.md

Technique: Minimal schema enforcement — only outcome + test_gates required.

# The contract at its simplest
outcome: Web service responding on HTTPS with sub-20ms latency
test_gates:
  - curl -k https://localhost returns 200
  - p95 latency < 20ms under 100 concurrent connections
  - SSL Labs score >= A

Notable technique: YAML-format minimum form allows machine-readable specs at zero verbosity. The three test gates are all runnable CLI commands — no ambiguity about what "done" means.


Template Usage Notes (from template comments)

## The Core Contract

SpecSmith specs are built around a stable contract: define the outcome,
define the proof. The level of specificity can range from a lightweight
build spec to a compliance-grade verification matrix, but the contract
does not change.

The outcome:test keypair is the irreducible primitive. Everything else
in this template is optional structure added as needed.
09

Uniqueness

SpecSmith — Uniqueness & Positioning

differs_from_seeds

SpecSmith is closest to agent-os in being a "zero primitives" framework — no commands, no skills, no hooks — where the value is entirely in the template content and the methodology it embodies. However, while agent-os's value is in the CLAUDE.md system prompt content and update conventions, SpecSmith's value is in the spec format itself: a two-part outcome-proof contract that compels verifiable thinking before implementation. SpecSmith is more minimal than agent-os (no CLAUDE.md at all, no template convention for context injection) and more principled about what a specification IS. It explicitly rejects the tooling-centric approaches of spec-kit, openspec, and kiro, arguing that tool dependency is itself a failure mode. No other framework in the seeds or this batch makes the "minimum form = napkin with one outcome" claim — all others require at least a template structure.

Positioning

SpecSmith targets practitioners who want a methodology, not a product. It occupies the "pure methodology" niche: maximally portable (any agent, any editor, any project type), minimal overhead, and validated by real projects before formalization. The Holdfast case study (377 tests, 4 milestones, zero prior game development experience) is the credibility anchor.

Distinctive Opinion

The outcome-from-acceptor-perspective framing is unique: writing the outcome statement from the perspective of "someone who will accept or reject the result" prevents implementation-oriented outcome statements (which describe what to build) and forces observable-state outcomes (which describe what exists after building). This is a subtle but important prompt engineering insight.

Observable Failure Modes

  1. Zero automation: Everything is manual. There is nothing to prevent an agent from skipping the test gates, ignoring the spec, or doing whatever it wants.
  2. No evolution tooling: The iteration concept (specs evolve in git) requires discipline but no enforcement.
  3. Composition is undocumented: The composition methodology doc is a stub. Multi-spec dependency resolution is aspirational.
  4. No community: 0 stars, single contributor — methodology has not found distribution beyond the author.

Explicit Antipatterns

From the AGENTS.md architectural constraints:

  • "No tooling — This repo contains methodology and documentation only."
  • "No synthetic examples — Real specs live in real repos."
  • "Practice before theory — Do not document patterns that have not been validated in at least one real project."

Cross-References

The README explicitly positions SpecSmith against GitHub Spec Kit, OpenSpec, AWS Kiro, and forgespec-mcp — all named as examples of tool-dependent approaches SpecSmith rejects.

04

Workflow

SpecSmith — Workflow

Phases

SpecSmith has no prescribed phase sequence beyond the minimum:

Step Description Artifact
1. Define outcome What done looks like Part of spec
2. Define proof How to verify it was achieved Test gates in spec
3. (Optional) Expand Add constraints, scope, dependencies Full canonical spec
4. Build Hand spec to agent Agent-generated code
5. Verify Run test gates Pass/fail against spec

Approval Gates

None mandatory. The methodology does not define approval gates — it defines only the spec format. Whether to add human review is up to the practitioner.

Spec Format

Markdown. YAML frontmatter optional (canonical form includes it; minimum form omits it).

# Minimum form example from README
outcome: Web service responding on HTTPS with sub-20ms latency
test_gates:
  - curl -k https://localhost returns 200
  - p95 latency < 20ms under 100 concurrent connections
  - SSL Labs score >= A

Canonical Template Sections

  1. [Spec Title]
  2. Outcome
  3. Test Gates (table)
  4. Constraints
  5. Scope (pre-existing / create / out-of-scope)
  6. Dependencies (table: dependency × relationship)
  7. References (table: resource × description)

Spec Evolution (Iteration Concept)

Specs are version-controlled. Git diff of spec = story of how understanding deepened. First-pass gates miss edge cases → spec evolves alongside code. SpecSmith frames spec evolution as the methodology working correctly, not failing.

Composition (Module Reuse)

Specs can reference other specs as dependencies. Example: an "nginx hardened baseline" module written once is referenced by any project needing nginx. Update the module, all referencing specs inherit the updated test criteria.

Execution Mode

One-shot per feature. No loop, no daemon, no orchestrator. User writes spec, hands to agent, verifies result.

06

Memory Context

SpecSmith — Memory & Context

State Storage

None beyond the spec files themselves. SpecSmith produces no index files, no database, no context files.

Memory Type

None.

Persistence

The specs live wherever the practitioner puts them — typically in a spec/ directory under version control. Git provides all the persistence.

Cross-Session Handoff

The spec document itself IS the handoff. An agent resuming work reads the spec → reads the codebase → continues.

Compaction

Not applicable.

Not applicable.

Agent Context Loading (AGENTS.md)

The AGENTS.md file defines a context-loading protocol for agents working on the SpecSmith repository itself:

  1. Load AGENTS.md (repository identity, constraints, conventions)
  2. Load README.md (methodology overview)
  3. Load spec/specsmith-spec-template.md (canonical format)
  4. Load methodology/ (concept docs)
  5. Load docs/documentation-standards/ (documentation templates)

This AGENTS.md pattern is the methodology's own application of spec-driven thinking to its own repo.

07

Orchestration

SpecSmith — Orchestration

Multi-Agent

No. SpecSmith is tool-agnostic and has no orchestration primitives.

Orchestration Pattern

None. Single agent, single spec, sequential execution.

Isolation Mechanism

None. Work happens wherever the agent works.

Multi-Model

No.

Execution Mode

One-shot. User writes spec → agent implements → user verifies gates.

Consensus

None.

Prompt Chaining

Optional. Nothing in the methodology prevents chaining specs (dependency references enable sequential spec execution), but no tooling enforces it.

Auto-Validators

The test gates in the spec ARE the validators, but they must be run manually. Nothing auto-runs them.

Hooks

None.

Git Automation

None — git is used only for version controlling spec files.

Crash Recovery

N/A. A spec is durable; resumption requires only re-reading it.

08

Ui Cli Surface

SpecSmith — UI & CLI Surface

Dedicated CLI Binary

Exists: No

Local UI

Exists: No

IDE Integration

None. Tool-agnostic by design.

Observability

None beyond git history of spec files.

How Users Interact

  1. Copy spec/specsmith-spec-template.md into their project
  2. Write a spec using any text editor
  3. Hand the spec to whatever AI agent they use
  4. Run the test gates to verify

No tooling required beyond a text editor and a capable AI agent.

Related frameworks

same archetype · same primary tool · same memory type

Context-Engineering Handbook ★ 9.0k

Provides a first-principles, research-grounded vocabulary and learning path for context engineering — the discipline of designing…

walkinglabs/learn-harness-engineering ★ 6.6k

Teach harness engineering from first principles (12 lectures + 6 projects) and provide a scaffolding skill (harness-creator) that…

Awesome Harness Engineering (walkinglabs) ★ 2.7k

Curate the authoritative reference list of articles, benchmarks, and tools for harness engineering — the practice of shaping the…

cline-memory-bank (nickbaumann98) ★ 581

Custom instructions + 6-file hierarchical Markdown memory bank so Cline maintains full project context across sessions, with a…

FPF (First Principles Framework) ★ 372

Provides a formal pattern language for making reasoning explicit, traceable, and publishable in mixed human/AI engineering work —…

nexu-io/harness-engineering-guide ★ 134

Provide a practical, code-first reference guide to harness engineering — from first principles to production patterns —…