new-component
Scaffold a typed React client component with props interface, Tailwind styling, and shadcn/ui primitives
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Scaffold a typed React client component with props interface, Tailwind styling, and shadcn/ui primitives
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Generate a semver-compliant release note from git history; on user confirmation, bump version, update CHANGELOG, create git tag, and publish a GitHub Release with gh
Scaffold a new backend server action with auth check, Zod input validation, repository call, and error handling
Scaffold a React Hook Form with Zod validation, useMutation, and toast notifications
Create a Zod input schema file in src/backend/services/inputs/ for a domain entity
Scaffold a Next.js App Router page with optional server-side session check, metadata, and layout
Scaffold TanStack Query useQuery and/or useMutation hooks for a feature, calling a backend server action
| name | new-component |
| description | Scaffold a typed React client component with props interface, Tailwind styling, and shadcn/ui primitives |
Create a new React component for techdiary.dev.
"use client" only if the component uses hooks, browser APIs, or event handlersProps interface (never use any or inline types in the function signature)React.FC<Props> for the component typecn() from @/lib/utils for conditional class names (not clsx directly)@/components/ui/ where applicableinterface Props {
// props
}
export const <Name>: React.FC<Props> = ({ /* props */ }) => {
return (
<div className="">
{/* content */}
</div>
);
};
"use client";
import { cn } from "@/lib/utils";
interface Props {
className?: string;
// other props
}
export const <Name>: React.FC<Props> = ({ className, /* props */ }) => {
return (
<div className={cn("", className)}>
{/* content */}
</div>
);
};
"use client";
interface RenderProps {
// data exposed to render
}
interface Props {
// config
render: (props: RenderProps) => React.ReactNode;
}
export const <Name>: React.FC<Props> = ({ render, /* config */ }) => {
// logic here
return <>{render({ /* render props */ })}</>;
};
"use client";
import { useQuery } from "@tanstack/react-query";
import * as <domain>Actions from "@/backend/services/<domain>.action";
interface Props {
id: string;
}
export const <Name>: React.FC<Props> = ({ id }) => {
const { data, isLoading } = useQuery({
queryKey: ["<resource>", id],
queryFn: () => <domain>Actions.<action>({ id }),
enabled: Boolean(id),
});
if (isLoading) return <div>Loading...</div>;
return <div>{/* render data */}</div>;
};
/new-query if yes).