
finish-line
Bring a blocked React Router community pull request across the finish line. Use when the user invokes /finish-line or $finish-line, provides a PR number or URL, and asks Codex to resolve merge blockers such as a missing change file, missing documentation, missing tests, or stale contributor follow-up. Handles evaluating the blocker and pushing small maintainer fixes onto a contributor PR branch when authorized.
- Installs
- 99
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/remix-run/react-router --skill finish-line- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads finish-line automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Finish Line
Overview
Finish blocked community PRs in remix-run/react-router while respecting contributor ownership and the repo's PR packaging conventions.
Treat the PR number or URL in $ARGUMENTS as the target PR. If no target is provided, ask for it before doing anything.
Triage
- Inspect local state with
git status --short --branch. If unrelated dirty files exist, do not overwrite or stage them. - Fetch current main before making branch decisions:
git fetch origin main
- Gather PR context:
gh pr view <pr> --repo remix-run/react-router --json number,title,body,state,isDraft,author,baseRefName,headRefName,headRepository,headRepositoryOwner,maintainerCanModify,mergeStateStatus,reviewDecision,labels,files,commits,statusCheckRollup,url
gh pr checks <pr> --repo remix-run/react-router
gh pr diff <pr> --repo remix-run/react-router --stat
gh pr view <pr> --repo remix-run/react-router --comments
- Identify merge blockers. In particular:
- If the PR only needs repo-maintainer additions such as tests, a change file, or docs, use the contributor-branch workflow.
- If the contributor branch cannot be modified, summarize the evidence and ask the user whether to wait for the contributor or recreate the work on a maintainer branch.
- If the blocker is unclear, summarize the evidence and ask the user which path to take.
- Evaluate test coverage before deciding the finish-line changes:
- Inspect the PR diff, changed files, existing nearby tests, review comments, and failed checks for test expectations.
- If the PR changes runtime behavior, build/plugin behavior, routing semantics, generated types, RSC behavior, docs rendering, or any bug/feature surface that can regress, add or preserve a focused test unless equivalent coverage already exists.
- If tests are already included, verify they exercise the changed behavior and cover the affected React Router mode(s): Declarative, Data, Framework, RSC Data, and/or RSC Framework.
- If tests are not needed because the change is documentation-only, packaging-only, a change file, or otherwise not executable behavior, note that rationale in the final report.
- If a useful test is required but too large or risky for the finish-line scope, stop and ask the user before broadening the PR.
Contributor-Branch Workflow
Use this path when the missing work is a small maintainer follow-up, such as tests, a change file, or docs, and the contributor branch can be modified.
- Check out the PR branch:
gh pr checkout <pr-number> --repo remix-run/react-router
- Confirm the branch and local state:
git status --short --branch
git branch --show-current
- Make only the missing finish-line changes, including focused tests when the coverage evaluation requires them. Do not refactor the contributor's work unless it is necessary to unblock mergeability and the user agrees.
- Validate the exact content with the user before pushing:
- For a change file, show the package path, file name, change type, and full markdown contents.
- For docs, show the affected files and the relevant prose/API snippets.
- For tests, show the test file path, the behavior covered, and the mode(s) covered.
- Ask explicitly for approval to commit and push back to the PR branch.
- After approval, run focused validation when appropriate, commit the maintainer follow-up, and push to the PR branch. If
git pushfails because the contributor branch cannot be modified, stop and report the failure instead of opening a replacement PR unless the user approves that pivot.
Change Files
Create change files under the affected package:
packages/<package>/.changes/<type>.<unique-meaningful-name>.md
Use patch, minor, major, or unstable for <type>. For bug fixes and narrow behavior fixes, default to patch. Keep the content concise:
Brief description of the user-facing change
If the PR spans multiple packages, prefer the package with the direct user-facing API or runtime behavior. Ask the user when the package or change type is not obvious.
Documentation
Do not add documentation by default for ordinary bug fixes. Add docs when the PR changes a documented API, introduces new behavior users need to discover, changes examples, or the user/reviewer explicitly requested docs.
Follow repo docs rules:
- Edit source docs or JSDoc, not generated
docs/api/output. - Include mode context when adding docs for React Router behavior: Declarative, Data, Framework, RSC Data, or RSC Framework.
- For API docs generated from JSDoc, edit
packages/react-router/lib/comments and note thatpnpm run docsmay be required.
Final Report
Report the path taken and the current PR state:
- Original PR number and blocker.
- Whether changes were pushed to the contributor branch or a replacement PR was opened.
- Branch, commit hash, and PR URL when applicable.
- Any old-PR comment/close action taken.
- Validation performed or skipped.
- Test coverage decision: added, already present, or intentionally omitted with rationale.
FAQ
What does the finish-line skill do?
Bring a blocked React Router community pull request across the finish line. Use when the user invokes /finish-line or $finish-line, provides a PR number or URL, and asks Codex to resolve merge blockers such as a missing change file, missing documentation, missing tests, or stale contributor follow-up. Handles evaluating the blocker and pushing small maintainer fixes onto a contributor PR branch when authorized.
How do I install finish-line?
Run npx skills add https://github.com/remix-run/react-router --skill finish-line in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/finish-line/ (personal) or .claude/skills/finish-line/ (project).
Which AI agents can use finish-line?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is finish-line safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains finish-line?
It is published by remix-run in remix-run/react-router. It has 99 recorded installs.
More from remix-run/react-router
react-router
remix-run/react-router
Build applications with React Router in Framework, Data, Declarative, and unstable RSC modes. Use when configuring routes, route modules, loaders, actions, forms, fetchers, navigation, pending UI, SSR/SPA/pre-rendering, middleware, URL params/search params, or React Router upgrades.
fix-bug
remix-run/react-router
Fix a reported bug in React Router from a GitHub issue. Use when the user provides a GitHub issue URL and asks to fix a bug, investigate an issue, or reproduce a problem. Handles the full workflow: fetching the issue, finding the reproduction, writing a failing test, and implementing the fix.
implement-rfc
remix-run/react-router
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.
create-pr
remix-run/react-router
Create and package React Router pull requests. Use when the user asks to create, open, prepare, or finish a PR for this repository, including branch/commit/push handoff, draft PR creation, PR body writing, and applying GitHub labels such as pkg:, feat:, docs, github-actions, or dependencies.
prepare-release-notes
remix-run/react-router
Prepare React Router release notes before running the changes/versioning scripts. Use when asked to review, polish, normalize, or prepare pending change files under packages//.changes, remove semantic commit prefixes from release bullets, enforce imperative tense, decide whether a manual scripts/changes/whats-changed.md section is warranted, or draft long-form release notes for new features, stable future flags, or unstable flags.
agentic-workflows
remix-run/react-router
Route gh-aw workflow design/create/debug/upgrade requests to the right prompts.
Popular code quality & workflow skills
grill-me
mattpocock/skills
A relentless interview to sharpen a plan or design.
improve-codebase-architecture
mattpocock/skills
Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.
handoff
mattpocock/skills
Compact the current conversation into a handoff document for another agent to pick up.
domain-modeling
mattpocock/skills
Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or recording or editing an ADR.
codebase-design
mattpocock/skills
Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.
diagnosing-bugs
mattpocock/skills
Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.