Token导航 LogoToken导航

Agent Skill · 前端设计

storybook-stories(故事书故事)

storybook-stories 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

storybook-stories 是前端设计类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为只读;许可证信息还不明确,第三方扫描已通过,按安装量在前端设计类的 10,216 个 Skill 里排第 3,007。

总安装 1,665周安装 68GitHub Stars 323下载 539核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:storybook-stories(故事书故事)
来源仓库:https://github.com/pedronauck/skills
仓库路径:skills/storybook-stories
安装命令:
npx skills add https://github.com/pedronauck/skills --skill storybook-stories
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/pedronauck/skills --skill storybook-stories

这个 Skill 是做什么的

前端设计类 Skill 关注页面结构、视觉规范和组件写法,输出通常是可运行的界面代码。

用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息。适合在 Codex、Claude、Cursor、Gemini CLI 中围绕仓库状态或协作事项进行整理。通过 npx skills add 命令从指定仓库安装并使用。建议确认权限范围和维护状态,避免触发不必要的联网或文件操作。

storybook-stories 属于前端设计类 Skill,可作为该场景下的辅助能力补充。

来源仓库内路径:skills/storybook-stories

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/pedronauck/skills --skill storybook-stories;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它标注为只读,先用只读任务试一次,确认行为符合预期再扩大使用范围。

常见问题

6 条

storybook-stories 怎么安装?

在终端执行 npx skills add https://github.com/pedronauck/skills --skill storybook-stories。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

storybook-stories 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

storybook-stories 需要什么权限?

权限级别是只读。该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

storybook-stories 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

storybook-stories 用的人多吗?

公开数据是累计安装 1,665 次,近一周安装 68 次,下载 539 次,GitHub 323 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

storybook-stories 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。
  • 标注为只读权限,试用阶段不容易误改本地文件。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理前端设计类任务、又不想每次都手写提示词的人。
  • 只想先试试效果、不希望它改动本地文件的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

前端设计类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
frontend-design

前端设计 · Codex、Claude

8,823,360126,072只读MIT通过
vercel-composition-patterns

Vercel 组合模式 · Codex、Claude

3,858,81625,893需要联网MIT通过
vercel-react-native-skills

Vercel React native skills 前端 · Codex、Claude

2,468,66425,878只读MIT通过
adapt

adapt 搜索 · Codex、Claude

2,027,04023,125操作浏览器未明确通过
bolder

bolder 分析 · Codex、Claude

2,004,28823,130只读未明确通过
storybook-stories

故事书故事 · 本页

1,665323只读未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Storybook Stories

This skill enforces consistent Storybook story creation patterns across the application. It ensures that all components have proper documentation, interactive examples, and follow the established project structure.

<critical_component_usage> MANDATORY: Always Use Base UI Components from @agh/ui

CRITICAL REQUIREMENTS:

  • ✅ ALWAYS import components from @agh/ui package (packages/ui)
  • ✅ ALWAYS use existing base UI components instead of creating new ones from scratch
  • ✅ ALWAYS follow design system rules from @.cursor/rules/react.mdc and @.cursor/rules/shadcn.mdc
  • ✅ ALWAYS use design tokens (e.g., bg-background, text-foreground, border-border) instead of explicit colors
  • ❌ NEVER create components from scratch when a base component exists in @agh/ui
  • ❌ NEVER use explicit color values (e.g., bg-white, text-black) - always use design tokens
  • ❌ NEVER duplicate component logic - compose from base components
  • ❌ NEVER set tags: ["autodocs"] or enable Storybook autodocs on any story meta (packages/ui, web/src/components/ui, or web/src/systems/**). Use parameters.docs.description.component, JSDoc on stories, and the Docs addon manually if needed.

Available Base Components: All components from packages/ui/src/components are available via @agh/ui:

  • Button, Card, Dialog, Input, Select, Badge, Avatar, Accordion, Alert, etc.
  • See packages/ui/src/index.ts for complete list of exports

Design System Rules:

  • Follow React best practices: @.cursor/rules/react.mdc
  • Follow Shadcn UI patterns: @.cursor/rules/shadcn.mdc
  • Use design tokens for theming: bg-background, text-foreground, border-border, etc. </critical_component_usage>

Instructions

  1. File Location & Naming

- Place story files in a stories/ folder within the same category folder as the component. - Example: src/components/base/accordion.tsx -> src/components/base/stories/accordion.stories.tsx. - Use the Storybook instance that matches the layer: - packages/ui/.storybook for packages/ui/src/components/*.stories.tsx - web/.storybook for web/src/components/ui/**/*.stories.tsx and web/src/systems/**/components/stories/*.stories.tsx

  1. Component Imports

- MANDATORY: Import base UI components from @agh/ui - Use: import {Button, Card, Dialog} from "@agh/ui"; - Only import custom/domain-specific components from local files - Check packages/ui/src/index.ts to see available components before creating new ones

  1. Meta Configuration

- Title should follow the directory structure: components/custom/ComponentName or components/ui/ComponentName. - Include component in the meta object. - Set parameters.layout to "centered" by default. - Add parameters.docs.description.component to describe the component. - Use decorators if the component requires a specific container width or context. - MANDATORY: Use explicit type annotation: const meta: Meta<typeof Component> = {...} - MANDATORY: Do not add tags: ["autodocs"] to meta (any layer). Autodocs inflates generated docs noise and is forbidden in this repo. - web system stories may rely on the shared QueryClient + router + MSW decorators from web/.storybook/preview.ts; prefer those global decorators over per-story provider duplication.

  1. Story Definition

- Define a helper type: type Story = StoryObj<typeof meta>;. - Export stories as named constants (PascalCase). - Always add JSDoc comments above each story export; these appear in the Storybook UI. - Use the Default story as the primary example. - MANDATORY: All stories must include args property, even if empty: args: {} - Keep it concise: Create only essential stories (2-5 max per component). Avoid over-engineering with excessive variations or complex scenarios. - For system stories, keep titles aligned to the domain surface: systems/<name>/<ComponentName>.

  1. Render vs Args

- Use render functions for compound components (like Accordion, Dialog, Select) that require children composition. - Use args for simple components (like Button, Badge) where props define the variation. - MANDATORY: Even when using render, include args: {} property

  1. Design System Compliance

- ALWAYS use design tokens for colors: bg-background, text-foreground, border-border - NEVER use explicit colors: bg-white, text-black, border-gray-200 - Follow accessibility guidelines from @.cursor/rules/shadcn.mdc - Use semantic HTML elements and proper ARIA attributes

Example Template

Using Base UI Components from @agh/ui

import type { Meta, StoryObj } from "@storybook/react";
import { Button, Card, CardHeader, CardTitle, CardContent } from "@agh/ui";
import { MyCustomComponent } from "./my-custom-component";

const meta: Meta<typeof MyCustomComponent> = {
  title: "components/custom/MyCustomComponent",
  component: MyCustomComponent,
  parameters: {
    layout: "centered",
    docs: {
      description: {
        component: "A custom component that composes base UI components from @agh/ui.",
      },
    },
  },
  // Optional decorator using design tokens
  decorators: [
    Story => (
      <div className="w-[400px] p-4 bg-background border border-border rounded-lg">
        <Story />
      </div>
    ),
  ],
};

export default meta;
type Story = StoryObj<typeof meta>;

/**
 * Default usage showing the standard behavior
 * Uses base Button and Card components from @agh/ui
 */
export const Default: Story = {
  args: {},
  render: () => (
    <Card>
      <CardHeader>
        <CardTitle>My Custom Component</CardTitle>
      </CardHeader>
      <CardContent>
        <MyCustomComponent>
          <Button variant="default">Action</Button>
        </MyCustomComponent>
      </CardContent>
    </Card>
  ),
};

/**
 * Variation with specific props
 * All styling uses design tokens (bg-background, text-foreground, etc.)
 */
export const WithVariant: Story = {
  args: {},
  render: () => (
    <div className="bg-card border border-border rounded-lg p-4">
      <MyCustomComponent variant="secondary">
        <Button variant="outline">Secondary Action</Button>
      </MyCustomComponent>
    </div>
  ),
};

Story for Base UI Component (from @agh/ui)

import type { Meta, StoryObj } from "@storybook/react";
import { Button } from "@agh/ui";

const meta: Meta<typeof Button> = {
  title: "components/ui/Button",
  component: Button,
  parameters: {
    layout: "centered",
    docs: {
      description: {
        component: "A button component with multiple variants and sizes.",
      },
    },
  },
};

export default meta;
type Story = StoryObj<typeof meta>;

/**
 * Default button with standard styling
 */
export const Default: Story = {
  args: {
    children: "Button",
    variant: "default",
    size: "default",
  },
};

/**
 * All variants using design tokens
 */
export const AllVariants: Story = {
  args: {},
  render: () => (
    <div className="flex flex-wrap gap-4 bg-background p-4 rounded-lg">
      <Button variant="default">Default</Button>
      <Button variant="secondary">Secondary</Button>
      <Button variant="outline">Outline</Button>
      <Button variant="ghost">Ghost</Button>
      <Button variant="muted">Muted</Button>
    </div>
  ),
};

Best Practices

Autodocs (forbidden)

Do not use Storybook autodocs. Never set tags: ["autodocs"] on meta for packages/ui, web/src/components/ui, or web/src/systems/** stories. Rationale: autodocs-generated pages add noise and duplicate what we already express with concise stories, parameters.docs.description.component, and per-story JSDoc. If a component needs richer prose, write it in the description fields and keep the canvas as the source of truth.

Conciseness & Simplicity

  • ✅ DO: Create only essential stories that demonstrate core functionality
  • ✅ DO: Use minimal, realistic examples that show the component's purpose
  • ✅ DO: Focus on one concept per story
  • ❌ DON'T: Create excessive variations that don't add value
  • ❌ DON'T: Over-engineer with complex mock data or elaborate scenarios
  • ❌ DON'T: Create stories for every possible prop combination
  • ❌ DON'T: Add unnecessary decorators or wrappers unless required

Story Count Guidelines:

  • Simple components (Button, Badge): 2-3 stories max (Default + 1-2 key variations)
  • Medium components (Card, Dialog): 3-4 stories max (Default + key use cases)
  • Complex components: 4-5 stories max (Default + essential scenarios)
  • Never create more than 5 stories per component unless absolutely necessary

Component Usage

  • Base Components First: Always check @agh/ui for existing components before creating new ones
  • Composition Over Creation: Compose complex components from base UI components
  • Compound Components: Always demonstrate the full structure (Parent + Children) when using compound components from @agh/ui
  • Design Tokens: Always use design tokens (bg-background, text-foreground, etc.) instead of explicit colors

Story Structure

  • Mock Data: Keep mock data minimal and realistic - only include what's necessary to demonstrate the component
  • Interactivity: For components like Accordion or Dialog, ensure the render function sets up the component in a way that allows interaction (e.g., not force-controlled unless necessary)
  • Cleanliness: Remove unused imports and generic "template" comments
  • Type Safety: Always use explicit type annotation for meta: const meta: Meta<typeof Component>
  • Args Property: Always include args: {} in all stories, even when using custom render functions
  • One Story Per Concept: Each story should demonstrate one clear use case or variation, not multiple concepts

Design System Compliance

  • Follow React Rules: Adhere to patterns in @.cursor/rules/react.mdc
  • Follow Shadcn Rules: Adhere to patterns in @.cursor/rules/shadcn.mdc
  • Accessibility: Use semantic HTML and proper ARIA attributes
  • Theme Support: All stories should work in both light and dark themes using design tokens

Common Mistakes to Avoid

❌ Creating components from scratch when base components exist:

// ❌ BAD: Creating a button from scratch
export const Bad: Story = {
  render: () => <button className="bg-blue-500 text-white px-4 py-2 rounded">Click me</button>,
};

// ✅ GOOD: Using base Button from @agh/ui
import { Button } from "@agh/ui";
export const Good: Story = {
  args: {},
  render: () => <Button variant="default">Click me</Button>,
};

❌ Enabling autodocs on meta:

// ❌ BAD: autodocs tag (forbidden in this repo)
const meta: Meta<typeof Button> = {
  title: "ui/Button",
  component: Button,
  tags: ["autodocs"],
};

// ✅ GOOD: no autodocs tag; describe the component in parameters.docs
const meta: Meta<typeof Button> = {
  title: "ui/Button",
  component: Button,
  parameters: {
    layout: "centered",
    docs: {
      description: {
        component: "Primary action button with variants and sizes.",
      },
    },
  },
};

❌ Using explicit colors instead of design tokens:

// ❌ BAD: Using explicit colors
<div className="bg-white text-black border-gray-200">

// ✅ GOOD: Using design tokens
<div className="bg-background text-foreground border-border">

❌ Missing args property:

// ❌ BAD: Missing args property
export const Bad: Story = {
  render: () => <Button>Click</Button>,
};

// ✅ GOOD: Including args property
export const Good: Story = {
  args: {},
  render: () => <Button>Click</Button>,
};

❌ Missing explicit type annotation:

// ❌ BAD: Type inference
const meta = {
  title: "Components/Button",
  component: Button,
} satisfies Meta<typeof Button>;

// ✅ GOOD: Explicit type annotation
const meta: Meta<typeof Button> = {
  title: "Components/Button",
  component: Button,
};

❌ Over-engineering stories with unnecessary examples:

// ❌ BAD: Too many stories with similar variations
export const Default: Story = { ... };
export const WithIcon: Story = { ... };
export const WithIconLeft: Story = { ... };
export const WithIconRight: Story = { ... };
export const WithLongText: Story = { ... };
export const WithShortText: Story = { ... };
export const Disabled: Story = { ... };
export const Loading: Story = { ... };
export const WithTooltip: Story = { ... };
export const InCard: Story = { ... };
export const InDialog: Story = { ... };
// ... 10+ stories for a simple button

// ✅ GOOD: Concise, focused stories
export const Default: Story = {
  args: {
    children: "Button",
    variant: "default",
  },
};

export const Variants: Story = {
  args: {},
  render: () => (
    <div className="flex gap-2">
      <Button variant="default">Default</Button>
      <Button variant="secondary">Secondary</Button>
      <Button variant="outline">Outline</Button>
    </div>
  ),
};

export const Disabled: Story = {
  args: {
    children: "Disabled",
    disabled: true,
  },
};
// Only 3 stories covering essential use cases

❌ Over-complicated mock data or scenarios:

// ❌ BAD: Unnecessarily complex mock data
const mockUsers = [
  { id: "1", name: "John Doe", email: "john@example.com", role: "admin", avatar: "...", lastLogin: "...", permissions: [...], metadata: {...} },
  { id: "2", name: "Jane Smith", email: "jane@example.com", role: "user", avatar: "...", lastLogin: "...", permissions: [...], metadata: {...} },
  // ... 10 more users with full data
];

// ✅ GOOD: Minimal, realistic data
const mockUsers = [
  { id: "1", name: "John Doe", email: "john@example.com" },
  { id: "2", name: "Jane Smith", email: "jane@example.com" },
];

平台分布

Codex

33.88%
按下载量换算183

Claude

31.65%
按下载量换算171

Cursor

20.32%
按下载量换算110

Gemini CLI

10.42%
按下载量换算56

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

只读

该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills