new-rfc
Skill12 starsChanged 5 months agoMITView on GitHub
Use this skill when the user asks to propose, draft, or open an RFC (request for comments). Triggers on "RFC", "propose a change to…", "let's get input on…", "draft a proposal". Do NOT use for already-decided things (use `new-adr`) or single-feature specs (use `new-spec`).
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 7 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈7
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 18
Before invoking, confirm one of:
- Distinctive: line 25
If the change fits inside a single package and breaks no public interface, push back: a normal PR (or a spec, if it's a feature) is enough.
- Distinctive: line 49
Don't write a single body sentence yet.
- Distinctive: line 83
Cite as you go: When a sweep (or a research subagent) surfaces a source, fetch it and confirm it resolves *and* contains the borrowed claim …
- Distinctive: line 143
Citation-integrity protocol: Every reference is fetched.
- Distinctive: line 149
Verify-before-you-assert: Every checkable claim the RFC makes about *itself* (section/field counts, "lighter", "readable") is checked …
- Very specific: line 167
Update docs/rfc/README.md table (create the file with the standard header row if absent).
- Distinctive: line 172
When the RFC is accepted, the *follow-on artifacts* section should list concrete next steps — usually:
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Skill: new-rfc
Open a new RFC in docs/rfc/ from the template — answer-first (lead with
"The ask"), with a per-subpoint research-and-de-risk phase before drafting and
a mandatory self-review gate before handoff. The point: a reviewer gets a
steerable proposal with the decision on top and its options modelled out and
backed by research — not a pile of un-researched questions to rescue. Modeled
on new-spec's assumption checkpoint, plus the per-decision recommendation
pass RFCs need and specs don't.
When to invoke
Before invoking, confirm one of:
- The change touches multiple packages or affects external users.
- The change reverses a previous ADR.
- The change adds, removes, or modifies a top-level convention.
- The user explicitly wants discussion before implementation.
If the change fits inside a single package and breaks no public interface, push back: a normal PR (or a spec, if it's a feature) is enough.
Procedure
Find the next number. The bundled helper prints the next 4-digit ordinal —
0001if no RFCs exist yet, max-plus-one otherwise. It parses the full digit prefix, so a00099-foo.mdcorrectly yields0100(not0010):python3 scripts/next-ordinal.py docs/rfc(The script lives next to this
SKILL.mdunderscripts/. Python is preferred overls | grep | sed | sortso the snippet works the same way on native Windows, macOS, and Linux.)- Copy this skill's bundled
assets/rfc.mdintodocs/rfc/and rename toNNNN-<kebab-title>.md. (Paths are skill-relative — theassets/folder lives next to thisSKILL.mdwherever your IDE installed the skill.) Research + de-risk checkpoint — gated. With the file scaffolded, stop. Don't write a single body sentence yet. A complex RFC is a tree, not one blob: research the subpoints, model the options out, and de-risk your own riskiest assumption before handing anything to a reviewer. A single shallow up-front sweep is the failure this replaces.
Work the proposal as decisions/subpoints, emitting findings in chat (not into the gated body):
- Decompose first. Break the proposal into its decisions/subpoints. The research unit is the subpoint, not the whole RFC.
- Research each subpoint independently:
- Repo sweep. Grep
docs/CHARTER.md,docs/CONVENTIONS.md,docs/adr/,docs/rfc/,docs/specs/, anddocs/architecture/for precedent and conflicts the subpoint touches. Cite each hit with file path. - External sweep. If web search is available (
WebSearchin Claude Code; the equivalent elsewhere), look up how comparable projects, languages, or processes handled this shape of problem (Rust RFCs, PEPs, IETF BCPs, internal RFCs from similar orgs). Cite each as a markdown link. If web search isn't available, say so explicitly rather than fabricating citations.
- Repo sweep. Grep
- Enumerate each option/scenario space to be collectively exhaustive (MECE) along a stated axis, and ground every option in prior art (how have others taxonomised this?) rather than inventing categories. A small round count (e.g. exactly 3) with no exhaustiveness argument or sources is a smell to challenge, not a finish line. Always include do-nothing.
- Self-Ask. Resolve research-answerable questions yourself and fold the answers into the findings — they should not reach the human as open questions.
- Spike the riskiest assumption. Identify the one assumption that, if false, sinks the proposal; run a small/timeboxed check and report the result — or state explicitly why no spike is needed. Do your own experimentation; don't hand the reviewer an untested guess.
- Cite as you go. When a sweep (or a research subagent) surfaces a source, fetch it and confirm it resolves and contains the borrowed claim before that claim enters the findings. Never pass an unverified citation through.
- Recommend per decision. For each decision/subpoint: the question, what repo precedent suggests, what external prior art suggests, and a recommended answer with one-sentence reasoning + owner + decide-by. Cap genuinely-open questions at ~3.
Emit the findings under exactly these headings:
RESEARCH FINDINGS: ## Decisions / subpoints 1. **<subpoint>** — options (MECE along <axis>, prior-art-grounded): … · recommendation: … · owner: … · decide-by: … ## Prior art (in repo) - … ## Prior art (external) - … ## De-risk - Riskiest assumption: … · spike result (or why none needed): …Then wait for human confirmation, rejection, or revision per recommendation. Do not write into any body section until the user has signed off. Accepted recommendations fold into the body; ones rejected without an alternative, or genuinely deferred, stay in
Open questions— with a recommended default + owner + decide-by, never bare.- Draft the body, answer-first. Lead with The ask; then route the
findings: repo precedent →
Problem & goals/Evidence & prior art; external precedent and the spike result →Evidence & prior art. Sections to push hardest on:- The ask. The decision a reviewer must make, in plain language, on top — Recommendation (BLUF) + SCQA framing + numbered decisions, each with a recommended option + decide-by.
- Problem & goals. Diagnosis before solution; real Non-goals (could-have-been-goals deliberately dropped), not negated goals.
- Options considered. MECE along a stated axis, each grounded in prior art, including do-nothing. If you can't articulate ≥2 genuinely distinct options, the proposal isn't honest yet.
- Risks & what would make this wrong. Pre-mortem + falsifiable assumptions + drawbacks. If they say "no drawbacks", push back.
- Evidence & prior art. Empty prior art is a finding (no one has done this) — surface it; never leave it blank or fabricated.
- Open questions. Each carries a recommended default + owner + decide-by; aim for ≤3.
- Experiment / validation (optional). Only if the proposal needs an
experiment: hypothesis + what you measure + success/failure criteria.
Route results to a linked spike note, not the RFC body; keep the RFC
Openwhile the trial runs and move it to a terminal status once the results land. Delete the section otherwise.
- Pre-handoff gate — mandatory, before status → Open. Each item is
executed and its result recorded, never self-certified:
- Citation-integrity protocol. Every reference is fetched; it must both resolve and actually contain the claim or statistic it is cited for (a link that merely loads is not enough). Citations surfaced by a research subagent get the same treatment. If a claim can't be confirmed, downgrade or drop it. The rule is symmetric: challenge a citation by fetching it too — never by judging whether an identifier "looks real".
- Verify-before-you-assert. Every checkable claim the RFC makes about itself (section/field counts, "lighter", "readable") is checked against the artifact, not asserted.
- Per-subpoint backing. Each decision/subpoint is independently backed by research; each enumeration is MECE along a stated axis and prior-art- grounded, not invented.
- Completeness checklist (YES/NO). Approver named? every decision carries a recommendation? do-nothing present? ≤3 owned open questions? no item is simultaneously a decided default and an open question? all internal cross-references resolve?
- Different-lens review. Dispatch a subagent matching
adversarial-reviewer(fresh context) — mandatory, re-run until it reports clean; addsecurity-reviewerif the RFC touches a security boundary. If no such subagent is installed, note it in the summary rather than skipping silently.
- Set status to
Draftuntil the user is ready to circulate, thenOpen. - Update
docs/rfc/README.mdtable (create the file with the standard header row if absent).
After acceptance
When the RFC is accepted, the follow-on artifacts section should list concrete next steps — usually:
- One or more ADRs to record the architectural decisions.
- One or more specs in
docs/specs/for features. - Edits to
docs/CONVENTIONS.mdif the RFC changes conventions.
The RFC itself is then "done" and stays as historical record.
Anti-patterns to refuse
- Writing into the RFC body before the checkpoint clears → see step 3.
- A single shallow up-front sweep standing in for per-subpoint research on a multi-decision RFC → decompose and back each subpoint.
- Enumerating an option/scenario space by inventing a small round number of categories (e.g. exactly 3) with no exhaustiveness argument or prior-art grounding → make it MECE along a stated axis, and source it.
- Bare open questions with no recommended default + owner → if the question hasn't been searched against repo + external prior art, the research phase wasn't done. Send it back.
- Passing any citation — especially one surfaced by a subagent — into the draft without fetching the source and confirming the borrowed claim is in it (a link that resolves is not enough; this is the single most-documented LLM-drafting failure). Challenge a citation the same way — by fetching — never by judging whether an identifier "looks real".
- Asserting any self-claim or a "gate passed" status without having run the check.
- Empty
Evidence & prior artwhile web search was available and comparable processes plainly exist → "we didn't look" isn't an answer. When web search wasn't available, say so explicitly under the heading and never fabricate citations to fill it.
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- eugenelim/agent-ready-repo★ 27same name
- Roger-luo/agx★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository8 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- bug-fixSkill
- new-adrSkill
- new-specSkill
- security-checklistsSkill
- update-conventionsSkill
- work-loopSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

