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."