skills/rfc-research/SKILL.md
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.
npx skillsauth add vltansky/skills rfc-researchInstall 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.
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.
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.
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):
Question 2 — Research targets (ask if not obvious):
Question 3 — Decision drivers (always ask — priorities shape the RFC):
After answers, present a brief summary:
RFC: [Title]
Problem: [1-2 sentences]
Research targets: [repos/libraries to investigate]
Decision drivers: [ranked list]
Proceed?
Break the RFC topic into 2-5 concrete research questions. Each question maps to octocode MCP tool calls.
Example research questions:
githubSearchCode + githubGetFileContentgithubSearchRepositoriesgithubSearchPullRequestsgithubViewRepoStructurePresent the plan to the user before executing:
## Research Plan
1. [Question] -> [tool] on [target repo/org]
2. [Question] -> [tool] on [target repo/org]
...
Proceed?
Use octocode MCP tools via subagents for parallel investigation.
Rules:
subagent_type="Explore" for octocode MCP calls (keeps main context clean)mainResearchGoal, researchGoal, and reasoningTool 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:
Structure the output using the RFC template below. Every claim must link to evidence found in Phase 3.
RFC Document Structure:
# 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]
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:
docs/rfcs/NNNN-[slug].md/grill-me to stress-test the proposal before committing to it — the RFC is a plan, and plans benefit from adversarial reviewBefore completing each research question, verify:
Before completing the RFC, verify:
No results from octocode:
Too many results:
owner and repo filterspath filter to narrow to specific directoriesstars for quality signalCan't find prior art:
tools
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.
data-ai
Summarize your GitHub activity from the last 24 hours across all repos. Use when user says "what did I do", "my activity", "standup", "recap", "summarize my day", "what-i-did", "git activity", "daily summary".
development
Test-driven development loop. Write failing test first, then implement to make it pass. Use when the user says 'tdd', 'test first', 'write the test first', 'failing test', 'red green refactor', or for any bug fix where the fix should be proven by a test. Also use when autopilot or other skills need test-first execution.
development
Review changed code for reuse, quality, and efficiency, then fix any issues found. Use when the user says "simplify", "simplify this", "review changes", "clean up my code", "check for duplicates", "code reuse review", or wants a post-change quality sweep.