agentleFS
rajanrxrajanrx/skills/skills/rfc-author/SKILL.md

rfc-author

Skill2 starsChanged 29 days agoMITView on GitHub

Write an RFC — the design document that sits between a problem and the change that implements it. Use when a change is large enough to need its shape agreed before code, when asked to "write an RFC" or "design this", or when a recorded decision needs a worked design to land it. Covers the seam between a brief (what and why) and a spec (exactly what will exist).

The file

We split this skill into the rules it gives an agent

2 rules. About 0 are common, 1 is distinctive, and 1 is very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    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
  1. Very specific:

    Use a decision record (ADR) when one durable cross-cutting decision is the whole subject — adr-author if installed.

    line 16
  2. Distinctive:

    Do not write an RFC to restate a proposal, a task list, or an existing spec.

    line 18

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

RFC author

An RFC is the worked design: given a problem and a decision, here is the shape of the thing, the alternatives weighed, and what it costs.

When not to use

  • A bounded change whose design fits coherently in its own change notes keeps it there.
  • Use a decision record (ADR) when one durable cross-cutting decision is the whole subject — adr-author if installed.
  • Do not write an RFC to restate a proposal, a task list, or an existing spec.

Where it sits

ArtifactAnswers
brief / ticketwhat and why — the problem, in the customer's terms
RFChow, at design level — the shape, the seams, the migration
ADRthe one cross-cutting decision an RFC may depend on or produce
spec / rulewhat will be true afterwards
planthe ordered steps to build it

⚠️ An RFC that decides one thing should be an ADR. An ADR that carries a whole design should be an RFC with an ADR extracted. If you cannot say which you are writing, you are not ready to write either.


Body

## Summary            one paragraph a busy reader can stop after
## Problem            the forces, with evidence — not "it would be nice"
## Goals              what success looks like, testably
## Non-goals          ⛔ do not skip this
## Design             the shape: entities, seams, flows, states
## Migration          how we get from here to there, INCLUDING the half-done state
## Alternatives       what else was considered, with why-not
## Risks & unknowns   what could make this wrong
## Open questions     with owners

The three that get skipped and shouldn't

🔶 ## Non-goals. Most RFC arguments are really scope disputes. Naming what this deliberately does not do ends them before they start.

🔶 ## Migration must describe the half-done state. Every real change has a window where both shapes exist. A strangler migration rarely fails on the new design — it fails because nobody wrote down how long the overlap was meant to last, so it became permanent. Say what the overlap looks like and what ends it.

🔶 ## Risks & unknowns. An RFC with no risks has not been thought about. Mark genuine unknowns as unknown rather than guessing — [UNVERIFIED] is a legitimate thing to ship in a design document.


Status and immutability

draft → accepted → superseded.

⛔ An accepted RFC is not rewritten. Supersede it, or append a dated correction block. A correction recording "the runtime does not do what this says" is the highest-value content an RFC can carry — it is exactly what a reader cannot derive from the code.

⚠️ Prefer a dated correction over a headline status line. A status can assert something a correction below it disproves; a reader who trusts the headline and stops there can build an entire implementation on a design that was already known to be wrong.


Before you finish

  • Could a reader stop after ## Summary and still act correctly?
  • ## Non-goals is populated
  • ## Migration describes the overlap and what ends it
  • Alternatives have real why-nots, not strawmen
  • Any cross-cutting decision inside it extracted to an ADR
  • Unknowns marked, not guessed

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

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.