Frontend Storybook Rules
SkillDev toolsFrontend Storybook stories for Vue components, story format, story variants, makeMe builders, Storybook aliases. Use when writing Storybook stories for Vue components.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Frontend Storybook Rules skill
What this skill tells your AI
The instructions your AI receives, as published by nerds-odd-e/doughnut in .agents/skills/frontend-storybook/SKILL.md and read by ahel’s review.
Vue naming, styling, icons, and derived-state also come from the frontend-component skill (*.stories.ts is *.ts).
Running Storybook
Start Storybook locally for component development and debugging:
CURSOR_DEV=true nix develop -c pnpm storybook
Storybook starts on http://localhost:6006 by default.
Shared Test Data Builders
Storybook stories reuse the same makeMe builders as unit tests. Source code lives in packages/donut-test-fixtures.
import makeMe from "donut-test-fixtures/makeMe"
The makeMe object provides access to test data builders:
makeMe.anAnsweredQuestioncreates recall prompts with answers.makeMe.anMcqcreates MCQ data.makeMe.aNotecreates note data.makeMe.aNoteRealmcreates note realm data.- Many other API-shaped builders are available.
const correctQuestion = makeMe.anAnsweredQuestion
.answerCorrect(true)
.withChoiceIndex(0)
.please()
const questionWithNote = makeMe.anAnsweredQuestion
.withNote(makeMe.aNote.topicConstructor("TypeScript").please())
.answerCorrect(true)
.please()
Writing A Story
- Create a file named
ComponentName.stories.tsin the same directory as the component. - Import the component and necessary builders.
- Define the story meta and stories.
import type { Meta, StoryObj } from "@storybook/vue3"
import makeMe from "donut-test-fixtures/makeMe"
import MyComponent from "./MyComponent.vue"
const meta = {
title: "Category/MyComponent",
component: MyComponent,
tags: ["autodocs"],
} satisfies Meta<typeof MyComponent>
export default meta
type Story = StoryObj<typeof meta>
export const Default: Story = {
args: {
prop1: makeMe.someBuilder.please(),
},
}
Story Variants
Create multiple story variants to showcase different component states:
export const Variant1: Story = {
args: {
// props for variant 1
},
}
export const Variant2: Story = {
args: {
// props for variant 2
},
}
Module Aliases
Storybook supports the same module aliases as the main application:
@/points tosrc/.@tests/*points totests/, for example@tests/helpers.@generated/points togenerated/.
For API-shaped fixtures, import makeMe from donut-test-fixtures/makeMe; do not use an @tests/fixtures alias.
Global Styles
Storybook automatically loads global styles from src/assets/daisyui.css, including Tailwind CSS base styles, DaisyUI component styles, and custom application styles.
Best Practices
- Reuse builders: always use
makeMeinstead of ad-hoc mock objects that duplicate API shapes. - Avoid duplication: use builders for consistency.
- Add multiple variants to showcase different component states.
- Use the
autodocstag to automatically generate documentation. - Keep builders framework-neutral so they work in both tests and Storybook.
Signals
- GitHub stars
- 49
- Forks
- 72
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
frontend-storybook- Source
- github.com/nerds-odd-e/doughnut