build-until-pass
Use when a build, typecheck, lint, or test command is failing and you want the agent to drive it to green on its own — run the…
Use when starting any non-trivial feature, refactor, or new project that will touch more than one file. Drives an AI coding agent through a gated Spec → Plan → Build → Test → Review → Ship lifecycle so work is specified before it is built, verified before it is reviewed, and
$ npx -y skills add lichamnesia/lich-skills --skill spec-driven-dev --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/spec-driven-devContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when starting any non-trivial feature, refactor, or new project that will touch more than one file. Drives an AI coding agent through a gated Spec → Plan → Build → Test → Review → Ship lifecycle so work is specified before it is built, verified before it is reviewed, and
name: spec-driven-dev description: Use when starting any non-trivial feature, refactor, or new project that will touch more than one file. Drives an AI coding agent through a gated Spec → Plan → Build → Test → Review → Ship lifecycle so work is specified before it is built, verified before it is reviewed, and reviewed before it ships.
A gated, six-phase workflow for shipping real software with an AI coding agent. Each phase has a goal, exit criteria, and a rationalization table for the excuses an agent will invent to skip it. Do not advance until the current gate is closed.
If unsure, do the spec phase anyway. A 10-minute spec is cheap insurance.
SPEC ──▶ PLAN ──▶ BUILD ──▶ TEST ──▶ REVIEW ──▶ SHIP
│ │ │ │ │ │
▼ ▼ ▼ ▼ ▼ ▼
What & Tasks & Thin Prove it Five-axis Deploy,
why order slices works quality observe,
by test gate roll back
│ │ │ │ │ │
└──────────┴──────────┴──────────┴──────────┴───────────┘
human or reviewer approves each gateRules of the gate:
1. You may loop backward (Test reveals a broken spec — return to Spec). 2. You may not skip forward. No building without a plan. No shipping without review. 3. Each gate produces a named artifact committed to the repo: `SPEC.md`, `PLAN.md`, code + tests, a review note / PR description, a launch + rollback note.
**Goal.** Turn a vague request into a written contract that answers *what*, *why*, *for whom*, and *how we know it is done*. Surface assumptions before they become bugs.
**Inputs.** User request, existing codebase, any prior specs, constraints.
**Steps.**
1. Restate the request in one sentence. Confirm with the human. 2. List assumptions explicitly. Example: `ASSUMPTIONS: web app, Postgres, session cookies. Correct me or I proceed.` 3. Reframe vague requirements as measurable success criteria. "Make it fast" becomes "dashboard LCP < 2.5s on 4G, initial data < 500ms". 4. Write the spec using `templates/spec.md` and save it in the repo. 5. Define Always / Ask First / Never boundaries. 6. Log open questions. Do not guess answers.
**Exit criteria.**
**Common Rationalizations**
| Excuse | Reality | |---|---| | "It's obvious what to build" | If it were, two engineers would write the same code. They won't. | | "I'll write the spec after the code works" | That's documentation, not specification. It can no longer change the design. | | "The user told me what they want" | Users describe symptoms, not contracts. Extract the contract. | | "Requirements will change anyway" | That's exactly why you write them down — so the change is visible. |
**Goal.** Convert the spec into an ordered list of small, verifiable tasks with an explicit dependency graph. No code is written in this phase.
**Inputs.** Approved spec, relevant source files, existing conventions.
**Steps.**
1. Enter read-only mode. Read the spec and the code it will touch. 2. Draw the dependency graph: what must exist before what. 3. Slice vertically. Thin end-to-end slices beat horizontal layers (schema → all APIs → all UI is the wrong shape). 4. Write tasks using `templates/plan.md`. Each task fits one focused session and touches ~5 files or fewer. 5. Insert verification checkpoints between task groups. 6. Call out risks and parallelization coordination (e.g. agree an API contract before splitting frontend/backend).
**Task sizing.**
| Size | Files | Example | |---|---|---| | XS | 1 | Add a validation rule | | S | 1–2 | One endpoint, one component | | M | 3–5 | One vertical feature slice | | L | 5–8 | Multi-component feature (split if possible) | | XL | 8+ | **Too big. Break it down.** |
**Exit criteria.**
**Common Rationalizations**
| Excuse | Reality | |---|---| | "I'll figure it out as I go" | That's how tangled diffs are born. Ten minutes planning saves hours untangling. | | "Planning is overhead" | Planning *is* the work. Implementation without a plan is just typing. | | "I can hold it in my head" | Context windows are finite. Compaction will eat it. |
**Goal.** Implement the plan in thin, compilable, revertible increments. Every increment leaves the tree green.
**Inputs.** Approved plan, the current task.
**The increment cycle:** `implement → test → verify → commit → next slice`
**Rules.**
0. **Simplicity first.** What is the simplest thing that could work? Three similar lines beat a premature abstraction. Do not generalize before the third use case demands it. 1. **Scope discipline.** Touch only what the task requires. Note unrelated issues; do not fix them. No "while I'm here" refactors. 2. **One thing per comm
Personal skill collection for Claude Code, Gemini CLI, and OpenAI Codex — by @LichAmnesia. Telegraph-style, opinionated, no filler. Engineering judgment skills plus high-leverage utility tools. 中文版:README-zh.md
Use when a build, typecheck, lint, or test command is failing and you want the agent to drive it to green on its own — run the…
Use when debugging any non-trivial bug — wrong output, crash, flaky test, performance regression, or "it works locally but not in…
Create distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web…
Use BEFORE any spec, plan, or code exists — the Stage 0 gate that decides whether a project should start at all. NO-GO is the…
Analyze Google Analytics 4 data — review website performance, identify traffic patterns, diagnose high-bounce pages, compare time…
Generate or edit images with Google's Nano Banana 2 (`gemini-3.1-flash-image-preview`). Use when the user asks to generate an…