internal/skills/content/create-rfd/SKILL.md
Request for Discussion (RFD) creation workflow. Use when exploring technical options, building consensus on architecture decisions, or documenting design rationale before implementation begins. Creates structured documents that capture problem context, evaluate alternatives, and preserve decision-making rationale.
npx skillsauth add ar4mirez/samuel create-rfdInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
RFDs (Requests for Discussion) capture ideas, explore options, and document decisions before implementation. Inspired by IETF's RFC tradition, they enable sharing incomplete ideas early for better outcomes.
Core Principles:
Philosophy: "Ideas should be timely rather than polished." — Oxide Computer Company, RFD 1
| Scenario | Use RFD | Use PRD | |----------|---------|---------| | "Should we use Redis or PostgreSQL for sessions?" | ✅ | | | "Build session management with Redis" | | ✅ | | "Exploring authentication approaches" | ✅ | | | "Implement OAuth with Google and GitHub" | | ✅ | | "Should we adopt a new framework?" | ✅ | | | Multiple valid options, need discussion | ✅ | | | Requirements clear, need implementation plan | | ✅ |
Key Distinction:
Typical Flow:
Idea → RFD (explore options) → Decision → PRD (define implementation) → Tasks → Code
Prediscussion → Ideation → Discussion → Published → Committed
↓ ↓
└─────→ Abandoned
| State | Description | Location |
|-------|-------------|----------|
| Prediscussion | Very early, author still forming idea | .claude/rfd/ |
| Ideation | Ready for informal feedback, not finalized | .claude/rfd/ |
| Discussion | Open for team discussion, seeking consensus | docs/rfd/ |
| Published | Decision made, documented for reference | docs/rfd/ |
| Committed | Implemented, part of the codebase | docs/rfd/ |
| Abandoned | Proposal rejected or superseded | docs/rfd/ |
User describes what they want to explore or decide:
Before asking questions:
CLAUDE.md for tech stack and constraintsrfd-index.yaml for related existing RFDsCLAUDE.md for established conventionsIMPORTANT: Ask clarifying questions to understand the problem space. Provide numbered options for easy responses.
Core Questions (adapt based on topic):
Problem/Goal:
Constraints:
Stakeholders:
Timeline:
Options Awareness:
Success Criteria:
Reversibility:
Based on user answers:
Create RFD using the template structure (see below).
Target Audience: Team members and future developers (clear, explicit, no jargon)
| If... | Initial State | Location |
|-------|---------------|----------|
| Very rough idea, author still thinking | Prediscussion | .claude/rfd/ |
| Ready for informal feedback | Ideation | .claude/rfd/ |
| Ready for team discussion | Discussion | docs/rfd/ |
Default: Start in Ideation state.
rfd-index.yaml (next_number field)rfd-index.yaml:
rfds arraynext_number---
rfd: NNNN
title: Short Descriptive Title
authors:
- name: Author Name
state: Ideation
labels: []
created: YYYY-MM-DD
updated: YYYY-MM-DD
discussion: null
related_prd: null
---
# RFD NNNN: Short Descriptive Title
## Summary
One paragraph (2-4 sentences) describing the proposal or question.
## Problem Statement
What problem does this address? Why is it important? What happens if we do nothing?
## Background
Context that readers need to understand this proposal. Include:
- Current state of the system
- Why this topic is being raised now
- Any previous attempts or related decisions
## Options Considered
### Option A: [Name]
Description of this approach.
**Pros:**
- Benefit 1
- Benefit 2
**Cons:**
- Drawback 1
- Drawback 2
**Effort**: Low / Medium / High
### Option B: [Name]
Description of this approach.
**Pros:**
- Benefit 1
**Cons:**
- Drawback 1
**Effort**: Low / Medium / High
### Rejected Options
Options that were considered but eliminated early:
- **[Option X]**: Rejected because [reason]
- **[Option Y]**: Not viable due to [constraint]
## Proposal
**Recommended option**: [Option A/B/C]
**Rationale**: [Why this option is recommended]
If no recommendation yet (seeking input):
> This RFD is seeking feedback. No recommendation has been made yet.
## Implementation Considerations
High-level implementation notes if the proposal is accepted:
- Key technical considerations
- Migration needs (if any)
- Dependencies or prerequisites
## Security Considerations
Any security implications of this decision:
- New attack surfaces
- Data handling changes
- Authentication/authorization impacts
## Compatibility
- **Breaking changes**: [Yes/No, and what breaks]
- **Migration path**: [How to transition]
- **Backwards compatibility**: [What's preserved]
## Open Questions
Questions that need answers before deciding:
1. [Question 1]?
2. [Question 2]?
3. [Question 3]?
## References
- Related RFDs: [links]
- External resources: [links]
- Related PRDs: [links if applicable]
File Location (based on state):
.claude/rfd/NNNN-rfd-topic-slug.mddocs/rfd/NNNN.mdNaming Convention:
NNNN-rfd-topic-slug.md (e.g., 0042-rfd-api-caching.md)NNNN.md (e.g., 0042.md)Index Update: Add entry to rfd-index.yaml
Ideation → Discussion:
.claude/rfd/ to docs/rfd/NNNN.md formatrfd-index.yaml with new path and discussion linkDiscussion → Published:
rfd-index.yamlPublished → Committed:
rfd-index.yamlNote: This RFD was abandoned on [date] because [reason].
rfd-index.yamlUser can request:
When an RFD decision leads to implementation:
related_prd: 0005-prd-feature-name.mdsource_rfd: 0042Workflow:
1. Complete RFD, state = Published
2. Use .claude/skills/create-prd/SKILL.md
3. PRD references RFD decision
4. When PRD implementation complete, mark RFD as Committed
During regular development, suggest an RFD when:
I notice we're discussing multiple approaches for [topic]. Would you like me
to create an RFD to formally document these options? This will help:
- Capture the pros/cons of each approach
- Document our decision rationale
- Provide context for future developers
Shall I create RFD [next_number]: [suggested title]?
.claude/rfd/)Continue with the conversation normally. The discussion itself provides some documentation via conversation history.
Skip RFD for:
| Workflow | Relationship | |----------|--------------| | create-prd | Creates implementation plan after RFD decision | | document-work | Can identify mini-RFDs worth promoting | | generate-tasks | Breaks down PRD (which may reference RFD) |
rfd-index.yamlRemember: RFDs capture the "why" behind decisions. A year from now, someone will read this and understand not just what was decided, but why other options were rejected. That context is invaluable.
For detailed examples, full state machine documentation, and verbose instructions, see:
development
Zig language guardrails, patterns, and best practices for AI-assisted development. Use when working with Zig files (.zig), build.zig, or when the user mentions Zig. Provides comptime patterns, allocator conventions, C interop guidelines, and testing standards specific to this project's coding standards.
tools
WordPress framework guardrails, patterns, and best practices for AI-assisted development. Use when working with WordPress projects, or when the user mentions WordPress. Provides theme development, plugin architecture, REST API, blocks, and security guidelines.
tools
Toolkit for interacting with and testing local web applications using Playwright. Supports verifying frontend functionality, debugging UI behavior, capturing browser screenshots, and viewing browser logs. Use when testing web apps, automating browser interactions, or debugging frontend issues.
tools
Suite of tools for creating elaborate, multi-component web applications using modern frontend technologies (React, Tailwind CSS, shadcn/ui). Use for complex projects requiring state management, routing, or shadcn/ui components - not for simple single-file HTML/JSX pages.