mcpField
S
sb-ship

sb-ship

github.com/strongeron开发3978 次安装4 周前更新
代码仓库

关于 sb-ship

sb-ship 是将 Storybook Explore 实验转入生产组件的技能,同时保留实验历史。它帮助开发者选择迁移路径、验证故事、记录决策并刷新使用数据。

主要功能

  1. 01升级新组件或现有组件
  2. 02保留 Explore 故事作为历史
  3. 03验证生产故事
  4. 04记录并确认决策
  5. 05刷新组件使用数据

适用场景

  1. 01将新 Explore 组件转入生产
  2. 02根据实验更新组件
  3. 03迁移期间保留仍在使用的 V1
  4. 04发布后刷新使用数据

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/strongeron/storybook-workbench --skill sb-ship

安装后在 Claude Code 中输入/sb-ship确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

CONTEXT.md
agents/
openai.yaml
references/
propagate-workflow.md
scripts/
find-stories-by-tag.sh
validate-stories.sh
templates/
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 — 绝不要随意散放)——不要 cp Explore 故事(生产环境关注点不同: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。

评论

支持 Markdown