用途:为 ComfyUI_frontend 仓库中的 Vue 组件编写或更新 Storybook 故事文件(.stories.ts),覆盖新增、修改、审查与调试场景。
主要能力与工作流:先确认工作树位于 feat/* 或 fix/* 分支,PR 基于本地 main 而非 fork 分支;先阅读组件源码,理解 props、emits、slots、暴露方法与相关类型或组合式函数;写之前先阅读邻近故事。可用 rg --files src apps | rg '.stories.ts$' 搜索故事文件,用 rg -n "title:\s*'" src apps --glob '*.stories.ts' 查看标题模式。若提供 Figma 链接,先列出需覆盖的状态。故事文件与组件同目录,命名为 ComponentName.stories.ts;每个变体单独成故事,hover 状态由实现自动处理,无需单独故事。交付前运行 Storybook 与校验检查。
约定:优先复制最接近的邻近故事而非套用统一模板;多数故事使用 @storybook/vue3-vite,apps/desktop-ui 下部分仍用 @storybook/vue3,需遵循局部约定;除非该区域有意省略,否则添加 tags: ['autodocs'];可用 ComponentPropsAndSlots<typeof Component> 辅助类型;需要时用 ref()、computed()、toRefs(args) 保持渲染函数有状态,不要直接修改 Storybook args;插槽内容用 args.default 等插槽形参;仅在暴露 API 破坏常规类型时用 ComponentExposed;按需添加装饰器提供真实宽度或背景。标题模式需匹配最近同级故事,如 Components/Button/Button、Components/Input、Widgets/<WidgetName>、Platform/Assets/<ComponentName>、Desktop/Components/<ComponentName>、Desktop/Views/<ViewName> 等。
检查清单:阅读组件源码与相关类型;匹配最近标题模式与故事风格;包含基线故事(仅在邻近约定如此时命名 Default);为有意义状态添加聚焦故事;添加 autodocs 标签;故事与组件同目录;运行 pnpm storybook、pnpm typecheck、pnpm lint。
避免:猜测 props、emits、slots 或暴露方法;强行统一标题约定;对 v-model 组件直接修改 args;在故事包装器中引入 dark: Tailwind 变体;创建 barrel 文件;假定每个故事都需要 layout: 'centered' 或 Default 导出。
限制:资料未提供具体收费、价格、平台支持范围或效果数据。