.agents/skills/bklit-ui/SKILL.md
This skill is for transitioning a chart or component from prototype to production.
npx skillsauth add bklit/bklit-ui bklit-uiInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill is for taking an experimental chart or component from prototype (usually on an untracked route like the playground) into production: published in the UI package, documented, and ready for users.
apps/web/app/playground/page.tsx) and want to ship it.Follow these steps in order. Treat this as a checklist; each step has concrete locations in the repo.
packages/ui/ in the right place (e.g. packages/ui/src/charts/ for charts).packages/ui/src/charts/index.ts.exports in package.json for specific entry points, add or update the relevant entry so the new component is importable as @bklitui/ui/charts (or the appropriate path).apps/web/app/playground/page.tsx) so the app no longer depends on in-app-only copies of the component.Documentation lives under apps/web/. Do all of the following.
Chart examples (live demos)
apps/web/components/charts/chart-slugs.ts: add the new chart’s slug to the validChartSlugs array (e.g. "my-chart").apps/web/components/charts/chart-examples.tsx:
CHART_NAV_ITEMS array (or equivalent list used for the chart-type tabs).factory (and optionally hero) for the new slug so the chart appears on /charts/[chart] with the same pattern as existing charts (e.g. area-chart, line-chart). Reuse or mirror the prop variants you validated in the scaffolding phase.Docs page for the component
apps/web/content/docs/components/, e.g. my-chart.mdx, with:
title, description.<ComponentPreview>), installation (e.g. <InstallationTabs>), and usage sections consistent with other component docs (see e.g. line-chart.mdx).Components index
apps/web/content/docs/components/index.mdx uses <ComponentsList />, which lists all pages under content/docs/components/. Adding the new .mdx file is enough for it to appear if the sidebar includes it (see next).Sidebar (desktop and mobile)
apps/web/content/docs/components/meta.json in the pages array (e.g. "my-chart"), so the new page appears in the Components folder in the sidebar.components list in apps/web/components/docs/site-header.tsx. Add an entry there for the new chart (e.g. { text: "My Chart", url: "/docs/components/my-chart" }) so it appears in the mobile menu under Components.pnpm registry:build (or the equivalent that runs the UI package’s registry:build script).apps/web/public/r/ from packages/ui (including registry.json and per-component JSON). If the new chart is a shadcn-registry component, ensure it’s listed in packages/ui/registry.json (or the structure your registry uses) so the build outputs the new component’s registry files.pnpm lint; fix issues with pnpm lint:fix or the project’s lint:fix script.pnpm format (or the script that runs the formatter).pnpm prepare if needed, and then commit so hooks execute).feat(charts): add MyChart component).git push --set-upstream origin <branch> if first push).gh pr create (GitHub CLI) with a title and body, or open the “Compare & pull request” link from the repo’s PR/new view. Use a template body if one exists (e.g. .github/PULL_REQUEST_TEMPLATE_*.md).packages/ui and exportedchart-slugs.ts, chart-examples.tsx)content/docs/components/*.mdxcontent/docs/components/meta.json (sidebar)site-header.tsx components list (mobile nav)pnpm registry:build)| Step | Location |
|------|----------|
| Chart exports | packages/ui/src/charts/index.ts |
| Chart slugs | apps/web/components/charts/chart-slugs.ts |
| Chart examples (nav + registry) | apps/web/components/charts/chart-examples.tsx |
| Component docs | apps/web/content/docs/components/<name>.mdx |
| Components index | apps/web/content/docs/components/index.mdx (list is auto from docs pages) |
| Sidebar (desktop) | apps/web/content/docs/components/meta.json → pages |
| Mobile nav | apps/web/components/docs/site-header.tsx → components array |
| Registry (source) | packages/ui/registry.json; build output: apps/web/public/r/ |
| Registry build | From root: pnpm registry:build |
data-ai
Bklit UI charts and data visualization for any project using the @bklit shadcn registry. Install, compose, theme, and animate charts correctly. Triggers when working with @bklitui/ui/charts, @bklit components, data visualization, dashboards, or chart theming. Also invoke manually for chart tasks.
tools
Turborepo monorepo build system guidance. Triggers on: turbo.json, task pipelines, dependsOn, caching, remote cache, the "turbo" CLI, --filter, --affected, CI optimization, environment variables, internal packages, monorepo structure/best practices, and boundaries. Use when user: configures tasks/workflows/pipelines, creates packages, sets up monorepo, shares code between apps, runs changed/affected packages, debugs cache, or has apps/packages directories.
tools
Use when work should span one or more detached tasks but still behave like one job with a single owner context. TaskFlow is the durable flow substrate under authoring layers like Lobster, ACPX, plugins, or plain code. Keep conditional logic in the caller; use TaskFlow for flow identity, child-task linkage, waiting state, revision-checked mutations, and user-facing emergence.
tools
# Lobster Lobster executes multi-step workflows with approval checkpoints. Use it when: - User wants a repeatable automation (triage, monitor, sync) - Actions need human approval before executing (send, post, delete) - Multiple tool calls should run as one deterministic operation ## When to use Lobster | User intent | Use Lobster? | | ------------------------------------------------------ | --------------------------