Create RFC
Produce one RFC per invocation. An RFC proposes a decision that has not
yet been made and drives stakeholder alignment; if the decision is already
made, use /create-adr to record it. Follow the five-step process — do not
skip Step 2 (validate mandatory fields) or draft before every mandatory
field is present.
Hard rules
- Never invent facts. If a mandatory field is missing, ask. Never fill
Background, Assumptions, or Options with plausible-sounding filler.
- Never present a foregone conclusion. If only one option is real, the
document is an ADR, not an RFC — use
/create-adr instead.
- Decision criteria come before options. Criteria written after options
look like justification for a preferred choice.
- Include "do nothing" as an explicit option for any significant change.
- Never skip trade-offs. Every option needs honest cons alongside pros.
- Never write in a language other than the user's. Match the language
the user is using in this session.
Dispatch
Run the process in order. Read the matching reference file fully before
acting — it is the playbook for that step.
| Step |
Read |
Purpose |
| 1 — Gather context |
references/process.md |
Ask for topic, impact, urgency, options in mind |
| 2 — Validate mandatory fields |
references/process.md |
Ensure title, background, RACI, criteria, options, recommendation are present |
| 3 — Tailor to RFC type |
references/types.md |
Technical / Process / Product / Vendor / Policy — extra focus areas |
| 4 — Generate |
templates/rfc.md + references/numbering.md |
Fill template, assign number, run quality checklist |
| 5 — Place + next steps |
references/process.md |
Confirm file location, print summary + follow-ups |
Run the quality checklist (references/quality.md) before finalizing —
honest options, weighted criteria, quantified background, explicit
assumptions.
Template
Pure markdown scaffold. Load only when writing:
templates/rfc.md — mandatory + recommended sections. Delete any
recommended section that would be empty; keep every mandatory section
even if the value is *to be confirmed*.
Universal rules
- Honesty. Options are compared honestly against the criteria; pros
and cons are real; assumptions are surfaced with confidence levels and
invalidation triggers.
- "Do nothing" is always an option for significant changes — it forces
honest evaluation of whether change is worth the cost.
- Outcome is a placeholder during drafting — fill it after the
decision is made, then link to the resulting ADR if the decision is
worth preserving.
- RFCs are for decisions, not implementation. Once decided, hand off
to
/create-adr (record) and /forge (build).
- Date everything and record the impact level up front.
- Language adaptation. Always write the RFC in the user's language.
- Confirm before writing. Suggest the file path in Step 5; write only
after the user confirms placement.
Sibling skills
Reach for these at any point in the flow:
/create-adr — the decision has been made. Use ADR to record the
what/why/consequences as an immutable historical record. RFC → decision →
ADR is the natural flow for significant choices.
/forge — spec-driven implementation. Once the RFC is decided, use
/forge specify | design | plan | execute to break the chosen option
into shippable work.
Attribution
Based on create-rfc
by Tech Leads Club, licensed under
CC-BY-4.0. Changes have been
made to the original.
1---2name: create-rfc3description: Creates structured Request for Comments (RFC) documents that propose a change, compare alternatives against explicit decision criteria, and drive aligned decisions across teams. TRIGGER when: the user asks to create or write an RFC, draft a proposal, compare options, align stakeholders, get approval for a significant change, or propose a technical/process/product/vendor/policy change before deciding. SKIP for: decisions that have already been made (use `/create-adr` to record them), implementation planning or breaking work into tasks (use `/forge plan`), or informal one-off asks that don't need stakeholder alignment.4---56# Create RFC78Produce one RFC per invocation. An RFC proposes a decision that has *not*9yet been made and drives stakeholder alignment; if the decision is already10made, use `/create-adr` to record it. Follow the five-step process — do not11skip Step 2 (validate mandatory fields) or draft before every mandatory12field is present.1314## Hard rules1516- **Never invent facts.** If a mandatory field is missing, ask. Never fill17 Background, Assumptions, or Options with plausible-sounding filler.18- **Never present a foregone conclusion.** If only one option is real, the19 document is an ADR, not an RFC — use `/create-adr` instead.20- **Decision criteria come before options.** Criteria written after options21 look like justification for a preferred choice.22- **Include "do nothing" as an explicit option** for any significant change.23- **Never skip trade-offs.** Every option needs honest cons alongside pros.24- **Never write in a language other than the user's.** Match the language25 the user is using in this session.2627## Dispatch2829Run the process in order. **Read the matching reference file fully before30acting** — it is the playbook for that step.3132| Step | Read | Purpose |33|------|------|---------|34| 1 — Gather context | `references/process.md` | Ask for topic, impact, urgency, options in mind |35| 2 — Validate mandatory fields | `references/process.md` | Ensure title, background, RACI, criteria, options, recommendation are present |36| 3 — Tailor to RFC type | `references/types.md` | Technical / Process / Product / Vendor / Policy — extra focus areas |37| 4 — Generate | `templates/rfc.md` + `references/numbering.md` | Fill template, assign number, run quality checklist |38| 5 — Place + next steps | `references/process.md` | Confirm file location, print summary + follow-ups |3940Run the quality checklist (`references/quality.md`) before finalizing —41honest options, weighted criteria, quantified background, explicit42assumptions.4344## Template4546Pure markdown scaffold. Load only when writing:4748- `templates/rfc.md` — mandatory + recommended sections. Delete any49 recommended section that would be empty; keep every mandatory section50 even if the value is `*to be confirmed*`.5152## Universal rules53541. **Honesty.** Options are compared honestly against the criteria; pros55 and cons are real; assumptions are surfaced with confidence levels and56 invalidation triggers.572. **"Do nothing" is always an option** for significant changes — it forces58 honest evaluation of whether change is worth the cost.593. **Outcome is a placeholder** during drafting — fill it after the60 decision is made, then link to the resulting ADR if the decision is61 worth preserving.624. **RFCs are for decisions, not implementation.** Once decided, hand off63 to `/create-adr` (record) and `/forge` (build).645. **Date everything** and record the impact level up front.656. **Language adaptation.** Always write the RFC in the user's language.667. **Confirm before writing.** Suggest the file path in Step 5; write only67 after the user confirms placement.6869## Sibling skills7071Reach for these at any point in the flow:7273- **`/create-adr`** — the decision *has* been made. Use ADR to record the74 what/why/consequences as an immutable historical record. RFC → decision →75 ADR is the natural flow for significant choices.76- **`/forge`** — spec-driven implementation. Once the RFC is decided, use77 `/forge specify | design | plan | execute` to break the chosen option78 into shippable work.7980## Attribution8182Based on [create-rfc](https://github.com/tech-leads-club/agent-skills/blob/main/packages/skills-catalog/skills/(creation)/create-rfc/SKILL.md)83by [Tech Leads Club](https://github.com/tech-leads-club), licensed under84[CC-BY-4.0](https://creativecommons.org/licenses/by/4.0/). Changes have been85made to the original.