yamcodes/arkenv/bulletproof-react

Claude Code and agent skill by yamcodes/arkenv

Trust tier 3
  • community
  • ext:[{"type":"hook","description":"Pre/post lifecycle hooks"}]
Source check pending

Checking that the SKILL.md file is still in the repository.

Bulletproof React architecture patterns for scalable, maintainable applications. Covers feature-based project structure, component patterns, state management boundaries, API layer design, error handling, security, and testing strategies. Use when structuring a React project, designing application architecture, organizing features, or when the user asks about React project structure or scalable patterns.

Install

npx vskill@latest install yamcodes/arkenv/bulletproof-react

Semi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard

SKILL.md

Bulletproof React

Architecture patterns for building scalable, maintainable React applications. Based on bulletproof-react.

Core references

TopicDescriptionReference
Project StructureFeature-based organization, unidirectional architecture, ESLint enforcementproject-structure
Components & StylingComponent hierarchy, wrapping 3rd party libs, headless vs styled librariescomponents-and-styling
API LayerAPI client, request declarations, query/mutation hook patternsapi-layer
State ManagementComponent, application, server cache, form, and URL state categoriesstate-management
Error HandlingError boundaries, API errors, error tracking with Sentryerror-handling
TestingUnit, integration, e2e strategies with Vitest, Testing Library, Playwright, MSWtesting
Project StandardsESLint, Prettier, TypeScript, Husky, absolute imports, file namingproject-standards
SecurityAuthentication, token storage, XSS prevention, RBAC/PBAC authorizationsecurity
PerformanceCode splitting, data prefetching, state optimization, children patternperformance

Project structure

Organize by feature, not by file type:

text
src/
├── app/ # Application shell (routes, providers, router)
├── assets/ # Static files (images, fonts)
├── components/ # Shared, reusable UI components
├── config/ # Environment variables, constants
├── features/ # Feature-based modules
├── hooks/ # Shared custom hooks
├── lib/ # Pre-configured library wrappers
├── stores/ # Global client state
├── testing/ # Test utilities, MSW handlers, factories
├── types/ # Shared TypeScript types
└── utils/ # Pure utility functions
Feature modules
text
features/users/
├── api/ # API functions and query hooks
├── components/ # Feature-specific components
├── hooks/ # Feature-specific hooks
├── types/ # Feature-specific types
└── utils/ # Feature-specific utilities

Rules:

  • Features should not import from other features. Compose at the app level.
  • Code flows one direction: shared → features → app.
  • Promote to shared directories only when reused by 2+ features.
  • Prefer direct imports over barrel re-exports for Vite tree-shaking.

Component hierarchy

text
Page Components → route-level, compose features, handle layout
└── Feature Components → feature-specific, business logic
└── UI Components → shared primitives, no business logic

API layer pattern

typescript
// Pure API function
function getUsers(params?: GetUsersParams): Promise<UsersResponse> {
return api.get("/users", { params });
}
// Query hook wrapping the API function
function useUsers(params?: GetUsersParams) {
return useQuery({
queryKey: ["users", params],
queryFn: () => getUsers(params),
});
}

State management boundaries

State TypeSolutionExamples
Server stateTanStack QueryUser data, posts, API responses
Client state (global)Zustand / JotaiTheme, sidebar open, user preferences
Client state (local)useState / useReducerForm inputs, toggles, modal open
URL stateURL search params / routerFilters, pagination, active tab
Form stateReact Hook FormMulti-step forms, validation

Don't mix server and client state. Never copy query data into useState.

Error hierarchy

text
App Error Boundary → catches unrecoverable crashes
└── Route Error Boundary → catches route-level failures, shows retry
└── Feature Error Boundary → catches feature-specific errors

Testing strategy

LayerToolWhat to Test
ComponentsTesting LibraryRender output, user interactions, a11y
HooksrenderHookState changes, side effects
APIMSWRequest/response handling, error states
IntegrationTesting Library + MSWFull feature flows (render → interact → verify)
E2EPlaywrightCritical user journeys

Conventions

ItemConventionExample
ComponentsPascalCaseUserCard.tsx
HookscamelCase, use prefixuseUsers.ts
UtilitiescamelCaseformatDate.ts
TypesPascalCaseUser, CreateUserInput
ConstantsUPPER_SNAKE_CASEMAX_RETRIES
Directorieskebab-caseuser-settings/
Fileskebab-caseuser-card.tsx
Imports

Use path aliases to avoid deep relative imports:

typescript
import { Button } from "@/components/ui/button";
import { useUsers } from "@/features/users/api";

Configure @/ as the src/ alias in tsconfig.json.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewPassed

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

7-day trend score
5

Not refreshed yet.

Extension points

  • hookPre/post lifecycle hooks

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/yamcodes/arkenv/bulletproof-react/badge)](https://verified-skill.com/skills/yamcodes/arkenv/bulletproof-react)

Something wrong with this skill or its page? Tell us.