RFC-driven development for AI coding agents
Decide what to build before your agent builds it.
idea or existing code→verified PRD→features→rules→sequenced RFCs→reviewed, tested code
AI coding agents write code well. They are worse at deciding what to build, remembering yesterday's decisions, and noticing when two documents disagree. Every step here writes a markdown file the next step reads, so decisions outlive the chat session — and a script checks the files still agree. No CLI to learn, no framework, no lock-in.
RFC-driven since March 2025 — before Claude Code or Cursor had a plan mode, and before Kiro or Spec Kit existed.
Install the plugin from inside Claude Code:
/plugin marketplace add nurettincoban/ai-prd-workflow /plugin install prd-workflow@ai-prd-workflow
Plugin commands carry the plugin's name: /prd-workflow:create-prd.
Install the skills into your project:
curl -fsSL https://raw.githubusercontent.com/nurettincoban/ai-prd-workflow/main/install.sh | bash -s -- /path/to/your/project
In Codex, type $create-prd instead of /create-prd.
ChatGPT, Claude.ai, or anything else that takes a prompt: open a prompt from the commands below, copy it, and paste it in. Each prompt works on its own.
Restart your AI tool after installing. A running session does not see new skills, so the first command fails with Unknown skill — which looks like a broken install but is only a stale session.
/workflow-status run on the repo's own v2.0 example, condensed. Full reportHow it works
Run the commands in order. Each one reads the files the previous ones wrote. Not sure what comes next? /workflow-status tells you.
Define what to build
Start from an idea, or from code that already exists.
Plan how to build it
Small units of work, in dependency order, with tests planned up front.
/extract-featurespromptTurns requirements into features with permanent IDs and MoSCoW priorities.
FEATURES.md/generate-rulespromptSets the standards the agent must follow, with dependency versions checked against the registry.
RULES.md/generate-rfcspromptSplits the work into small RFCs in dependency order, then checks each one with a fresh reader.
RFCs/ RFCS.mdBuild it, one RFC at a time
Plan, approve, code, prove — then review in a fresh context.
/implement-rfc <id>promptPlans, waits for your approval, writes the code, then runs the build and tests to prove each criterion.
/review-rfc <id>promptReviews the code against the RFC, the rules, and the test plan, in a fresh context.
reviews/↻ Then the next RFC.
Plan, approve, then code
/implement-rfc stops after the plan and waits for you.
Review with fresh eyes
/review-rfc will not review code written in the same conversation. In Claude Code it runs in a separate context automatically.
IDs never change
Requirements, features, rules and RFCs cite each other by ID. trace-check.py fails when a citation breaks or a Must-have feature has no RFC.
One file wins
When files disagree, PRD.md wins over FEATURES.md, then RULES.md, then the RFCs — and the other file is flagged for correction.
Your agent has a plan mode. It plans one task.
This workflow plans the product. The two work together: /generate-rfcs decides what the next piece of work is, and /implement-rfc hands your agent's planner a small, well-defined task.
| Built-in plan mode | This workflow |
|---|---|
| Plans one task: "how do I build this?" | Plans the product: what are we building, for whom, and what is out of scope? |
| The plan disappears with the session | PRD, features, rules and RFCs stay — across sessions, models, tools and teammates |
| Takes your request at face value | Interviews you first, so decisions are written down before any code exists |
| Reviews code by "looks right" | Reviews against written acceptance criteria, and checks the files against each other |
Each step catches what the others cannot
Measured by building a real TypeScript library end to end with the workflow, from a real PRD — and checkable by you on the example in this repository.
cross-document problems found by /workflow-status in a fresh context that never saw our list. See the example
PRD problems found by /verify-prd on the same example — plus several we had missed.
The eval suite runs the same checks with and without the workflow, so the difference is measured, not claimed.
/verify-prdA function contradicting the PRD's own convention; an unspecified color space; a hidden rendering dependency.
It compared the spec with the reference implementation.
RFC edge casesThat the pinned TypeScript version would break the build; a clone-aliasing bug.
It reasoned about code that did not exist yet.
/review-rfcA geometry leak on an error path; unvalidated NaN inputs.
All 17 acceptance criteria had already passed.
/test-strategyNormals never checked for being finite, so degenerate geometry rendered black while every test passed.
It asks which tests should exist, not which do.
/workflow-statusTwo required files never created, while their RFC was reported complete.
It checked claims against the files on disk.
Fresh-reader checkAn RFC that contradicted itself; a criterion that could only pass by luck.
The author had read past both, repeatedly.
Before any code existed, an RFC's edge-case section predicted that a build plugin would not support TypeScript 7 yet, and named the fallback version. That is exactly what happened. Type-checking passed throughout, so only running the build revealed it.
Works where you work
install.sh puts the skills where each tool looks for them, and never overwrites a skill you have edited.
| Tool | Folder | Run a command |
|---|---|---|
| Claude Code | .claude/skills/, or the plugin | /create-prd |
| GitHub Copilot (VS Code, CLI) | .agents/skills/ | /create-prd |
| Cursor | .agents/skills/ | /create-prd, from the / menu |
| Gemini CLI | .agents/skills/ | /create-prd |
| OpenCode | .agents/skills/ | /create-prd |
| Devin | .agents/skills/ | /create-prd |
| Codex | .agents/skills/ | $create-prd, or pick it from /skills |
Try it on the example first
The repo's v2.0 example looks complete, and it is not. Run /workflow-status on it and compare the report with the problems we found by hand.
git clone https://github.com/nurettincoban/ai-prd-workflow.git cd ai-prd-workflow ./install.sh examples/url-shortener/before