Agent skill

React Router RFC Implementer

by remix-run in remix-run/react-router

Turns a React Router RFC discussion on GitHub into an implementation, weighing community feedback and settling open questions with you before coding.

MITAuto-check passedDevelopment

Install React Router RFC Implementer

skills CLI
$ npx skills add remix-run/react-router --skill implement-rfc -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install remix-run/react-router implement-rfc --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/remix-run/react-router.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/implement-rfc .claude/skills/implement-rfc && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
implement-rfc
GitHub stars
57k
Token cost
~2.3k tokens
SKILL.md length
891 words
Files
1
Skills in repo
6
Repo updated
First seen
Licence
MIT

At a glance

Turns a React Router RFC discussion on GitHub into an implementation, weighing community feedback and settling open questions with you before coding.

  • Works in 12 steps: Fetch and Understand the RFC → Evaluate Community Feedback → Resolve Outstanding Questions → …
  • Implementing an accepted React Router RFC from its GitHub discussion
  • SKILL.md covers Branching and Workflow
  • Calls pnpm, git and gh

What it does

Given a discussion URL or number, the agent first checks for a clean working tree and a branch cut from main, then reads the proposal and extracts the problem, proposed API, affected modes (declarative, data, framework and the RSC variants), breaking changes, open questions and any linked tracking issues. It then reads the whole thread and sorts feedback into points of consensus, points of contention and unanswered questions.

Before writing code it gives you a numbered list of every unresolved question, each with the relevant community input and a recommended answer. Implementation then follows, with tests, future flags when the change breaks existing API, and a changeset.

When your agent uses it

  • Implementing an accepted React Router RFC from its GitHub discussion
  • Summarizing community feedback on a proposal before building it
  • Deciding which open questions in an RFC need an answer first
  • Adding a breaking change behind a future flag with a changeset

Example prompts

  • “Read the discussion for the new loader-streaming RFC and list its open questions before we code.”
  • “Create the branch and implement the agreed RFC with tests and a changeset.”
  • “Is the RFC I just linked a breaking change? If so, put it behind a future flag.”

Requirements

  • A clean git working tree in the react-router repository
  • The gh CLI for reading linked issues

Workflow steps

12 steps, taken from the step headings in SKILL.md.

  1. Fetch and Understand the RFC
  2. Evaluate Community Feedback
  3. Resolve Outstanding Questions
  4. Plan the Implementation
  5. Future Flags for Breaking Changes
  6. Key File Locations
  7. Implement the Feature
  8. Write Tests
  9. Lint and Typecheck
  10. Create a Change File
  11. Report and Review
  12. Commit

What it can do on your machine

Read from SKILL.md and the folder at commit 266915e. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • pnpm
    • git
    • gh

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use pnpm, git and gh, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

React Router RFC Implementer loads about 2.3k tokens when it runs. Until then it costs about 64 tokens; SKILL.md has 891 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~64
When it runs · the whole SKILL.md, loaded when a task matches
~2.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from remix-run/react-router at commit 266915e, republished under its MIT licence (© remix-run). 891 words, ~2,252 tokens.

Download SKILL.mdSave it as .claude/skills/implement-rfc/SKILL.md (or your agent's skills folder).
name
implement-rfc
description
Implement a React Router RFC from a GitHub discussion URL. Fetches the proposal, evaluates community feedback, resolves outstanding questions interactively, then implements the feature with tests, future flags (if breaking), and a changeset.
disable-model-invocation
true

Implement React Router RFC

Implement the RFC from the following GitHub discussion: $ARGUMENTS

Branching

RFC implementations should start from a clean working tree. If there are uncommitted changes, stop and ask me to resolve them before continuing.

  • If you are already on a named branch that is at the same HEAD as main, use that branch.
  • Otherwise, create a branch from main using the format {author}/rfc-{semantic-name}:
    sh
    git branch {author}/rfc-{semantic-name} main
    git checkout {author}/rfc-{semantic-name}

Workflow

1. Fetch and Understand the RFC

Use WebFetch to read the discussion URL. If a GitHub discussion number is given instead of a URL, construct: https://github.com/remix-run/react-router/discussions/<number>

Extract:

  • Problem being solved: what pain point does this RFC address?

  • Proposed API: exact function signatures, hook names, types, option shapes

  • Affected modes: Declarative / Data / Framework / RSC Data / RSC Framework

  • Breaking changes: does this change or remove existing public API?

  • Open questions: anything explicitly marked as unresolved, "TBD", or asked as a question in the proposal

  • Status: are there linked tracking issues? Look for links to other github issues and read them to see if there is additional context.

    sh
    gh issue view <number> --repo remix-run/react-router
2. Evaluate Community Feedback

Fetch all comments from the discussion:

Use WebFetch on https://github.com/remix-run/react-router/discussions/<number> and scroll through the full thread. Look for:

  • Concerns or objections raised by community members or maintainers
  • Alternative proposals or API shape suggestions
  • Edge cases raised that the proposal does not address
  • Positive signals — repeated praise for a specific approach signals it's the right direction
  • Maintainer responses — Ryan Florence, Michael Jackson, or other core team members clarifying intent

Summarize the community sentiment into:

  • Points of consensus (safe to proceed)
  • Points of contention (need resolution before implementing)
  • Unanswered questions from the original proposal
3. Resolve Outstanding Questions

Before writing any code, present me with a numbered list of every unresolved question — from both the RFC itself and from community feedback. For each question:

  • State the question clearly
  • Summarize relevant community input
  • Offer a recommended answer with reasoning

Ask me to confirm, override, or skip each question. Do not proceed to implementation until all questions are either answered or explicitly deferred.

Example format:

## Unresolved Questions

1. **Should `useRouterState()` accept a path argument for scoped matching?**
   Community feedback: 3 comments in favor, 1 against (concerns about complexity).
   Recommendation: Yes — scoped matching improves type safety for nested routes.
   → Your decision: [confirm / override / defer]

2. **What should happen when the path doesn't match the current location?**
   Recommendation: Return `null` for active state (consistent with `useMatch()`).
   → Your decision: [confirm / override / defer]

Save the resolved decisions to a scratch file at tasks/rfc-decisions.md for reference during implementation.

4. Plan the Implementation

Before writing code, produce a concise implementation plan covering:

  • New types/interfaces to add
  • New functions/hooks to implement and their file locations
  • Existing APIs to deprecate (mark with @deprecated JSDoc + console warning in dev)
  • Whether a future flag is needed (see §5 below)
  • Test files to create or extend (unit and/or integration)
  • Changeset bump level (minor for new features, major for breaking changes behind a future flag that is now defaulted on)

Present the plan to me and wait for approval before implementing.

5. Future Flags for Breaking Changes

If the RFC changes or removes existing public API behavior, it must ship behind a future flag which will start with an unstable_ prefix.

Future flag pattern:

  1. Add the flag to FutureConfig in packages/react-router/lib/router/utils.ts:

    ts
    export interface FutureConfig {
      // existing flags...
      unstable_myNewBehavior: boolean;
    }
  2. Gate the new behavior on the flag:

    ts
    if (router.future.unstable_myNewBehavior) {
      // new behavior
    } else {
      // legacy behavior
    }
  3. Document the flag in docs/upgrading/future-flags.md if it exists.

New additive APIs (no behavior change to existing code) do not need a future flag.

Show full SKILL.md (384 more words)Show less
6. Key File Locations
AreaFiles
Core router logicpackages/react-router/lib/router/router.ts
Router types/utilspackages/react-router/lib/router/utils.ts
React componentspackages/react-router/lib/components.tsx
React hookspackages/react-router/lib/hooks.tsx
Public exportspackages/react-router/index.ts
DOM utilitiespackages/react-router/lib/dom/
Framework/Vite pluginpackages/react-router-dev/vite/plugin.ts
RSC runtimepackages/react-router/lib/rsc/
Unit testspackages/react-router/__tests__/
Integration testsintegration/
Future flags docdocs/upgrading/future-flags.md

Confirm existing patterns before writing new code - prefer using the LSP but Grep/Glob also work. Match naming conventions and code style exactly.

7. Implement the Feature

Follow the approved plan. For each logical unit of work:

  1. Write the implementation
  2. Export from the appropriate public entry point (packages/react-router/index.ts)
  3. Add @deprecated JSDoc to any APIs being superseded
  4. Run typecheck to catch type errors early:
    sh
    pnpm typecheck

Keep changes minimal and focused. Do not refactor unrelated code. Commit as often as needed.

8. Write Tests

Unit tests (for hooks, pure router logic, component behavior — no build):

  • Location: packages/react-router/__tests__/
  • Runner: Jest → pnpm test packages/react-router/__tests__/<file>
  • Cover: happy path, edge cases identified in RFC/community feedback, future flag gating (if applicable), deprecation warnings

Integration tests (for Vite/Framework Mode, SSR, hydration):

  • Location: integration/
  • Runner: Playwright → pnpm test:integration:run --project chromium integration/<file>
  • Required if the RFC touches Framework Mode, file-system routing, or SSR behavior

Run all tests and confirm they pass:

sh
pnpm test packages/react-router/
pnpm test:integration:run --project chromium  # only if integration tests were added/changed
9. Lint and Typecheck
sh
pnpm lint
pnpm typecheck

Fix all errors before proceeding.

10. Create a Change File

Create packages/<package>/.changes/<bump-level>.<descriptive-name>.md. Use the RFC title or tracking issue as the description:

markdown
feat: <brief description matching the RFC title>

Implements the `useRouterState()` RFC (#12358). Deprecates `useLocation`,
`useParams`, `useSearchParams`, `useNavigation`, `useMatches`, `useMatch`,
`useNavigationType`, and `useViewTransitionState` in favor of a unified API.

Enable the `unstable_consolidatedRouterState` future flag to opt in.

Bump levels:

  • patch — bug-adjacent fix only
  • minor — new additive API (no breaking changes)
  • major — breaking change (should be rare; most breaking changes go behind a future flag as minor first)
  • unstable — new API that is not yet stable (e.g. added in a future flag, or an experimental API that may be removed without a major bump)
11. Report and Review

Summarize:

  • What RFC was implemented and which decisions were made
  • New public APIs added (with brief usage example)
  • APIs deprecated and the migration path
  • Future flag name (if applicable) and how to opt in
  • Test coverage added
  • Anything deferred or explicitly out of scope

Ask me to review and iterate before opening a PR.

12. Commit

Once I approve, commit and open a PR to main:

sh
gh pr create --base main --title "feat: <RFC title>" --body "..."

PR body should include:

  • Link to the RFC discussion (Closes or Implements #NNNN)
  • Summary of what was implemented
  • Future flag instructions if applicable
  • Testing notes
  • Any decisions that deviated from the original proposal and why

© remix-run, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in .agents/skills/implement-rfc of remix-run/react-router.

Open the folder on GitHubat commit 266915e

Compare with similar skills

React Router RFC Implementer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

React Router RFC Implementer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
React Router RFC Implementer this skillremix-run/react-router57k—~2.3kAutomated safety check: PassMIT
Contributor-First PR MergeHKUDS/OpenHarness16k1 repos~847Automated safety check: PassMIT
Mole Release Notes Publishertw93/Mole69k—~1.9kAutomated safety check: PassGPL-3.0
Pre-Release PR Triagejamiepine/voicebox57k—~3.1kAutomated safety check: PassMIT
WinAppSDK Triage Meeting Prepmicrosoft/WindowsAppSDK4.7k—~2.8kAutomated safety check: PassApache-2.0
Verdaccio PR Reviewverdaccio/verdaccio18k—~1.7kAutomated safety check: PassMIT

Similar skills

  • Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.

    16k GitHub starsUsed in 1 repo~847 tokens
    DevelopmentAuto-check passed
  • Publishes curated, bilingual release notes for an existing Mole version tag with gh release edit, including contributor thanks and reactions, after the release workflow finishes.

    69k GitHub stars~1.9k tokensUpdated today
    DevelopmentAuto-check passed
  • Pre-Release PR Triage

    jamiepine/voicebox

    Sorts a backlog of open pull requests into must-merge, candidate, superseded and deferred, writes a triage doc and works the merge loop before a release.

    57k GitHub stars~3.1k tokensUpdated today
    DevelopmentAuto-check passed
  • WinAppSDK Triage Meeting Prep

    microsoft/WindowsAppSDK

    Official

    Prepares the triage meeting summary for WinAppSDK Needs-Triage issues, with research-backed area suggestions, draft replies and a diff since the last triage.

    4.7k GitHub stars~2.8k tokensUpdated today
    DevelopmentAuto-check passed
  • Verdaccio PR Review

    verdaccio/verdaccio

    Reviews an existing verdaccio/verdaccio pull request end to end, verifies each finding and reports whether it is mergeable, optionally fixing it on the PR branch.

    18k GitHub stars~1.7k tokensUpdated today
    DevelopmentAuto-check passed
  • Creates backports of a merged Ansible devel pull request onto the right stable branches by cherry-picking its merge commit onto new backport branches.

    71k GitHub stars~1.2k tokensUpdated today
    DevelopmentAuto-check passed

More from remix-run/react-router

  • React Router Development

    remix-run/react-router

    Guides work on React Router apps by first identifying whether the app uses Framework, Data or Declarative mode, then loading the matching reference and the installed package docs.

    57k GitHub starsUsed in 1 repo~1.5k tokens
    Auto-check passed
  • React Router Release Notes Prep

    remix-run/react-router

    Polishes pending React Router change files before the versioning scripts run, and decides whether a long-form What's Changed section is warranted.

    57k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • React Router Pull Request Creator

    remix-run/react-router

    Packages finished React Router work into a draft pull request: branch, commit, push, a written PR body and the right GitHub labels.

    57k GitHub stars~2.5k tokensUpdated today
    Auto-check passed
  • React Router PR Finish Line

    remix-run/react-router

    Takes a blocked community pull request in React Router and adds the missing tests, change file or docs so it can merge, working on the contributor's branch.

    57k GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • React Router Bug Fix Workflow

    remix-run/react-router

    Fixes a React Router bug reported in a GitHub issue end to end: fetching the issue, validating the reproduction, writing a failing test and implementing the fix on a new branch.

    57k GitHub stars~1.3k tokensUpdated today
    Auto-check passed

Categories

Questions about React Router RFC Implementer

What does React Router RFC Implementer do?

Turns a React Router RFC discussion on GitHub into an implementation, weighing community feedback and settling open questions with you before coding. Given a discussion URL or number, the agent first checks for a clean working tree and a branch cut from main, then reads the proposal and extracts the problem, proposed API, affected modes (declarative, data, framework and the RSC variants), breaking changes, open questions and any linked tracking issues. It then reads the whole thread and sorts feedback into points of consensus, points of contention and unanswered questions.

When should I use React Router RFC Implementer?

React Router RFC Implementer fits situations like: implementing an accepted React Router RFC from its GitHub discussion; summarizing community feedback on a proposal before building it; deciding which open questions in an RFC need an answer first; adding a breaking change behind a future flag with a changeset.

How do I install React Router RFC Implementer in Claude Code?

Run `npx skills add remix-run/react-router --skill implement-rfc -a claude-code`. Or copy the skill folder (.agents/skills/implement-rfc in remix-run/react-router) into .claude/skills/implement-rfc in your project. Claude Code loads it when a task matches its description.

How do I install React Router RFC Implementer in Codex?

Run `npx skills add remix-run/react-router --skill implement-rfc -a codex`. Or copy the skill folder (.agents/skills/implement-rfc in remix-run/react-router) into .agents/skills/implement-rfc in your project. Codex loads it when a task matches its description.

Can I use React Router RFC Implementer in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add remix-run/react-router --skill implement-rfc -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/implement-rfc, .gemini/skills/implement-rfc, .github/skills/implement-rfc and .opencode/skills/implement-rfc in your project.

What does React Router RFC Implementer need to run?

Going by SKILL.md and its folder, React Router RFC Implementer needs the command-line tools its instructions call (pnpm, git and gh). Our summary lists: A clean git working tree in the react-router repository; The gh CLI for reading linked issues.

Does React Router RFC Implementer access the network?

SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is React Router RFC Implementer safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does React Router RFC Implementer use?

React Router RFC Implementer is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does React Router RFC Implementer use?

About 2.3k tokens (SKILL.md is roughly 9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to React Router RFC Implementer?

Skills that share tags, products or a category with React Router RFC Implementer: Contributor-First PR Merge (HKUDS/OpenHarness, 16k stars), Mole Release Notes Publisher (tw93/Mole, 69k stars), Pre-Release PR Triage (jamiepine/voicebox, 57k stars) and WinAppSDK Triage Meeting Prep (microsoft/WindowsAppSDK, 4.7k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains React Router RFC Implementer?

remix-run (a GitHub organization) maintains it in remix-run/react-router, which has 56,597 GitHub stars. The repository holds 6 skills in this directory. The repository was last updated on October 6, 2026.

Source: remix-run/react-router on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.