Skill
meridian-compose
Compose Meridian product wholes from shadcn primitives and theme tokens — workbenches, shells, object-bound AI rails. Use when building screens, not when only tweaking a token.
skills.shmeridian-compose
Meridian compose
Parts and wholes together: law book → skill → recipe → shadcn atoms → CI gates. Contract MCP is optional.
Fail-closed loop
- Load
contracts/meridian/DESIGN.md(or rootdesign.md) +agents.md. - Confirm surface with
meridian-surface(defaultapplication). - Call a task recipe when it fits (
list-resource,agent-rail, …). - Inventory primitives — missing?
npx shadcn@latest add …(or shadcn MCP). - Remap any
lucide-react/@phosphor-icons/reactimports to@/lib/icons. - Import structure helpers from
@/lib/design(bg,depth,defineWorkbench, …). - Study
components/surfaces/workbench.tsxas the merge proof. - Compose (Fluent 2 material + Cursor density):
- Quiet chrome (sidebar / topbar) — thin
border-border/edge - Control radius
rounded-lg; pane shellsrounded-2xl - Dense index or detail; hover
bg-muted/30–40 - Mono IDs + keyboard hints
- Selected =
bg-brand/10(not a loud border) - Focus = ring/stroke weight, not fill alone
- Optional AI rail on the selected object with
data-provenance+activity-*
- Quiet chrome (sidebar / topbar) — thin
- Depth:
edgefirst; raise only when floated (materialLaws). - Done only when
npm run check:design(+ platform/contrast as needed) is green. - Optional: MCP
get_contract/validate_uiif the session is tool-wired.
Anatomy (application)
Surface
├─ nav chrome (quiet)
├─ main
│ ├─ command / search
│ └─ resource table | detail
└─ (optional) agent rail bound to object id
Done
- Matches
design.mdchecklist - Reused primitives — no twin kits
- Reads as one system beside
/meridian/theme - No influence labels; gates green