rfc-research
Research a technical topic and produce an RFC document backed by real code evidence from GitHub. Use when user says 'write an RFC', 'RFC research', 'create RFC for', 'technical proposal', 'design doc', 'investigate X', 'research X and write a proposal', 'architecture decision record', 'ADR', or needs a structured technical decision document with prior art analysis.
Best use case
rfc-research is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Research a technical topic and produce an RFC document backed by real code evidence from GitHub. Use when user says 'write an RFC', 'RFC research', 'create RFC for', 'technical proposal', 'design doc', 'investigate X', 'research X and write a proposal', 'architecture decision record', 'ADR', or needs a structured technical decision document with prior art analysis.
Teams using rfc-research should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/rfc-research/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How rfc-research Compares
| Feature / Agent | rfc-research | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Research a technical topic and produce an RFC document backed by real code evidence from GitHub. Use when user says 'write an RFC', 'RFC research', 'create RFC for', 'technical proposal', 'design doc', 'investigate X', 'research X and write a proposal', 'architecture decision record', 'ADR', or needs a structured technical decision document with prior art analysis.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# RFC Research
You're landing this RFC on the desk of a chief architect who has no time and no patience. They reject two kinds of documents: shallow ones (hand-wavy claims, no evidence, "we should consider...") and bloated ones (walls of text, obvious statements, sections that exist to look thorough). You get one shot. The RFC must be deeply researched, grounded in real code, and dense enough that every paragraph teaches them something they didn't know. If it reads like filler, it gets rejected. If it lacks evidence, it gets rejected. Deliver a document that respects their time and earns their trust.
## Phase 0: Pre-flight Check
Before starting, verify octocode MCP is available by checking if `mcp__octocode__githubSearchRepositories` (or any `mcp__octocode__*` tool) is in your available tools.
**IF octocode tools are available:** proceed to Phase 1.
**IF octocode tools are NOT available:** stop and tell the user:
```
Octocode MCP server is not configured. This skill requires it for GitHub code research.
Install options:
1. npm (recommended):
npx -y @anthropic-ai/claude-code mcp add octocode -- npx -y octocode-mcp
2. Manual — add to ~/.claude/settings.json under "mcpServers":
{
"octocode": {
"command": "npx",
"args": ["-y", "octocode-mcp"]
}
}
After adding, restart Claude Code and re-run this skill.
```
Do NOT proceed without octocode MCP. The skill cannot produce evidence-backed RFCs without it.
## Workflow
### Phase 1: Scope the RFC
Use the **ask user question tool** to clarify scope before researching. Only ask about what's missing or ambiguous from the user's request — skip questions you can infer. If the host has no such tool, use numbered or labeled reply options.
**Question 1 — Problem & scope** (ask if problem statement is vague):
- "What specific problem are you trying to solve?" with options based on what you inferred from their request
**Question 2 — Research targets** (ask if not obvious):
- "Which ecosystems/repos should I investigate?" with options like specific libraries, orgs, or "Open-ended — find the best options"
**Question 3 — Decision drivers** (always ask — priorities shape the RFC):
- "What matters most for this decision?" with options like: Performance, Developer experience, Compatibility/migration cost, Community/ecosystem size — allow multi-select
After answers, present a brief summary:
```
RFC: [Title]
Problem: [1-2 sentences]
Research targets: [repos/libraries to investigate]
Decision drivers: [ranked list]
Proceed?
```
### Phase 2: Research Plan
Break the RFC topic into 2-5 concrete research questions. Each question maps to octocode MCP tool calls.
Example research questions:
- "How does [library X] implement [feature]?" -> `githubSearchCode` + `githubGetFileContent`
- "What repos solve [problem]?" -> `githubSearchRepositories`
- "What changed when [library] adopted [pattern]?" -> `githubSearchPullRequests`
- "What's the directory structure of [project]?" -> `githubViewRepoStructure`
Present the plan to the user before executing:
```
## Research Plan
1. [Question] -> [tool] on [target repo/org]
2. [Question] -> [tool] on [target repo/org]
...
Proceed?
```
### Phase 3: Execute Research
Use octocode MCP tools via subagents for parallel investigation.
**Rules:**
- ALWAYS use the Agent tool with `subagent_type="Explore"` for octocode MCP calls (keeps main context clean)
- Independent research domains -> parallel agents
- Sequential dependencies -> sequential agents
- Every tool call MUST include `mainResearchGoal`, `researchGoal`, and `reasoning`
- Follow hints in tool responses
- Collect file:line references for every finding
**Tool selection guide:**
| Research Need | Tool | When |
|---------------|------|------|
| Find repos | `githubSearchRepositories` | Discovering projects, comparing solutions |
| Find code patterns | `githubSearchCode` | Locating implementations, API usage |
| Read source | `githubGetFileContent` | Understanding implementation details |
| Explore structure | `githubViewRepoStructure` | Understanding project layout |
| Find PR history | `githubSearchPullRequests` | Understanding why decisions were made |
| Find packages | `packageSearch` | Looking up npm/pypi packages |
**Research depth:**
- For each research question, aim for 2-3 concrete code references
- Read actual implementations, not just READMEs
- Look at PRs for context on why patterns were adopted
- Compare at least 2 approaches when evaluating alternatives
### Phase 4: Synthesize RFC
Structure the output using the RFC template below. Every claim must link to evidence found in Phase 3.
**RFC Document Structure:**
```markdown
# RFC: [Title]
**Status:** Draft
**Date:** [today]
**Author:** [user or team]
## 1. Summary
[2-3 sentence overview of what this RFC proposes]
## 2. Problem
[What problem exists today? Why does it matter?]
[Include metrics, pain points, or user feedback if available]
## 3. Context & Prior Art
[What exists today in the ecosystem?]
[How do other projects/teams solve this?]
For each prior art finding:
- **[Project/Library]**: [How they solve it]
- Evidence: [GitHub URL with line numbers]
- Tradeoffs: [What they gain/lose]
## 4. Proposal
[Detailed description of the proposed solution]
[Include code examples, API sketches, or architecture diagrams]
### 4.1 Design Decisions
[Key decisions and their rationale, backed by research]
| Decision | Choice | Rationale | Evidence |
|----------|--------|-----------|----------|
| [What] | [Chosen approach] | [Why] | [link] |
### 4.2 Implementation Outline
[High-level steps to implement]
## 5. Alternatives Considered
For each alternative:
### 5.N [Alternative Name]
- **Description:** [What this approach does]
- **Pros:** [Advantages]
- **Cons:** [Disadvantages]
- **Evidence:** [Links to repos/code using this approach]
- **Why not:** [Specific reason for rejecting]
## 6. Risks & Mitigations
| Risk | Likelihood | Impact | Mitigation |
|------|-----------|--------|------------|
| [Risk] | Low/Med/High | Low/Med/High | [How to address] |
## 7. Open Questions
[Unresolved items that need further discussion or decision]
## 8. References
[All GitHub URLs, docs, and sources cited in this RFC]
```
### Phase 5: Roast & Distill (Subagent)
**Why a subagent:** The main agent is biased — it spent tokens researching, has sunk-cost attachment to findings, and sees every detail as important. A fresh subagent receives only the RFC text with zero research context. Its clean context window IS the objectivity. It reads the RFC the way a reviewer would: cold.
Spawn a subagent with the following prompt (pass the full RFC markdown as input):
```
You are a senior staff engineer reviewing an RFC you've never seen before. You have 5 minutes. Your job: cut this RFC down to only what's needed to make a decision, then return the edited version.
## Kill on sight
- Obvious statements ("We need good performance", "Security is important")
- Generic risks that apply to any project ("Team needs to learn new tool", "Migration takes time")
- Filler prior art that doesn't inform the decision — if removing it doesn't change the recommendation, cut it
- Hedging language ("It might be worth considering", "One could argue") — take a position or delete
- Redundant alternatives where "Why not" is obvious from the proposal
- Open questions that are just rephrased risks
## Compress
- Prior Art: max 3-4 entries that directly shaped the proposal
- Alternatives: only 1-2 strongest contenders a reviewer might push back with
- Risks: max 3 rows. Low-likelihood AND low-impact = cut
- Implementation: bullet points only, max 5-7 steps
- Design decisions: every row needs an evidence link. No link = cut or flag
## Shorten without losing substance
- Rewrite paragraphs as single sentences
- Replace prose with tables or bullet lists
- Merge sections that say the same thing from different angles
- Inline tiny sections into their parent heading
- Code snippets over prose for behavior ("returns X when Y" → show code)
- Cut transitions ("Now let's look at...", "As mentioned above...")
## Targets
- Summary: exactly 2-3 sentences
- Problem: max 1 paragraph (3 sentences to feel the pain)
- Total: under 500 lines of markdown
## Output
Return the complete edited RFC markdown. Add a brief "## Roast Notes" section at the end listing what you cut and why (this section will be removed before delivery — it's for the main agent to review your cuts).
If any section makes you think "obviously" — that section shouldn't exist.
```
After the subagent returns:
1. Review the roast notes — if any cut removed genuinely important context, restore it
2. Remove the "Roast Notes" section
3. The result is the final RFC
### Phase 6: Deliver
1. Save the RFC to `docs/rfcs/NNNN-[slug].md`
2. Present a summary in the conversation with key findings and the file path
3. Suggest `/grill-me` to stress-test the proposal before committing to it — the RFC is a plan, and plans benefit from adversarial review
## Research Quality Gates
Before completing each research question, verify:
- [ ] At least 2 concrete code references (file:line or GitHub URL)
- [ ] Actual source code was read, not just repo descriptions
- [ ] Both positive evidence (this works) and negative evidence (this doesn't) considered
Before completing the RFC, verify:
- [ ] Every claim in "Prior Art" has a GitHub link
- [ ] "Alternatives Considered" has real-world examples, not hypotheticals
- [ ] "Risks" are grounded in evidence, not speculation
- [ ] "Open Questions" are genuine unknowns, not lazy gaps
## Troubleshooting
**No results from octocode:**
- Broaden search terms, try synonyms
- Search by topic instead of keyword
- Try a different owner/repo combination
**Too many results:**
- Add `owner` and `repo` filters
- Use `path` filter to narrow to specific directories
- Filter by `stars` for quality signal
**Can't find prior art:**
- This is a valid finding - document it as "novel approach" in the RFC
- Search for the problem being solved, not the specific solution
- Look at adjacent ecosystems (e.g., if no React solution, check Vue/Angular)
## References
- For the full RFC template, see [references/rfc-template.md](references/rfc-template.md)Related Skills
ship-it
Create a GitHub PR with conventional format and AI session context. Use when user says 'create PR', 'open PR', 'submit changes', 'send to dev', 'ship it', or is done with their task.
roast-my-code
Brutally honest code review with comedic flair. Roasts the sins, then redeems the sinner. Use when the user says "roast my code", "roast this", "tear this apart", "be brutal", "savage review", "destroy my code", "flame this", or wants entertaining but actionable code feedback. Also triggers on "what's wrong with this code" with a casual tone, "how bad is this", or "rate my code".
roast-my-agents-md
Brutally honest AGENTS.md/CLAUDE.md review backed by real A/B test evidence. Not just opinions — actual proof that your rules are dead weight. Roasts instruction files for bloat, slop, and redundancy, then proves it by running evals. Use when user says "roast my agents.md", "roast my CLAUDE.md", "prove my rules are useless", "eval roast", or wants entertaining evidence-based feedback on their AI config files. Also triggers on "audit my instructions" or "are my rules helping".
retro
Weekly engineering retrospective. Analyzes commit history, work patterns, and code quality metrics with persistent trend tracking. Team-aware: per-person contributions with praise and growth areas. Use when asked to 'weekly retro', 'what did we ship', 'engineering retrospective', 'how was this week', or 'show me the commit stats'. Proactively suggest at the end of a work week or sprint.
hetzner-codex-remote
Prepare a Hetzner Cloud VPS for secure Codex remote SSH access. Use when the user wants to create or configure a Hetzner server for Codex remote control, fix "No codex found in PATH" on a remote machine, install agent development tooling on a VPS, harden SSH access to a Hetzner server, or connect the server through Codex Settings, Connections, Add SSH.
grill-me
Structured adversarial review that pushes back on a plan, challenges the premise, compares alternatives, and stress-tests the design until the main risks are explicit. Use when the user asks to "grill me", stress-test a plan, poke holes in an approach, challenge assumptions, pressure-test a design, or validate an early-stage idea before building ("I have an idea", "is this worth building", "grill me on this idea").
fix-pr-comments
Handle feedback from PR reviewers. For each inline thread: reply on-thread and resolve after user approves. Use when developers left comments on your PR and you need to address them. Triggers on 'address comments', 'fix PR feedback', 'what did the reviewer say', 'handle review', 'resolve comments', 'comments from dev', 'dev feedback'.
design-review
Designer's eye visual audit of a live site — finds typography issues, spacing violations, AI slop patterns, hierarchy problems, interaction state gaps — then fixes them with atomic commits and before/after screenshots. Use when asked to 'audit the design', 'visual QA', 'design polish', 'does this look good', 'check the UI', or 'fix the design'. Proactively suggest when the user mentions visual inconsistencies or wants to polish a live site before shipping.
debug
Systematic root-cause debugging for any bug — backend, frontend, logic, integration. Hypothesis-driven investigation with evidence collection. Use when the user says 'debug', 'investigate', 'why is this broken', 'root cause', 'trace this bug', 'figure out why', 'this doesn't work', or 'unexpected behavior'. For frontend-specific runtime debugging with a log server, use /debug-mode instead.
debug-mode
This skill should be used when debugging frontend/UI bugs that need runtime evidence. USE THIS SKILL (instead of adding console.log) when you're about to say "add console.log and ask user to check", "open DevTools and tell me what you see", "reproduce the bug and share the output", "check the browser console". Triggers: "debug this", "fix this bug", "why isn't this working", "investigate this issue", "trace the problem", "figure out why X happens", "UI not updating", "state is wrong", "value is null/undefined", "click doesn't work", "modal not showing". Automates log collection server-side - you read logs directly, no user copy-paste needed.
chat-history
Search previous AI chat conversations from Cursor IDE and Claude Code by content, affected file, or project. Use when the user asks about previous conversations, wants to find how they solved something before, or needs to recall past AI interactions.
batch
Parallel work orchestration — decompose large changes into 5-30 worktree agents that each open a PR. Use when the user says 'batch', 'do this in parallel', 'split into PRs', 'bulk change', 'mass refactor', or wants a sweeping mechanical change across many files.