Skip to main content

Lamina vs Impeccable

Impeccable is a UI craft skill: critique, tokens, accessibility, and visual polish. Lamina is a headless product-design skill: behavior contracts and live verification. They pair; they do not overlap.

Curated by Aryan Iyappan · Updated 2026-07-13

Impeccable designs how it looks. Lamina designs how it works. Both can sit in the same agent session.

Who this comparison is for

You are in the right place if

  • You installed Impeccable expecting it to fix broken checkout or onboarding logic.
  • Screens look professional after critique, but illegal state pairs still ship.
  • You want a clear stack order: behavior contract first, visual polish second.
  • Your agent passes Impeccable hooks but guests can still pay before email verification.

Context

Impeccable is the reference UI skill in the Lamina ecosystem. Developers often conflate visual craft with product behavior: the dashboard typography is excellent, but a partner can submit for review before Stripe connects. This page maps what Impeccable owns (pixels, hierarchy, presentation states) versus what Lamina owns (domain state machines, permission matrices, recovery paths). Neither replaces the other. The question is stack order, not either/or.

Common situations

Concrete cases from AI-shipping workflows. Each shows what the alternative handles and where a behavior contract helps.

Guest checkout looks polished but hold rules are wrong

Situation
You ran Impeccable on a booking checkout. The hold banner, typography, and empty states look professional. Guests can still confirm payment before email verification or after the inventory hold expired.
What Impeccable does
Impeccable improves visual hierarchy, accessibility labels, and presentation of loading/empty/error chrome. It does not define whether pay is legal before verify-email or after hold expiry.
What Lamina adds
/lamina-design writes hold lifecycle, email gate, and cancel consent into run.yaml. /lamina-verify walks as a guest persona and surfaces illegal transitions in fix.md.
Takeaway
Use Impeccable for how checkout looks. Use Lamina for what checkout allows.

Partner onboarding form passes design critique

Situation
Impeccable critique fixed spacing and form labels on partner property onboarding. Submit for review is visible on step one because the agent rendered a complete form.
What Impeccable does
Impeccable ensures the form reads well and meets craft standards. It does not encode stepped prerequisites (Stripe, rooms, policy) before submit unlocks.
What Lamina adds
Lamina specs submit-for-review as gated until prior steps complete. Verify walks the partner persona through the real flow on staging.
Takeaway
Design critique cannot replace a permission matrix across onboarding steps.

You only need a landing page refresh

Situation
Marketing asked for better hero typography and contrast on a static page. No new roles, gates, or multi-step flows.
What Impeccable does
Impeccable alone is the right tool: critique, tokens, polish.
What Lamina adds
Nothing required. Skip Lamina until the page gains product behavior (forms with gates, authenticated states, etc.).
Takeaway
Visual-only work is a valid reason not to install Lamina yet.

Comparison

Lamina vs Impeccable for AI coding agents: layer comparison
DimensionImpeccableLamina
Primary jobPolish pixels, hierarchy, accessibility, and anti-AI-slop craftSpec product behavior: states, roles, flows, permissions, edge cases
Layer in stackUI / visual skillHeadless product design skill
Primary outputDESIGN.md tokens, critique findings, refined UI coderun.yaml + implement.md in .lamina/
Writes app source?Yes, when implementing visual changesNo. Only .lamina/
Behavior spec (states, flows, permissions)UI states (loading, empty, error presentation), not domain rulesDomain state machines, permission matrices, flow recovery
Durable in-repo artifactDESIGN.md and critique notes in repoPer-run behavior contract in .lamina/
Post-build verificationVisual critique, live UI iteration, hook-based design checks/lamina-verify persona walks against behavior contract
Repo and stack fitAny repo with UI your agent can editAny repo, stack, and agent
Best whenLanding pages, dashboards, and components need professional polishFeatures have roles, gates, or multi-step flows
When you don't need LaminaN/A for visual-only workYou only need a skin refresh with no new product rules
Compose with Lamina?Run after behavior is specced and implemented/lamina-design → implement → Impeccable polish → /lamina-verify

Recommended stack order when using both

Lamina vs Impeccable: recommended workflow
StepImpeccableLamina
1. ExploreOptional: set visual direction in DESIGN.md/lamina-init + /lamina-design on the feature
2. ImplementAgent implements UI with craft guidanceAgent implements from implement.md (behavior first)
3. PolishImpeccable critique and polish pass on componentsOptional: Impeccable after core behavior lands
4. VerifyRe-run critique if visuals shifted layout/lamina-verify; fix.md loop for behavior gaps

When to reach for each

Lamina vs Impeccable: when to use each
SituationImpeccableLamina
Dashboard needs better typography and contrastImpeccable aloneSkip Lamina
Checkout needs hold timer, email gate, cancel rulesImpeccable for polish onlyLamina for contract + verify
Component library migration (shadcn refresh)Impeccable + shadcn skillAdd Lamina when flows change, not when buttons move
AI-generated UI looks genericImpeccable anti-slop passLamina if generic UI hides wrong product states

Worked example

Partner onboarding gate before submit. In the HavenStay demo, Impeccable can polish the onboarding form layout and labels. Lamina specs that submit-for-review stays locked until Stripe, property, rooms, and policy steps complete. Without the contract, agents render a complete form on day one. With Lamina, verify catches submit unlocked too early.

HavenStay demo walkthrough

Frequently asked questions

Can I use Lamina and Impeccable together?

Yes. Lamina specs behavior; Impeccable handles pixels. Run /lamina-design and implement first, polish with Impeccable, then /lamina-verify so visual tweaks do not mask broken gates.

Impeccable covers empty and loading states. Isn't that behavior?

Presentation states differ from domain states. Impeccable ensures empty checkout looks intentional. Lamina ensures pay is illegal while hold is expired or email is unverified.

Does Lamina replace Impeccable?

No. Lamina never touches styling, tokens, or visual critique.

Impeccable has design hooks. Does that replace /lamina-verify?

Hooks catch visual regressions during iteration. /lamina-verify walks personas against the behavior contract on the live build. Different signals.

Comparisons map stack layers, repo artifacts, and HavenStay demo examples. Updated when major tools change positioning.

Install in one command.

A headless product-design skill for your AI coding agent. Then run the design → implement → verify loop on your next feature.

Apache-2.0 · open source. Star on GitHub if Lamina saves you a loop.

npx skills install aryaniyaps/lamina

Works with your coding agent

  • Cursor
  • Claude Code
  • Codex
  • Gemini
  • Pi
  • and more