review-rfc
Skill73 starsChanged 7 days agoApache-2.0View on GitHub
Review an Incan RFC document for formatting, structural, and content issues before GitHub submission. Use when the user asks to review an RFC, check an RFC for problems, prepare an RFC for submission, or says /review-rfc.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- grafana/gcxtheir own version, first seen Nov 2, 2026
- nurettincoban/ai-prd-workflowtheir own version, first seen Oct 1, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- grafana/gcx★ 819same name
- nurettincoban/ai-prd-workflow★ 300same 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 repository30 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- add-learningSkill
- bump-rfcSkill
- closeoutSkill
- create-github-issueSkill
- create-planSkill
- create-pr-descriptionSkill
- fixSkill
- flag-compiler-bugSkill
- fleet-auditSkill
- hello-worldSkill
- loopSkill
- orchestrate-parallel-workSkill
- ralph-loopSkill
- review-and-fixSkill
- review-architectureSkill
- review-code-smellsSkill
- review-docs-claimsSkill
- review-incan-source-qualitySkill
- review-orchestrateSkill
- review-rust-proseSkill
- review-scopeSkill
- reviewSkill
- review-test-styleSkill
- start-workSkill
- testSkill
- write-commit-messageSkill
- write-rfcSkill
- yeet-prSkill
The file
We split this skill into the rules it gives an agent
9 rules. About 0 are common, 3 are distinctive, and 6 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
6
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 10
Read the RFC document in full.
- Very specific: line 11
Read the Status: field in the header — it controls which checklists apply (see Status-aware checks below).
- Very specific: line 12
Verify the RFC number is not already taken — check workspaces/docs-site/docs/RFCs/ for conflicts.
- Very specific: line 15
If no GitHub issue exists yet, ask the user before creating one (see Issue creation).
- Distinctive: line 16
If review materially changes RFC filenames, numbers, or status/location (for example superseding or splitting an RFC), update RFC …
- Very specific: line 38
HTML comment (Draft only): if ## Unresolved questions appears anywhere, include the EOF comment in Checklist 1.
- Distinctive: line 164
Only create an issue if one does not already exist.
- Very specific: line 166
Create the issue with gh issue create.
- Very specific: line 190
Use the /bump-rfc skill to perform status transitions correctly.
≈ “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.
Files
Review RFC — Incan Project
Workflow
- Read the RFC document in full.
- Read the
Status:field in the header — it controls which checklists apply (see Status-aware checks below). - Verify the RFC number is not already taken — check
workspaces/docs-site/docs/RFCs/for conflicts. - Work through the universal checklists (1–5), then the status-specific checklist for the RFC's current status.
- Fix issues directly (edit the file); RFC review is an editing task, not just a report.
- If no GitHub issue exists yet, ask the user before creating one (see Issue creation). Once created, record the issue URL in the RFC header's
Issue:field. - If review materially changes RFC filenames, numbers, or status/location (for example superseding or splitting an RFC), update RFC cross-references and regenerate the docs-site RFC snippets/index.
- Ask before semantic restructures. Mechanical fixes, formatting cleanup, section-order repairs, and obvious lifecycle-field corrections should be applied directly. But if review suggests splitting an RFC, superseding it, renumbering it, or materially changing its scope/central design claim, stop and get explicit user confirmation before making that restructuring edit.
Status-aware checks
The RFC lifecycle has four statuses. Different sections are required — or forbidden — at each stage:
| Status | Delivery plan | RFC progress checklist | Shipped in: | Design-status tail |
Draft | Outside the RFC | Absent | — | Open questions and/or decisions |
Planned | Outside the RFC | Absent | — | Planned+ rule |
In Progress | Tracked on the owning issue | Required | — | Planned+ rule |
Implemented | Retained on the owning issue | Complete | Release version | Planned+ rule |
Existing In Progress and Implemented RFCs may retain an earlier inline plan for historical context. Preserve its evidence. The owning issue is authoritative for delivery work and the RFC checklist records progress.
Planned+ rule (Planned, In Progress, Implemented): the document must not contain a ## Unresolved questions heading. The design tail is ## Design Decisions only — remove or merge ## Unresolved questions at Draft → Planned (/bump-rfc).
Draft: may use ## Unresolved questions (open), ## Design Decisions (settled), or both. Keep roles honest (no open items under Design Decisions). May stay Draft with no open design work while review continues; do not invent questions.
HTML comment (Draft only): if ## Unresolved questions appears anywhere, include the EOF comment in Checklist 1; otherwise omit it.
Draft → Planned: nothing still open under ## Unresolved questions; ## Design Decisions holds the settled record; apply Planned+ rule via /bump-rfc.
Checklist 1 — Structural completeness (all statuses)
- Header block present with all eight fields: Status, Created, Author(s), Related, Issue, RFC PR, Written against, Shipped in.
RFC PRis—unless implementation PRs exist. Every linked PR implements RFC scope; proposal PRs and documentation-only PRs must not appear in this field. Verify the linked PR changes rather than inferring implementation from its title.Written against:reflects the Incan version that was current when the RFC was authored (never a future or planned version).Shipped in:is—for Draft/Planned/In Progress; only filled for Implemented.- Sections follow canonical order: Summary → (Core model) → Motivation → Goals → Non-Goals → Guide-level explanation → Reference-level explanation → Design details → Alternatives considered → Drawbacks → (Implementation architecture) → Layers affected → (progress checklist, In Progress/Implemented only) → Design Decisions / Unresolved questions (Draft: one or both, any order; Planned+ rule after that).
- Draft/Planned only: No section named "Implementation Plan", "Suggested rollout", or similar. Prescriptive task steps belong on the owning issue.
- In Progress: verify that the linked issue records the implementation plan.
- In Progress/Implemented only: "Checklist" (or "Progress Checklist") section present with
- [ ]/- [x]items. - Status: Draft and
## Unresolved questionspresent → EOF HTML comment:<!-- Rename this section to "Design Decisions" once all questions have been resolved. An RFC cannot move from Draft to Planned until no unresolved questions remain. -->
Checklist 2 — RFC cross-references (all statuses)
- No
[RFC NNN]markdown reference-link syntax anywhere (header or body). - All RFC cross-references use plain text:
RFC NNNorRFC NNN (description). - No dangling link definitions at the bottom of the file for RFC references.
Checklist 3 — Formatting (all statuses)
- No hard-wrapped prose paragraphs. Lines must not end mid-sentence at ~80–120 chars. Reflow each paragraph to a single unbroken line.
- Incan code blocks use the
incanlanguage tag (notpython,rust, or untagged). - Tables render cleanly with no broken Markdown.
- No
<!-- REVIEW: ... -->comments left unaddressed in the file.
Checklist 4 — Content quality (all statuses)
- Summary is a single tight paragraph stating the central claim.
- Goals and Non-Goals are balanced — Non-Goals make explicit what is out of scope.
- Guide-level explanation uses realistic, typed Incan code examples that are clear and well-explained without being excessive. It should be immediately obvious to the reader what the feature achieves.
- Prose flows naturally with no duplicated concepts across sections.
- Reference-level explanation uses normative language (
must,must not,should,may). - "Layers affected" describes impacts (not task steps); lists only layers that are actually affected.
- "Alternatives considered" includes a rationale for rejection for each alternative.
- No prescriptive implementation prose in the design sections. The RFC must not reference specific internal files, function names, struct fields, or data structures in the design sections. Track those implementation details on the owning issue. If found in design sections, rewrite as a normative contract statement or remove.
- No
v1/V1shorthand. RFCs should define their own north-star contract, not an implementation phase labeled as "v1". Rewrite phrases like "v1 does X" or "the stable v1 renderer" as concrete RFC commitments ("this RFC requires X", "the required renderer is Markdown") or explicit future-extension framing ("a follow-up RFC may define Y"). - Ambition check. RFCs should be end-to-end and favor complete solutions over incremental stubs. Flag if the RFC is too dismissive or handwavy about hard parts. Equally, if the RFC is ambitious, verify that the ambition is well-motivated, clearly explained, and not excessive.
- Coupling check. If an RFC bundles a general language feature with a specific stdlib or product surface, challenge whether those concerns should stay together. If the coupling is not clearly justified in the document, flag it or recommend a split/supersession path.
Checklist 5 — Confidentiality (all statuses)
- No internal or unreleased project names. Replace with generic descriptions: "future query language surfaces", "purpose-built libraries", etc.
- No links or citations to internal paths (
__strategy__/, research notes, pre-RFC documents, or any folder outside the public repository). Describe the concept inline instead.
Checklist 5b — RFC graph hygiene (all statuses)
- If an RFC is renamed, renumbered, split, or superseded, update inbound references in active RFCs and docs so they point at the new target rather than the stale file.
- If an RFC moves between active and
closed/folders, regenerateworkspaces/docs-site/docs/_snippets/rfcs_refs.mdandworkspaces/docs-site/docs/_snippets/tables/rfcs_index.md. - If the RFC index generator fails locally, fix the generator or note the blocker; do not leave the docs index knowingly stale after RFC lifecycle edits.
Checklist 6 — Draft-specific
## Unresolved questionsand/or## Design Decisions— open vs settled as in Status-aware checks; no invented questions.- EOF HTML comment matches Checklist 1 iff
## Unresolved questionsexists. - Do not use
Plannedwhile## Unresolved questionsstill lists open items.
Checklist 7 — Planned-specific
- Planned+ rule satisfied (bump-rfc); Design Decisions has no open bullets.
- GitHub issue labeled
feature(notRFC).
Checklist 8 — In Progress-specific
- The owning issue records the delivery plan. The RFC may retain an existing inline plan.
- "Checklist" (or "Progress Checklist") section present with
- [ ]/- [x]items, grouped by area (e.g. Spec, Parser/AST, Typechecker, Lowering/IR, Emission, Stdlib/Runtime, Tests, Docs). - At least one checklist item is
- [x](otherwise the RFC has not actually started). Shipped in:is still—.
Checklist 9 — Implemented-specific
- All checklist items are
- [x](no open- [ ]items). Shipped in:is filled with the actual release version (not—, notTBD).- Release notes updated in
workspaces/docs-site/docs/release_notes/.
Common issues found in practice
| Issue | Fix |
[RFC NNN] reference links without definitions | Convert to plain text RFC NNN |
| Section named "Implementation plan" in a Draft or Planned RFC | Remove or defer to GitHub issue; keep only "Layers affected" |
| Missing issue plan or RFC checklist for In Progress | Apply /bump-rfc: record the plan on the issue and add the checklist to the RFC |
Prose references specific files or functions (calls.rs, FunctionInfo, etc.) | State the design contract in the RFC and put delivery details on the owning issue |
v1 / V1 phrasing such as "v1 does X" or "stable v1 renderer" | Replace with concrete RFC commitments or "a follow-up RFC may define X" future-extension framing |
| Hard-wrapped prose (lines ending mid-sentence) | Reflow each paragraph to a single line |
Shipped in: filled for a Draft/Planned/In Progress RFC | Set to —; only fill once the feature is released |
Shipped in: still — for an Implemented RFC | Fill with the actual release version |
| Missing "Layers affected" section | Add with affected layers from Parser, Typechecker, Lowering, Emission, Stdlib, Formatter, LSP |
Planned+ still has ## Unresolved questions | Planned+ rule — fix via bump-rfc merge/rename steps |
<!-- REVIEW: ... --> comment left in file | Address the comment and remove it |
| Internal project name mentioned | Replace with a generic description |
Link to internal path (__strategy__/, research notes) | Remove the link; describe the concept inline |
| Code blocks untagged or wrongly tagged | Add incan language tag |
| One RFC mixes a general feature and a specific library proposal | Recommend split/supersession or justify the coupling explicitly |
| RFC file moved or status changed but docs index still points at old path | Update references and regenerate RFC snippets/index |
| Review flags Draft for "no open questions" | Valid during review; Draft rules above |
Issue creation
Only create an issue if one does not already exist. Always ask the user first.
Create the issue with gh issue create. Include at minimum: a one-paragraph summary, the motivation, and the path to the RFC document. Use the RFC label and any relevant area labels (incan language semantics, incan compiler, incan stdlib, incan tooling).
gh issue create \
--title "RFC NNN: <Title>" \
--label "RFC" \
--body "..."See .github/ISSUE_TEMPLATE/rfc_proposal.yml for the fields the template covers — use those as a guide for what to include in the body.
Once the issue is created, record its URL in the RFC's Issue: header field.
RFC lifecycle
| Status | Meaning | Trigger |
Draft | Design and/or review in flight | New RFCs start here; may list open questions, or none while settled design awaits review before bump |
Planned | Design settled; ready for implementation | Planned+ rule; review complete; user confirms (/bump-rfc) |
In Progress | Active implementation underway | Implementation started; the issue carries the plan and the RFC carries the progress checklist (see /bump-rfc). |
Implemented | Implementation complete and shipped | All checklist items checked, Shipped in: filled, release notes updated (use /bump-rfc) |
Use the /bump-rfc skill to perform status transitions correctly.
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
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.

