engineering-paved-path
Stack skills for React, Next.js and Fastify apps: architecture, component placement, testing and security
Install
- 1. Add the marketplace (once)
- 2. Install the plugin
Dependencies
No dependencies.
Used by
- architecture-reviewRead-only architecture reviewer for a change or an area, against onion architecture and frontend UI placement rules
- sdd-engineeringSpec Driven Development pipeline: spec, plan, implement, verify and retro with dedicated agents
Contents
- Skills7
Artifacts
Skills7
- fastify-best-practicesGuides development of Fastify Node.js backend servers and REST APIs using TypeScript or JavaScript. Use when building, configuring, or debugging a Fastify application — including defining routes, implementing plugins, setting up JSON Schema validation, handling errors, optimising performance, managing authentication, configuring CORS and security headers, integrating databases, working with WebSockets, and deploying to production. Covers the full Fastify request lifecycle (hooks, serialization, logging with Pino) and TypeScript integration via strip types. Trigger terms: Fastify, Node.js server, REST API, API routes, backend framework, fastify.config, server.ts, app.ts.
- frontend-ui-architectureDecides where frontend UI code belongs and how far to split it: component homes, file roles (constants, helpers, styles, barrels), business-logic and state placement, and the App Router server/client boundary. Use when creating, moving or renaming any React/Next.js file, extracting a helper or constant, choosing route-local vs shared vs design system, placing data fetching or business rules, or reviewing a PR that adds UI files. Applies even to one-file changes — that is how structure erodes.
- next-best-practicesNext.js best practices - file conventions, RSC boundaries, data patterns, async APIs, metadata, error handling, route handlers, image/font optimization, bundling. Use when writing, reviewing or debugging Next.js App Router code - pages, layouts, route handlers, Server Components and Server Actions, next/image, next/font, metadata, hydration errors or self-hosting.
- onion-architectureEnforces Onion Architecture in Node.js/TypeScript backends and MCP servers: which ring a file belongs to, the inward-only dependency rule, when a port/interface is justified, where business rules live vs. routes vs. repositories, and how Fastify, an ORM such as Drizzle, Zod, a DI container / composition root and the MCP SDK map onto the rings. Use when adding or moving any backend file, creating a module, writing a route, service, repository or MCP tool, introducing an adapter for an external system, placing a business rule, or reviewing a backend PR for layering. Applies to one-file changes — that is how layering erodes.
- react-best-practicesModern React best practices and anti-pattern catalog (2025-26). Use when writing, reviewing, or refactoring React components, hooks, and state management. Covers component design, state patterns, hooks misuse, performance, data fetching, and code organization.
- react-testing-libraryGeneral-purpose React Testing Library guide with Vitest. Use when writing, reviewing, or setting up React component and hook tests. Covers project setup from scratch, RTL query priority, userEvent, async patterns, mocking strategies, and common anti-patterns. Applicable to any Vite + React project.
- securityWeb application security best practices based on OWASP Top 10:2025. Use when reviewing code for vulnerabilities, implementing auth/authorization, handling user input, working with file uploads, managing secrets, or building API endpoints. Covers React, Express, MongoDB, and JWT security.
Security
Runs no hooks starts no MCP servers no broad tool permissions no network calls found self-contained
Static analysis of this plugin's files, made when the site was built. It shows what the files say, not what the plugin does when it runs, and it is not a guarantee. Read the source before you install.
No hooks, MCP servers, broad tool permissions or network calls found.
Network use
No network indicators found in scripts or hook commands.
Self-contained
No path leaves the plugin directory. ${CLAUDE_PLUGIN_ROOT} is the plugin directory.
README
Stack skills for React, Next.js and Fastify apps: architecture, component placement, testing and security.
What it is
Coding agents write code that compiles but drifts: a SQL query lands in a route handler, a one-off component ends up in the shared folder, a test checks implementation details, and an endpoint ships without an authorization check. This plugin gives Claude a paved path: a set of skills that load automatically when it works on a matching file, so the same rules apply to every change, including one-line ones.
It covers six areas: React, Next.js, Fastify, architecture (backend layering and frontend structure), testing, and security. The skills contain instructions only. They run no scripts, add no hooks and start no servers.
Install
Add the marketplace once:
/plugin marketplace add DmytrivDev/DevDigest-AI-Marketplace
Then install the plugin, either inside Claude Code:
/plugin install engineering-paved-path@devdigest-marketplace
or from your shell:
claude plugin install engineering-paved-path@devdigest-marketplace
The plugin has no dependencies of its own. If you install architecture-review or
sdd-engineering, Claude Code installs this plugin for you, because both depend on it.
Compatibility
Claude Code >=2.1.110 (version-constrained plugin dependencies); tested with 2.1.301.
Details, and the features this plugin relies on: COMPATIBILITY.md.
What's inside
Seven skills. Claude loads a skill when its description matches the task. Every skill
except next-best-practices can also be run by hand as /engineering-paved-path:<skill>.
| Skill | Namespaced name | What it does | When it triggers |
|---|---|---|---|
react-best-practices |
engineering-paved-path:react-best-practices |
A catalog of modern React practices and anti-patterns: component design, hooks misuse, state, keys, conditional rendering, accessibility, performance, data fetching | Auto, when writing, reviewing or refactoring React components and hooks. Also manual |
next-best-practices |
engineering-paved-path:next-best-practices |
Next.js rules: file conventions, RSC boundaries, async APIs, data patterns, metadata, error handling, route handlers, image and font optimization, bundling, self-hosting | Auto only (user-invocable: false), when working on Next.js App Router code |
fastify-best-practices |
engineering-paved-path:fastify-best-practices |
How to build Fastify servers: routes, plugins, JSON Schema validation, hooks, errors, logging, auth, CORS, databases, WebSockets, testing, deployment | Auto, when building, configuring or debugging a Fastify app. Also manual |
react-testing-library |
engineering-paved-path:react-testing-library |
React Testing Library with Vitest: setup, query priority, userEvent, async patterns, MSW mocking, and a few long user-flow tests instead of many tiny ones |
Auto, when writing, reviewing or setting up component and hook tests. Also manual |
security |
engineering-paved-path:security |
Web app security based on the OWASP Top 10:2025, with severity levels, checklists and safe/unsafe code pairs | Auto, when reviewing code for vulnerabilities, adding auth, handling input or uploads, managing secrets, or building API endpoints. Also manual |
onion-architecture |
engineering-paved-path:onion-architecture |
Onion Architecture for Node/TypeScript backends and MCP servers: four rings, the inward-only import rule, when a port is justified, where business rules, repositories and DTO mapping go, DI through a composition root, and an example dependency-cruiser config | Auto, when adding or moving a backend file, writing a route, service, repository or MCP tool, or reviewing a backend PR. Also manual |
frontend-ui-architecture |
engineering-paved-path:frontend-ui-architecture |
Where frontend code belongs: component homes (route-local, shared, design system), file roles, barrels, when to split, where logic and state live, and the App Router server/client boundary | Auto, when creating, moving or renaming a React or Next.js file, extracting a helper or constant, or reviewing a PR that adds UI files. Also manual |
Each skill keeps its detail in reference files next to its SKILL.md, and Claude reads
them only when it needs them. The two architecture skills also ship a README.md that
lists their sources and explains where those sources disagree.
How to use it
You don't need to do anything special. Work as usual, and the matching skills load when they apply. A few examples:
1. Edit a .tsx file: the skills trigger on their own.
Add a "Remove" button to src/app/(shop)/cart/_components/CartRow/CartRow.tsx
that asks for confirmation first.
Claude loads react-best-practices and frontend-ui-architecture. The confirmation dialog
stays route-local under _components/ rather than going to src/components/. Its
open/closed state stays in the smallest component that needs it. If a label needs a price
calculation, that goes in helpers.ts, not in the JSX. If the route is a Server Component,
next-best-practices keeps 'use client' on the interactive leaf only.
2. Run the architecture skill explicitly before a backend change.
/engineering-paved-path:onion-architecture
Where should the discount calculation for orders live? Right now it is inline in
src/modules/orders/routes.ts.
The answer will be ring 1: a pure function in src/modules/orders/pricing.ts, called from
OrderService. The route keeps four jobs: parse, resolve the tenant, call the service, map
the status code. The pure function can be unit-tested without a database.
3. Review a diff against the rules.
Review my staged changes for layering and component-placement problems.
Both architecture skills come with a review checklist, and onion-architecture lists what
an import graph cannot catch. Pre-existing violations are not reported unless the change
adds to them.
4. Write tests the way the testing skill recommends.
Write tests for src/app/(shop)/checkout/_components/AddressForm.
react-testing-library writes one or two user-flow tests: fill in the form, submit, and
check the result or the error. API calls are mocked with MSW instead of vi.mock.
Configuration
None. The skills read nothing and need no keys.
The examples use a neutral layout (src/modules/orders/, src/app/(shop)/cart/,
src/components/, src/ui/). The architecture skills ask Claude to map these onto your
project's real folders. If you use the sdd-engineering pipeline, its routing setting in
.claude/sdd-engineering.json sends files to these skills by glob. For example, **/*.tsx
can go to engineering-paved-path:frontend-ui-architecture and src/modules/** to
engineering-paved-path:onion-architecture. Without the pipeline, the skills trigger from
their descriptions alone.
The architecture skills don't track your project's known violations. Record those in your
own docs, or in the knowledge files listed under knowledgeFiles in
.claude/sdd-engineering.json. Reviewers then report only violations that a change adds.
Dependencies
- Needs: nothing.
- Used by:
architecture-review: itsarchitecture-revieweragent appliesonion-architecture,frontend-ui-architectureand any stack skill routed to the changed files.sdd-engineering: the planner and the implementer load the routed stack skills for every file they touch.
Limits and safety
- Instructions only. No scripts, hooks, MCP servers or bundled executables. No skill
sets
allowed-tools, so a skill grants no extra permissions. Claude keeps the permissions of your session. - Nothing runs automatically except loading. A skill changes how Claude writes and reviews code. It never edits, commits or runs commands by itself.
- Advice, not enforcement. The architecture rules hold only through review unless your
project adds a boundary check.
onion-architectureincludes an example dependency-cruiser config you can adopt. It doesn't assume you already have one. - Opinionated defaults. Where the literature disagrees, the architecture skills pick one side and label it [choice]. If your project has settled the question another way, the skills tell Claude to follow the project.
- Stack scope. The skills target React, Next.js (App Router), Fastify and TypeScript.
react-testing-libraryassumes Vitest.securityuses examples from React, Express, MongoDB and JWT. Other stacks get only the general principles.
Credits
| Skill | Source | Commit | License |
|---|---|---|---|
fastify-best-practices |
mcollina/skills — skills/fastify |
58b3eeb |
MIT — LICENSE kept next to the skill. The registry metadata file tile.json is not included |
next-best-practices |
vercel-labs/next-skills — skills/next-best-practices (removed upstream since; last version dc1de9c) |
31e6ebd |
None declared upstream — redistribution permission pending |
react-best-practices |
burnjohn/quick-blog — .claude/skills/react-best-practices |
b63d321 |
None declared upstream — redistribution permission pending |
react-testing-library |
burnjohn/quick-blog — .claude/skills/react-testing-library |
71140a0 |
None declared upstream — redistribution permission pending |
security |
burnjohn/quick-blog — .claude/skills/security |
002a3ac |
None declared upstream — redistribution permission pending |
onion-architecture, frontend-ui-architecture |
Written for this marketplace. Each skill's README.md lists the articles and docs it builds on |
— | Same as this repository |
Small local edits to third-party skills:
- Wording that named one project was made neutral.
- One install line in
security/references.mdnow points to the upstream README instead of a path.
A repository without a license grants no right to redistribute by default. The four skills
marked "pending" stay in the plugin only until their authors confirm permission, or until
they are replaced. This must be settled before the 1.0.0 release tag.
Compatibility
Show the compatibility notes
Claude Code: >=2.1.110
| Minimum Claude Code | 2.1.110 — needed for version-constrained plugin dependencies |
| Tested with | Claude Code 2.1.301 on Windows 11 |
| Operating systems | Windows, macOS, Linux |
| Other requirements | none — skills only, no scripts, hooks or MCP servers |
Features this plugin relies on
- Plugin skills, invoked as
/engineering-paved-path:<skill>or loaded automatically from their description. - No dependencies on other plugins.
architecture-reviewandsdd-engineeringdepend on this plugin with the range^1.0.0.
If you use a newer Claude Code feature in this plugin, add it here and raise the minimum version to the release that introduced it, citing the official changelog or docs.
Checking your setup
claude --version
claude plugin list --json
claude plugin list --json must show the plugin enabled, with no dependency-unsatisfied,
range-conflict or no-matching-tag errors.
- 1.0.0 Plugin added with 7 artifacts Oct 16, 2026 · a81051e