wiki-agent
Skill3 starsChanged 11 days agoMITView on GitHub
Query-driven targeted ingest from a specific AI agent's raw history. Use this skill when the user invokes /wiki-claude, /wiki-codex, /wiki-hermes, /wiki-openclaw, /wiki-copilot, /wiki-pi — with or without a search topic. Different from wiki-history-ingest (which bulk-ingests everything new): this skill finds sessions about a SPECIFIC TOPIC in a specific agent's history and ingests just those, then returns a synthesized answer immediately usable in the current session. Primary use case: you're working in agent A and want to pull in how you solved X in agent B's history. Cross-referencing, not archiving. Also trigger on: "what did I work on in codex about X", "search my claude sessions for Y", "pull in hermes knowledge about Z", "find that conversation where I did X in codex".
- Reads credentials
1 other project uses a version of this, 1 of them edited.
Adopted by
Most recently taken up by
- Ar9av/obsidian-wikiedited, first seen Nov 8, 2026
Other versions1 project uses a version of this.
Word for word · 0
None found.
Edited · 1
- Ar9av/obsidian-wiki★ 3.7k79% same
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository30 other files it gives its agents.
- claude-history-ingestSkill
- cross-linkerSkill
- daily-updateSkill
- graph-colorizeSkill
- hermes-history-ingestSkill
- impl-validatorSkill
- llm-wikiSkill
- memory-bridgeSkill
- skill-creatorSkill
- tag-taxonomySkill
- vault-skill-factorySkill
- wiki-captureSkill
- wiki-context-packSkill
- wiki-dashboardSkill
- wiki-dedupSkill
- wiki-digestSkill
- wiki-exportSkill
- wiki-history-ingestSkill
- wiki-importSkill
- wiki-ingestSkill
- wiki-lintSkill
- wiki-querySkill
- wiki-rebuildSkill
- wiki-researchSkill
- wiki-setupSkill
- wiki-stage-commitSkill
- wiki-statusSkill
- wiki-switchSkill
- wiki-synthesizeSkill
- wiki-updateSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
19 rules. About 0 are common, 6 are distinctive, and 13 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
13
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 33
If no query is given, default to recent sessions mode: ingest the last 5 unprocessed sessions from that agent and return a summary of what …
- Very specific: line 38
Read $OBSIDIAN_VAULT_PATH/.manifest.json → know what's already ingested.
- Very specific: line 39
Read $OBSIDIAN_VAULT_PATH/hot.md if it exists → warm context on recent wiki activity.
- Very specific: line 54
If the history root doesn't exist, stop and tell the user: "No <agent> history found at <path>.
- Distinctive: line 60
Use the cheapest index source for each agent — don't open session files until you know which ones are relevant.
- Very specific: line 77
Read session_index.jsonl as the inventory.
- Very specific: line 94
Read MEMORY.md sections first — it's the pre-compiled summary of everything.
- Distinctive: line 115
If a query was given, score each session in the inventory without opening full session files:
- Very specific: line 134
Search with: grep -i "<query terms>" <session.jsonl> to find the relevant lines
- Distinctive: line 154
Prefer MEMORY.md/daily notes over session JSONL (they're pre-synthesized)
- Distinctive: line 158
Look for checkpoint files if available (pre-summarized)
- Very specific: line 163
Search with: grep -i "<query terms>" <session.jsonl> to find matching entries
- Very specific: line 166
Prefer compaction and branch_summary entries when available — they're pre-synthesized summaries
- Distinctive: line 202
Keep the signal: decisions made, patterns discovered, techniques that worked, bugs explained
- Distinctive: line 208
After ingesting, immediately synthesize and return an answer from the newly ingested + existing wiki content:
- Very specific: line 230
If a query was given but no relevant sessions were found, say so explicitly: "No sessions about '<query>' found in <agent> history.
- Very specific: line 236
Update .manifest.json for each session file processed:
- Very specific: line 254
Update hot.md with a one-line summary of what was ingested.
- Very specific: line 285
When it is set, read llm-wiki/references/qmd.md and follow the *Refresh* section after this skill has written vault markdown.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Wiki Agent — Targeted Cross-Agent History Search + Ingest
You are doing a query-driven targeted ingest from one specific AI agent's raw conversation history. The user is typically working in a different agent right now and wants to pull in context from another agent's past sessions.
This is not bulk ingest. You find sessions about a specific topic, extract the relevant blobs, distill them into the wiki, and return a synthesized answer the user can act on immediately.
Command Routing
Parse the invocation to determine the target agent and optional query:
| Command | Target | Example |
/wiki-claude [query] | Claude Code history | /wiki-claude "how did I set up auth middleware" |
/wiki-codex [query] | Codex CLI history | /wiki-codex "rust ownership patterns" |
/wiki-hermes [query] | Hermes agent history | /wiki-hermes "memory architecture" |
/wiki-openclaw [query] | OpenClaw history | /wiki-openclaw "project planning approach" |
/wiki-copilot [query] | Copilot chat history | /wiki-copilot "test strategy for API routes" |
/wiki-pi [query] | Pi agent history | /wiki-pi "how did I refactor the auth module" |
If no query is given, default to recent sessions mode: ingest the last 5 unprocessed sessions from that agent and return a summary of what was found. This is equivalent to a focused wiki-history-ingest for that agent only.
Before You Start
- Resolve config — follow the Config Resolution Protocol in
llm-wiki/SKILL.md(inline@nameoverride → walk up CWD for.env→~/.llm-wiki/config→ prompt setup). This givesOBSIDIAN_VAULT_PATH. - Read
$OBSIDIAN_VAULT_PATH/.manifest.json→ know what's already ingested. - Read
$OBSIDIAN_VAULT_PATH/hot.mdif it exists → warm context on recent wiki activity.
Step 1: Locate the Agent's History Root
| Agent | Default path | Config override |
claude | ~/.claude + ~/Library/Application Support/Claude/local-agent-mode-sessions/ | CLAUDE_HISTORY_PATH in .env |
codex | ~/.codex | CODEX_HISTORY_PATH in .env |
hermes | ~/.hermes | HERMES_HOME in env or .env |
openclaw | ~/.openclaw | OPENCLAW_HOME in .env |
copilot | ~/.copilot | COPILOT_HISTORY_PATH in .env |
pi | ~/.pi/agent/sessions | PI_HISTORY_PATH in .env |
If the history root doesn't exist, stop and tell the user: "No <agent> history found at <path>. Have you run <agent> on this machine? You can set a custom path with <CONFIG_VAR> in .env."
Step 2: Build Session Inventory
Use the cheapest index source for each agent — don't open session files until you know which ones are relevant.
Claude
Primary index: ~/.claude/projects/ (directories = projects, files = sessions)
Session files: ~/.claude/projects/*/*.jsonl
Desktop index: find ~/Library/Application Support/Claude/local-agent-mode-sessions -name "local_*.json"
Signal fields: sessionId, cwd, startedAt, title (in local_*.json)Build a list of sessions: {path, project_dir, modified_at, already_ingested}.
Codex
Primary index: ~/.codex/session_index.jsonl
Session files: ~/.codex/sessions/**/rollout-*.jsonl
Signal fields: thread_id, name/title, updated_at (in session_index.jsonl)Read session_index.jsonl as the inventory. Each line: {thread_id, name, updated_at}. Map thread IDs to rollout files by matching directory names.
Hermes
Primary index: ~/.hermes/memories/*.md (fast to scan)
Session files: ~/.hermes/sessions/**/*.jsonl
Signal fields: file names, memory titles, first 3 lines of each memoryScan memory filenames first (they're often titled by topic). Fall back to session listing.
OpenClaw
Primary index: ~/.openclaw/workspace/memory/MEMORY.md (structured long-term memory)
Daily notes: ~/.openclaw/workspace/memory/YYYY-MM-DD.md
Session index: ~/.openclaw/agents/*/sessions/sessions.json
Session files: ~/.openclaw/agents/*/sessions/*.jsonlRead MEMORY.md sections first — it's the pre-compiled summary of everything. Daily notes give recency signal.
Copilot
Primary index: session filenames / directory listing
Session files: varies by client (VS Code: ~/.copilot/sessions/*.jsonl or similar)
Signal fields: session timestamps, file namesPi
Primary index: ~/.pi/agent/sessions/--<cwd>--/ directories
Session files: ~/.pi/agent/sessions/--<cwd>--/<timestamp>_<uuid>.jsonl
Signal fields: cwd (decoded from dir name), session_info.name, timestamp in filenameScan session directories first. Decode --<cwd>-- to get the working directory. Read the first line (session header) and any session_info entries for the session name. No separate index file — the filesystem is the index.
Step 3: Score Sessions Against the Query
If a query was given, score each session in the inventory without opening full session files:
- Name/title match — does the session name or thread title contain the query terms? Score: +3
- CWD/project match — does the working directory suggest the right project? Score: +2
- Recency — sessions from the last 90 days score higher than older ones. Score: +1 per 30-day recency bracket (max +3)
- Already ingested — if this session was previously ingested and the wiki page already covers the query (check
hot.md+index.md), flag as "covered" but still show in results
Select the top 3–5 sessions by score. If no query was given, select the 5 most recent unprocessed sessions.
Step 4: Extract the Relevant Blob
Open each selected session file and extract only the content relevant to the query. Do not read the full session if it's large — use targeted extraction.
Per-Agent Extraction Strategy
Claude (JSONL conversation):
- Each line:
{role, content, timestamp, ...} - Search with:
grep -i "<query terms>" <session.jsonl>to find the relevant lines - Extract: the surrounding conversation window (10 lines before + 20 lines after each hit)
- Special signal: tool calls (Read/Write/Bash/Edit) reveal what was actually done — extract these even without keyword matches if they're in the relevant window
Codex (rollout JSONL):
- Each line:
{type: "session_meta|turn_context|event_msg|response_item", ...} - Filter to
type: "event_msg"(user turns) andtype: "response_item"(model output) - Search with:
grep -i "<query terms>" <rollout.jsonl> - Extract: matching turns + their parent context (the
turn_contextpreceding the match) - Skip:
session_metaevents (operational metadata, not knowledge)
Hermes (memory files + session JSONL):
- For memory files: read the full file (they're short — typically <500 words each)
- For session JSONL:
grep -i "<query terms>"+ surrounding window - Memory files with title matches → read fully; others → grep only
OpenClaw (MEMORY.md + daily notes + session JSONL):
MEMORY.md: grep for section headers containing query terms → extract that section- Daily notes: grep most recent 30 days for query terms → extract matching paragraphs
- Session JSONL: same grep-window approach as Claude
- Prefer MEMORY.md/daily notes over session JSONL (they're pre-synthesized)
Copilot (session JSONL):
- Same grep-window approach as Claude
- Look for checkpoint files if available (pre-summarized)
Pi (structured JSONL with tree layout):
- Each line is a tree entry:
{type, id, parentId, timestamp, message?, ...} - Build the active branch: map entries by
id, find leaf (last entry with no children), walkparentIdto root - Search with:
grep -i "<query terms>" <session.jsonl>to find matching entries - Extract: the matching entries + their ancestors on the active branch (follow parent chain)
- Special signal:
toolCallblocks inside assistant messages reveal what was actually done — extract these even without keyword matches if they're in the relevant window - Prefer
compactionandbranch_summaryentries when available — they're pre-synthesized summaries - Skip
thinkingcontent blocks (noise) andmodel_change/thinking_level_changeentries
Step 5: Distill Blobs into Wiki Pages
For each extracted blob, determine where it belongs in the wiki:
- Check if a wiki page already covers this — grep
index.mdand page frontmatter for the topic. If yes, update the existing page rather than creating a new one. - Determine category by walking the vault's CATEGORIES table (
AGENTS.md; see Filing a page inllm-wiki/SKILL.md). In a standard vault:- Technique / how-to → the
procedurefolder (concepts/, since standard has no separate how-to folder) - Abstract concept / pattern →
concepts/ - Tool / library / person →
entities/ - Cross-cutting insight →
synthesis/A role no row claims falls to the catch-all row;llm-wiki layout --jsonresolves them.
- Technique / how-to → the
- Write or update the page with required frontmatter:
Set--- title: <topic> category: <the folder you filed it in> tags: [tag1, tag2] sources: [<agent>://<path/to/session>] created: <date> updated: <date> confidence: high|medium|low lifecycle: stable|draft ---sourceswith the agent prefix somemory-bridgecan find it later. - Add cross-links to related wiki pages found in
index.md.
Distillation rules (same as all ingest skills):
- Extract durable knowledge, not operational telemetry
- One wiki page per concept, not one per session
- Merge into existing pages rather than duplicating
- Keep the signal: decisions made, patterns discovered, techniques that worked, bugs explained
Step 6: Return Synthesized Answer
After ingesting, immediately synthesize and return an answer from the newly ingested + existing wiki content:
## From <agent> history: "<query>"
**Found in:** <N> sessions (<session names/titles>)
**Key insights:**
<Synthesized answer — 3–5 bullet points of the most useful knowledge>
**Wiki pages updated/created:**
- [[page-name]] — <what was added>
- [[page-name]] — <what was added>
**Sessions ingested:**
| Session | Date | Relevance |
|---------|------|-----------|
| <name> | <date> | <one-line why it was selected> |
**Gaps:** <What the sessions didn't cover that might be relevant>If a query was given but no relevant sessions were found, say so explicitly: "No sessions about '<query>' found in <agent> history. The most recent sessions covered: <list topics from last 3 sessions>."
Step 7: Update Tracking Files
Update .manifest.json for each session file processed:
{
"<path>": {
"ingested_at": "<now>",
"source_type": "<agent>_conversation",
"modified_at": "<file mtime>",
"pages_created": [...],
"pages_updated": [...]
}
}Append to log.md:
- [TIMESTAMP] WIKI-AGENT agent=<agent> query="<query>" sessions_searched=N sessions_ingested=M pages_created=X pages_updated=YUpdate hot.md with a one-line summary of what was ingested.
Cross-Agent Use Patterns
These are the primary use cases this skill is designed for:
"I'm on Codex. What did I figure out about X in Claude?"
→ /wiki-claude "X" — finds Claude sessions about X, ingests them, returns the answer
"I solved a bug in Hermes last week. I need that context now in Claude Code."
→ /wiki-hermes "bug description" — surfaces and ingests the Hermes session
"What are all the approaches I've tried for X across all my tools?"
→ Run /wiki-claude "X", /wiki-codex "X", /wiki-hermes "X" in sequence — each ingests its slice, the wiki accumulates the cross-agent picture, then /memory-bridge diff shows what each tool uniquely contributed
No query — just "catch me up on recent Codex work"
→ /wiki-codex — ingests last 5 Codex sessions and returns a summary
"I'm on Claude Code. What did I figure out about X in Pi?"
→ /wiki-pi "X" — finds Pi sessions about X, ingests them, returns the answer
No query — just "catch me up on recent Pi work"
→ /wiki-pi — ingests last 5 Pi sessions and returns a summary
QMD Refresh After Vault Writes
GUARD: If $QMD_WIKI_COLLECTION is unset — the default — skip this step. QMD is a
search index, not the source of truth.
When it is set, read llm-wiki/references/qmd.md and follow the Refresh section
after this skill has written vault markdown. If refresh fails, do not roll back the
vault changes; report the QMD status separately.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

