Skill: Craft RFC
"Design before you build. Write before you code."
RFC vs ADR
| Artifact | Purpose | When |
|---|---|---|
| RFC | Propose a design | Before implementation |
| ADR | Record a decision | After choice is made |
RFC answers: "How should we build X?" ADR answers: "Why did we choose X?"
The Standard
- Location:
.claude/memory/{branch}/rfc/RFC-{Title}.md - Status: Draft → Accepted → Implemented → Superseded
- Structure: Abstract → Problem → Solution → Open Questions
- Scope: One RFC per feature/system
The Protocol
- Interview — Extract requirements via
AskUserQuestion - Visualize — Use
/mapfor structure,/flowfor processes - Draft — Write RFC with diagrams and open questions
- Review — User approves or requests changes
- Accept — Status → Accepted, implementation begins
- Implement — Status → Implemented when complete
Visualization
Complex systems deserve diagrams. Use liberally:
/map— Directory trees, data structures, component hierarchies/flow— Process flows, state machines, request lifecycles
When to Write
| Write RFC | Don't Write RFC |
|---|---|
| New package/library | Bug fixes |
| System redesign | Config changes |
| Complex feature | Simple CRUD |
| Cross-domain work | Single-file changes |
Template
See examples.md for template and real-world examples.