storybook
Storybook workflow, MCP tools, fixtures, CSS import chains. Auto-invoke when working with Storybook stories or components.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Storybook workflow, MCP tools, fixtures, CSS import chains. Auto-invoke when working with Storybook stories or components.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
MSW 2 (Mock Service Worker) mocking in Svelte: Storybook, Vitest browser tests, SvelteKit dev/SSR. Use when writing handlers or fixtures, when a story renders blank or errors Failed to fetch, or when migrating msw-storybook-addon v2 to v3.
Vitest test.projects, browser mode with playwright(), optimizeDeps, separate vitest.config from vite.config. Use when editing vitest config, debugging flaky browser tests, upgrading @vitest/*, or splitting node vs browser projects.
Svelte CSF (@storybook/addon-svelte-csf) + @storybook/addon-vitest: .stories.svelte as Vitest browser tests with play functions and tags. Use when wiring or debugging Svelte Storybook tests in Vitest/CI, not for React/Vue/CSF3 .ts story files.
Validation discipline for all code changes, testing, baselines, browser checks, CSS screenshots. Auto-invoke whenever making code changes, running tests, or declaring a task done.
Fix and create Svelte 5 tests with vitest-browser-svelte and Playwright. Use when fixing broken tests, debugging failures, writing unit/SSR/e2e tests, or working with vitest/Playwright.
Code style rules for all languages: variable naming, brace style, HTML data attributes, CSS nesting. Auto-invoke when editing code files, writing new functions, or naming variables.
| name | storybook |
| description | Storybook workflow, MCP tools, fixtures, CSS import chains. Auto-invoke when working with Storybook stories or components. |
| user-invocable | true |
mcp__storybook__get-storybook-story-instructions before writing stories.mcp__storybook__preview-stories to preview stories after writing them.parameters.fixtures for fixture overrides.msw-storybook-addon wiring and its v2→v3 break): svelte-5:msw skill.App.svelte AND .storybook/preview.ts. Moving imports out of the SCSS chain breaks Storybook unless also added to preview.ts or storybook.scss.Components that import and read from Svelte 4 module-level
writable() stores (from svelte/store) render with default/
empty data in Storybook unless the stores are populated before
the component mounts. This does NOT apply to Svelte 5 runes-
based state in .svelte.ts modules, those are reactive on
their own.
Pattern: Create a <ComponentName>Wrapper.svelte that:
setContext() for any required Svelte contextsstore.set() with mock data for every Svelte 4
writable() store the component importsUse asChild in the story, NEVER decorators for components
that depend on Svelte 4 writable stores. Decorators lose
complex args (Writable stores, objects with methods) through
Storybook's arg serialization.
<!-- stories/MyComponentWrapper.svelte -->
<script lang="ts">
import { setContext } from 'svelte'
import { writable } from 'svelte/store'
import { myWritableStore } from '../stores' // Svelte 4 writable()
setContext('myContext', true)
myWritableStore.set({ /* mock data */ })
</script>
<div style="max-width: 600px; padding: 1rem;">
<slot />
</div>
<!-- stories/MyComponent.stories.svelte -->
<Story name="Default" asChild>
<MyComponentWrapper>
<MyComponent />
</MyComponentWrapper>
</Story>
Using () => {} for callback props in stories means the
callback is never verified. If the component passes wrong
data types to the callback, the noop silently swallows it.
For critical callbacks (onChange, onSubmit, onParameterChanged):
A common failure: a noop callback hides a bug where
onChange passes full selection objects instead of expected
string values. The story "passes" because noop accepts
anything.
When adding skip-vitest to a story, IMMEDIATELY verify it
renders correctly in the Storybook UI via Playwright MCP.
Navigate to the story URL, wait for render, take a screenshot,
check console for 0 errors. skip-vitest means "can't
automate as vitest test", it does NOT mean "don't verify."