{
  "markdown": "# lich-skills\n\n> Personal skill collection for **Claude Code**, **Gemini CLI**, and **OpenAI Codex** — by [@LichAmnesia](https://github.com/LichAmnesia).\n\nTelegraph-style, opinionated, no filler. Engineering judgment skills plus high-leverage utility tools.\n\n中文版：[README-zh.md](README-zh.md)\n\n---\n\n## The go-no-go gate (Stage 0)\n\n```\n                          ┌─────────────────────────────────────┐\n                          │   NO-GO is the default.             │\n                          │   GO requires evidence.             │\n                          └──────────────┬──────────────────────┘\n                                         │\n   MEMORY     →   HYPOTHESIS   →   FIVE CHECKS    →   24h INTERRUPT?   →   COMMITMENT\n ┌────────┐    ┌─────────────┐  ┌────────────────┐  ┌──────────────┐   ┌──────────────┐\n │ Search │    │ One-sentence│  │ Differentiation│  │ Enthusiasm   │   │ Public doc + │\n │ prior  │───▶│ guess +     │─▶│ Audience-fit   │─▶│ high? Wait   │──▶│ kill criteria│\n │ tries  │    │ confidence% │  │ Acquisition    │  │ 24h, restart │   │ D14/30/60/90 │\n └────────┘    └─────────────┘  │ Capacity       │  └──────────────┘   └──────┬───────┘\n                                │ 7-Factor Wedge │                            │\n                                └────────────────┘                            │\n                                                                              ▼\n                                                                       GO  → spec-driven-dev\n                                                                       NO-GO → journal entry\n```\n\nStage 0 before any `/spec`. Five framework gates, mandatory memory check against\nprior attempts, 24h pattern-interrupt for high-enthusiasm signals, public commitment\nartifact with pre-mortemed kill criteria. See [`skills/go-no-go/`](skills/go-no-go/).\n\n---\n\n## The spec-driven-dev loop\n\n```\n   DEFINE         PLAN           BUILD          TEST          REVIEW          SHIP\n ┌────────┐   ┌────────┐   ┌─────────┐   ┌────────┐   ┌────────┐   ┌────────┐\n │  Spec  │──▶│  Plan  │──▶│  Build  │──▶│  Test  │──▶│ Review │──▶│  Ship  │\n │  PRD   │   │ Tasks  │   │  Impl   │   │ Verify │   │  Gate  │   │  Tag   │\n └────────┘   └────────┘   └─────────┘   └────────┘   └────────┘   └────────┘\n     ▲                                                                 │\n     └─────────────────── feedback / regression ──────────────────────┘\n```\n\nOne skill, six phases, explicit exit criteria per step. Pairs with `go-no-go` as\nStage 1 of the pipeline. See [`skills/spec-driven-dev/`](skills/spec-driven-dev/).\n\n---\n\n## The debug-hypothesis loop\n\n```\n                          ┌─────────────────────────────┐\n                          │    all hypotheses rejected?  │\n                          │    back to OBSERVE           │\n                          └──────────┬──────────────────┘\n                                     │\n  OBSERVE  ──▶  HYPOTHESIZE  ──▶  EXPERIMENT  ──▶  CONCLUDE\n     │              │                  │               │\n     ▼              ▼                  ▼               ▼\n  Reproduce      List 3-5          One test,       Root cause\n  the bug,       causes +          max 5 lines,    confirmed\n  collect        evidence           falsify         → fix +\n  symptoms       for each          don't confirm   regression test\n     │              │                  │               │\n     │              │           ┌──────┘               │\n     │              │           │ rejected?            │\n     │              │           ▼                      │\n     │              │     next hypothesis              │\n     │              │                                  │\n     └──────────────┴──── everything in DEBUG.md ──────┘\n```\n\nScientific-method debugging. Prevents the #1 AI failure: bulldozing through a wrong theory. See [`skills/debug-hypothesis/`](skills/debug-hypothesis/).\n\n---\n\n## The aggregate-N-sources loop\n\n```\n                    Trajectories-as-environment\n            ╔════════════════════════════════════════╗\n            ║   src_1   src_2   src_3  ...   src_N   ║\n            ║   [..]    [..]    [..]         [..]    ║\n            ║                                        ║\n            ║   not concatenated. not summarized.    ║\n            ║              navigated.                ║\n            ╚═══════════════════╤════════════════════╝\n                                ▼\n            ┌────────────────────────────────────────┐\n            │       AGGREGATOR  (lite agent)         │\n            │   inspect_file / inspect_section       │\n            │   search_sources / cross_pack_check    │\n            │                                        │\n            │   notes = []  (every claim → path:line)│\n            │   budget = 25 → loop until coverage    │\n            └───────────────────┬────────────────────┘\n                                ▼\n                  pack/  brief.md / findings.md /\n                         sources.tsv / _aggregation_log.md\n```\n\nAgentic aggregation for long-horizon research. N raw notes → 1 structured pack with full `path:line` provenance + cross-source contradictions surfaced. See [`skills/wiki-aggregate/`](skills/wiki-aggregate/).\n\n---\n\n## The build-until-pass loop\n\n```\n        ┌──────────────────────────────────────────────┐\n        │  attempt > MAX (default 10)?                  │\n        │  → STOP, report what's left, hand to human    │\n        └───────────────────────┬──────────────────────┘\n                                │ no\n   RUN CHECK ──▶ exit 0? ──yes──▶  DONE  (green = exit code, not opinion)\n       ▲             │\n       │             │ no (red)\n       │             ▼\n       │      READ first error  ──▶  FIX smallest  ──▶  re-RUN\n       │      verbatim, file:line    minimal diff,        │\n       │                             never fake green     │\n       └─────────────────────────────────────────────────┘\n              one round = one fix + one re-run + one-line report\n```\n\nTurns the human out of the run → read error → fix one line → run again loop,\nand caps the agent so it can't bulldoze 200-line speculative rewrites between\nruns. Refuses to fake green (`@ts-ignore`, deleting tests, `|| true`). See [`skills/build-until-pass/`](skills/build-until-pass/).\n\n---\n\n## Skills\n\n| Skill | What it does |\n|---|---|\n| [`skills-map`](skills/skills-map/) | **The router — start here.** Maps every skill in this collection to its phase of work (Decide → Spec → Build → Debug → Fan-out → Research → Media → Analyze) and walks a decision tree to pick the right one. Closes the discovery gap: a skill only fires if the agent remembers it exists and reaches for it at the right moment. Hand-curated index + typical pipelines + anti-rationalization table. Run on `/skills-map` or any \"which skill should I use\" doubt. |\n| [`go-no-go`](skills/go-no-go/) | **Stage 0 gate — NO-GO is the default.** Runs before `/spec` to decide whether a project should start at all. Memory check against prior attempts + 5 framework gates (Differentiation · Audience–Market Fit · Acquisition Channel · Capacity · 7-Factor Wedge) + 24h pattern-interrupt if enthusiasm-high + public commitment doc with D14/D30/D60/D90 kill criteria. 3 starter packs (solo-founder · indie-dev · content-creator). |\n| [`spec-driven-dev`](skills/spec-driven-dev/) | Full SDLC workflow: Spec → Plan → Build → Test → Review → Ship. Anti-rationalization tables, verification gates, atomic commits. Pairs with `go-no-go` as Stage 1 of the pipeline. |\n| [`debug-hypothesis`](skills/debug-hypothesis/) | Scientific-method debugging: Observe → Hypothesize → Experiment → Conclude. Anti-bulldozer rules, max 5-line experiments, mandatory `DEBUG.md` evidence trail. |\n| [`wiki-aggregate`](skills/wiki-aggregate/) | Lift N≥3 raw research artifacts into one structured pack via agentic aggregation. Cheap-pass + tool-budgeted aggregator loop, every claim has `path:line` provenance, cross-source contradictions logged. |\n| [`tavily-search`](skills/tavily-search/) | Web search + content extraction via the [Tavily](https://tavily.com) API. Use for fact-checking, docs lookup, source-cited research. |\n| [`nano-banana`](skills/nano-banana/) | Text-to-image and image editing via Google's Nano Banana 2 (`gemini-3.1-flash-image-preview`). Supports `512 / 1K / 2K / 4K`. |\n| [`frontend-design`](skills/frontend-design/) | Build distinctive, production-grade frontend interfaces — bold aesthetic direction, intentional typography, and motion that avoids generic AI-slop UI. Adapted from Anthropic's official `frontend-design` skill (Apache-2.0). |\n| [`google-analytics`](skills/google-analytics/) | Analyze GA4 data + ship an out-of-the-box **SEO daily report** — point it at one property and get organic KPIs (28d-vs-prior-28d), same-weekday anomaly detection, top organic landing pages, by-engine/country/device cuts, and prioritized recommendations. Plus general analyses (overview / sources / content / devices / seo). **TypeScript** scripts (Bun / `npx tsx`) over the official `@google-analytics/data` client, `conversions`↔`keyEvents` auto-detect. Reads `GOOGLE_ANALYTICS_PROPERTY_ID` + service-account JSON from env. |\n| [`subagent-brief`](skills/subagent-brief/) | Pre-flight discipline for spawning subagents. Anthropic does NOT share prefix across subagents — each one cold-starts on the full prompt. Compress every subagent prompt into a ≤200-word brief before spawning. Five rules + brief template + anti-rationalization table. Backed by arXiv 2604.25899 (Pythia, 2026). |\n| [`build-until-pass`](skills/build-until-pass/) | Bounded self-correcting loop: run the build/typecheck/test command → read the first error → apply the smallest fix → re-run → repeat until **exit code 0** or a hard attempt cap (default 10). Green is the exit code, not the agent's opinion. Minimal-diff-per-round + cap kill both failure modes — human-as-while-loop and agent-as-bulldozer. Refuses to fake green (`@ts-ignore`, deleting tests, `\\|\\| true`). |\n\nAll skills read credentials from environment variables (`TAVILY_API_KEY`, `GEMINI_API_KEY`, etc.) — never hardcoded.\n\n---\n\n## Quick install\n\n<details open>\n<summary><b>Claude Code — plugin marketplace (one command)</b></summary>\n\nInside a running Claude Code session:\n\n```\n/plugin marketplace add LichAmnesia/lich-skills\n/plugin install lich-skills@lich-skills\n```\n\nDone. All skills become available immediately. Verify:\n\n```\n/skills\n```\n\n</details>\n\n<details>\n<summary><b>Claude Code — git clone</b></summary>\n\n```bash\n# 1. Install Claude Code (if not already)\ncurl -fsSL https://claude.ai/install.sh | bash\n# or: brew install --cask claude-code\n\n# 2. Clone into the global skills directory\ngit clone https://github.com/LichAmnesia/lich-skills.git ~/.claude/skills/lich-skills\n\n# 3. Start Claude Code\nclaude\n> /skills\n```\n\nFull guide: [`docs/claude-code-setup.md`](docs/claude-code-setup.md).\n\n</details>\n\n<details>\n<summary><b>Gemini CLI — extensions install (one command)</b></summary>\n\n```bash\ngemini extensions install https://github.com/LichAmnesia/lich-skills\n```\n\nThis repo ships a [`gemini-extension.json`](gemini-extension.json) at the root, so Gemini CLI installs it as a first-class extension and auto-discovers every `skills/*/SKILL.md`. Verify:\n\n```bash\ngemini extensions list\n```\n\nManual clone fallback:\n\n```bash\nnpm install -g @google/gemini-cli\ngit clone https://github.com/LichAmnesia/lich-skills.git ~/.gemini/extensions/lich-skills\n```\n\nFull guide: [`docs/gemini-cli-setup.md`](docs/gemini-cli-setup.md).\n\n</details>\n\n<details>\n<summary><b>OpenAI Codex CLI</b></summary>\n\n```bash\n# 1. Install Codex CLI\nnpm install -g @openai/codex\n# or: brew install --cask codex\n\n# 2. Install the skill collection\nmkdir -p ~/.codex/skills\ngit clone https://github.com/LichAmnesia/lich-skills.git ~/.codex/skills/lich-skills\n```\n\nFull guide: [`docs/codex-setup.md`](docs/codex-setup.md).\n\n</details>\n\n---\n\n## Why the one-liners work\n\n- **`/plugin marketplace add LichAmnesia/lich-skills`** — Claude Code reads [`.claude-plugin/marketplace.json`](.claude-plugin/marketplace.json) at the repo root. That file declares the repo as a plugin marketplace and points the plugin back at its GitHub source.\n- **`/plugin install lich-skills@lich-skills`** — format is `<plugin-name>@<marketplace-name>`. Both resolve from the same marketplace manifest, which is why the name appears twice.\n- **`gemini extensions install <github-url>`** — Gemini CLI's native `extensions` subcommand clones any public GitHub repo that has a `gemini-extension.json` at its root, then auto-discovers bundled skills from `skills/*/SKILL.md`. The manifest is what makes this one-liner work — without it, Gemini CLI refuses to install the repo as an extension.\n- **[geminicli.com/extensions/](https://geminicli.com/extensions/) listing** — the public extension gallery sources third-party extensions from GitHub repos that have the same `gemini-extension.json` manifest. Having the manifest is necessary (though not sufficient) to appear there.\n- **`git clone` into `~/.claude/skills/`** — the lowest-common-denominator path. Claude Code reads every `SKILL.md` under `~/.claude/skills/**` on session start. No marketplace required.\n\n---\n\n## Documentation\n\n| Tool | Install + skill setup |\n|---|---|\n| Claude Code | [`docs/claude-code-setup.md`](docs/claude-code-setup.md) |\n| Gemini CLI | [`docs/gemini-cli-setup.md`](docs/gemini-cli-setup.md) |\n| OpenAI Codex | [`docs/codex-setup.md`](docs/codex-setup.md) |\n\n---\n\n## Security\n\nNo secrets committed. Repo scanned with [`gitleaks`](https://github.com/gitleaks/gitleaks) via pre-commit hook and CI on every PR. Skills use environment variables only; example configs use `YOUR_API_KEY_HERE` placeholders. Report any leaked credential via a [private security advisory](https://github.com/LichAmnesia/lich-skills/security/advisories/new).\n\n---\n\n## Contributing\n\nPRs welcome. New skills should be **specific**, **verifiable**, and **minimal**. See [`CONTRIBUTING.md`](CONTRIBUTING.md).\n\n---\n\n## License\n\n[MIT](LICENSE) © 2026 Shen Huang ([@LichAmnesia](https://github.com/LichAmnesia))\n\n---\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=LichAmnesia/lich-skills&type=Date)](https://www.star-history.com/#LichAmnesia/lich-skills&Date)\n",
  "bytes": 14257,
  "sha": "c1e8efbab533d994ec9883f1cf024aa667e85974651699542b3efaac10516e71",
  "repo_slug": "lichamnesia/lich-skills",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/plg_lichamnesia_lich_skills_297818b0/readme"
}