ワンクリックで
vs-rfc-research
Use when asked to write an RFC, ADR, technical proposal, or research a technical decision with code evidence.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Use when asked to write an RFC, ADR, technical proposal, or research a technical decision with code evidence.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Analyze Codex, Claude Code, or Cursor threads, transcripts, and transcriptions. Use for thread analysis, transcript review, conversation audits, agent-performance diagnosis, comparing sessions, finding loops or corrections, and extracting decisions, outcomes, evidence, and actionable improvements.
Internal reference for vs shared conventions: artifact paths, project ID resolution, storage preference, and skill taxonomy.
Use when asked to scan a named external repo for ideas worth porting. Produces a cited, ranked steals report.
Use when asked to QA, test this site or app, find bugs, or test and fix a user-facing interface. Runs harness-aware browser or computer-use QA, fixes issues, and re-verifies.
Use when the user wants to create/open a pull request, submit changes for review, send changes to dev, or otherwise ship local Git changes. Also use for explicit commit and push or push to main/master or the current branch requests. Requires affirmative publish intent; do not use for review/readiness-only requests. Creates and verifies a GitHub PR by default; honors explicit direct pushes and babysits only when requested.
Use when asked to watch a PR, fix CI, address review comments, or keep a branch merge-ready in a loop.
| name | vs-rfc-research |
| description | Use when asked to write an RFC, ADR, technical proposal, or research a technical decision with code evidence. |
| metadata | {"author":"vltansky","version":"1.0.0","mcp-server":"octocode","category":"research","tags":["rfc","research","architecture","decision-record","proposal"]} |
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 delegating, load and follow
../vs-internal-shared/references/subagents.md.
Before starting, verify octocode MCP is available by checking if mcp__octocode__githubSearchRepositories (or any mcp__octocode__* tool) is in your available tools. The vs plugin includes octocode in its plugin .mcp.json, so absence usually means the host did not load plugin MCP config for this session.
IF octocode tools are available: proceed to Phase 1.
IF octocode tools are NOT available: check whether the user explicitly constrained the task to a local codebase / fixture and asked you to use standard local tools instead of GitHub research.
Use this local-evidence mode only when the instruction is explicit (for example: "the fixture is local", "analyze the current repo", "use Read/Grep/Glob tools", or equivalent). In that case:
path:line) rather than GitHub URLsIF octocode tools are NOT available and the task is not explicitly local-only: stop and tell the user:
Octocode MCP is not active in this session. The vs plugin ships an octocode MCP config in `.mcp.json`; reload or reinstall the plugin MCP config, then start a fresh session and re-run this skill.
Do NOT proceed without octocode MCP unless the user explicitly requested local-evidence mode. The skill cannot claim GitHub-backed research 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 through bounded Explore children. Group related research questions by evidence domain and dispatch one Explore child per evidence domain, not one child per query or tool call. Separate children only when domains are genuinely independent, such as repository implementation, migration history, and ecosystem alternatives.
Rules:
subagent_type="Explore" for octocode MCP callsmainResearchGoal, 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]
Before the roast subagent sees the draft, self-audit the RFC against six named cognitive traps. Each guard is a concrete question you must answer on the record — not a meta-mention. Mark each as resisted, applied correction, or not applicable, and briefly say why.
Write the audit as a short section added to the RFC:
## 9. Bias Guard Self-Audit
- **Anchoring:** [resisted|applied correction|not applicable] — [one-line reason tied to evidence]
- **Confirmation bias:** [status] — [one-line reason]
- **Sunk cost:** [status] — [one-line reason]
- **False dichotomy:** [status] — [one-line reason; name the "do nothing" outcome]
- **Handwaving risks:** [status] — [one-line reason]
- **Appeal to popularity:** [status] — [one-line reason tied to a codebase requirement]
If any guard catches a real correction, apply it to the RFC body before Phase 5. The self-audit documents the correction; it does not replace fixing it.
The Phase 5 roast subagent is instructed not to cut this section.
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 reads the draft cold.
Write the draft to its intended RFC path, or to a temporary file outside the project when the final path is not available yet. Give the reviewer the draft file path; do not paste the full RFC into the child prompt. Ask for at most 15 specific edit directives rather than another full copy of the RFC. The parent owns the document and applies accepted edits.
Spawn a subagent with the following prompt:
You are a senior staff engineer reviewing an RFC you've never seen before. Read
the RFC at [draft file path]. You have 5 minutes. Identify what to cut or tighten
so only decision-relevant evidence remains.
## 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
## Protected (do NOT cut)
- The "Bias Guard Self-Audit" section — it documents reasoning discipline and must remain visible to the reviewer
## 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 at most 15 edit directives, ordered by impact. Each directive names the
heading or exact passage, the action (cut, compress, restore evidence, or
rewrite), and why it improves the decision. Do not return the complete RFC.
If any section makes you think "obviously" — that section shouldn't exist.
After the subagent returns, verify each directive against the evidence and apply accepted edits in the parent. Reject cuts that remove decision-critical context. The edited draft becomes the final RFC.
For high-risk RFCs or disputed tradeoffs, use
independent-advisors
only when child budget remains after research and the cold review. Otherwise
test the central decision in the parent against the strongest contrary evidence;
do not exceed the shared budget. If the RFC contains a performance claim, load
../vs-perf/SKILL.md when available and include the evaluator or
benchmark contract before recommending implementation.
Resolve $PROJECT_ID (see ../vs-internal-shared/SKILL.md):
PROJECT_ID=$(git config --get remote.origin.url 2>/dev/null \
| sed -E 's#\.git$##; s#.*[:/]([^/]+/[^/]+)$#\1#; s#/#-#g')
[ -z "$PROJECT_ID" ] && PROJECT_ID=$(basename "$PWD")
Save the RFC to ~/.vs/$PROJECT_ID/rfcs/NNNN-[slug].md (create the directory if missing; pick NNNN as the next sequential number in that folder)
If the user explicitly asked for the RFC itself in the response, output the full final RFC markdown in chat. Otherwise present a concise summary with key findings and the file path.
Suggest /vs-pushback to stress-test the proposal before committing to it — the RFC is a plan, and plans benefit from adversarial review
Before 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:
Direct: emit Next only. Composed: return to caller.
Prev: /vs-github-research | technical decision
Next: /vs-pushback
Relevant: /vs-setup-adr