К основному содержанию
команда

svelte-storybook-mock — команда для Claude Code: моки SvelteKit

Готовит моки модулей SvelteKit для историй Storybook, чтобы компонент рендерился в изоляции без запущенного приложения.

Установить в Claude Code · Через claude-code-templates Все способы и платформы ↓
npx claude-code-templates@latest --command svelte/svelte-storybook-mock
Открыть на GitHub

Что делает svelte-storybook-mock

Команда /svelte:storybook-mock включает режим специалиста по мокам SvelteKit в Storybook. Агент смотрит, от каких модулей зависит ваш компонент, и собирает параметры sveltekit_experimental для истории: стор page с url, params, route и data, стор navigating с переходом «откуда — куда», флаг updated.

Дальше по списку: подмена функций навигации (goto, pushState, replaceState, invalidate, invalidateAll), мок enhance для форм и перехват ссылок через hrefs — по точному пути или регуляркой, например /api/.*. Модули $app/environment, $app/paths, $lib и @sveltejs/kit/* поддерживаются напрямую. А вот $app/stores, $app/navigation и $app/forms помечены как экспериментальные: без моков они в Storybook не заработают. $env/dynamic/private, $env/static/private и $service-worker не поддерживаются вообще — это серверный контекст и воркер, в браузерной истории их не подменить.

Агент умеет собирать и составные сценарии: авторизованный пользователь с токеном и ролью в page.data, состояние загрузки через navigating, несколько вариантов истории под разные состояния. Полезно, когда компонент завязан на роутинг и данные страницы, а поднимать весь SvelteKit ради одной истории не хочется.

Какие задачи решает

  • отрендерить компонент, который читает данные из стора page
  • подменить goto и pushState, чтобы клики по ссылкам не уводили из Storybook
  • показать состояние загрузки через стор navigating
  • сделать историю с авторизованным пользователем и токеном в page.data
  • перехватить вызовы к /api/.* и не ходить на сервер

Примеры запросов агенту

  • Замись SvelteKit-сторы для компонента ProductDetail
  • Сделай мок page с товаром id 123 и навигацию через goto
  • Добавь в историю перехват ссылок /api/.* и состояние загрузки

Как установить svelte-storybook-mock

1Через claude-code-templates

npx claude-code-templates@latest --command svelte/svelte-storybook-mock

2Вручную: положить файлы

.claude/commands/svelte-storybook-mock.md

Вызов — /svelte-storybook-mock. Для всех проектов — ~/.claude/commands/

Вопросы о svelte-storybook-mock

Как установить svelte-storybook-mock в Claude?

Выполните npx claude-code-templates@latest --command svelte/svelte-storybook-mock. Команда появится в .claude/commands/svelte-storybook-mock.md.

Что делает svelte-storybook-mock?

Настраивает моки модулей SvelteKit в историях Storybook: сторы page, navigating, updated, функции навигации, enhance для форм и перехват ссылок. Нужна для изолированной разработки компонентов.

Какие модули SvelteKit не поддерживаются?

$env/dynamic/private, $env/static/private и $service-worker. Это серверный контекст и контекст service worker, в браузерной истории их не подменить. $app/stores, $app/navigation и $app/forms работают только через моки.

Исходный текст

svelte-storybook-mock.md · MIT
---
description: "Mock SvelteKit modules and functionality in Storybook stories for isolated component development."
---

# /svelte:storybook-mock

Mock SvelteKit modules and functionality in Storybook stories for isolated component development.

## Instructions

You are acting as the Svelte Storybook Specialist Agent focused on mocking SvelteKit modules. When setting up mocks:

1. **Module Mocking Overview**:
   
   **Fully Supported**:
   - `$app/environment` - Browser and version info
   - `$app/paths` - Base paths configuration
   - `$lib` - Library imports
   - `@sveltejs/kit/*` - Kit utilities
   
   **Experimental (Requires Mocking)**:
   - `$app/stores` - Page, navigating, updated stores
   - `$app/navigation` - Navigation functions
   - `$app/forms` - Form enhancement
   
   **Not Supported**:
   - `$env/dynamic/private` - Server-only
   - `$env/static/private` - Server-only
   - `$service-worker` - Service worker context

2. **Store Mocking**:
   ```javascript
   export const Default = {
     parameters: {
       sveltekit_experimental: {
         stores: {
           // Page store
           page: {
             url: new URL('https://example.com/products/123'),
             params: { id: '123' },
             route: {
               id: '/products/[id]'
             },
             status: 200,
             error: null,
             data: {
               product: {
                 id: '123',
                 name: 'Sample Product',
                 price: 99.99
               }
             },
             form: null
           },
           // Navigating store
           navigating: {
             from: {
               params: { id: '122' },
               route: { id: '/products/[id]' },
               url: new URL('https://example.com/products/122')
             },
             to: {
               params: { id: '123' },
               route: { id: '/products/[id]' },
               url: new URL('https://example.com/products/123')
             },
             type: 'link',
             delta: 1
           },
           // Updated store
           updated: true
         }
       }
     }
   };
   ```

3. **Navigation Mocking**:
   ```javascript
   parameters: {
     sveltekit_experimental: {
       navigation: {
         goto: (url, options) => {
           console.log('Navigating to:', url);
           action('goto')(url, options);
         },
         pushState: (url, state) => {
           console.log('Push state:', url, state);
           action('pushState')(url, state);
         },
         replaceState: (url, state) => {
           console.log('Replace state:', url, state);
           action('replaceState')(url, state);
         },
         invalidate: (url) => {
           console.log('Invalidate:', url);
           action('invalidate')(url);
         },
         invalidateAll: () => {
           console.log('Invalidate all');
           action('invalidateAll')();
         },
         afterNavigate: {
           from: null,
           to: { url: new URL('https://example.com') },
           type: 'enter'
         }
       }
     }
   }
   ```

4. **Form Enhancement Mocking**:
   ```javascript
   parameters: {
     sveltekit_experimental: {
       forms: {
         enhance: (form) => {
           console.log('Form enhanced:', form);
           // Return cleanup function
           return {
             destroy() {
               console.log('Form enhancement cleaned up');
             }
           };
         }
       }
     }
   }
   ```

5. **Link Handling**:
   ```javascript
   parameters: {
     sveltekit_experimental: {
       hrefs: {
         // Exact match
         '/products': (to, event) => {
           console.log('Products link clicked');
           event.preventDefault();
         },
         // Regex pattern
         '/product/.*': {
           callback: (to, event) => {
             console.log('Product detail:', to);
           },
           asRegex: true
         },
         // API routes
         '/api/.*': {
           callback: (to, event) => {
             event.preventDefault();
             console.log('API call intercepted:', to);
           },
           asRegex: true
         }
       }
     }
   }
   ```

6. **Complex Mocking Scenarios**:
   
   **Auth State**:
   ```javascript
   const mockAuthenticatedUser = {
     parameters: {
       sveltekit_experimental: {
         stores: {
           page: {
             data: {
               user: {
                 id: '123',
                 email: '[email protected]',
                 role: 'admin'
               },
               session: {
                 token: 'mock-jwt-token',
                 expiresAt: '2024-12-31'
               }
             }
           }
         }
       }
     }
   };
   ```
   
   **Loading States**:
   ```javascript
   const mockLoadingState = {
     parameters: {
       sveltekit_experimental: {
         stores: {
           navigating: {
             from: { url: new URL('https://example.com') },
             to: { url: new URL('https://example.com/products') }
           }
         }
       }
     }
   };
   ```

## Example Usage

User: "Mock SvelteKit stores for my ProductDetail component"

Assistant will:
- Analyze component's store dependencies
- Create comprehensive store mocks
- Mock page data with product info
- Set up navigation mocks
- Configure link handling
- Add form enhancement if needed
- Create multiple story variants
- Test different states (loading, error, success)

© davila7 · MIT · davila7/claude-code-templates

Похожие слэш-команды

Всё по теме «Фронтенд и UI» →
svelte-code-writer sveltejs Скилл ищет официальную документацию Svelte 5 и проверяет компоненты через autofixer. Пригодится при написании и правке файлов .svelte или .svelte.ts. CX Codex +1 12 900установок sentry-svelte-sdk getsentry Скилл проводит агента через полную настройку Sentry в Svelte и SvelteKit: сканирует проект, предлагает набор функций и пишет конфиги. CX Codex +1 2 100установок svelte Claude MPM Team Скилл помогает писать интерфейсы на Svelte 5 и приложения на SvelteKit. Пригодится для реактивного состояния, компонентов и серверного или статического рендеринга. CX Codex +1 343установок writing-react-native-storybook-stories storybookjs Помогает агенту писать и править истории React Native по формату CSF: args, argTypes, декораторы, параметры аддонов и портируемые истории для тестов. CX Codex +1 681установок storybook-story-writing TheBushidoCollective Пишет и правит истории Storybook для компонентов: формат CSF3, все состояния компонента, сборка без ошибок. Пригодится, когда сториз расползаются и ломают билд. CX Codex +1 673установок setup-react-native-storybook storybookjs Скилл автоматизирует развёртывание Storybook 10 в проектах на React Native. Помогает настроить окружение для Expo, чистого React Native CLI или Re.Pack. CX Codex +1 526установок

Из того же набора205

Весь набор →
svelte-scaffold Разворачивает новый SvelteKit-проект, модуль или библиотеку компонентов с готовой структурой папок и конфигами. Пригодится, когда нужен стартовый каркас без ручной возни. 127установок vercel-deployment Скилл для Claude, который подсказывает, как правильно выкатывать Next.js на Vercel: переменные окружения, edge и serverless, кэш сборки. 124установок github-workflow-automation Скилл с готовыми шаблонами для ревью пул-реквестов, разбора issues и CI/CD на GitHub. Пригодится, если вы настраиваете автоматику в репозитории. 121установок sync-health-monitor Слэш-команда проверяет здоровье синхронизации GitHub и Linear: лимиты API, вебхуки, задержки, ошибки. Пригодится, когда задачи перестали доезжать. 121установок ai-wrapper-product Помогает строить продукт вокруг AI API: промпты, учёт токенов, лимиты и защита от тонкой обёртки над чатом. 120установок sync-migration-assistant Слэш-команда для миграции задач между GitHub и Linear с проверкой данных и откатом. Пригодится, когда проекты переезжают между трекерами. 120установок svelte-storybook-troubleshoot Слэш-команда разбирает типовые поломки Storybook в проектах на SvelteKit: ошибки сборки, неразрешённые модули, конфликты аддонов. 118установок concise-planning Превращает запрос на доработку в один план с атомарными шагами. Пригодится, когда нужно согласовать объём работ до правок в коде. 117установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой