Concept
RCF and spec-driven development
Spec-driven development (SDD) generates code from a specification. RCF derives that specification from requirements and verifies code against acceptance tests. SDD fits inside RCF’s Build stage.
Last updated
SDD treats the specification as primary. RCF treats requirements as primary, derives the specification from them and uses criterion-derived tests to assess the code.
SDD is a dominant approach to AI-assisted software work in 2026. It addresses a different part of delivery from RCF, despite their shared vocabulary. This page explains that distinction and when each approach fits.
What is spec-driven development?
Spec-driven development treats a written specification as the primary artefact, with the code as a regenerable output. The spec is the place intent lives. Tooling around it validates, regenerates, and traces. When the spec changes, the code follows. When the spec is right, the code is right by construction. The agent has a precise target to aim at, instead of inferring intent from a chat thread.
Several published tools use this approach. GitHub Spec Kit ships as a first-party toolkit. Martin Fowler is publishing on it, surveying Kiro, Spec Kit, and Tessl as three approaches to SDD tooling. AWS shipped Kiro as an agentic IDE built around the idea. Tessl has gone the furthest, treating the spec as the source artefact and the code as a derivable output. BCMS positions SDD explicitly as the answer to the vibe-coding failure mode, where agents produce plausible code that drifts from intent.
Treating code as regenerable output gives agents an explicit target. SDD provides useful structure for teams building with agents.
How is RCF different from spec-driven development?
RCF treats requirements as the source of truth and the spec as a downstream artefact derived from them. The order matters. A spec answers “what does the software do?” A requirement answers “what do we need the software to do, and why?” The second question contains the first. The reverse isn’t true.
SDD specifications often use YAML, structured prompts or configuration documents. These are suitable agent inputs, but do not themselves establish business needs. Priorities, constraints and scope need decisions above the specification. Code can match a specification that describes the wrong product.
RCF answers that question by putting the PRD at the top of the chain and requirements one layer below it, with stories, acceptance criteria, and test cases descending from there, and the code that satisfies each criterion tied back into the same graph. Each layer points up to what justifies it and down to what proves it. The document chain is the chain. The build cycle is how work moves through it. The spec, in the SDD sense, slots in as one artefact among several, somewhere between functional build specifications and the test suite. It is derived from the upstream requirements.
The practical difference: RCF gives you a chain that survives change. When a stakeholder asks why a feature exists, the chain answers. When a requirement changes, traceability makes the impact mechanical. The spec-as-primary version of this is harder, because a spec change doesn’t carry the “why” with it, and the chain back to business intent has to be reconstructed from outside the toolchain.
When SDD is the right reach
SDD alone can be appropriate in the following cases.
A small team may already share stable requirements and write the code themselves. A separate PRD and requirements process can add cost with little benefit. SDD provides a lighter structure for agent-assisted implementation.
SDD suits a bounded service, library or backend whose specification can drive regeneration. Workflows such as Tessl treat code as derived output. Additional methodology may offer little value for code treated as disposable.
SDD can be sufficient for experiments and disposable prototypes. RCF can also use sparse, short requirements while the product is being explored. Scale requirements to what is known and expand them when the prototype becomes a product.
When RCF is the right reach
RCF targets enterprise delivery where the goal is reliable automation from agreed requirements to software. The requirements layer supplies the decisions that the automation must follow.
When a team cannot justify generated code, AI drift may originate above the build. The agent may follow a specification that fails to represent the actual need. RCF links the build back to those business decisions.
When requirements change as stakeholders see the product, the living spec process applies. RCF records change in requirements and stories, above the build specification. It preserves the reasons while requested behaviour changes, supporting automation under enterprise change.
If your organisation has multiple stakeholders, regulated obligations, or audit requirements that need a defensible chain from business decision to running test, the spec-as-source approach doesn’t give you a defensible chain on its own. You can build one on top of SDD tooling, but you’ll be reinventing the requirements layer to do it. That’s the layer RCF starts from, which is why it’s the right reach for organisations that take ownership of intent, not just output.
RCF’s explicit handoffs help when different people write requirements and specifications, with agents implementing code. The acceptance criterion connects business intent to verifiable behaviour and gives each handoff a stable contract.
Is RCF a spec-driven development tool?
No. RCF is requirements-first; SDD is spec-first. RCF uses SDD’s mechanism inside exactly one stage of its build cycle, Build, where an agent generates code against a precise spec, and keeps the criterion-derived tests as the authority on whether the output is right.
How does RCF compare to Spec Kit, Kiro, and BMAD?
GitHub Spec Kit, AWS Kiro, and BMAD are SDD tools: each takes a spec as the primary artefact and drives an agent against it. RCF isn’t a rival tool at that layer. It’s the requirements discipline above them: any of the three could sit in RCF’s Build stage, generating code against a spec the chain has already tied to a business decision, with the AC-derived tests as the gate.
Using them together
The cleanest way to see how they fit is through the RCF build cycle. It runs in five stages: Define, Build, Review, Test, Finalise. Spec-driven development lives in exactly one of them, Build, where an agent generates code against a precise target. The other four stay RCF. Define writes the tests from the acceptance criteria before any code exists; Review checks the diff against intent; Test runs the AC-derived suite as the gate; Finalise closes the slice and updates the chain.
Define establishes criterion-derived tests before Build, and Test verifies the result afterwards. Generated code must pass those tests as well as follow the specification. This retains SDD’s precise target and RCF’s independent verification contract.
The spec the agent builds from and the tests it is checked against are siblings: both descend from the same acceptance criteria. SDD builds from one, RCF tests against the other, and if the two ever diverge, that divergence surfaces at Review or Test as a signal rather than slipping through.
SDD treats code as regenerable output. RCF also registers the current implementation as Code Nodes linked to acceptance criteria. Validation checks those references against the working tree and flags links broken by renames or moves. These approaches can coexist: regenerable code can still have a checked trace to its criteria.
The SDD specification sits around the FBS, downstream of requirements and criteria. The SDD toolchain validates, regenerates and traces between specification and code without consuming the higher layers. RCF records the specification’s business decision. If the specification is wrong, its requirement is available for review.
SDD works at the specification layer. RCF supplies requirements and reasons above that layer. Together they cover generation and the justification for what is generated.
Using both adds two checks. SDD builds against the specification. RCF’s traceability and document chain connect it to the business need. Once the chain exists, the additional maintenance cost is small.
The methodology lineage places SDD among the approaches RCF inherits. It describes four decades of movement toward requirements-first work. Agent-assisted development makes that combination increasingly useful.