svelte-storybook-migrate — Claude Code command: setup & guide
Migrates Storybook setups in Svelte projects to @storybook/sveltekit, converting story definitions to Svelte CSF v5 and Svelte 5 snippets.
npx claude-code-templates@latest --command svelte/svelte-storybook-migrateWhat svelte-storybook-migrate does
This command automates the upgrade process for Storybook installations moving from 6.x to 7.x or newer. It strips deprecated builders such as @storybook/svelte-vite and storybook-builder-vite, installs @storybook/sveltekit, and updates the framework definition in .storybook/main.js.
Inside .stories.svelte files, the command transitions code to Svelte CSF v5 and CSF 3 standards. It drops the legacy <Meta> component in favor of defineMeta, swaps old <Template let:args> wrappers for Svelte 5 snippets, and updates SvelteKit store mocks to the sveltekit_experimental structure.
File transformation relies on svelte/compiler to parse and edit the AST structure of your stories. If the project lacks this compiler dependency, automated AST-based file adjustments cannot execute.
What it helps with
- upgrade Storybook config from @storybook/svelte to @storybook/sveltekit
- convert story files to Svelte CSF v5 using defineMeta
- replace legacy Template blocks with Svelte 5 snippets
- remove obsolete Vite builder packages from package.json
Example prompts for the agent
- /svelte:storybook-migrate
- Migrate my Storybook setup from v6 Svelte to v7 with @storybook/sveltekit
- Convert all .stories.svelte files to Svelte CSF v5 and CSF 3 format
How to install svelte-storybook-migrate
1claude-code-templates
npx claude-code-templates@latest --command svelte/svelte-storybook-migrate2Manually: put the files in place
.claude/commands/svelte-storybook-migrate.mdCall it with /svelte-storybook-migrate. For all projects use ~/.claude/commands/
Manually: put the files in place
~/.codex/prompts/svelte-storybook-migrate.mdCall it with /prompts:svelte-storybook-migrate. Codex marks this format deprecated in favour of skills
Manually: put the files in place
.github/prompts/svelte-storybook-migrate.prompt.mdManually: put the files in place
.gemini/commands/svelte-storybook-migrate.tomlGemini stores commands as TOML: the prompt text goes into the prompt field
Questions about svelte-storybook-migrate
How to install svelte-storybook-migrate in Claude Code?
Run npx claude-code-templates@latest --command svelte/svelte-storybook-migrate in your terminal or save the prompt directly to .claude/commands/svelte-storybook-migrate.md.
What does svelte-storybook-migrate do?
It examines your Storybook setup, removes outdated dependencies, configures @storybook/sveltekit, and rewrites components to CSF 3 and CSF v5 formats.
How does it handle story templates?
It converts legacy <Template let:args> wrappers into {#snippet template(args)} definitions while replacing <Meta> imports with defineMeta calls.
Source text
svelte-storybook-migrate.md · MIT
---
description: "Migrate Storybook configurations and stories to newer versions, including Svelte CSF v5 and @storybook/sveltekit framework."
---
# /svelte:storybook-migrate
Migrate Storybook configurations and stories to newer versions, including Svelte CSF v5 and @storybook/sveltekit framework.
## Instructions
You are acting as the Svelte Storybook Specialist Agent focused on migration. When migrating Storybook:
1. **Version Migrations**:
**Storybook 6.x to 7.x**:
```bash
# Automated upgrade
npx storybook@latest upgrade
# Manual steps:
# 1. Update dependencies
# 2. Migrate to @storybook/sveltekit
# 3. Remove obsolete packages
# 4. Update configuration
```
**Configuration Changes**:
```javascript
// Old (.storybook/main.js)
module.exports = {
framework: '@storybook/svelte',
svelteOptions: { ... } // Remove this
};
// New (.storybook/main.js)
export default {
framework: {
name: '@storybook/sveltekit',
options: {}
}
};
```
2. **Svelte CSF Migration (v4 to v5)**:
**Meta Component → defineMeta**:
```svelte
<!-- Old -->
<script context="module">
import { Meta, Story } from '@storybook/addon-svelte-csf';
</script>
<Meta title="Button" component={Button} />
<!-- New -->
<script>
import { defineMeta } from '@storybook/addon-svelte-csf';
import Button from './Button.svelte';
const { Story } = defineMeta({
title: 'Button',
component: Button
});
</script>
```
**Template → Children/Snippets**:
```svelte
<!-- Old -->
<Story name="Default">
<Template let:args>
<Button {...args} />
</Template>
</Story>
<!-- New -->
<Story name="Default" args={{ label: 'Click' }}>
{#snippet template(args)}
<Button {...args} />
{/snippet}
</Story>
```
3. **Package Migration**:
**Remove Obsolete Packages**:
```bash
npm uninstall @storybook/svelte-vite
npm uninstall storybook-builder-vite
npm uninstall @storybook/builder-vite
npm uninstall @storybook/svelte
```
**Install New Packages**:
```bash
npm install -D @storybook/sveltekit
npm install -D @storybook/addon-svelte-csf@latest
```
4. **Story Format Migration**:
**CSF 2 to CSF 3**:
```javascript
// Old (CSF 2)
export default {
title: 'Button',
component: Button
};
export const Primary = (args) => ({
Component: Button,
props: args
});
Primary.args = { variant: 'primary' };
// New (CSF 3)
export default {
title: 'Button',
component: Button
};
export const Primary = {
args: { variant: 'primary' }
};
```
5. **Addon Updates**:
**Actions → Tags**:
```javascript
// Old
export default {
component: Button,
parameters: {
docs: { autodocs: true }
}
};
// New
export default {
component: Button,
tags: ['autodocs']
};
```
6. **Module Mocking Updates**:
**New Parameter Structure**:
```javascript
// Old approach (custom mocks)
import { page } from './__mocks__/stores';
// New approach (parameters)
export const Default = {
parameters: {
sveltekit_experimental: {
stores: { page: { ... } }
}
}
};
```
7. **Migration Script**:
```javascript
// migration-helper.js
import { readdir, readFile, writeFile } from 'fs/promises';
import { parse, walk } from 'svelte/compiler';
async function migrateStories() {
// Find all .stories.svelte files
// Parse and transform AST
// Update syntax to v5
// Write updated files
}
```
8. **Testing After Migration**:
- Run `npm run storybook`
- Check all stories render
- Verify interactions work
- Test addons functionality
- Validate build process
## Migration Checklist
1. [ ] Backup current setup
2. [ ] Update Storybook to v7+
3. [ ] Migrate to @storybook/sveltekit
4. [ ] Update Svelte CSF addon
5. [ ] Convert story syntax
6. [ ] Update module mocks
7. [ ] Test all stories
8. [ ] Update CI/CD config
## Example Usage
User: "Migrate my Storybook from v6 with Svelte to v7 with SvelteKit"
Assistant will:
- Analyze current setup
- Create migration plan
- Run upgrade command
- Update framework config
- Convert story formats
- Migrate CSF syntax
- Update module mocking
- Test and validate
- Document breaking changes
© davila7 · MIT · davila7/claude-code-templates