Skip to Content
Getting StartedQuickstart

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> again

Prerequisites

  • Lamina installed in your AI coding agent (Installation)
  • A project directory open in your agent

1. Install (shell)

npx skills install aryaniyaps/lamina

Open 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 States

If 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.json

Run 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 cancellation

If 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 handoff

report.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.md

Use 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 dev

You 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:3000

Lamina 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 evidence

6. Fix and re-verify

Each open finding routes to one branch:

FindingAction
fix_target: productSwitch to ordinary coding mode and apply fix.md
fix_target: contractReturn to /lamina-design with a scoped contract correction, then implement again
fix_target: opsReport-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.md

Restart or refresh the product as needed, then re-verify in agent chat:

/lamina-verify guest checkout at http://localhost:3000

Exit 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:

ArtifactPhasePurpose
.lamina/business-context.mdInitDomain scope and constraints
.lamina/personas.jsonInitActor cast with permissions
.lamina/runs/<id>/run.jsonDesign / verifyMachine contract and findings
.lamina/runs/<id>/run.mdDesignReadable contract at ready_to_build
.lamina/runs/<id>/implement.mdDesignBuild handoff for your coding agent
.lamina/runs/<id>/report.mdVerifyVerification narrative
.lamina/runs/<id>/fix.mdVerifyFix brief (written even when no product fixes remain)
.lamina/runs/<id>/walkthrough/VerifyOptional 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

Last updated on