Troubleshooting
Use this page to restore progress when something blocks the loop. Each entry follows symptom → inferred state → primary recovery.
Not sure which Lamina command applies? Run /lamina <what you are trying to do> for routing help — it is optional discovery, not a substitute for /lamina-init.
Symptom reference
| Symptom | Inferred state | Primary recovery |
|---|---|---|
| Slash command not recognized | Skill is not loaded in the current agent session | Confirm install (Installation), then start a fresh session in the project root |
/lamina-design or /lamina-verify says init is required | Missing or invalid .lamina/business-context.md; the command did not fail unpredictably | Run /lamina-init <domain>; do not bypass or ask design to auto-init |
| Init completed in the wrong place | Agent was not operating from the intended project root | Open the correct project and run init there |
| Design pauses for clarification | Requested slice lacks a usable user, outcome, or boundary | Narrow to one coherent flow and answer blocking questions |
| Agent edits app source during a Lamina command | Lamina/coding mode boundary lost | Stop app edits; finish the Lamina artifact, then issue a separate ordinary coding prompt |
| Verify cannot reach the product | Connection errors, or report.md shows weak grounding/coverage for the named flow | Start the product, confirm URL in a browser, retry /lamina-verify guest checkout at http://localhost:3000 |
| Verify reports no gap but experience is clearly broken | Contract or actor coverage may be too shallow | Return to /lamina-design with the missing flow, constraint, or actor; then re-verify |
| Unsure which Lamina command to run | Need routing help, not a second onboarding path | Run /lamina <what you are trying to do> |
fix.md lists contract issues, not product bugs | Finding has fix_target: contract | Re-run /lamina-design with scoped update — do not change app code |
report.md lists ops observations | Finding has fix_target: ops | Note in report.md only — no app or contract fix; does not block product/contract exit |
| Stale artifacts from prior run | Old run reused incorrectly | Check run.json id and status; start a new /lamina-design for a new scope |
Slash command not recognized
Symptom: /lamina-init, /lamina-design, or /lamina-verify is not recognized.
Inferred state: The Lamina skill is not loaded in the current agent session.
Primary recovery:
- Install or re-install in your shell:
| Agent | Install command |
|---|---|
| Cursor | npx skills add https://github.com/aryaniyaps/lamina -a cursor -y |
| Claude Code | npx skills add https://github.com/aryaniyaps/lamina -a claude-code -y |
| Codex / Pi | npx skills add https://github.com/aryaniyaps/lamina -a codex -a pi -y |
| Any | npx skills install aryaniyaps/lamina |
- Open the intended project root
- Start a fresh agent session
- Run
/lamina-initdirectly — do not treat/laminaas a required setup step
Init gate blocked
Symptom: Lamina returns an init-blocked message and stops before design or verify.
Inferred state: Missing or invalid .lamina/business-context.md — the design/verify init gate checks this file specifically.
Primary recovery:
- Run
/lamina-init <your domain description>in agent chat - Confirm
.lamina/business-context.mdexists and is valid; successful init also produces.lamina/personas.json - Retry your design or verify command
The init gate cannot be bypassed. Lamina does not silently initialize on your behalf during design or verify.
Wrong project root
Symptom: Init artifacts appear in an unexpected directory, or design/verify cannot find context.
Inferred state: The agent session was not anchored to the intended project root.
Primary recovery:
- Open the correct project root in your coding agent
- Start a fresh session
- Run
/lamina-initthere
Design scope too vague
Symptom: Design pauses repeatedly or never reaches ready_to_build.
Inferred state: The requested slice lacks a usable user, outcome, or boundary.
Primary recovery:
- Narrow the request to one coherent flow (for example “guest checkout with payment hold”)
- Answer blocking clarification questions
- Re-run
/lamina-designwith the scoped request
Write boundary confusion
Symptom: Your agent edits application source during /lamina-init, /lamina-design, or /lamina-verify.
Inferred state: The Lamina command versus ordinary coding mode boundary was lost.
Primary recovery:
- Stop application edits inside the Lamina command
- Let Lamina finish its artifact (
.lamina/only) - Issue a separate ordinary coding prompt to implement from
implement.mdor applyfix.md
Verify cannot reach the app
Symptom: Connection errors during verify, or report.md shows weak grounding or coverage for the named flow.
Inferred state: The product may be unreachable at the supplied URL, the verify command omitted the bounded flow, or the audit target was too vague to ground the walk.
Primary recovery:
- Start your dev server (
npm run devor equivalent) - Confirm the URL works in a browser
- Pass the bounded flow and URL explicitly:
/lamina-verify guest checkout at http://localhost:3000 - Check for port mismatches (3000 vs 3001)
An empty or missing walkthrough/ directory alone is not a reachability failure — walkthrough evidence is optional.
For the HavenStay demo:
cd demo/hotel-booking-with-lamina
npm install && npm run db:setup && npm run devShallow contract coverage
Symptom: Verify passes or reports no gap, but the live experience is clearly broken.
Inferred state: The contract or actor coverage is too shallow for the failure you see.
Primary recovery:
- Return to
/lamina-designwith the missing flow, constraint, or actor - Implement any contract changes in ordinary coding mode
- Re-run
/lamina-verify guest checkout at http://localhost:3000
Contract vs product fixes
Symptom: Unsure whether to change app code or re-design.
Inferred state: The finding’s fix_target determines the branch.
fix_target | Primary recovery |
|---|---|
product | Switch to ordinary coding mode; fix app code from fix.md; re-verify the same bounded flow and URL |
contract | Return to /lamina-design with scoped update; implement again; re-verify the same bounded flow and URL |
ops | Report-only — observation stays in report.md; no app or contract fix; does not block product/contract exit |
Example contract gap: the design specified an approval gate that was never in run.json. Fix the contract, not just the app.
Example ops observation: an operational note about deployment or monitoring stays in report.md and does not require a fix loop.
Validation errors
Symptom: node .claude/skills/lamina-orchestrator/lib/validate-run.mjs reports schema errors.
Inferred state: run.json does not match the schema contract.
Primary recovery:
- Read the error output — it lists invalid fields
- Compare against run.json schema
- Re-run
/lamina-designto regenerate, or fixrun.jsonmanually
.gitignore guidance
Lamina artifacts are design docs. Whether to commit .lamina/ depends on your team:
| Approach | When |
|---|---|
Commit .lamina/ | Team wants shared contracts and verify history |
Gitignore .lamina/ | Personal design experiments; regenerate locally |
Suggested .gitignore entry if excluding:
.lamina/Next steps
- Quickstart — canonical journey back into the loop
- Installation — install and first init
- First run — completion signals and artifacts