원클릭으로
component-design
Design React component hierarchy and hooks
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Design React component hierarchy and hooks
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Design REST/WebSocket API contracts with TypeScript types
Generate REST APIs from TypeScript contracts with CRUD operations
Implements authentication (JWT, OAuth2) and authorization (RBAC) from requirements
Review quality of generated code. Checks for empty files, broken imports, missing modules, duplicate code, TypeScript errors, and rates overall quality. Identifies files that need regeneration.
Quick health check of all Coding Engine infrastructure. Checks containers, DB connectivity, API endpoints, Discord bot, sandbox preview, LLM API keys, and generation process. Takes 15 seconds.
Diagnoses pipeline problems and outputs actionable fix commands. Combines insights from status-report, code-quality, task-audit, and health-check into concrete recommendations with copy-paste-ready commands. Answers "what should I do next?" and "why is generation stuck?"
| name | component-design |
| description | Design React component hierarchy and hooks |
| tier_tokens | {"minimal":120,"standard":300,"full":600} |
Design React component hierarchy, custom hooks, and page structure.
any type for propssrc/
components/
features/ # Feature-specific components
ui/ # Reusable UI primitives
hooks/ # Custom hooks
pages/ # Page components
types/ # TypeScript types
ALWAYS apply these design tokens for professional, soft-toned UI:
bg-slate-50 for app, bg-white for cardstext-slate-900 for headings, text-slate-600 for bodybg-blue-500 / hover:bg-blue-600 for actionsborder-slate-200 for subtle separationCard Component
<div className="bg-white rounded-xl shadow-sm border border-slate-100 p-6 hover:shadow-md transition-shadow">
<h2 className="text-slate-900 text-xl font-semibold mb-4">Title</h2>
<p className="text-slate-600">Content</p>
</div>
Primary Button
<button className="bg-blue-500 hover:bg-blue-600 text-white px-4 py-2 rounded-lg font-medium transition-colors focus:ring-2 focus:ring-blue-500 focus:ring-offset-2">
Action
</button>
Secondary Button
<button className="bg-slate-100 hover:bg-slate-200 text-slate-700 px-4 py-2 rounded-lg font-medium transition-colors">
Secondary
</button>
Form Input
<input
className="w-full px-4 py-2 border border-slate-200 rounded-lg focus:ring-2 focus:ring-blue-500 focus:border-blue-500 outline-none transition-all placeholder:text-slate-400"
placeholder="Enter value..."
/>
Status Badge
<span className="inline-flex items-center px-2.5 py-0.5 rounded-full text-xs font-medium bg-emerald-100 text-emerald-800">
Active
</span>
interface ComponentProps {
// Required props
data: DataType;
onAction: (id: string) => void;
// Optional props
className?: string;
isLoading?: boolean;
}
// For useState
state: [
{ name: "isOpen", type: "boolean", initial: "false" },
{ name: "selectedId", type: "string | null", initial: "null" }
]
events: {
onClick: "(e: React.MouseEvent) => void",
onSubmit: "(data: FormData) => Promise<void>",
onChange: "(value: string) => void"
}
function useResources(params?: QueryParams) {
return {
data: Resource[] | undefined,
isLoading: boolean,
error: Error | null,
refetch: () => Promise<void>,
// For mutations
create: (data: CreateRequest) => Promise<Resource>,
update: (id: string, data: UpdateRequest) => Promise<Resource>,
remove: (id: string) => Promise<void>,
};
}
function useLiveUpdates(resourceId: string) {
return {
lastUpdate: Update | null,
isConnected: boolean,
reconnect: () => void,
};
}
// pages/ResourcesPage.tsx
components: ["ResourceFilters", "ResourceList", "Pagination"],
layout: "MainLayout",
guards: ["AuthGuard"],
data_fetching: "client" // or "server" for SSR
| Feature | Components |
|---|---|
| List view | Filters, List, Pagination, EmptyState |
| Detail view | Header, Content, Actions, RelatedItems |
| Form view | FormFields, Validation, SubmitButton |
| Dashboard | Cards, Charts, Stats, Timeline |
// stores/resourceStore.ts
interface ResourceStore {
resources: Resource[];
selectedId: string | null;
// Actions
setResources: (resources: Resource[]) => void;
selectResource: (id: string) => void;
}