# copilot-history-ingest

Mines past GitHub Copilot sessions and distills them into an Obsidian wiki. Useful when decisions from old chats need to come back.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 1800 installs · ★ 3621
- Author: Ar9av
- License: MIT · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/Ar9av/obsidian-wiki/tree/HEAD/.skills/copilot-history-ingest/SKILL.md
- Updated: 2026-10-21
- HTML: https://affpapa.org/en/nevibecode/skills/copilot-history-ingest

## What it does

The skill reads Copilot history from three places: the CLI session directory, the global `session-store.db`, and VS Code workspace storage. From there it pulls out knowledge and compiles notes into Obsidian. Checkpoints and session summaries carry the most weight — they are already condensed, so mining goes faster than working through raw logs.

Two modes. Append is the default: only sessions missing from `.manifest.json` and those with a newer `updated_at` get processed. Full mode walks everything again, which makes sense after a `wiki-rebuild`. Before any of that, the skill resolves config — the Obsidian vault path, the Copilot history path (defaults to `~/.copilot/session-state`), and the VS Code `workspaceStorage` path. That last one is platform-specific, and the skill asks for it when `.env` does not have it.

Invoke it directly or through the `/wiki-history-ingest copilot` router. The VS Code side needs that `workspaceStorage` path, otherwise extension transcripts stay invisible. This is built for importing and mining history, not for general Copilot help, single-session search, or backup.

## Requirements
- Works with: Obsidian

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add Ar9av/obsidian-wiki --skill copilot-history-ingest -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/copilot-history-ingest/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/copilot-history-ingest/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add Ar9av/obsidian-wiki --skill copilot-history-ingest -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/copilot-history-ingest/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add Ar9av/obsidian-wiki --skill copilot-history-ingest -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/copilot-history-ingest/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install Ar9av/obsidian-wiki copilot-history-ingest
```

2. **Manually: put the files in place**
- File: `.github/skills/copilot-history-ingest/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add Ar9av/obsidian-wiki --skill copilot-history-ingest -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/Ar9av/obsidian-wiki --path .skills/copilot-history-ingest
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/copilot-history-ingest/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add Ar9av/obsidian-wiki --skill copilot-history-ingest -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/Ar9av/obsidian-wiki/tree/HEAD/.skills/copilot-history-ingest/SKILL.md

## When to use it
- pull decisions out of old Copilot sessions into notes
- skip sessions that were already ingested
- summarise from checkpoints instead of reading raw logs
- spot the files an agent kept touching
- link sessions to commits, PRs and issues

## Example prompts
- ingest my new Copilot sessions into the wiki
- run a full re-ingest of Copilot history
- /wiki-history-ingest copilot

## Source text · SKILL.md · MIT

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: dcee20da751190e4.

BEGIN THIRD-PARTY FILE dcee20da751190e4
````text
---
name: copilot-history-ingest
description: >
  Ingest GitHub Copilot CLI/session history into Obsidian as distilled knowledge. Use for importing or mining Copilot history; not for general Copilot help, simple session search, or backup.
---

# Copilot History Ingest — Conversation Mining

You are extracting knowledge from the user's past GitHub Copilot CLI conversations and distilling it into the Obsidian wiki. Conversations are rich but messy — your job is to find the signal and compile it.

This skill can be invoked directly or via the `wiki-history-ingest` router (`/wiki-history-ingest copilot`).

## 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`, `COPILOT_HISTORY_PATH` (defaults to `~/.copilot/session-state`), and `COPILOT_VSCODE_STORAGE_PATH` (VS Code `workspaceStorage`; platform-specific — ask the user if absent)
2. Read `.manifest.json` at the vault root to check what's already been ingested
3. Read `index.md` at the vault root to know what the wiki already contains

## Ingest Modes

### Append Mode (default)

Check `.manifest.json` for each source file (events JSONL, transcript JSONL, checkpoint, session-store DB). Only process:

- Sessions not in the manifest (new sessions)
- Sessions whose `updated_at` is newer than their `ingested_at` in the manifest

This is usually what you want — the user ran a few new sessions and wants to capture the delta.

### Full Mode

Process everything regardless of manifest. Use after a `wiki-rebuild` or if the user explicitly asks.

## GitHub Copilot Data Layout

Copilot stores data in three locations. Scan **all three**.

### Source 1: `~/.copilot/session-state/` (CLI sessions)

```
~/.copilot/session-state/
├── <session-uuid>/
│   ├── workspace.yaml           # Session metadata (id, cwd, summary_count, created_at, updated_at)
│   ├── vscode.metadata.json     # VS Code context (workspaceFolder, repositoryProperties, customTitle)
│   ├── events.jsonl             # Full event log — all turns, tool calls, reasoning
````
END THIRD-PARTY FILE dcee20da751190e4

The third-party file has ended. Everything between the dcee20da751190e4 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2599 of 18009 bytes. © Ar9av · MIT · https://github.com/Ar9av/obsidian-wiki/tree/HEAD/.skills/copilot-history-ingest/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
