关于 sb-ship
sb-ship 是将 Storybook Explore 实验转入生产组件的技能,同时保留实验历史。它帮助开发者选择迁移路径、验证故事、记录决策并刷新使用数据。
主要功能
- 01升级新组件或现有组件
- 02保留 Explore 故事作为历史
- 03验证生产故事
- 04记录并确认决策
- 05刷新组件使用数据
适用场景
- 01将新 Explore 组件转入生产
- 02根据实验更新组件
- 03迁移期间保留仍在使用的 V1
- 04发布后刷新使用数据
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ strongeron/ storybook-workbench --skill sb-ship安装后在 Claude Code 中输入/sb-ship确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
CONTEXT.mdagents/openai.yamlreferences/propagate-workflow.mdscripts/find-stories-by-tag.shvalidate-stories.shtemplates/design-decisions.md详细介绍
sb-ship — 毕业,同时保留历史记录
当 Explore 迭代满足毕业门槛时触发。最重要的一条规则:
保留实验记录 — 使用 cp,绝不使用 git mv。 Explore 故事应作为设计历史保留;
在此处使用 git mv 是一种破坏性错误,propagate-workflow.md 正是为防止这种错误而存在的。执行任何 Ship 操作之前,先加载
references/propagate-workflow.md — 这是此技能唯一需要的参考;不要加载 sb-wrappers/sb-audit 参考(生命周期、图库、组合),用于
Ship。
决定路径(自问)
- Explore 是否定义了自己的组件文件,还是迭代了现有文件? → 路径 A 或路径 B。
- 路径 B:原位演进(B1),还是将 V1 保留在
_legacy/中(B2)? 仅当 V1 仍有需要迁移窗口的在用 调用点时才选 B2。 - 导入路径是否改变? 如果是 → 使用
ast-grep查找调用点。如果不是 → 跳过。 - 是否还有其他应该翻转的标记故事?(一个 Compare:
decision:pending→decision:chosen+ 获胜者。)
执行
- 路径 A — 新组件。 将组件从 explore
cp到 components,按记录的storiesLocation重新编写一份全新的生产 故事文件(.storybook/audit/status.md;规则位于CONTEXT.md§STORIES LOCATION — 绝不要随意散放)——不要cpExplore 故事(生产环境关注点不同:autodocs、不带决策元数据),然后验证;只有路径发生变化时才用ast-grep查找调用点。 - 路径 B — 更新现有组件。 将 Explore 的差异应用到生产组件和故事中,原位更新;仅当导入路径发生变化时才使用
ast-grep。 - 两条路径都适用 — 原位完成闭环(不要使用
git mv):tags: ['explore','decision:chosen','archived','!autodocs','!test']+parameters.decision = { status, winner, date, shippedTo }。使用find-stories-by-tag.sh decision:chosen确认。
门槛与后续
对新的生产故事运行随附的 scripts/validate-stories.sh(在插件包中:
${CLAUDE_PLUGIN_ROOT}/scripts/validate-stories.sh,或
${CLAUDE_PLUGIN_ROOT}/scripts/)。使用 scripts/find-stories-by-tag.sh decision:chosen 确认翻转。将决策追加到台账(templates/design-decisions.md);已毕业的实验保留原位。
重新进入使用流程。 已毕业的组件是 src/ 中的新成员——它尚未出现在渲染后的 JSON 中,
因此其文档中的“真实使用”栏和 storyCoverage 都是空白的。触发一键使用情况刷新
(refresh-usage.sh,由 sb-audit/sb-inventory 负责),让新组件进入 component-usage.json
/ project-inventory.json;然后重新构建 Storybook,即可显示其真实使用情况。接着运行 /sb-hub。