Agent skill · Audited from source
pi-history-ingest
skill · ar9av/obsidian-wikiMIT licenceAudited 31 Oct 2026 · source 8bcf57f68146
Is it safe? With care — CAUTION, grade B (89/100). We read this skill's source at commit 8bcf57f68146 and found no filesystem, network or shell access and no hard-coded secrets. The audit raised 5 findings, 0 critical or high. What it does: Ingest Pi coding-agent session history into Obsidian as distilled knowledge. Use for importing or mining ~/.pi/agent/sessions or Pi conversation logs; use wiki-agent for targeted topic-only recall.
Cite
Cite this page
ModelsAtlas. “pi-history-ingest (ar9av/obsidian-wiki)”. Retrieved 31 Oct 2026. https://modelsatlas.com/skills/ar9av/pi-history-ingest
Trust audit
Audit 0.4.1 · source read 31 Oct 2026
CAUTION means the audit found things worth knowing before you trust this skill. Grade B is shared by 16,667 of 17,602 audited skills.
What the source does
- FilesystemNone observedNo reads or writes in the source
- NetworkNone observedNo outbound calls in the source
- ShellNone observedNo commands run in the source
- DependenciesPinnedNothing floats
- SecretsNone foundNo keys in source
Five audit layers
| Layer | What we check | Result | Findings |
|---|---|---|---|
L0 Provenance | Repo owner, licence, archive status, activity | WARN | 5 |
L1 Static source | Secrets, path traversal, supply chain, hidden code | NA | 0 |
L2 Instructions | Prompt injection, authority framing, hidden directives | PASS | 0 |
L3 Inventory | The files and declarations match the source | PASS | 0 |
L4 Sandbox | Run in isolation and watch behaviour | SKIPPED why | 0 |
Gates applied: no behavioural pass.
Findings (5)
MEDIUMInventory / provenanceinv.symlink · .agents/skills/claude-history-ingest
.agents/skills/claude-history-ingest
- Why
- link not followed
- Fix
- —
MEDIUMInventory / provenanceinv.symlink · .agents/skills/code-understand
.agents/skills/code-understand
- Why
- link not followed
- Fix
- —
MEDIUMInventory / provenanceinv.symlink · .agents/skills/codex-history-ingest
.agents/skills/codex-history-ingest
- Why
- link not followed
- Fix
- —
MEDIUMInventory / provenanceinv.symlink · .agents/skills/copilot-history-ingest
.agents/skills/copilot-history-ingest
- Why
- link not followed
- Fix
- —
MEDIUMInventory / provenanceinv.symlink · .agents/skills/cross-linker
.agents/skills/cross-linker
- Why
- link not followed
- Fix
- —
Audit 0.4.1 · source sha 8bcf57f68146 · 31 Oct 2026Report an issue or request a re-scan
Provenance
Who published it, and what the verdict is pinned to
- Publisherar9av GitHub userOwner of the repository this skill is read from
- Source folderar9av/obsidian-wiki/.skills/pi-history-ingestThe exact folder we audited
- LicenceMITAs the repository states it
- Commit pinned for this verdict8bcf57f68146A new audit runs when the source changes
- Repository statusNot archivedLast push 3 days ago
- Sandboxed runNot runSkills are read, not executed; layer L4 is skipped
What it tells the agent
Full source on GitHub ↗Its description: Ingest Pi coding-agent session history into Obsidian as distilled knowledge. Use for importing or mining ~/.pi/agent/sessions or Pi conversation logs; use wiki-agent for targeted topic-only recall.
--- name: pi-history-ingest description: > Ingest Pi coding-agent session history into Obsidian as distilled knowledge. Use for importing or mining ~/.pi/agent/sessions or Pi conversation logs; use wiki-agent for targeted topic-only recall. --- # Pi History Ingest — Session Mining You are extracting knowledge from the user's Pi coding agent sessions and distilling it into the Obsidian wiki. Pi sessions are stored as structured JSONL with a tree layout — your job is to follow the active branch, extract durable knowledge, and compile it. **Session knowledge closure:** Pi session files are the only factual source for this skill. Do not add background knowledge from model training, other tools, package docs, local files, or the current conversation unless that fact appears in the selected session entries. If outside context seems useful, mark it as an open question or skip it — never present it as extracted session knowledge. This skill can be invoked directly or via the `wiki-history-ingest` router (`/wiki-history-ingest pi`). ## Before You Start **Writing profile:** Before drafting or rewriting natural-language Markdown, read and apply the `Writing Profile Resolution` section in `llm-wiki/SKILL.md`. Framework schema, provenance, safety, and operation-specific requirements take precedence. `WRITING.md` preferences apply only to newly drafted or rewritten natural-language Markdown; preserve source content and structured records. 1. **Resolve config** — follow the Config Resolution Protocol in `llm-wiki/SKILL.md` (inline `@name` override → walk up CWD for `.env` → global config → prompt setup). This gives `OBSIDIAN_VAULT_PATH` and `PI_HISTORY_PATH` (defaults to `~/.pi/agent/sessions`) 2. Read `.manifest.json` at the vault root to check what has already been ingested 3. Read `index.md` at the vault root to understand what the wiki already contains ## Ingest Modes ### Append Mode (default) Check `.manifest.json` for each source file. Only process: - Files not in the manifest (new sessions) - Files whose modification time is newer than `ingested_at` in the manifest Use this mode for regular syncs. ### Full Mode Process everything regardless of manifest. Use after `wiki-rebuild` or if the user explicitly asks for a full re-ingest. ## Pi Data Layout Pi stores sessions under `~/.pi/agent/sessions/` (or the path set by `PI_CODING_AGENT_SESSION_DIR`). ``` ~/.pi/agent/sessions/ ├── --<cwd-path>--/ # Working directory with / replaced by - │ └── <timestamp>_<uuid>.jsonl # Session JSONL file └── ... ``` The session filename contains an ISO timestamp and UUID. The parent directory encodes the working directory where the session was created. ### Session JSONL Format Each `.jsonl` file is a sequence of JSON objects. The first line is always a `session` header; subsequent lines are tree entries with `id` and `parentId`. Key entry types: | `type` | Purpose | Ingest? | |---|---|---| | `session` | Header with `cwd`, `version`, `id`, `timestamp` | Metadata only | | `message` | Conversation turn (`user`, `assistant`, `toolResult`, `bashExecution`, etc.) | **Primary source** | | `session_info` | Display name set via `/name` | For session title | | `compaction` | Context compaction summary | **High signal** | | `branch_summary` | Summary when switching branches via `/tree` | **High signal** | | `model_change` | Model switch event | Skip | | `thinking_level_change` | Thinking level change | Skip | | `custom` | Extension state (not in LLM context) | Skip | | `custom_message` | Extension-injected message | Context only | | `label` | User bookmark/label | Skip | ### Message roles inside `message` entries - `user` — user input; `content` is string or `(TextContent \| ImageContent)[]` - `assistant` — assistant response; `content` is `(TextContent \| ThinkingContent \| ToolCall)[]` - `toolResult` — tool execution result; `content` is `(TextContent \| ImageContent)[]` - `bashExecution` — bash command + output; `command`, `output`, `exitCode` - `branchSummary` — branch switch summary; `summary` string - `compactionSummary` — compaction summary; `summary` string ### Key data sources ranked by value 1. **`message` entries (`user` + `assistant`)** — full conversation transcripts; rich but noisy 2. **`compaction` entries** — pre-synthesized summaries of older context; gold 3. **`branch_summary` entries** — summaries of abandoned branches; good signal 4. **`bashExecution` entries** — concrete commands run; useful for workflow patterns 5. **`session_info` entries** — session name for topic inference Skip `model_change`, `thinking_level_change`, `custom` (extension state), and `label` entries. ## Step 1: Survey and Compute Delta Scan `PI_HISTORY_PATH` and compare against `.manifest.json`: ```bash # List all session files find ~/.pi/agent/sessions -name "*.jsonl" -type f # Or with custom path find "$PI_HISTORY_PATH" -name "*.jsonl" -type f ``` Build an inventory. For each session file, record: - `path` — absolute path - `cwd` — decoded from parent directory name (`--<path>--` → `/path`) - `session_name` — from the latest `session_info` entry (if any) - `modified_at` — file mtime - `already_ingested` — presence in `.manifest.json` Classify each file: - **New** — not in manifest - **Modified** — in manifest but file is newer than `ingested_at` - **Unchanged** — already ingested and unchanged Report a concise delta summary before deep parsing: > "Found N Pi sessions across K projects. Delta: X new, Y modified." ## Step 2: Parse Session JSONL For each selected session file, read it line by line. Because sessions use a tree structure, build the active branch first: 1. Parse all entries into a map by `id` 2. Find the current leaf (the entry with no children, or the last `message` entry) 3. Walk `parentId` chain from leaf to root to get the active path 4. Reverse the path so it's chronological ### Extraction rules From the active path, extract: - **`session` header** — `
Excerpt, first 6,000 characters of SKILL.md, verbatim from the audited commit. It is text from someone else’s repository, quoted so you can judge it before your agent reads it.
Install
Pinned to the audited commit 8bcf57f
git clone https://github.com/ar9av/obsidian-wiki git -C obsidian-wiki checkout 8bcf57f68146
The author documents no install command, so this uses the repository directly. Our verdict covers commit 8bcf57f68146 only.
Works in
The author has not said which agents this skill supports, and we have not tested it in any.
Audit history
Every audit, every source change
- !CAUTION B 89 / 100
first audit · source
8bcf57f68146
README badge
For maintainers · shows the latest audit
[](https://modelsatlas.com/skills/ar9av/pi-history-ingest/)
The badge shows our verdict and grade for this skill, and links back to this page. It changes when the audit does.
Similar skills
All docs & writing skills →ar9av/obsidian-wiki
Create a reviewable Agent Skill package from mature curated wiki pages. Use when turning verified vault knowledge into a reusable skill. Reads the vault and writes only to a review directory; it does not install skills.
ar9av/obsidian-wiki
Search one AI agent's raw history for a specific topic, ingest only matching sessions, and return a synthesized answer. Use for targeted cross-agent recall; use wiki-history-ingest for bulk archival ingestion.
ar9av/obsidian-wiki
Ingest OpenClaw session/history data into Obsidian as distilled knowledge. Use for importing or mining ~/.openclaw sessions, memory files, or logs; use wiki-agent for targeted topic-only cross-agent recall.
ar9av/obsidian-wiki
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill…
ar9av/obsidian-wiki
Apply and maintain the wiki's controlled tag vocabulary. Use for choosing, normalizing, auditing, or extending tags when creating or updating wiki pages; consult the taxonomy before assigning tags.
ar9av/obsidian-wiki
Browse or compare wiki knowledge by originating AI tool. Use for cross-tool memory questions, tool-specific knowledge, or gap/diff analysis between Codex, Claude, Hermes, and other agents.
Add this badge to your README
[](https://modelsatlas.com/skills/ar9av/pi-history-ingest/)
<a href="https://modelsatlas.com/skills/ar9av/pi-history-ingest/"><img src="https://modelsatlas.com/skills/ar9av/pi-history-ingest/badge.svg" alt="ModelsAtlas: CAUTION B"></a>
Questions about pi-history-ingest
What does the pi-history-ingest skill do?
Is pi-history-ingest safe to install?
What can pi-history-ingest access on my machine?
How current is this page?
Sources
- github.com/ar9av/obsidian-wiki/tree/main/.skills/pi-history-inge — the audited source at commit 8bcf57f68146 and every finding aboveObserved · 31 Oct 2026
Spotted something wrong? Report a correction · Methodology
Keep going in your AI
Opens with this page as the source. We add nothing else to the prompt.
- What does the pi-history-ingest skill do?
- Is pi-history-ingest safe to install?
- What can pi-history-ingest access on my machine?