askill
roto-rooter

roto-rooterSafety 95Repository

Static analysis for React Router applications. Use when building or debugging React Router apps to verify routes, links, forms, loaders, params, hydration patterns, and database persistence operations.

0 stars
1.2k downloads
Updated 3/3/2026

Package Files

Loading files...
SKILL.md

React Router Static Analysis with roto-rooter

Quick start

rr                              # analyze all routes in current directory
rr app/routes/dashboard.tsx     # analyze specific file
rr --fix                        # auto-fix issues
rr --dry-run                    # preview fixes

Example output:

[links] app/routes/dashboard.tsx:24:8
  <Link to="/users">
  [error] Link target "/users" does not match any route

[hydration] app/routes/dashboard.tsx:31:12
  new Date()
  [warning] new Date() without arguments returns the current time, which differs between server render and client hydration
  -> Pass the current date from the loader to ensure server and client use the same value

1 error, 1 warning

Commands

rr [FILES...]                   # analyze files (default: all routes)
rr --check links,forms          # run specific checks
rr --check all                  # run all checks (including optional)
rr --check defaults,drizzle     # run default checks plus specific optional checks
rr --format json                # JSON output
rr --root ./my-app              # set project root
rr sql --drizzle                # extract SQL queries from Drizzle ORM code
rr sql --drizzle --format json  # SQL extraction with JSON output

Available checks

Default checks (run automatically):

  • links - validates <Link>, <NavLink>, redirect(), navigate(), and href props on any component exist as routes
  • forms - validates Form action targets, field alignment between forms and actions, intent-based dispatch
  • loader - detects loader data usage issues and clientLoader/clientAction with server-only imports
  • params - validates route params match definitions
  • interactivity - detects disconnected dialogs ("Save" buttons that don't save, "Delete" buttons that don't delete, stub handlers)
  • hydration - detects hydration mismatches (Date, Math.random, locale-dependent formatting, window access in render)

Optional checks (opt-in via --check):

  • drizzle - validates database operations against Drizzle ORM schema (unknown tables/columns, missing required columns, null-to-notNull, invalid enum literals, type mismatches, auto-generated column writes, DELETE/UPDATE without WHERE, sql<number> with aggregates)

Examples

# Check for broken links in a route file
rr app/routes/dashboard.tsx --check links

# Auto-fix all fixable issues in the project
rr --fix

# Get JSON output for CI integration
rr --format json

# Enable Drizzle ORM persistence checking (auto-discovers schema)
rr --check drizzle

# Drizzle checking with explicit schema path
rr --check drizzle --drizzle-schema src/db/schema.ts

# Extract SQL queries from Drizzle ORM code
rr sql --drizzle

# Extract SQL queries from a specific file
rr sql --drizzle app/routes/users.tsx

# SQL extraction with JSON output
rr sql --drizzle --format json

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

91/100Analyzed 3/8/2026

High-quality skill for a React Router static analysis tool called roto-rooter. Provides comprehensive documentation with clear commands, multiple check types (links, forms, loaders, params, hydration, drizzle), auto-fix capabilities, and SQL extraction. Well-structured with practical examples and expected output. The skill is reusable, safe (read-only analysis with optional fixes), and appears to be a general-purpose tool rather than internal-only configuration.

95
90
90
85
95

Metadata

Licenseunknown
Version-
Updated3/3/2026
Publisherglideapps

Tags

ci-cddatabase