Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add Phaedra-Solutions/cursor-rules --skill migrate-cra-to-vitegit clone --depth 1 https://github.com/Phaedra-Solutions/cursor-rulesWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/phaedra-solutions/cursor-rules/migrate-cra-to-vite)<a href="https://agentmods.dev/skills/phaedra-solutions/cursor-rules/migrate-cra-to-vite"><img src="https://agentmods.dev/badge/skills/phaedra-solutions/cursor-rules/migrate-cra-to-vite/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/phaedra-solutions/cursor-rules/migrate-cra-to-vite"><img src="https://agentmods.dev/badge/skills/phaedra-solutions/cursor-rules/migrate-cra-to-vite.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00118 | $0.01412 |
| Opus 5.5 | $0.00047 | $0.00565 |
| Sonnet 5.5 | $0.00024 | $0.00282 |
| Haiku 4.5 | $0.00012 | $0.00141 |
Grade A, and why
migrate-cra-to-vite scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 75 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Migrate Create React App → Vite
When to use
- The project uses
react-scripts(CRA, deprecated since 14 Feb 2025) and the user wants a supported build. - If the user wants a framework instead (Next.js, React Router framework mode), follow that framework's CRA guide; this skill covers a client-only SPA on Vite (see
frontend/react-vite-spa).
Before you start
- Read
react-scripts, React, TypeScript, CRACO/react-app-rewired config,src/setupProxy.js,.env*files,public/index.html, Jest config inpackage.json, and how SVGs, CSS modules and images are imported. - Working tree clean; new branch (
chore/vite); record the current build output size and a list of pages to smoke-test. - Ask the user:
- whether to switch tests to Vitest now or keep Jest for this change;
- the deployment base path (
homepageinpackage.json) and the hosting setup; - whether network installs are approved (
core/supply-chaincooldown applies).
Steps
-
Baseline:
npm test -- --watchAll=false,npm run build, and a smoke test of key pages. -
Install:
npm install -D vite @vitejs/plugin-react(andvite-plugin-svgrif the app imports SVGs as React components,vite-tsconfig-pathsif it usesbaseUrl/paths). Removereact-scripts, CRACO or react-app-rewired after the build works. -
Config: add
vite.config.ts:import { defineConfig } from 'vite' import react from '@vitejs/plugin-react' export default defineConfig({ plugins: [react()], server: { port: 3000 }, // keep CRA's port if scripts or docs depend on it build: { outDir: 'build' }, // keep CRA's output folder if deploys expect it })Set
baseif the app is served from a sub-path (CRA'shomepage). -
index.html: movepublic/index.htmlto the project root, remove%PUBLIC_URL%(use/paths), and add<script type="module" src="/src/index.tsx"></script>(the entry file). Assets inpublic/keep working at/. -
Environment variables: rename
REACT_APP_*toVITE_*in.env*, CI and hosting settings; replaceprocess.env.REACT_APP_Xwithimport.meta.env.VITE_Xandprocess.env.NODE_ENVwithimport.meta.env.MODE/DEV/PROD. Addsrc/vite-env.d.ts(/// <reference types="vite/client" />). Everything prefixedVITE_is public; keep secrets out. -
Imports: SVG components via
vite-plugin-svgr(import Logo from './logo.svg?react'); files with JSX must use.jsx/.tsxextensions (rename.jsfiles that contain JSX); replacerequire()calls with imports. -
Proxy: move
setupProxy.jsor theproxyfield toserver.proxyinvite.config.ts. -
Scripts:
"dev": "vite","build": "tsc -b && vite build"(orvite build),"preview": "vite preview"; update CI and Dockerfiles that callreact-scripts. -
Tests: either move to Vitest (
vitest,jsdom,@testing-library/jest-dom;test.environment = 'jsdom',setupFiles; replacejest.fnwithvi.fn,jest.mockwithvi.mock), or keep Jest with an explicitjest.configand Babel/ts-jest sincereact-scripts testis gone. Seetesting/unit-js. -
Lint: replace
eslint-config-react-appwith the project's flat ESLint config (eslint-plugin-react-hooks,typescript-eslint). -
Verify (next section); show the diff and results; commit only when asked (
git-commitskill). Then usefrontend/react-vite-spa.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago First seen · 75 lines · 118 tokens per session scan A d83567273f46
migrate-cra-to-vite is a skill published in the GitHub repository Phaedra-Solutions/cursor-rules (4 stars, last pushed 2d ago), licensed MIT. It adds 118 tokens to every session and 1,412 once invoked, about $0.0005 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-11-01.
Other skills, from other repositories
react-web
React web development with hooks, React Query, Zustand.
property-testing
Write and review property-based tests for pure logic with Hegel (Rust, Go, C++, TypeScript, Java, OCaml) or Hypothesis (Python). Covers when a property test is required, the property catalog, verified package pins, seed replay, the failing-example database, CI behaviour, and pinning a shrunk failure as a regression…
browser-qa
Test live web interfaces with browser automation for smoke failures, interactions, visual regressions, responsive behavior, and accessibility. Use after frontend changes or deployments, during UI review, and before shipping critical user journeys.
bun-runtime
Bun as runtime, package manager, bundler, and test runner. When to choose Bun vs Node, migration notes, and Vercel support.
frontend-ux-engineer
Use for frontend features, Next.js/React/Vue/Svelte UI, accessibility, responsive layout, design polish, state handling, forms, visual QA, or product workflow improvements.
nextjs-fullstack
Use for Next.js App Router, React Server Components, server actions, API routes, auth, database integration, caching, deployment, or full-stack product features.