Claude-skill-registry create-route

Create React Router 7 routes with proper type imports, loaders, and actions. Use when adding new pages, API endpoints, layouts, or route files.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/create-route" ~/.claude/skills/majiayu000-claude-skill-registry-create-route && rm -rf "$T"
manifest: skills/data/create-route/SKILL.md
source content

Create Route

When to Use

  • Creating new pages or views
  • Adding API endpoints
  • Creating layout routes with
    <Outlet />

Critical Rules

1. Route Type Imports

// ALWAYS use this pattern:
import type { Route } from './+types/my-route';

// NEVER use relative paths:
// import type { Route } from '../+types/my-route';  // WRONG!

If types are missing: Run

npm run typecheck
- NEVER change the import path.

2. Destructure Directly

// CORRECT
export async function action({ request, params }: Route.ActionArgs) {}

// WRONG
export async function action(args: Route.ActionArgs) {
    const { request } = args;  // Don't do this!
}

3. Access Data via Props

// CORRECT
export default function MyPage({ loaderData }: Route.ComponentProps) {}

// WRONG
const data = useLoaderData();  // Don't use hooks!

Quick Start

import type { Route } from './+types/my-page';
import { data, redirect } from 'react-router';

export async function loader({ request }: Route.LoaderArgs) {
    const user = await requireUser(request);
    return { user };
}

export async function action({ request }: Route.ActionArgs) {
    const formData = await request.formData();
    // Handle POST/PUT/DELETE
    return redirect('/success');
}

export default function MyPage({ loaderData }: Route.ComponentProps) {
    return (
        <>
            <title>Page Title | Iridium</title>
            <meta name="description" content="Description" />
            {/* Content */}
        </>
    );
}

Checklist

  1. Create route file in
    app/routes/
  2. Register in
    app/routes.ts
  3. Run
    npm run typecheck
    to generate types
  4. Add path to
    Paths
    constant if reusable

Templates

Full Reference

See

.github/instructions/react-router.instructions.md
for:

  • Nested routes & layouts
  • Dynamic segments & optional segments
  • Streaming with Suspense
  • Error boundaries
  • Navigation patterns