A Claude Code skill that turns your PM work into a persistent, compounding knowledge base. Ingest meetings, analyst reports, and strategy docs. Query across months of context. Let the agent handle the bookkeeping.
Based on Andrej Karpathy's LLM Wiki pattern, tuned for product management: competitive intel, customer notes, strategy, roadmap, AI market tracking.
Most PM work today spreads across Slack threads, meeting transcripts, analyst PDFs, and one-off notes. RAG tools like NotebookLM retrieve from raw sources each query, so knowledge never compounds. Personal wikis fail because the bookkeeping overhead outgrows the value.
This skill gives you the middle path: you curate sources, the agent maintains an interlinked markdown wiki that stays current. Every ingest touches 5-15 pages. Every query cites specific wiki entries. The wiki compounds.
- Three-layer architecture: immutable
raw/sources, agent-owned wiki pages, andSCHEMA.mdgoverning structure - Ingest / query / update / lint / archive flows with discipline guardrails
- Supersession with auto-redirect of inbound links
- Crystallize pattern: transcripts become structured decision digests
- Privacy-first: pre-ingest filter +
private:frontmatter flag - qmd search: BM25 + vector + LLM rerank over your whole wiki
- Obsidian-compatible: works as a vault out of the box
- Next.js embed path for platform deployments
claude plugin marketplace add anh-chu/llm-wiki-pm
claude plugin install llm-wiki-pm@anh-chu-pluginsgit clone https://github.com/anh-chu/llm-wiki-pm ~/llm-wiki-pm
mkdir -p ~/.claude/skills
ln -s ~/llm-wiki-pm/skills/llm-wiki-pm ~/.claude/skills/llm-wiki-pmThe symlink makes the skill available to Claude Code but does not install the plugin. Without the plugin, the SessionStart health-check hook and the PostToolUse link-check hook do not run, and the wiki is not auto-scaffolded. For hook automation and auto-scaffold, also install the plugin:
claude plugin install llm-wiki-pm@anh-chu-pluginsRestart Claude Code after enabling the plugin. You will be prompted for your wiki path and domain. The SessionStart hook creates the wiki directory on the first session start.
If you used Option B without installing the plugin, set WIKI_PATH before starting Claude Code:
echo 'export WIKI_PATH=$HOME/pm-wiki' >> ~/.bashrc && source ~/.bashrcFull setup, including qmd search and mobile Obsidian sync, in GETTING_STARTED.md.
| llm-wiki-pm | kfchou/wiki-skills | lewislulu/llm-wiki-skill | lucasastorian/llmwiki | NotebookLM | |
|---|---|---|---|---|---|
| Shape | Single skill | 5 skills | Skill + plugin + server | Full web app | SaaS |
| Storage | Plain markdown | Plain markdown | Plain markdown | Supabase + S3 | Cloud |
| Search | qmd (BM25+vector+rerank) + backlinks | grep + index | grep + index | PGroonga | Proprietary |
| Update discipline | Diffs + supersession fields + auto-link rewrite | Diffs + source cite | Human-in-loop audit | None explicit | N/A |
| Privacy | Pre-ingest filter + private: flag |
None | None | User-scoped | SaaS ToS |
| Transcript support | crystallize flow (decisions + actions) |
Generic ingest | Generic ingest | Generic ingest | Source-only |
| Install target | Claude Code | Claude Code | OpenClaw / Codex | Self-host web | SaaS |
| Ops burden | None (local files) | None | Obsidian plugin + Node server | Supabase + S3 + OCR | Zero |
| Scales to 1000+ pages | Yes (qmd) | Degrades | Degrades | Yes | Yes |
| PM-tuned taxonomy | Yes (competitive, customer, strategy, roadmap, ai) | No | No | No | No |
For a deeper breakdown of which Karpathy and Rohit v2 ideas this implements, see the design notes below.
Good fit if you:
- Work as a PM, analyst, researcher, or founder with lots of meetings and reports
- Want a local-first, markdown-based knowledge base that you own
- Use Claude Code as your primary agent
- Are comfortable on a terminal (you'll occasionally run
lint.py)
Not a fit if you:
- Want a zero-terminal SaaS → use NotebookLM
- Need team collaboration out of the box → use Notion or a shared Obsidian vault
- Don't use Claude Code → port the SKILL.md to your agent of choice
llm-wiki-pm/
├── .claude-plugin/
│ └── plugin.json
├── hooks/
│ └── hooks.json
└── skills/llm-wiki-pm/
├── SKILL.md
├── hooks/ (session-start.sh, post-write.sh, session-stop.sh)
├── references/
├── scripts/
└── templates/
Two scenarios documented in detail in GETTING_STARTED.md:
- Human user with Claude Code: enable plugin, wiki auto-scaffolds on first session
- Application-orchestrated: programmatic wiki provisioning for platform deployments
Enable the plugin. When prompted, enter your wiki path and domain.
On the first session start, the SessionStart hook creates:
~/pm-wiki/ with SCHEMA.md, index.md, log.md, overview.md, and
the raw/entities/concepts/comparisons/queries/_archive subdirectories.
PM wikis grow fast with frequent meetings. Install qmd for hybrid search:
# Claude Code plugin
claude plugin marketplace add tobi/qmd
claude plugin install qmd@qmd
# CLI for shell + systemd
npm install -g @tobilu/qmd
# Wire wiki as collections
qmd collection add "$WIKI_PATH" --name wiki
qmd collection add "$WIKI_PATH/raw" --name raw
qmd context add qmd://wiki "PM knowledge base: entities, concepts, comparisons, queries"
qmd context add qmd://raw "Immutable source docs: analyst reports, transcripts"
qmd embedSee references/qmd-search.md for daemon mode, systemd auto-reindex, and
privacy collection patterns.
Open ~/pm-wiki/SCHEMA.md. Adjust:
- Domain statement (scope)
- Tag taxonomy (add/remove tags for your specific accounts, competitors, themes)
- Page thresholds (tune later after a few ingests)
Option A, user-level (available in every project):
mkdir -p ~/.claude/skills
ln -s /home/sil/llm-wiki-pm/skills/llm-wiki-pm ~/.claude/skills/llm-wiki-pmOption B, project-level (per-repo):
mkdir -p .claude/skills
ln -s /home/sil/llm-wiki-pm/skills/llm-wiki-pm .claude/skills/llm-wiki-pmRestart Claude Code. Verify with /skills, llm-wiki-pm should appear.
The skill auto-activates on ingest/query/update/lint phrasing (see SKILL.md
"When This Skill Activates").
In Claude Code:
"Ingest this Gartner Magic Quadrant report: "
Claude reads SKILL.md, orients on SCHEMA + index + log + overview, surfaces takeaways, creates/updates pages, logs.
python3 /home/sil/llm-wiki-pm/skills/llm-wiki-pm/scripts/lint.py ~/pm-wiki
# opens queries/lint-YYYY-MM-DD.mdSee references/obsidian-sync.md for obsidian-headless + systemd setup.
Weekly competitive digest: ingest 3-5 analyst links in one session. Batch updates, one log entry, refresh overview.md.
Pre-meeting prep: query "what do we know about ?" → Claude
reads entities/<customer>.md + recent log → offer to file post-meeting update.
Monthly 1:1 follow-up: ingest transcript → extract decisions/themes → update relevant concept pages → link from person page.
Quarterly review: lint, triage, rotate log, refresh overview, prune tag taxonomy.
Wiki = long-term curated facts + sources you review, cite, and share with colleagues. Not a replacement for session memory or notes apps. If you pair with a memory tool (Claude's native memory, mem0, Hindsight), keep them non-overlapping: wiki holds facts + sources, memory holds persona + session state.
Hook scripts and plugin manifest validation:
python3 -m venv .venv && .venv/bin/pip install pytest -q
.venv/bin/python -m pytest tests/ -v43 tests covering scaffold, wikilink validation, log rotation, stdin parsing, and plugin manifest compliance. All tests create isolated temp wikis and feed the real Claude Code hook JSON schema to the scripts.
MIT.
Built on prior art from:
- Andrej Karpathy, LLM Wiki , the original pattern: stop re-deriving, start compiling. Three-layer architecture, Memex lineage, and the insight that LLMs are the first librarians who don't get bored of bookkeeping.
- Rohit G, LLM Wiki v2 , lifecycle concepts (supersession, privacy, crystallization, self-healing lint). We cherry-picked the four highest-ROI v2 ideas for PM work.
- kfchou/wiki-skills: update
discipline with diffs and stale-claim sweep, tiered lint reports, evolving
overview.mdsynthesis. - lewislulu/llm-wiki-skill , audit/feedback loop design (inspiration for future team-mode support).
- tobi/qmd: on-device hybrid search engine that makes this skill scale past a few hundred pages.
How this skill maps to Karpathy's original gist and Rohit's v2 extensions:
- Three-layer architecture (raw sources, agent-owned wiki, schema)
- LLM owns the wiki; human curates sources
- Ingest / query / lint operations
index.mdcontent catalog +log.mdchronological record- File good answers back as pages (
queries/dir) - Obsidian compatibility (Graph, Dataview, frontmatter)
- Schema as key configuration, co-evolved
- Ingests touch 10-15 pages routinely
- Optional CLI search via qmd
- Multi-format outputs: Marp, matplotlib, CSV, Mermaid, Canvas
Implemented:
- Explicit supersession with
supersedes:/superseded_by:fields + auto-redirect - Privacy filter (pre-ingest checklist +
private:frontmatter flag) - Self-healing lint (
--auto-fixfor safe repairs) - Crystallization (transcript → decision digest)
- Schema as the real product
- Contradiction handling with frontmatter flag
- Backlink tracing (
scripts/backlinks.pyfor structural refs)
Intentionally skipped for solo PM use (overkill):
- Confidence decay curves
- Consolidation tiers (working/episodic/semantic/procedural memory)
- Typed knowledge graph with relationship types
- Multi-agent mesh sync
- Quality scoring pipeline