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 BEFORE any spec, plan, or code exists — the Stage 0 gate that decides whether a project should start at all. NO-GO is the default. GO requires passing five framework checks (Differentiation · Audience–Market Fit · Acquisition Channel · Capacity · 7-Factor Wedge), a memory
$ npx -y skills add lichamnesia/lich-skills --skill go-no-go --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/go-no-goContext preview
The summary Claude sees to decide when to auto-load this skill.
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 default. GO requires passing five framework checks (Differentiation · Audience–Market Fit · Acquisition Channel · Capacity · 7-Factor Wedge), a memory
name: go-no-go description: 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 default. GO requires passing five framework checks (Differentiation · Audience–Market Fit · Acquisition Channel · Capacity · 7-Factor Wedge), a memory check against your own prior attempts, and a 24-hour pattern-interrupt if enthusiasm-high is detected. Output is a public commitment artifact with pre-mortemed kill criteria (D14/D30/D60/D90 review gates). Triggered by "/go-no-go [project]", any "I want to build / start / take on X" intent, or before opening any new repo or signing any new contract. Pairs with spec-driven-dev (this is Stage 0, that is Stage 1).
> **NO-GO is the default. GO requires evidence.**
Most AI coding skills help you build. This one helps you **not** build.
Half the cost of solo work is starting the wrong thing. Once a repo exists, sunk cost and identity-protection make it hard to quit. So you grind 3–6 months before admitting the start itself was wrong.
`go-no-go` is the gate before any `/spec`, `/plan`, `/build`. It runs five framework checks (configurable), a memory check against your own past attempts, and a 24-hour cooldown if your enthusiasm is too high. The output is a public commitment doc with pre-mortemed kill criteria. If anything fails, the default is NO-GO.
It is a deliberately **stronger** instrument than a generic intent-extraction interview: it stores memory, fails by default, requires structural overrides, and produces a dated artifact you publish.
Run `/go-no-go` when:
"I should take on Z client"
| | Plain intent interview | `go-no-go` | |---|---|---| | Default outcome | Continue | **NO-GO** | | Memory of past attempts | None | **Mandatory pre-flight search** | | Framework checks | Generic restate | **5 fail-by-default gates** | | Time gate | None | **24h pattern-interrupt** if enthusiasm-high | | Output | Confirmed restate | **Public commitment doc** with kill criteria | | Override semantics | "Yes/no" | **Structured override with named reason** | | Lifecycle | One session | **D14/D30/D60/D90 review schedule** | | Composability | Standalone | **Stage 0 of any SDLC** (pairs with spec-driven-dev) |
If your situation calls for a softer instrument, use a generic intent interview. If you have a pattern of starting and not finishing, use this.
`/loop`, or autonomous loops**
`~/.go-no-go/journal.md`)
acknowledgment from the user
Before asking anything, search the configured memory store for prior similar attempts.
PRE-FLIGHT: - Topic: <extracted from user pitch> - Searched: <memory store path> - Found N prior similar attempts: - <date> <name> → <outcome> - <date> <name> → <outcome>
If `N ≥ 1`, state explicitly:
> "You attempted [similar X] in [date]. It ended because [reason from journal]. > **What is structurally different this time?**"
Wait for an answer. Reject these answers as non-structural:
Accept these as structural:
If the answer is non-structural → **automatic NO-GO**. Document the attempted override in the commitment doc so the user can see they tried.
Write one sentence describing what you think the user wants, with an honest confidence number.
HYPOTHESIS: You want to <restated intent>, and you reached for <stated approach>
because <conventional reason>.
CONFIDENCE: ~XX%The number forces honesty. If you can't predict the user's reaction to the next three questions you'd ask, lower the number.
Format:
Q: <focused question> GUESS: <your hypothesis for the answer, with reasoning>
Wait for the user before asking the next. Why one-at-a-time, why guess attached:
Watch for buzzword answers ("scalable", "modern", "robust", "clean") and convention-talk ("the standard approach", "best practice"). The wildcard question, used when you hear those:
> *"If you didn't have to justify this to anyone — not even your future self > on Twitter — what would you actually want?"*
That one question often surfaces more than the previous five.
Run all five. **Any FAIL = automatic NO-GO** unless the user explicitly overrides with a named structural reason (recorded in commitment doc).
The default ch
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…
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…
Use at the START of any task, or whenever you are unsure which lich-skill applies. The router for this collection — it maps every…