Buttons render correctly but booking logic is wrong.
You installed the shadcn skill expecting full product design.
Forms validate with Zod but illegal business transitions still ship.
Your agent knows Dialog API but not hold lifecycle rules.
Context
The official shadcn/ui skill reduces component errors: your agent stops guessing registry paths and form patterns. That saves time on every UI file. Product behavior is a separate concern. A correct Submit button can still fire at the wrong step in onboarding. Lamina does not teach Button; it teaches what Submit may do for each actor.
Common situations
Concrete cases from AI-shipping workflows. Each shows what the alternative handles and where a behavior contract helps.
Correct Form component, wrong checkout sequence
Situation
shadcn skill fixed FormField wiring on checkout. Guests can still pay when the inventory hold expired because nothing defined hold status in the domain model.
What shadcn/ui skill does
Ensures shadcn Form, Input, and Button usage match project conventions and accessibility patterns.
What Lamina adds
run.yaml defines hold lifecycle and pay preconditions. Verify catches pay enabled after expiry.
Takeaway
Component correctness is not flow correctness.
Adding a new settings page with standard patterns
Situation
Profile settings with shadcn Card, Switch, and toast patterns. No new roles or gates.
Skip until settings change product permissions or multi-step setup.
Takeaway
UI-only changes rarely need a behavior contract.
Multi-step wizard with shadcn Stepper pattern
Situation
Agent used shadcn patterns for a stepped UI. Step navigation is wired but business prerequisites are not enforced server-side.
What shadcn/ui skill does
Provides stepper UI components and layout patterns.
What Lamina adds
Permission matrix: which steps must complete before advance and submit. implement.md lists server checks.
Takeaway
Pair shadcn UI patterns with Lamina when steps encode business rules.
Comparison
Lamina vs shadcn/ui skill
Dimension
shadcn/ui skill
Lamina
Primary job
Correct shadcn APIs and registry usage
Spec domain behavior
Layer in stack
UI component skill
Headless product design skill
Primary output
components.json context + UI code
run.yaml + implement.md
Writes app source?
Yes, UI code
No
Behavior spec (states, flows, permissions)
Component interaction patterns
State machines and permissions
Durable in-repo artifact
Skill + components in repo
.lamina/ contracts
Post-build verification
CLI and docs lookup during build
/lamina-verify on live build
Repo and stack fit
Projects with components.json
Any stack with or without shadcn
Best when
Wrong Button, Form, or Dialog APIs
Multi-step flows with gates
When you don't need Lamina
Component-only tweaks
No new product rules
Compose with Lamina?
Active during UI implementation
/lamina-design → implement → verify
Workflow
Lamina vs shadcn/ui skill: recommended workflow
Step
shadcn/ui skill
Lamina
1
Ensure components.json is current
/lamina-design on the feature
2
Agent builds UI with shadcn skill
Agent follows implement.md rules
3
Fix component API errors
/lamina-verify persona walks
When to use which
Lamina vs shadcn/ui skill: when to use each
Situation
shadcn/ui skill
Lamina
Migrating Button to new shadcn API
shadcn skill
Skip
Partner onboarding with gated submit
shadcn for forms
Contract + verify
Not using shadcn in this repo
N/A
Lamina still applies for behavior
Worked example
Readiness checklist before guests. shadcn skill helps render checklist UI components correctly. Lamina specs which blockers (Stripe, photos, policy) must clear before the property accepts bookings. HavenStay verify found a single Create your hotel CTA without readiness gates when behavior was not specced.