Generate production-ready React project with TypeScript, Tailwind, testing, CI/CD. Use when user asks to "scaffold a React app".
From sanpx claudepluginhub javimontano/jm-adk --plugin sovereign-architectThis skill is limited to using the following tools:
agents/config-auditor-agent.mdagents/scaffolder-agent.mdagents/testing-setup-agent.mdevals/evals.jsonexamples/sample-output.mdprompts/use-case-prompts.mdreferences/body-of-knowledge.mdreferences/knowledge-graph.mmdreferences/state-of-the-art.mdGenerate production-ready React project with TypeScript, Tailwind, Vitest, Playwright, and GitHub Actions CI/CD — scaffolded from decisions, not defaults.
"Every React project should start with tested foundations, not framework fatigue. The best scaffold is the one the team will actually maintain."
scaffold-nextjs-app).[HECHO] if confirmed, [SUPUESTO] if inferred from repo context.pnpm-workspace.yaml, turbo.json) → scaffold as a Turborepo app package.tsconfig.json strict baseline (see BoK). Relax only with documented rationale.docs/ADR-001-stack-decisions.md.vite.config.ts with path aliases (@/), proxy config, and vitest inline config block.tsconfig.json with strict: true, paths matching vite aliases, noUncheckedIndexedAccess: true.tailwind.config.ts with content paths, design token extension, and dark-mode class strategy..env.example with all required variables; never commit .env. Write src/env.ts with Zod validation.eslint.config.mjs using flat config + @typescript-eslint/strict, eslint-plugin-react-hooks, eslint-plugin-jsx-a11y.vitest.config.ts (or inline in vite.config.ts), jsdom environment, coverage with v8 provider.@testing-library/react, @testing-library/user-event, @testing-library/jest-dom.src/test/setup.ts with jest-dom matchers import and global cleanup.playwright.config.ts targeting Chromium + Firefox, base URL from env, screenshots on failure.msw).statements: 70, branches: 65, functions: 70 minimum. Add to CI gate..github/workflows/ci.yml: install → type-check → lint → unit tests + coverage → build → E2E (headless).husky pre-commit hook: lint-staged running ESLint + Prettier on staged files only.Dockerfile with multi-stage build (node:20-alpine build stage, nginx:alpine serve stage).README.md with: local setup, env variables, test commands, deployment notes.pnpm run build and pnpm run test to verify scaffold compiles and passes baseline.| Decision | Default Choice | Alternative | When to Switch |
|---|---|---|---|
| Build tool | Vite 5 | Rspack / Turbopack | Build times >60s in CI at scale |
| State — local | Zustand 5 | Jotai, Recoil | Team prefers atomic model |
| State — server | TanStack Query v5 | SWR, Apollo | GraphQL-first → Apollo; simplicity → SWR |
| Routing | React Router v7 | TanStack Router | Type-safe route params required |
| Styling | Tailwind CSS v4 | CSS Modules | Design token system incompatible with Tailwind |
| Component library | shadcn/ui (headless) | Mantine, Chakra | Fully managed a11y needed out of box |
| Testing unit | Vitest + RTL | Jest + RTL | Legacy Jest suite already exists |
| Testing E2E | Playwright | Cypress | Team has existing Cypress knowledge |
| Forms | React Hook Form + Zod | Formik | Large forms with complex validation |
| Dates | date-fns | dayjs | Bundle size <3kb target |
pnpm run build exits 0 with no TypeScript errors.pnpm run test exits 0 with coverage above configured thresholds.pnpm run lint exits 0 — no ESLint errors, no unresolved @/ aliases.Dockerfile builds a working image: docker build -t app . && docker run -p 80:80 app.index.css for component styles — Causes specificity wars. Use Tailwind utility classes or CSS Modules per component.useState or Zustand slice.strict: false silently allows any propagation, defeats the purpose. Accept the initial friction..env files — Use .env.example + runtime Zod validation. Add .env* to .gitignore from day one.scaffold-nextjs-app instead.Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.