Obsidian CLI
Atmosphere/atmosphere
Interact with Obsidian vaults using the Obsidian CLI to read, create, search, and manage notes, tasks, properties, and more.
Ingest GitHub Copilot CLI/session history into Obsidian as distilled knowledge.
$ npx skills add Ar9av/obsidian-wiki --skill copilot-history-ingest -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Ar9av/obsidian-wiki copilot-history-ingest --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Ar9av/obsidian-wiki.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.skills/copilot-history-ingest .claude/skills/copilot-history-ingest && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "copilot-history-ingest" agent skill from https://github.com/Ar9av/obsidian-wiki/tree/main/.skills/copilot-history-ingest into .claude/skills/copilot-history-ingest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "copilot-history-ingest", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Ar9av/obsidian-wiki/tree/main/.skills/copilot-history-ingestType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Ar9av/obsidian-wiki --skill copilot-history-ingest -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Ar9av/obsidian-wiki copilot-history-ingest --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Ar9av/obsidian-wiki.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.skills/copilot-history-ingest .agents/skills/copilot-history-ingest && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "copilot-history-ingest" agent skill from https://github.com/Ar9av/obsidian-wiki/tree/main/.skills/copilot-history-ingest into .agents/skills/copilot-history-ingest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "copilot-history-ingest", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Ar9av/obsidian-wiki --skill copilot-history-ingest -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Ar9av/obsidian-wiki copilot-history-ingest --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Ar9av/obsidian-wiki.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.skills/copilot-history-ingest .cursor/skills/copilot-history-ingest && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "copilot-history-ingest" agent skill from https://github.com/Ar9av/obsidian-wiki/tree/main/.skills/copilot-history-ingest into .cursor/skills/copilot-history-ingest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "copilot-history-ingest", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Ar9av/obsidian-wiki.git --path .skills/copilot-history-ingest--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Ar9av/obsidian-wiki --skill copilot-history-ingest -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Ar9av/obsidian-wiki copilot-history-ingest --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Ar9av/obsidian-wiki.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.skills/copilot-history-ingest .gemini/skills/copilot-history-ingest && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "copilot-history-ingest" agent skill from https://github.com/Ar9av/obsidian-wiki/tree/main/.skills/copilot-history-ingest into .gemini/skills/copilot-history-ingest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "copilot-history-ingest", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Ar9av/obsidian-wiki copilot-history-ingestInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Ar9av/obsidian-wiki --skill copilot-history-ingest -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Ar9av/obsidian-wiki.git skills-src && mkdir -p .github/skills && cp -r skills-src/.skills/copilot-history-ingest .github/skills/copilot-history-ingest && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "copilot-history-ingest" agent skill from https://github.com/Ar9av/obsidian-wiki/tree/main/.skills/copilot-history-ingest into .github/skills/copilot-history-ingest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "copilot-history-ingest", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Ar9av/obsidian-wiki --skill copilot-history-ingest -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Ar9av/obsidian-wiki copilot-history-ingest --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Ar9av/obsidian-wiki.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.skills/copilot-history-ingest .opencode/skills/copilot-history-ingest && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "copilot-history-ingest" agent skill from https://github.com/Ar9av/obsidian-wiki/tree/main/.skills/copilot-history-ingest into .opencode/skills/copilot-history-ingest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "copilot-history-ingest", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
copilot-history-ingestIngest GitHub Copilot CLI/session history into Obsidian as distilled knowledge.
Copilot History Ingest is an agent skill from Ar9av/obsidian-wiki. 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.
Its SKILL.md is about 4.4k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/copilot-data-format.md`).
It sits in Knowledge Management. It works with Obsidian and Visual Studio Code. The repository describes itself as: Framework for AI agents to build and maintain a digital brain through Obsidian wiki | Memory System for Agents. The licence is MIT.
6 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit df54595. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash, sql, python, yaml and json).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Copilot History Ingest loads about 4.4k tokens when it runs, and up to ~7.5k if it reads all its reference files. Until then it costs about 53 tokens; SKILL.md has 1,499 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
line `@name` override → walk up CWD for `.env` → global config → prompt setup). This gives `OBSIDIAN_VAULT_PATH`, `COPILis platform-specific and must come from `.env` or user input.Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Ar9av/obsidian-wiki at commit df54595, republished under its MIT licence (© Ar9av). 1,499 words, ~4,430 tokens.
.claude/skills/copilot-history-ingest/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.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).
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.
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).manifest.json at the vault root to check what's already been ingestedindex.md at the vault root to know what the wiki already containsCheck .manifest.json for each source file (events JSONL, transcript JSONL, checkpoint, session-store DB). Only process:
updated_at is newer than their ingested_at in the manifestThis is usually what you want — the user ran a few new sessions and wants to capture the delta.
Process everything regardless of manifest. Use after a wiki-rebuild or if the user explicitly asks.
Copilot stores data in three locations. Scan all three.
~/.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
│ ├── session.db # Per-session SQLite (todos/todo_deps only — skip for ingestion)
│ ├── index.md # Session summary written at session end
│ ├── checkpoints/ # Checkpoint JSON files (mid-session summaries)
│ │ └── <uuid>.json # title, overview, history, work_done, technical_details,
│ │ # important_files, next_steps
│ ├── files/ # Artifacts produced during session (plans, diagrams, etc.)
│ └── research/ # Research artifacts
└── ...~/.copilot/session-store.db (Global SQLite)The canonical cross-session database. This is the highest-value source: structured, queryable, and pre-summarised.
sessions — id, cwd, repository, branch, summary, created_at, updated_at, host_type
turns — session_id, turn_index, user_message, assistant_response, timestamp
checkpoints — session_id, checkpoint_number, title, overview, history, work_done,
technical_details, important_files, next_steps, created_at
session_files — session_id, file_path, tool_name, turn_index, first_seen_at
session_refs — session_id, ref_type (commit/pr/issue), ref_value, turn_index, created_at
search_index — FTS5 virtual table (content, session_id, source_type, source_id)<workspaceStorage>/<hash>/GitHub.copilot-chat/)VS Code extension data, keyed by workspace hash. The path is platform-specific and must come from .env or user input.
<hash>/GitHub.copilot-chat/
├── transcripts/
│ └── <session-uuid>.jsonl # Conversation transcripts (same JSONL format as events.jsonl)
├── memory-tool/
│ └── memories/
│ └── <base64-session-id>/ # Per-session saved artifacts (plan.md, etc.)
│ └── plan.md
└── codebase-external.sqlite # Codebase index (skip — no conversation knowledge)session-store.db checkpoints table + per-session checkpoints/*.json) — Pre-distilled summaries with overview, work_done, technical_details, important_files, next_steps. Gold.session-store.db sessions.summary + index.md) — One-paragraph synopsis per session.session-store.db turns table + events.jsonl / transcript JSONL) — Full conversation. Rich but verbose.memory-tool/memories/<id>/plan.md etc.) — Pre-written plans and structured notes the user saved explicitly. Worth importing verbatim (or lightly summarised).session_files table + tool.execution_* events) — Which files the agent repeatedly touched — reveals high-value project files.session_refs table) — Commits, PRs, and issues linked to sessions.vscode.metadata.json — Workspace folder path, branch, customTitle (user-set session label). Useful for grouping and naming.Scan all three data locations and compare against .manifest.json:
# --- Source 1: per-session directories ---
# Find all session directories (each has workspace.yaml)
ls ~/.copilot/session-state/
# For each session, read workspace.yaml for id/cwd/updated_at
# and vscode.metadata.json for customTitle / repositoryProperties
# --- Source 2: global database ---
# Query session-store.db with sqlite3 (or Python sqlite3)
SELECT s.id, s.cwd, s.repository, s.branch, s.summary, s.updated_at,
COUNT(DISTINCT t.turn_index) AS turn_count,
COUNT(DISTINCT c.id) AS checkpoint_count
FROM sessions s
LEFT JOIN turns t ON t.session_id = s.id
LEFT JOIN checkpoints c ON c.session_id = s.id
GROUP BY s.id
ORDER BY s.updated_at DESC;
# --- Source 3: VS Code workspace storage ---
# For each <hash> directory under workspaceStorage, check for GitHub.copilot-chat/
# Find transcript files
ls <workspaceStorage>/<hash>/GitHub.copilot-chat/transcripts/Build a unified inventory — one entry per session UUID — and classify:
updated_at is newer → needs re-ingestingReport to the user: "Found X sessions in session-state, Y in session-store.db, Z VS Code transcript files. Checkpoints: A. Delta: B new, C modified."
Checkpoints are already distilled — process them before touching raw turns.
session-store.db:SELECT s.id, s.cwd, s.repository, s.branch, s.summary,
c.checkpoint_number, c.title, c.overview, c.work_done,
c.technical_details, c.important_files, c.next_steps,
c.created_at
FROM checkpoints c
JOIN sessions s ON c.session_id = s.id
ORDER BY s.updated_at DESC, c.checkpoint_number ASC;checkpoints/*.json:Each checkpoint file has: title, overview, history, work_done, technical_details, important_files, next_steps.
Read index.md (if present) as a session-level summary — it's typically written at session end and is already concise.
overview → high-level description of what the session accomplishedwork_done → concrete tasks completed (good for skills / project pages)technical_details → implementation specifics (good for concepts pages)important_files → high-value files in the project (good for project pages)next_steps → open threads (good for linking to ongoing project work)Read turns from session-store.db (preferred — already parsed) or from events.jsonl / transcript JSONL.
session-store.db:SELECT turn_index, user_message, assistant_response, timestamp
FROM turns
WHERE session_id = '<uuid>'
ORDER BY turn_index ASC;events.jsonl / transcript JSONL:Each file is one session. Each line is a JSON event. See references/copilot-data-format.md for the full schema.
Relevant event types:
type | What it is | Worth reading? |
|---|---|---|
session.start | Session metadata (cwd, branch, version) | Yes — establishes project context |
user.message | User turn | Yes — data.content |
assistant.message | Assistant turn | Yes — data.content (text) + data.toolRequests |
tool.execution_start | Tool call | Skim — reveals what files/commands were used |
tool.execution_end | Tool result | No — usually noise |
Extraction strategy for assistant.message:
data.content is the assistant's text response — extract thisdata.reasoningText is internal reasoning — skip (it's the unpacked reasoningOpaque field)data.toolRequests lists tool calls — skim tool names and arguments for file access patternstype: "tool.execution_end" entirelyFor each session that has a memory-tool/memories/<base64-id>/ directory in VS Code workspace storage, read any markdown files saved there (typically plan.md). These are documents the user explicitly saved — treat them as high-quality, user-authored content.
Decode the base64 directory name to get the session UUID:
import base64
session_id = base64.b64decode(dir_name).decode('utf-8')Memory artifacts map to project skills/ or concepts/ pages, depending on content type.
From session-store.db:
-- Most-touched files per project
SELECT repository, file_path, COUNT(*) AS touch_count
FROM session_files
GROUP BY repository, file_path
ORDER BY touch_count DESC;
-- Linked commits/PRs/issues per session
SELECT session_id, ref_type, ref_value, turn_index
FROM session_refs
ORDER BY session_id, turn_index;File access patterns reveal which files are architecturally important — note them on project pages.
Session refs link Copilot sessions to git history — useful for connecting wiki knowledge to concrete code changes.
Don't create one wiki page per session. Instead:
cwd / repository give you a natural first-level grouping; vscode.metadata.json's customTitle gives a human-readable session labelEach Copilot project maps to a project directory in the vault. Derive the project name from cwd or repository:
C:\Users\name\git\my-project → my-project
/Users/name/code/another-app → another-appPrefer repository (e.g., owner/repo) from session-store.db over raw cwd when available.
| What you found | Where it goes | Example |
|---|---|---|
| Project architecture decisions | projects/<name>/concepts/ | projects/my-project/concepts/main-architecture.md |
| Project-specific debugging patterns | projects/<name>/skills/ | projects/my-project/skills/api-rate-limiting.md |
| General concept the user learned | concepts/ (global) | concepts/react-server-components.md |
| Recurring problem across projects | skills/ (global) | skills/debugging-hydration-errors.md |
| A tool/service used | entities/ (global) | entities/vercel-functions.md |
| Patterns across many sessions | synthesis/ (global) | synthesis/common-debugging-patterns.md |
For each project with content, create or update the project overview page at projects/<name>/<name>.md — named after the project, not _project.md. Obsidian's graph view uses the filename as the node label, so _project.md makes every project show up as _project in the graph. Naming it <name>.md gives each project a distinct, readable node name.
Important: Distill the knowledge, not the conversation. Don't write "In a session on March 15, the user asked about X." Write the knowledge itself, with the session as a source attribution.
Write a summary: frontmatter field on every new/updated page — 1–2 sentences, ≤200 chars, answering "what is this page about?" for a reader who hasn't opened it. wiki-query's cheap retrieval path reads this field to avoid opening page bodies.
Add confidence and lifecycle fields to every new page's frontmatter:
base_confidence: 0.42
lifecycle: draft
lifecycle_changed: <ISO date today>Leave lifecycle unchanged on update.
Mark provenance per the convention in llm-wiki (Provenance Markers section):
^[inferred] liberally to synthesized patterns, generalizations across sessions, and "what the user really meant" interpretations.^[ambiguous] when the user changed direction mid-session or when the session ended unresolved.provenance: frontmatter block on every new/updated page summarizing the rough mix..manifest.jsonFor each session processed, add/update its entry with:
ingested_at, session_id, updated_atsource_type: one of "copilot_session", "copilot_checkpoint", "copilot_transcript", "copilot_memory_artifact"project: the decoded project namepages_created and pages_updated listsAlso update the projects section of the manifest:
{
"project-name": {
"repository": "owner/repo",
"cwd": "C:\\Users\\name\\git\\project-name",
"vault_path": "projects/project-name",
"last_ingested": "TIMESTAMP",
"sessions_ingested": 5,
"sessions_total": 8,
"checkpoints_ingested": 12,
"memory_artifacts_ingested": 3
}
}Update index.md, log.md, and hot.md with one locked call:
obsidian-wiki memory sync COPILOT_HISTORY_INGEST \
projects=<projects> sessions=<sessions> checkpoints=<checkpoints> \
pages_updated=<pages_updated> pages_created=<pages_created> \
mode=<mode> \
--takeaways "Ingested 5 Copilot sessions across 2 projects; surfaced patterns in API design and testing strategy."Never hand-edit index.md, log.md, or hot.md — the command takes the lock that keeps a parallel writer from dropping your update. --takeaways is the one-line conceptual summary that used to go in Recent Activity;
omit it to leave the previous takeaways untouched.
If an ongoing project is now better understood, record the thread so the next
session picks it up: obsidian-wiki memory todo add "<thread>" --origin projects/<name>.md.
See .skills/llm-wiki/references/MEMORY.md for the full procedure.
data.reasoningOpaque / data.reasoningText in assistant events is internal reasoning — skip entirely, never copy to wikiSee references/copilot-data-format.md for detailed data structure documentation.
QMD is a search index, not the source of truth. If $QMD_WIKI_COLLECTION is empty or unset, skip this step. Run it only after this skill has written or rewritten vault markdown. If QMD refresh fails, do not roll back the vault changes; report the QMD status separately.
Use $QMD_CLI if set; otherwise use qmd.
${QMD_CLI:-qmd} updateIf the output says vectors are needed or embeddings may be stale, run:
${QMD_CLI:-qmd} embedVerify the collection with either:
${QMD_CLI:-qmd} ls "$QMD_WIKI_COLLECTION"or, when a specific page path is known:
${QMD_CLI:-qmd} get "qmd://$QMD_WIKI_COLLECTION/<page>.md" -l 5Record one of:
QMD refreshed: update + embed + verifiedQMD refreshed: update only + verifiedQMD skipped: QMD_WIKI_COLLECTION unsetQMD skipped: qmd CLI unavailableQMD failed: <short error summary>© Ar9av, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in .skills/copilot-history-ingest of Ar9av/obsidian-wiki.
Open the folder on GitHubat commit df54595
Copilot History Ingest next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Copilot History Ingest this skillAr9av/obsidian-wiki | 3.5k | — | ~4.4k | Automated safety check: Notes | MIT | |
| Obsidian CLIAtmosphere/atmosphere | 3.8k | 13 repos | ~795 | Automated safety check: Pass | Apache-2.0 | |
| Obsidian Canvas BoardsAgriciDaniel/claude-obsidian | 15k | — | ~1.4k | Automated safety check: Pass | MIT | |
| LLM Wikilewislulu/llm-wiki-skill | 655 | — | ~3.7k | Automated safety check: Pass | None | |
| Second BrainNicholasSpisak/second-brain | 737 | — | ~1.5k | Automated safety check: Notes | None | |
| Autographsmixs/agent-second-brain | 393 | — | ~3.7k | Automated safety check: Pass | MIT |
Atmosphere/atmosphere
Interact with Obsidian vaults using the Obsidian CLI to read, create, search, and manage notes, tasks, properties, and more.
AgriciDaniel/claude-obsidian
Creates, inspects and updates Obsidian JSON Canvas boards in a vault, with text, file, link, group and edge nodes, using safe recoverable edits.
lewislulu/llm-wiki-skill
Build and maintain a Karpathy-style LLM knowledge base — a self-compiling Obsidian markdown wiki where an Agent ingests raw sources, compiles cross-linked concept/entity/summary pages, answers…
NicholasSpisak/second-brain
Set up a new Obsidian knowledge base with the LLM Wiki pattern.
smixs/agent-second-brain
Schema-as-code enforcement for any Obsidian vault. An agent skill from smixs/agent-second-brain.
axoviq-ai/synthadoc
Extract text from images using a vision LLM. An agent skill from axoviq-ai/synthadoc.
Ar9av/obsidian-wiki
Ingest Codex CLI conversation/session history into Obsidian as distilled knowledge.
Ar9av/obsidian-wiki
Ingest Hermes agent history into Obsidian as distilled knowledge.
Ar9av/obsidian-wiki
Adjust the user's Obsidian visual layout with CSS snippets. An agent skill from Ar9av/obsidian-wiki.
Ar9av/obsidian-wiki
Ingest OpenClaw session/history data into Obsidian as distilled knowledge.
Ar9av/obsidian-wiki
Turn the current conversation or finding into a structured permanent wiki note.
Ar9av/obsidian-wiki
Turn a wiki topic into a cited Markdown briefing, plain-language explanation, or progressive lecture.
Works with
Categories
Ingest GitHub Copilot CLI/session history into Obsidian as distilled knowledge. Copilot History Ingest is an agent skill from Ar9av/obsidian-wiki. Ingest GitHub Copilot CLI/session history into Obsidian as distilled knowledge.
Copilot History Ingest fits situations like: mining Copilot history; not for general Copilot help; simple session search.
Run `npx skills add Ar9av/obsidian-wiki --skill copilot-history-ingest -a claude-code`. Or copy the skill folder (.skills/copilot-history-ingest in Ar9av/obsidian-wiki) into .claude/skills/copilot-history-ingest in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Ar9av/obsidian-wiki --skill copilot-history-ingest -a codex`. Or copy the skill folder (.skills/copilot-history-ingest in Ar9av/obsidian-wiki) into .agents/skills/copilot-history-ingest in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Ar9av/obsidian-wiki --skill copilot-history-ingest -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/copilot-history-ingest, .gemini/skills/copilot-history-ingest, .github/skills/copilot-history-ingest and .opencode/skills/copilot-history-ingest in your project.
SKILL.md names no scripts, command-line tools or credentials: Copilot History Ingest is instructions for the agent only. Our summary lists: Python 3.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Copilot History Ingest is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.4k tokens (SKILL.md is roughly 18k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 3.1k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Copilot History Ingest: Obsidian CLI (Atmosphere/atmosphere, 3.8k stars), Obsidian Canvas Boards (AgriciDaniel/claude-obsidian, 15k stars), LLM Wiki (lewislulu/llm-wiki-skill, 655 stars) and Second Brain (NicholasSpisak/second-brain, 737 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Ar9av (a GitHub user) maintains it in Ar9av/obsidian-wiki, which has 3,547 GitHub stars. The repository holds 39 skills in this directory. The repository was last updated on October 10, 2026.
Source: Ar9av/obsidian-wiki on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.