storybook — скилл для Claude Code: что делает и как установить
Задаёт правила создания историй, автодокументации и тестов компонентов в Storybook. Помогает поддерживать дизайн-систему в проектах на React.
npx skills add Mindrally/skills --skill storybook -a claude-codeЧто делает storybook
Скилл передаёт агенту стандарты оформления библиотек компонентов. Он фиксирует правила оформления историй. В правилах прописаны структура файлов ComponentName.stories.tsx, типизация через Meta и StoryObj из пакета @storybook/react, а также обязательные состояния фокуса и ошибок.
В руководстве разобрана настройка argTypes, параметров отображения и тем через декораторы. Скилл содержит паттерны проверки доступности с аддоном @storybook/addon-a11y и сценарии взаимодействия через функцию play.
Шаблоны ориентированы на React и TypeScript. Для интерактивных тестов в проекте нужны пакеты @storybook/testing-library и @storybook/jest.
Какие задачи решает
- составить файл историй по шаблону ComponentName.stories.tsx
- настроить контролы и типы аргументов через argTypes
- добавить проверку доступности с помощью addon-a11y
- написать тесты взаимодействия через функцию play
Примеры запросов агенту
- Создай файл историй для компонента Button с вариантами primary и secondary
- Настрой argTypes и контролы для пропсов размера и состояния disabled в Card.stories.tsx
- Напиши тест клика кнопки в секции play с проверкой фокуса
Как установить storybook
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill storybook -a claude-code2Вручную: положить файлы
~/.claude/skills/storybook/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/storybook/
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill storybook -a codex2Вручную: положить файлы
.agents/skills/storybook/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill storybook -a cursor2Вручную: положить файлы
.cursor/skills/storybook/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install Mindrally/skills storybook2Вручную: положить файлы
.github/skills/storybook/SKILL.md1Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill storybook -a gemini-cli2Командой платформы
gemini skills install https://github.com/Mindrally/skills --path storybookВручную: положить файлы
.devin/skills/storybook/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add Mindrally/skills --skill storybook -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о storybook
Как установить storybook в Claude Code?
Выполните команду npx skills add Mindrally/skills --skill storybook -a claude-code в терминале. Также можно сохранить файл по пути ~/.claude/skills/storybook/SKILL.md.
Что делает скилл storybook?
Он инструктирует ИИ-агента создавать истории Storybook по единым стандартам: размещать их рядом с компонентами, использовать autodocs, описывать пропсы и настраивать тестирование.
Какие зависимости нужны для тестов взаимодействия по этому скиллу?
Для воспроизведения пользовательских событий и проверок в функции play понадобятся пакеты @storybook/testing-library и @storybook/jest.
Исходный текст
SKILL.md · Apache-2.0
---
name: storybook
description: Best practices for building and documenting component libraries with Storybook
metadata:
maintainer: Mindrally
source: https://github.com/Mindrally/skills
---
# Storybook Best Practices
You are an expert in building and documenting component libraries with Storybook. Apply these guidelines when creating stories, organizing components, and maintaining design systems.
## Project Structure
### Directory Organization
- Place stories alongside component files (Component.stories.tsx)
- Use consistent naming conventions for story files
- Organize stories by feature or component type
- Maintain a clear hierarchy matching your component library
### File Naming
- Use PascalCase for component story files
- Follow pattern: `ComponentName.stories.tsx`
- Group related stories in the same file
- Use descriptive story names that explain the variant
## Writing Stories
### Story Structure
```typescript
import type { Meta, StoryObj } from '@storybook/react';
import { Component } from './Component';
const meta: Meta<typeof Component> = {
title: 'Category/Component',
component: Component,
parameters: {
layout: 'centered',
},
tags: ['autodocs'],
argTypes: {
// Define arg types here
},
};
export default meta;
type Story = StoryObj<typeof meta>;
export const Default: Story = {
args: {
// Default props
},
};
export const Variant: Story = {
args: {
variant: 'secondary',
},
};
```
### Story Best Practices
- Create a Default story showing primary usage
- Add stories for each significant variant
- Include edge cases and error states
- Document interactive states (hover, focus, disabled)
- Show responsive behavior when relevant
## Component Documentation
### Autodocs
- Enable autodocs for automatic documentation generation
- Write clear JSDoc comments for components and props
- Document prop types, defaults, and requirements
- Include usage examples in component comments
### Custom Documentation
- Add MDX files for complex documentation needs
- Include design rationale and usage guidelines
- Document accessibility considerations
- Provide code examples for common use cases
## Args and Controls
### ArgTypes Configuration
```typescript
argTypes: {
variant: {
control: 'select',
options: ['primary', 'secondary', 'tertiary'],
description: 'Visual style variant',
table: {
defaultValue: { summary: 'primary' },
},
},
size: {
control: 'radio',
options: ['sm', 'md', 'lg'],
},
disabled: {
control: 'boolean',
},
onClick: {
action: 'clicked',
},
}
```
### Args Best Practices
- Use meaningful default values
- Group related args logically
- Provide descriptions for complex props
- Set up actions for callback props
## Decorators and Parameters
### Decorators
```typescript
decorators: [
(Story) => (
<ThemeProvider theme={defaultTheme}>
<Story />
</ThemeProvider>
),
],
```
- Use decorators for consistent story wrappers
- Apply theme providers at the appropriate level
- Add layout containers when needed
- Keep decorators simple and reusable
### Parameters
```typescript
parameters: {
layout: 'centered', // or 'fullscreen', 'padded'
backgrounds: {
default: 'light',
values: [
{ name: 'light', value: '#ffffff' },
{ name: 'dark', value: '#1a1a1a' },
],
},
viewport: {
defaultViewport: 'responsive',
},
},
```
## Testing with Storybook
### Interaction Testing
```typescript
import { within, userEvent } from '@storybook/testing-library';
import { expect } from '@storybook/jest';
export const Clickable: Story = {
play: async ({ canvasElement }) => {
const canvas = within(canvasElement);
const button = canvas.getByRole('button');
await userEvent.click(button);
await expect(button).toHaveFocus();
},
};
```
### Visual Testing
- Configure visual regression testing
- Capture stories at multiple viewports
- Test theme variations (light/dark mode)
- Document visual test coverage
### Accessibility Testing
- Enable a11y addon for accessibility checks
- Address all accessibility violations
- Test keyboard navigation in stories
- Document ARIA requirements
## Addons and Configuration
### Essential Addons
- @storybook/addon-essentials (docs, controls, actions, viewport)
- @storybook/addon-a11y for accessibility testing
- @storybook/addon-interactions for interaction testing
- @storybook/addon-designs for design spec integration
### Configuration
```typescript
// .storybook/main.ts
const config: StorybookConfig = {
stories: ['../src/**/*.stories.@(js|jsx|ts|tsx)'],
addons: [
'@storybook/addon-essentials',
'@storybook/addon-a11y',
'@storybook/addon-interactions',
],
framework: {
name: '@storybook/react-vite',
options: {},
},
};
export default config;
```
## Design System Integration
### Design Tokens
- Import design tokens from your token system
- Apply tokens consistently in stories
- Document token usage in component docs
- Show token variations in dedicated stories
### Theme Support
- Configure theme provider in preview.js
- Create stories for each theme variant
- Test components across all supported themes
- Document theme-specific behavior
## Performance
### Build Optimization
- Use lazy loading for large story collections
- Optimize static assets
- Configure proper caching
- Monitor and improve build times
### Story Performance
- Avoid heavy computations in stories
- Use mock data efficiently
- Lazy load complex dependencies
- Profile and optimize slow stories
## Best Practices Summary
- Write stories that serve as living documentation
- Test components in isolation before integration
- Keep stories simple and focused
- Maintain consistency across all stories
- Update stories when components change
- Use stories for design review and QA
- Make accessibility testing part of the workflow
- Integrate with your CI/CD pipeline
© Mindrally · Apache-2.0 · Mindrally/skills