hooks — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited hooks (Hook) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
raw/ sources, agent-owned wikipages, and SCHEMA.md governing structure
private: frontmatter flaghandle expensive ops without bloating the lead session
recall sensitivity, output format, and crystallize templates per session
llm-wiki-brief — daily/weekly briefs, tag digests, coverage briefllm-wiki-prd — PRD drafts, user stories, release notes (wiki-grounded, no fabrication)llm-wiki-research — research sprints, competitive deep dives, stub enrichmentllm-wiki-crm — relationship health, account health dashboard, feature ask tracker, auto-enrichmentllm-wiki-persona — communication persona pages and relationship maps, grounded in real message samplesllm-wiki-maintain — the daily-maintenance loop (registry-driven sweep → ingest → brief → tidy → health check), with interactive vs autonomous modesclaude plugin marketplace add anh-chu/llm-wiki-pm
claude plugin install llm-wiki-pm@anh-chu-pluginsnpx skillsnpx skills add anh-chu/llm-wiki-pm --skill llm-wiki-pm -a claude-code -gInstall individual sub-skills the same way:
npx skills add anh-chu/llm-wiki-pm --skill llm-wiki-crm -a claude-code -g
npx skills add anh-chu/llm-wiki-pm --skill llm-wiki-brief -a claude-code -gThis installs the skill with all its scripts, templates, and references. What you don't get without the full plugin: session hooks (auto-scaffold, wikilink validation, log rotation), worker agents, and role packs. Core wiki operations (ingest, query, update, lint) work fine — you just need to create the wiki directory structure manually on first use.
git 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-pmSame trade-offs as Option B. 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 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 | Bundled semantic + TF-IDF (wiki-search) + 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 (wiki-search, bundled) | 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:
lint.py)Not a fit if you:
AGENTS.md is the portable reference if you want to port to another agentllm-wiki-pm/
├── AGENTS.md # Universal agent behavioral contract
├── CONTRIBUTING.md
├── .claude-plugin/
│ ├── plugin.json
│ └── marketplace.json
├── .claude/
│ ├── agents/ # Worker subagents
│ │ ├── worker-wiki-indexer.md
│ │ ├── worker-source-fetcher.md
│ │ ├── worker-link-validator.md
│ │ ├── worker-lint.md
│ │ └── worker-people-updater.md
│ └── roles/ # Role packs
│ ├── _template.md
│ ├── product-manager.md
│ ├── researcher.md
│ ├── executive.md
│ └── founder.md
├── hooks/
│ └── hooks.json
├── scripts/
│ └── update-safe.sh
└── skills/
├── llm-wiki-pm/ # Core skill (required)
│ ├── SKILL.md
│ ├── hooks/ (session-start.sh, post-write.sh, session-stop.sh)
│ ├── references/
│ ├── scripts/ (lint.py, backlinks.py)
│ └── templates/ (SCHEMA.md, index.md, overview.md, log.md, persona.md,
│ MY-INTEGRATIONS.md)
├── llm-wiki-brief/ # Optional: daily/weekly briefs, tag digests
│ └── SKILL.md
├── llm-wiki-prd/ # Optional: PRD drafts, user stories, release notes
│ └── SKILL.md
├── llm-wiki-research/ # Optional: research sprints, competitive deep dives
│ └── SKILL.md
├── llm-wiki-crm/ # Optional: relationship health, CRM layer
│ ├── SKILL.md
│ └── templates/
│ └── SCHEMA-crm-fields.md
├── llm-wiki-persona/ # Optional: persona pages + relationship maps
│ └── SKILL.md
└── llm-wiki-maintain/ # Optional: daily-maintenance loop (sweep→ingest→brief→tidy)
└── SKILL.mdTwo scenarios documented in detail in GETTING_STARTED.md:
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.
Semantic + TF-IDF search over your wiki is bundled via wiki-search (@wirux/mcp-markdown-vault). It auto-indexes on startup — no setup needed. ~80MB model downloads on first use, cached in .markdown_vault_mcp/ inside your wiki directory. Add .markdown_vault_mcp/ to .gitignore.
Open ~/pm-wiki/SCHEMA.md. Adjust:
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: <paste or path>"
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 <customer>?" → 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:
, 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.
, lifecycle concepts (supersession, privacy, crystallization, self-healing lint). We cherry-picked the four highest-ROI v2 ideas for PM work.
discipline with diffs and stale-claim sweep, tiered lint reports, evolving overview.md synthesis.
, audit/feedback loop design (inspiration for future team-mode support).
semantic + TF-IDF search engine for markdown vaults (bundled as wiki-search).
How this skill maps to Karpathy's original gist and Rohit's v2 extensions:
index.md content catalog + log.md chronological recordqueries/ dir)@wirux/mcp-markdown-vaultImplemented:
supersedes: / superseded_by: fields + auto-redirectprivate: frontmatter flag)--auto-fix for safe repairs)scripts/backlinks.py for structural refs)Intentionally skipped for solo PM use (overkill):
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.