关于 bklit-ship
bklit-ship 是面向 bklit-ui monorepo 贡献者的技能,用于将已在 Studio 验证的图表或组件发布到生产环境。它提供涵盖导出、文档、Studio、注册表构建和验证的仓库专用清单。
主要功能
- 01将组件移入 UI 包
- 02更新公共导出和文档
- 03登记示例与 Studio 控件
- 04重新构建 shadcn 注册表
- 05运行 lint、测试和构建检查
适用场景
- 01发布经 Studio 验证的图表变体
- 02将新图表类型加入组件包
- 03为拉取请求准备组件变更
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ bklit/ bklit-ui --skill bklit-ship安装后在 Claude Code 中输入/bklit-ship确认已加载。
详细介绍
Bklit Ship Skill
此技能面向 bklit-ui monorepo 贡献者,帮助他们将已在 Studio 中验证的图表或组件投入生产:发布到 UI 包中、编写文档,并准备好供用户使用。
何时使用此技能
- 你克隆了
bklit/bklit-ui,并在 Studio(/studio)中验证了一个可用的原型,现在想将其发布。 - 你已准备好从“搭建”进入“正式落地”阶段:API 以及关键属性/变体已在原型设计阶段确定。
计划:原型 → 生产
按顺序执行以下步骤。请将其视为一份检查清单;每一步都列出了仓库中的具体位置。
1. 移入 UI 包并导出
- 移入或完成位于
packages/ui/中的图表/组件源代码(例如,图表位于packages/ui/src/charts/)。如果你遵循了 bklit-studio,原型应该已经在这里;如果apps/web/components/playground/下还有残留副本,请删除。 - 从该包的公共 API 导出新图表/组件:
- 对于图表:在
packages/ui/src/charts/index.ts中添加导出。 - 如果该包在
package.json中使用exports指定入口,请添加或更新相应入口,使新组件可通过@bklitui/ui/charts(或适当路径)导入。
- 对于图表:在
- 不要在
apps/web/components/playground/下添加仅供应用使用的图表副本(已弃用)。Studio 预览应放在packages/studio中。
2. 文档和示例(apps/web)
文档位于 apps/web/ 下。请完成以下所有事项。
-
更新现有组件文档,适用于发布内容扩展现有图表的情况(新增属性、子组件或行为):
- 在父级文档的相关表格中添加新属性(例如,在
line-chart.mdx中记录Grid highlightRowValues、ChartTooltip indicatorColor)。 - 视需要更新相关工具文档(例如,
content/docs/utility/grid.mdx、tooltip.mdx)。 - 保持主要文档预览不变——不要将现有页面上的标准预览替换为新变体。
- 当某个功能值得单独成页时,添加一个链接至专门文档页的简短章节(例如,Profit/Loss →
profit-loss-line.mdx)。
- 在父级文档的相关表格中添加新属性(例如,在
-
图表示例(
/charts/[slug]上的实时演示)- 在对应的图库路由中添加示例(例如,将 Profit/Loss 变体放在
/charts/line-chart下,而不只是新增一个文档预览)。 - 如果该功能属于一种新的图表类型,请将其 slug 添加到
apps/web/components/charts/chart-slugs.ts,并在apps/web/components/charts/chart-examples.tsx中注册示例(视情况使用CHART_NAV_ITEMS/工厂注册表)。 - 复用或映射你在搭建阶段验证过的属性变体。
- 在对应的图库路由中添加示例(例如,将 Profit/Loss 变体放在
-
专门的文档页(发布新的可组合组件或图表类型时)
- 添加
apps/web/content/docs/components/<name>.mdx,包含 frontmatter、<ComponentPreview>、安装说明、用法和属性,并与现有组件文档保持一致。 - 将 slug 添加到
apps/web/content/docs/components/meta.json。此文件会同时驱动桌面侧边栏和移动菜单——apps/web/components/docs/site-header.tsx会根据文档页面树(docsTree)生成移动导航,因此无需在该处手动维护列表。 - 可选的“New”徽章:将文档和图库 URL 添加到
apps/web/lib/nav-badges.ts(侧边栏、移动菜单和站点导航都会读取它)。 - 顶层站点链接(Docs、Components、Recipes、……)位于
apps/web/lib/site-nav-links.ts;图表页面不应添加到这里。
- 添加
3. Studio
- 如果新功能是现有类型的变体,更新现有的 Studio 图表;如果是不同类型,添加新的 Studio 图表。
- 将所有可调属性接入 Studio(如果原型阶段尚未完成):
packages/studio/src/lib/studio-parsers.ts— URL 状态键和默认值packages/studio/src/lib/registry-control-groups.ts— 控制组packages/studio/src/lib/registry.tsx— 渲染预览 +generateCodepackages/studio/src/lib/studio-components.ts— 图层树- 在
packages/studio/src/components/studio-state-provider.tsx中设置切换图表类型时的图表类型默认值
- 新的 Studio slug 还需要(TypeScript 会检查
Record<ChartSlug, …>对应的条目,但不会检查其他条目):packages/studio/src/chart-slugs.ts— 添加 slugpackages/studio/src/lib/types.ts— 添加chartLabels条目(显示名称;satisfies Record<ChartSlug, string>)packages/studio/src/components/chart-type-icons.tsx— 添加CHART_TYPE_ICONS条目(Record<ChartSlug, IconName>)packages/studio/src/components/catalog/catalog-chart-preview-grid.tsx— 如果目录卡片需要自定义尺寸或状态覆盖,则添加CATALOG_CHART_LAYOUT条目(如果有 y 轴,还需添加STUDIO_Y_AXIS_CHART_PREFIX)packages/studio/src/lib/studio-url-key-orders.ts— 将每个新的 URL 状态键追加到STUDIO_STATE_KEY_ORDER末尾(冻结,只能追加;绝不要插入或重新排序,否则会破坏共享 URL;studio-url-codec.test.ts会对此进行检查)packages/studio/src/lib/studio-visibility-sync.ts— 如果图表有图例或画笔图层,则在legendComponentIdForChart/brushComponentIdForChart中添加对应分支(否则默认使用null)
4. 重建 shadcn 注册表
- 在仓库根目录运行:
pnpm registry:build。 - 此命令会根据
packages/ui更新apps/web/public/r/。如果新组件需要通过 shadcn 安装,请确保将其列入packages/ui/registry.json。
5. Lint、格式化、测试和构建
从仓库根目录运行,直到所有检查通过:
pnpm lint
pnpm format
pnpm --filter @bklitui/ui test # when package logic changed
pnpm build
pnpm registry:build # if not already run in step 4
修复所有错误;重复执行,直到提交时的钩子通过。
6. 提交、推送并创建 PR
- 使用简短、清晰的提交消息提交(例如:
feat(charts): add ProfitLossLine component)。 - 推送分支。
- 填写发版检查清单(见下文)并创建 PR。
PR 检查清单
- 图表/组件已移至
packages/ui并导出 - 已更新现有文档,说明新增的属性/功能(标准预览保持不变)
- Gallery 示例位于正确的
/charts/**路由 - 专属文档页面 + 侧边栏 + 移动端导航(如果是新的可组合类型/图表类型)
- Studio 图表已更新或添加,且所有属性均已加入控制组(新 slug:标签、图标、目录布局、URL 键顺序已追加)
- 注册表已重建(
pnpm registry:build) -
pnpm lint、测试(如适用)和pnpm build均通过
文件参考(快速查找)
| 步骤 | 位置 |
|---|---|
| 图表导出 | packages/ui/src/charts/index.ts |
| 图表 slug | apps/web/components/charts/chart-slugs.ts |
| 图表示例(导航 + 注册表) | apps/web/components/charts/chart-examples.tsx |
| 组件文档 | apps/web/content/docs/components/<name>.mdx |
| 工具文档(Grid、Tooltip 等) | apps/web/content/docs/utility/*.mdx |
| 侧边栏 + 移动端导航 | apps/web/content/docs/components/meta.json → pages(site-header.tsx 中的移动端菜单由文档页面树生成) |
| “New” 徽章 | apps/web/lib/nav-badges.ts |
| Studio 注册表 | packages/studio/src/lib/registry.tsx |
| Studio 组件树 | packages/studio/src/lib/studio-components.ts |
| Studio 控件 | packages/studio/src/lib/registry-control-groups.ts |
| Studio URL 状态 | packages/studio/src/lib/studio-parsers.ts + 在 packages/studio/src/lib/studio-url-key-orders.ts 中追加键 |
| Studio slug 列表 / 标签 / 图标 | packages/studio/src/chart-slugs.ts、packages/studio/src/lib/types.ts(chartLabels)、packages/studio/src/components/chart-type-icons.tsx |
| Studio 目录图块 | packages/studio/src/components/catalog/catalog-chart-preview-grid.tsx |
| Studio 图层可见性同步 | packages/studio/src/lib/studio-visibility-sync.ts |
| 注册表(源文件) | packages/ui/registry.json;构建输出:apps/web/public/r/ |
| 注册表构建 | 在根目录运行:pnpm registry:build |
评论
支持 Markdown