Two design defaults are now rules, stated in AGENTS.md, CODING_STANDARDS.md and on Design patterns. Every chart, sparkline and KPI or stat card on the web comes from Bklit UI, through the @bklit registry and the bklit-ui, bklit-ui-design and bklit-ui-migrate skills. Faux product UI on landing, marketing and docs pages (stills, feature cards, cursor demos, bento grids) is built with Stageshow and ships only after its loop passes film.mjs --gate.
The shadcn chart wrapper in packages/ui and the recharts dependency of apps/web and packages/ui are removed. Nothing imported them, so the built client and Worker are byte-identical, and an install fetches 35 fewer packages. scripts/web-chart-library.test.mjs runs in pnpm test and fails when apps/web/src or packages/ui/src imports Recharts, Chart.js, Nivo, Victory, visx, ECharts, ApexCharts, Highcharts, Tremor or a similar library, or when their package.json lists one. It is a test rather than a lint rule because an oxlint entry would replace the client boundary; see Enforcement. The Stageshow rule is held in review, with a new item in the Review checklist.
Bklit renders for React on the web only, so the Expo app is outside the rule. Its charts use victory-native, or Swift Charts through @expo/ui on an iOS-only screen. The dashboard KPI cards and the hand-built fragments of the landing feature board predate the rules and move to Bklit and Stageshow when they are reworked.