ワンクリックで
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;
}