Enforcement tool for standardizing RFC structure and documentation in ArenaQuest projects.

Install

mkdir -p .claude/skills/write-rfc-raphaelsilva && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/17178" && unzip -o skill.zip -d .claude/skills/write-rfc-raphaelsilva && rm skill.zip

Installs to .claude/skills/write-rfc-raphaelsilva

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Scaffold and validate ArenaQuest RFCs against the house standard so every proposal in docs/product/RFCs follows the same structure (numbered file, metadata header, canonical sections, README index row).
202 charsno explicit “when” trigger
Beginner

Key capabilities

  • Scaffold new RFCs with sequential numbering and kebab-case titles
  • Append RFC index rows to the README
  • Validate RFCs against a house standard (filename, title, metadata)
  • Check for presence of canonical sections in RFCs
  • Identify missing recommended sections in RFCs
  • Generate RFCs with predefined metadata fields

How it works

The skill uses Node scripts to scaffold new RFCs with a standard structure and index them in the README, or to validate existing RFCs against predefined rules for filename, title, metadata, and sections.

Inputs & outputs

You give it
A title for a new RFC or a path to an existing RFC file
You get back
A new RFC file with a standard template and README index entry, or a validation report for an RFC

When to use write-rfc

  • Create new RFC draft
  • Validate RFC structure
  • Scaffold documentation templates

About this skill

ArenaQuest keeps formal proposals in docs/product/RFCs/ as NNNN-<kebab-title>.md, indexed by docs/product/RFCs/README.md. This skill enforces that standard with two dependency-free Node scripts:

  • new-rfc.mjs — scaffolds the next-numbered RFC from template.md and appends its index row to the README.
  • check-rfc.mjs — validates one or all RFCs against the standard; non-zero exit on a hard violation, so it drops into a pre-commit hook or CI.

Paths below are relative to the repo root (docs/product/RFCs, the scripts under .claude/skills/write-rfc/). Run them from the repo root.

The .claude/skills/ directory is a symlink to .agents/skills/. It resolves fine for the Node runtime (Linux). The Windows \\wsl.localhost bridge can't traverse the symlink — if a tool errors with ENOTDIR / Input/output error on .claude/skills/..., use the real path .agents/skills/write-rfc/... instead. Both point at the same files.

The standard

Every RFC has, in this order:

  1. Filename NNNN-<kebab-title>.md — 4-digit zero-padded, sequential.
  2. Title # RFC NNNN: <Title> — number matches the filename.
  3. Metadata block (bold fields): **Status:**, **Author:**, **Date:** (PT Autor: / Data: accepted), plus optional **Revised:** and an **Affected:** file list. Then a --- divider.
  4. Sections (##): Summary, Motivation, Goals & Non-Goals, Current State (omit if greenfield), Proposed Design, Alternatives Considered, Implementation Plan, Tradeoffs & Risks, Success Criteria, Open/Resolved Decisions, References. See template.md for the prose guidance per section.
  5. README index row in docs/product/RFCs/README.md.

Status lifecycle: Draft → Proposed → Approved → In Progress → Implemented/Done/Completed; or Rejected / Superseded.

Create a new RFC (agent path)

node .claude/skills/write-rfc/new-rfc.mjs "Title of the proposal" --author raphaelsilva

Prints the created path (e.g. docs/product/RFCs/0007-title-of-the-proposal.md) and adds the README index row. Options: --status (default Draft), --date YYYY-MM-DD (default today), --author (default git config user.name), --dir (default docs/product/RFCs). Then fill in each ## section — the template body explains what belongs in each.

Validate (agent path)

Check every RFC in the directory:

node .claude/skills/write-rfc/check-rfc.mjs

Check a single file (use this on the RFC you just wrote):

node .claude/skills/write-rfc/check-rfc.mjs docs/product/RFCs/0005-enrollment-exclusions-and-visibility.md

Output: clean, recommended section missing (advisory — exit 0), hard violation (exit 1). ERROR = wrong filename, missing/mismatched # RFC NNNN title, missing Status/Author/Date metadata, or not linked from the README index. warn = a recommended ## section is absent (older RFCs predate the full skeleton, so these don't block).

Gotchas

  • .claude/skills is a symlink (→ .agents/skills). Native file tools reaching it over the Windows bridge throw Input/output error; run scripts through the WSL Node runtime, or edit files via .agents/skills/write-rfc/.
  • Exit codes are swallowed by the wsl.exe … bash -c '… ; echo $?' bridge$? reads as 0 even when Node exited non-zero. To observe the real result use &&/|| evaluated inside WSL: node …/check-rfc.mjs && echo PASS || echo FAIL.
  • The standard is advisory for legacy RFCs. 0001 is Portuguese (Autor:/ Data: — accepted) and 0003 embeds its date inside the Status line, so check-rfc.mjs flags 0003 as ✗ missing Date. That is a real, known gap in an existing doc, not a script bug — don't "fix" the validator to hide it.
  • Numbering reads the directory, not the README. If a number was skipped or a draft file deleted, the next number follows the highest existing NNNN-*.md, not the index.

Files

  • .claude/skills/write-rfc/new-rfc.mjs — scaffolder (Node, stdlib only).
  • .claude/skills/write-rfc/check-rfc.mjs — validator (Node, stdlib only).
  • .claude/skills/write-rfc/template.md — the canonical section skeleton with per-section prose guidance; new-rfc.mjs fills its {{...}} placeholders.

When not to use it

  • When the `.claude/skills` symlink causes `ENOTDIR` or `Input/output error` on Windows `\wsl.localhost`
  • When the standard is advisory for legacy RFCs and should not be 'fixed'
  • When the goal is to observe real exit codes from `wsl.exe` without `&&`/`||`

Limitations

  • The skill relies on Node scripts for scaffolding and validation.
  • The skill's validation is based on a specific house standard for ArenaQuest RFCs.
  • The skill's numbering reads the directory, not the README, for the next sequential number.

How it compares

This workflow enforces a consistent structure and indexing for RFCs using automated scripts, preventing structural drift and ensuring all proposals follow the same standard, unlike manual RFC creation.

Compared to similar skills

write-rfc side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
write-rfc (this skill)02moReviewBeginner
architecture-decision-records545moReviewBeginner
wiki-architect114moNo flagsAdvanced
smart-docs49moReviewIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

architecture-decision-records

wshobson

Write and maintain Architecture Decision Records (ADRs) following best practices for technical decision documentation. Use when documenting significant technical decisions, reviewing past architectural choices, or establishing decision processes.

54217

wiki-architect

microsoft

Analyzes code repositories and generates hierarchical documentation structures with onboarding guides. Use when the user wants to create a wiki, generate documentation, map a codebase structure, or understand a project's architecture at a high level.

1144

smart-docs

sopaco

AI-powered comprehensive codebase documentation generator. Analyzes project structure, identifies architecture patterns, creates C4 model diagrams, and generates professional technical documentation. Use when users need to document codebases, understand software architecture, create technical specs, or generate developer guides. Supports all programming languages. Alternative to Litho/deepwiki-rs that uses Claude Code subscription without external API costs.

422

codebase-documenter

mhattingpete

Generates comprehensive documentation explaining how a codebase works, including architecture, key components, data flow, and development guidelines. Use when user wants to understand unfamiliar code, create onboarding docs, document architecture, or explain how the system works.

613

c4-architecture-c4-architecture

sickn33

Generate comprehensive C4 architecture documentation for an existing repository/codebase using a bottom-up analysis approach.

117

dagger-design-proposals

dagger

Write design proposals for Dagger features. Use when asked to draft, review, or iterate on Dagger design documents, RFCs, or proposals.

66

Search skills

Search the agent skills registry