Quickstart
This walkthrough completes one coherent cycle: init → design → implement → verify → fix. The example uses a single bounded flow — guest checkout with payment hold — not an entire marketplace.
Lamina does not activate passively. Run each slash command explicitly in agent chat. Use ordinary coding prompts when it is time to edit app source.
Canonical sequence
SHELL
npx skills install aryaniyaps/lamina
AGENT CHAT — start a fresh session in your project
/lamina-init <your product domain and primary users>
/lamina-design <one feature or flow>
ORDINARY CODING MODE
Implement from .lamina/runs/<run_id>/implement.md
Start the product
AGENT CHAT
/lamina-verify <one feature or flow> at <base_url>
ORDINARY CODING MODE
Apply fix.md when findings remain
AGENT CHAT
/lamina-verify <one feature or flow> at <base_url> againPrerequisites
- Lamina installed in your AI coding agent (Installation)
- A project directory open in your agent
1. Install (shell)
npx skills install aryaniyaps/laminaOpen your project root and start a fresh agent session so the skill loads.
2. Initialize (agent chat)
Run init directly — do not treat /lamina as a required setup step.
New product: describe the domain and primary actors.
Existing product: identify it as an existing app and describe its domain and primary actors.
/lamina-init Boutique hotel booking marketplace in the United StatesIf Lamina asks consequential business questions, answer them. Reversible unknowns may remain labeled as assumptions.
Success state: init complete when Lamina produces and validates both project-level artifacts:
.lamina/
├── business-context.md
└── personas.jsonRun init once per project or domain. Use /lamina-init update only when the business use case, market, scope, or actor cast materially changes.
Next action: run one bounded design command.
3. Design (agent chat)
Design one feature or flow, not an entire platform:
/lamina-design Guest checkout with inventory hold, payment, and cancellationIf the request is too vague, Lamina asks for clarification and does not present the flow as build-ready. If init is missing or invalid, Lamina stops and routes you back to /lamina-init — it never silently initializes on your behalf.
Success state: ready_to_build with three run artifacts:
.lamina/runs/<run_id>/
├── run.json # status: ready_to_build
├── run.md # readable contract rendering
└── implement.md # implementation handoffreport.md is produced by verify, not design.
Next action: switch to ordinary coding mode and implement from implement.md. A fresh implementation session is optional; the mode change is mandatory — application edits never happen inside /lamina-design.
Implement from .lamina/runs/<run_id>/implement.mdUse any framework, database, and UI library. Lamina is stack-agnostic.
4. Run the product (ordinary coding mode)
Start your dev server and confirm the URL works in a browser before verify:
npm run devYou need a running, browser-reachable product at a known base_url (for example http://localhost:3000).
5. Verify (agent chat)
Run verify with the bounded flow and live URL — verify requires both:
/lamina-verify guest checkout at http://localhost:3000Lamina compares the live product against the contract and produces:
.lamina/runs/<run_id>/
├── run.json # findings[] populated, status updated
├── report.md # verification narrative
├── fix.md # fix brief (written even when no product fixes remain)
└── walkthrough/ # optional live-capture evidence6. Fix and re-verify
Each open finding routes to one branch:
| Finding | Action |
|---|---|
fix_target: product | Switch to ordinary coding mode and apply fix.md |
fix_target: contract | Return to /lamina-design with a scoped contract correction, then implement again |
fix_target: ops | Report-only — observation stays in report.md; no app or contract fix required |
Ordinary coding mode — product fixes:
Apply the product fixes in .lamina/runs/<run_id>/fix.mdRestart or refresh the product as needed, then re-verify in agent chat:
/lamina-verify guest checkout at http://localhost:3000Exit condition: the cycle is complete when there are no open product or contract findings — not merely when artifacts were created. fix_target: ops observations remain in report.md and do not block this exit.
What you should have
After one full cycle:
| Artifact | Phase | Purpose |
|---|---|---|
.lamina/business-context.md | Init | Domain scope and constraints |
.lamina/personas.json | Init | Actor cast with permissions |
.lamina/runs/<id>/run.json | Design / verify | Machine contract and findings |
.lamina/runs/<id>/run.md | Design | Readable contract at ready_to_build |
.lamina/runs/<id>/implement.md | Design | Build handoff for your coding agent |
.lamina/runs/<id>/report.md | Verify | Verification narrative |
.lamina/runs/<id>/fix.md | Verify | Fix brief (written even when no product fixes remain) |
.lamina/runs/<id>/walkthrough/ | Verify | Optional live-capture evidence |
Not sure which command to run? /lamina <what you are trying to do> is an optional router — not a required setup step.
Next steps
- First run — completion signals, pauses, and retries
- Demo: HavenStay — explore a full reference implementation
- Contracts and runs — artifact model deep dive