원클릭으로
cotato-storybook
COTATO UI 패키지 Storybook 스토리 작성 워크플로우. "스토리 만들어줘", "스토리북", /storybook 입력 시 사용. CSF3 패턴, packages/ui 구조 준수.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
COTATO UI 패키지 Storybook 스토리 작성 워크플로우. "스토리 만들어줘", "스토리북", /storybook 입력 시 사용. CSF3 패턴, packages/ui 구조 준수.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
COTATO 프로젝트 코드 리뷰 워크플로우. "코드 리뷰해줘", "review" 입력 시 사용. CRITICAL/HIGH/MEDIUM/LOW 심각도 분류, 프로젝트 컨벤션 준수 확인.
COTATO 프로젝트 커밋 워크플로우. "커밋해줘", "commit", /commit 입력 시 사용. atomic 단위 커밋 분리, secret guard, 계획 승인 후 실행.
COTATO 프로젝트 문서 작성 워크플로우. "문서 만들어줘", "README 써줘" 입력 시 사용. README/설계문서/ADR 구조, Why 중심 서술.
COTATO 프로젝트 GitHub 이슈 생성 워크플로우. "이슈 만들어줘", /issue 입력 시 사용. [TYPE]: 제목 형식, 템플릿 준수, 브랜치 자동 생성.
COTATO 프로젝트 PR 생성 워크플로우. "PR 만들어줘", "pull request", /pr 입력 시 사용. [TYPE]: 제목 형식, PR 템플릿 준수, develop 기준.
COTATO 프로젝트 릴리즈 자동화 워크플로우. "릴리즈해줘", "release PR", /release 입력 시 사용. develop→release/X.Y.Z→main, GitHub Release draft 자동 생성.
SOC 직업 분류 기준
| name | cotato-storybook |
| description | COTATO UI 패키지 Storybook 스토리 작성 워크플로우. "스토리 만들어줘", "스토리북", /storybook 입력 시 사용. CSF3 패턴, packages/ui 구조 준수. |
| license | MIT |
| metadata | {"author":"cotato","version":"1.0.0"} |
다음 요청이 오면 이 스킬을 사용한다:
/storybookpackages/ui/
├── .storybook/
│ ├── main.ts # Storybook 설정 (Vite builder, addons)
│ ├── preview.ts # 전역 데코레이터, 배경, 뷰포트, 다크모드
│ ├── manager.ts # Cotato 커스텀 테마 적용
│ └── theme.ts # Cotato 테마 (primary: #f87d02, bg: #1f1f1f)
└── src/components/
└── {폴더}/
├── {Component}.tsx
└── {Component}.stories.tsx ← 컴포넌트와 같은 폴더에 위치
스토리 파일은 컴포넌트와 같은 폴더에 위치한다.
src/components/buttons/Button.tsx
src/components/buttons/Button.stories.tsx ← 올바름
src/stories/Button.stories.tsx ← 잘못됨
Components/{카테고리}/{컴포넌트명}
| 카테고리 | 컴포넌트 |
|---|---|
Buttons | Button, FullButton |
Form | FormInput, FormTextarea, FormFile, FormLink |
Feedback | Spinner, StatusChip |
Overlay | Modal, ConfirmModal |
Navigation | Pagination |
Selection | Checkbox, CheckboxFilter, StatusDropdown |
Brand | CotatoLogo, HeroMainBanner |
import type {Meta, StoryObj} from '@storybook/react';
import {ComponentName} from './ComponentName';
const meta = {
title: 'Components/{Category}/{ComponentName}',
component: ComponentName,
tags: ['autodocs'],
argTypes: {},
args: {},
} satisfies Meta<typeof ComponentName>;
export default meta;
type Story = StoryObj<typeof meta>;
tags: ['autodocs'] 포함render 함수로 상태 관리export const Default: Story = {
render: () => {
const [isOpen, setIsOpen] = useState(false);
return (
<>
<Button label='열기' onClick={() => setIsOpen(true)} />
<Modal isOpen={isOpen} onClose={() => setIsOpen(false)} title='제목' />
</>
);
},
};
type MyStatus = 'ACTIVE' | 'INACTIVE';
const config: Record<MyStatus, {label: string; className: string}> = {
ACTIVE: {label: '활성', className: 'bg-chip'},
INACTIVE: {label: '비활성', className: 'bg-neutral-400'},
};
const meta = {
// ...
} satisfies Meta<typeof StatusChip<MyStatus>>;
--color-primary: #f87d02
--color-secondary: #ffb800
--color-neutral-50 ~ --color-neutral-800
--color-text-default: #f5f5f5
--color-text-muted: #9e9e9e
--color-alert: #e5484d
--color-chip: #68ca3a
text-h1 ~ text-h5
text-body-l, text-body-l-b, text-body-l-sb
text-body-m, text-body-m-sb
text-body-s
pnpm --filter @repo/ui storybook # 개발 서버
pnpm --filter @repo/ui build-storybook # 빌드
pnpm --filter @repo/ui chromatic # Chromatic 배포 (토큰 필요)
.github/workflows/chromatic.yml — packages/ui/** 변경 시 자동 실행:
main 브랜치 push: 전체 배포