원클릭으로
react-vite
Guidelines for building React + Vite web apps in the pnpm monorepo with design subagent delegation.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Guidelines for building React + Vite web apps in the pnpm monorepo with design subagent delegation.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
| name | react-vite |
| description | Guidelines for building React + Vite web apps in the pnpm monorepo with design subagent delegation. |
Use the current runtime tools and callbacks. Do not call legacy callback names from older skill ports.
Always follow these guidelines when building a React + Vite web application:
design skill and start an async design subagent to build the frontend. Do not give the subagent any recommendation or advice on how it should build the frontend unless requested by the user. For example, do not talk about color, font, layout, etc. the design subagent has much better taste than you.See delegation and design skills for some background information.
You must use the design subagent for every react-vite first build -- no exceptions. This applies regardless of app size, complexity, or whether a backend is needed. "No backend" means skip OpenAPI/codegen, not skip the design subagent. "Simple app" means the subagent gets a simpler brief, not that you build the frontend yourself. Never build the frontend yourself to save time -- the design subagent is the fast path.
Before building, classify the app to decide how you and the DESIGN subagent split work. The design subagent is always used -- the question is how much it owns.
The difference between a boring app and a great app is usually 3-5 extra endpoints in the spec. Before codegen, spend an extra minute adding safe wow endpoints beyond flat CRUD -- lightweight read-only endpoints that make the app feel polished:
Skip speculative expensive features (recommendations, anomaly detection, forecasting, complex real-time presence).
This way the design subagent has real hooks for both the core app and the wow surfaces, and integration is minimal.
Use the pnpm-workspace skill as the source of truth for shared monorepo rules. When you touch backend code, follow the pnpm-workspace skill's references:
references/openapi.md for contract-first OpenAPI + codegenreferences/server.md for artifacts/api-server/src/routes/ conventionsreferences/db.md for lib/db/src/schema/ and Drizzle guidanceThe design subagent is the bottleneck -- everything is ordered to get it running ASAP.
The database is NOT a prerequisite for the design subagent. Every project already has a pre-configured PostgreSQL database, so there is nothing to create. Even when the app clearly needs a DB, do not write schema, run migrations, or seed before launching the subagent. The design subagent depends only on the generated API client (OpenAPI -- codegen -- hooks) -- it does not care whether any tables exist yet. All DB work happens AFTER the subagent is spawned, in parallel with its run (see step 5). Touching the database before step 4 directly delays first output for zero benefit.
lib/api-spec/openapi.yaml -- include both core CRUD and the safe wow endpoints from Step 2. This is the critical path because it gates codegen which gates the design subagent.pnpm run --filter @workspace/api-spec codegen)design skill's delegation rules:
grep "^export " lib/api-client-react/src/generated/*.ts | grep -E "function use|const use|QueryKey" and include the full list in the task description so the subagent does not guess names.const designJob = subagent({ name: "initial-design", task, config: { $kind: "design", relevantFiles, relevantSkills } })
// Notice subagent is not awaited since we want to run it in the background.
Keep designJob.jobId; after backend work is done, you must join this job with waitForJob in step 6 instead of ending the turn.
src/App.tsx, package.json, and .local/skills/react-vite/references/frontend-general-rules.md via config.relevantFiles so the subagent can import and use real API hooks without wasting time exploring.relevantSkills -- use the full path from the skills view for each one. Any skill with integration details (auth, storage, payments, etc.) must be forwarded so the subagent builds correctly.grep "^export " lib/api-zod/src/generated/api.ts to capture the exact Zod schema names (e.g. ListNotesQueryParams, CreateNoteBody, GetNoteParams). Use the real names when writing routes instead of guessing based on Orval's naming conventions.lib/db/src/schema/, then run pnpm --filter @workspace/db run push.artifacts/api-server/src/routes/, importing the exact Zod schema names from the grep above (do not guess -- Orval names vary by parameter location: QueryParams, Params, Body)..local/skills/media-generation/SKILL.md and use generateImage instead of placeholder services (DiceBear, Boring Avatars, Unsplash, Lorem Picsum, etc.). Real API image URLs (e.g. Pok--API sprites, TMDB posters) are fine. It's okay not to seed object storage.generateImage and generateVideo.
Note: All DB schema/definition/seeding and backend development work MUST happen only after the design subagent has been spawned. Do not front-load any of it.designJob is still running. Join it from CodeExecution with const designResult = await waitForJob({ jobId: designJob.jobId, timeout: 600 }) (or the exact stored design job id if joining in a later CodeExecution call), then continue with the result. If the wait times out, call waitForJob again; do not finish the turn with the design job still running. Do not restart the frontend workflow until the design subagent has finished, otherwise it will show a broken app. You can restart the API workflow if needed.waitForJob returns the design result, fix any integration issues by calling the direct WorkflowsRestart tool on the existing managed workflows, then refresh logs:
{ "name": "artifacts/api-server: API Server" }{ "name": "artifacts/<slug>: web" }configureWorkflow callback for either service or inline PORT / BASE_PATH; their artifact workflows already provide the configured environment and proxy routing.SuggestUserAction({ action: "deploy", message: "The app is ready to publish." }).No OpenAPI, no codegen. Launch the design subagent immediately.
If the user is creating a site for a real company, or wants to match an existing company/site, gather context before launching the design subagent: use extractBranding for brand tokens, fall back to imageSearch via the image-search skill when you need a cleaner or missing logo, use webFetch on the homepage, about page, or key product pages for real messaging, and use external-URL screenshot when the visual feel of the source site matters. Pass the distilled brand and product context into the brief, not raw tool output. When passing brand context, include colors, typography, and images.
If extractBranding and/or imageSearch gave you images, download each usable image into the workspace before launching the design subagent. Pass the local file paths via relevantFiles and include a Brand assets block in the task that labels each file (logo, favicon, OG image, etc.), where it came from, and what it should be used for.
Never pass image URLs or vague references as the only handoff; if an image is not downloaded to a workspace file and identified in the task, treat it as unavailable.
design skilldesign skill's presentation-heavy delegation rules:
const designJob = subagent({ name: "initial-design", task, config: { $kind: "design", relevantFiles, relevantSkills } })
// Notice subagent is not awaited since we want to run it in the background.
The completion notification will resume you when the design assignment is done. (see delegation and design skills as well)
src/App.tsx, branding images, and package.json via config.relevantFiles.SuggestUserAction({ action: "deploy", message: "The app is ready to publish." }).src/index.css (colors, fonts, radius) and store them for use in subsequent artifacts (expo, slides, etc.). This ensures all artifacts share the same visual identity. See multi-artifact-creation.md "Visual Consistency" section.SuggestUserAction({ action: "deploy", message: "The app is ready to publish." }).pnpm-workspace skill./ws) must be listed in artifact.toml's paths array alongside the REST API path. The proxy only forwards explicitly listed paths -- unlisted WS paths are silently dropped and the server never sees the connection.There is a full SEO implementation guide in .local/skills/react-vite/references/seo.md. Read it when building or optimizing pages for search engine visibility. At minimum, ensure every page has a unique title tag, meta description, and Open Graph tags.
Anthropic AI integration via Replit AI Integrations proxy (JavaScript/TypeScript). Provides Anthropic-compatible API access without requiring your own API key.
Gemini AI integration via Replit AI Integrations proxy (JavaScript/TypeScript). Provides Gemini-compatible API access without requiring your own API key.
OpenAI AI integration via Replit AI Integrations proxy (JavaScript/TypeScript). Provides OpenAI-compatible API access without requiring your own API key.
OpenRouter AI integration via Replit AI Integrations proxy (JavaScript/TypeScript). Provides OpenRouter-compatible API access without requiring your own API key.
Apply a user's saved artifact template (a reusable slides/web style donor) when they ask to build or restyle an artifact "with my template", "using my saved template", "in my brand style", or refer to a template by name. Use this to discover the user's saved templates and materialize one for use.
Use when creating or updating the artifact.toml for artifacts such as websites, web apps, mobile apps, slide decks, pitch decks, videos, and data visualizations.