Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Sync Claude Code session transcripts into the user's llmwiki and ingest them into the wiki. Use when the user says "sync the wiki", "update llmwiki", "ingest recent sessions", "refresh the knowledge base", or asks a knowledge question that would benefit from up-to-date sessions. Also use when the user explicitly asks to refresh or rebuild the LLM wiki from their agent history.
.claude/skills/pratiyush-llmwiki-sync/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | -32% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 60% | 0% |
| case-07 | ✗→✓ | ▲ Improved | -12% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -19% | 0% |
| case-13 | ✗→✓ | ▲ Improved | -7% | 0% |
The user maintains a Karpathy-style LLM Wiki — a local, file-based knowledge base compiled from their Claude Code (and Codex CLI) session transcripts.
This skill runs the full sync pipeline:
~/.claude/projects/*/*.jsonl (raw session transcripts)
│
▼ python3 -m llmwiki sync
llmwiki/raw/sessions/<proj>/*.md (Karpathy layer 1 — immutable markdown)
│
▼ /wiki-ingest (Claude in the loop)
llmwiki/wiki/sources, entities, (Karpathy layer 2 — LLM-maintained wiki)
concepts, syntheses
│
▼ python3 -m llmwiki build
llmwiki/site/ (Karpathy layer 3 — static HTML)Invoke this skill when the user:
/wiki-queryDo NOT invoke when:
llmwiki/ directory first)./ (if cwd contains llmwiki/ package)~/Desktop/2026/production-draft/llmwiki/~/llmwiki/$LLMWIKI_HOME environment variableIf you can't find it, tell the user and stop.
bash cd <llmwiki-dir> python3 -m llmwiki sync Capture the summary line: N converted, M unchanged, K live, J filtered, X errors.
CLAUDE.md. Process one project at a time. If more than 20 new files, ask the user whether to process all or a subset first.wiki/log.md: ## [YYYY-MM-DD] sync | <N> sessions across <M> projects
The converter supports flags the user may want:
bashpython3 -m llmwiki sync --project <substring> # only one project python3 -m llmwiki sync --since 2026-04-01 # only recent python3 -m llmwiki sync --include-current # include <60min live python3 -m llmwiki sync --force # ignore state, reconvert all python3 -m llmwiki sync --dry-run # preview without writing
If the user wants the converter to run automatically on every Claude Code session start, offer to add this to ~/.claude/settings.json:
json{ "hooks": { "SessionStart": [ { "hooks": [ { "type": "command", "command": "(python3 /absolute/path/to/llmwiki/tools/sessions_to_markdown.py > /tmp/llmwiki-sync.log 2>&1 &) ; exit 0" } ] } ] } }
The ( ... &) ; exit 0 pattern ensures the hook runs in the background and never blocks session start.
raw/: the converter writes to llmwiki/raw/sessions/. Make sure the repo is writable.--include-current to override, or wait an hour.tools/sessions_to_markdown.py uses json, not tomllib).examples/sessions_config.json → redaction.real_username.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 6,471 | 22,464 | +247% | 1 | 1 | 0% | 956 | 1,630 | +71% | 0 | 0 | — |
case-02 | fail→fail | 4,055 | 7,369 | +82% | 1 | 1 | 0% | 272 | 1,399 | +414% | 0 | 0 | — |
case-03 | fail→fail | 4,223 | 5,650 | +34% | 1 | 1 | 0% | 638 | 1,349 | +111% | 0 | 0 | — |
case-04 | fail→pass | 17,549 | 4,683 | -73% | 1 | 1 | 0% | 2,730 | 1,862 | -32% | 0 | 0 | — |
case-05 | fail→pass | 7,179 | 4,112 | -43% | 1 | 1 | 0% | 1,144 | 1,832 | +60% | 0 | 0 | — |
case-06 | pass→pass | 9,936 | 6,674 | -33% | 1 | 1 | 0% | 1,605 | 2,254 | +40% | 0 | 0 | — |
case-07 | fail→pass | 10,754 | 2,565 | -76% | 1 | 1 | 0% | 1,726 | 1,525 | -12% | 0 | 0 | — |
case-08 | pass→pass | 5,659 | 2,262 | -60% | 1 | 1 | 0% | 865 | 1,408 | +63% | 0 | 0 | — |
case-09 | pass→pass | 8,205 | 2,124 | -74% | 1 | 1 | 0% | 1,258 | 1,450 | +15% | 0 | 0 | — |
case-10 | fail→pass | 12,164 | 2,727 | -78% | 1 | 1 | 0% | 1,893 | 1,533 | -19% | 0 | 0 | — |
case-11 | pass→pass | 7,190 | 2,259 | -69% | 1 | 1 | 0% | 1,078 | 1,425 | +32% | 0 | 0 | — |
case-12 | pass→pass | 5,286 | 2,167 | -59% | 1 | 1 | 0% | 762 | 1,484 | +95% | 0 | 0 | — |
case-13 | fail→pass | 10,237 | 1,746 | -83% | 1 | 1 | 0% | 1,451 | 1,343 | -7% | 0 | 0 | — |
case-14 | fail→pass | 7,681 | 3,626 | -53% | 1 | 1 | 0% | 1,053 | 1,677 | +59% | 0 | 0 | — |
case-15 | fail→pass | 9,870 | 4,219 | -57% | 1 | 1 | 0% | 1,713 | 1,866 | +9% | 0 | 0 | — |
case-16 | fail→pass | 8,413 | 5,489 | -35% | 1 | 1 | 0% | 1,397 | 1,970 | +41% | 0 | 0 | — |
case-17 | fail→pass | 13,149 | 3,950 | -70% | 1 | 1 | 0% | 1,867 | 1,702 | -9% | 0 | 0 | — |
case-18 | fail→pass | 10,441 | 4,166 | -60% | 1 | 1 | 0% | 1,517 | 1,753 | +16% | 0 | 0 | — |
case-19 | fail→pass | 12,585 | 4,038 | -68% | 1 | 1 | 0% | 1,873 | 1,724 | -8% | 0 | 0 | — |
case-20 | fail→fail | 14,110 | 7,509 | -47% | 1 | 1 | 0% | 1,146 | 1,937 | +69% | 0 | 0 | — |
case-21 | fail→pass | 13,514 | 7,659 | -43% | 1 | 1 | 0% | 2,114 | 2,292 | +8% | 0 | 0 | — |
case-22 | fail→pass | 11,360 | 6,343 | -44% | 1 | 1 | 0% | 1,916 | 2,220 | +16% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +59 percentage points is the difference between those two pass rates over the 20 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.