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 you have N≥3 raw research artifacts (notes, podcast summaries, deep-research dumps, daily intel, paper analyses) on one topic and want to lift them into a single structured pack with cross-source claims and provenance — instead of one-shot summarization that loses 90%
$ npx -y skills add lichamnesia/lich-skills --skill wiki-aggregate --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/wiki-aggregateContext preview
The summary Claude sees to decide when to auto-load this skill.
Use when you have N≥3 raw research artifacts (notes, podcast summaries, deep-research dumps, daily intel, paper analyses) on one topic and want to lift them into a single structured pack with cross-source claims and provenance — instead of one-shot summarization that loses 90%
name: wiki-aggregate description: Use when you have N≥3 raw research artifacts (notes, podcast summaries, deep-research dumps, daily intel, paper analyses) on one topic and want to lift them into a single structured pack with cross-source claims and provenance — instead of one-shot summarization that loses 90% of intermediate evidence. Treats the N sources as an environment a lite aggregator agent navigates with `inspect` / `search` / `synthesize` tools, rather than concatenating into one prompt.
A protocol for **agentic aggregation** of long-horizon research material. Inverts the standard "concat all → ask LLM to summarize" pipeline: instead, an aggregator agent navigates the N source files with three tools, building a notes scratchpad with full `path:line` provenance, and finally writes a structured pack (brief / findings / sources / aggregation log).
**Core principle**: don't read everything upfront. Don't merge final answers. Treat the N sources as a queryable environment.
Three traditional ways to aggregate N parallel research outputs all fail on long-horizon, open-ended tasks:
❌ concat all sources into one prompt
→ 200K+ token explosion, attention collapse on long context
❌ summarize each, then merge summaries
→ ~90% of intermediate evidence (the "I noticed X but..." asides) is lost
❌ LLM-as-judge picks the single best source
→ discards the other N-1 sources' independent findingsThese failure modes show up clearly on open-ended research tasks where there's no ground-truth `verifier`. The alternative: treat the N sources as an `environment`, send a `lite agent` in to `inspect / search / synthesize` on demand. Cost ≈ a single rollout, recall is materially higher, and cross-source contradictions get surfaced explicitly.
This skill is the protocol. No Python, no MCP — pure markdown protocol that any harness with `Read` + `Grep` can execute.
Trajectories-as-environment
╔════════════════════════════════════════╗
║ ║
║ src_1 src_2 src_3 ... src_N ║
║ [..] [..] [..] [..] ║
║ [..] [..] [..] [..] ║
║ ║
╚═══════════════════╤════════════════════╝
│
│ not concatenated.
│ not summarized.
│ navigated.
│
▼
┌────────────────────────────────────────┐
│ AGGREGATOR (lite agent) │
│ ┌──────────────────────────────────┐ │
│ │ inspect_file / inspect_section │ │
│ │ search_sources │ │
│ │ cross_pack_check │ │
│ └──────────────────────────────────┘ │
│ │
│ scratch state: │
│ notes = [] # {claim, evidence, │
│ # source, line_ref} │
│ budget = 25 # tool calls │
│ subtopics = derived from skim pass │
│ │
│ loop until: subtopic coverage met, │
│ OR budget = 0, │
│ OR 2 zero-info calls │
└───────────────────┬────────────────────┘
│
▼
┌─────────────────────────────┐
│ pack/ │
│ brief.md │
│ findings.md ← claims │
│ sources.tsv ← S-IDs │
│ _aggregation_log.md │
└─────────────────────────────┘1. Resolve the source glob. Count N. 2. **Hard stop if N < 3** — abort and tell the user to either collect more or summarize manually. 3. **Warn if N > 30** — suggest narrowing by sub-topic or batching across runs. 4. If updating an existing pack, locate it and read its current `brief.md` + `findings.md` so you know what already exists.
For each source, do **one** cheap read:
Build an in-memory source map:
S1 | path/to/source_1.md | what it covers (1-2 lines) | rough_topics S2 | path/to/source_2.md | ... | ...
This pass costs ~N reads, each bounded. **Do not skip** — the source map is what makes Phase 3 efficient.
**Tool inventory** (use whatever your harness provides — `Read`, `Grep` are sufficient):
| Verb | Implementation | When to use | |---|---|---| | `inspect_file(path)` | `Read` whole file | Source < 200 LOC and you need full content | | `inspect_section(path, line_range)` | `Read` with `offset` + `limi
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…