Skip to main content
skill CX Codex

vir — Claude Code skill: notes from your past agent sessions

The skill searches a personal note base for decisions you already made, bugs you already fixed and tools you picked. Useful before starting something new.

Install into Claude Code · Skills CLI (Vercel) All methods and platforms ↓
npx skills add djolex999/vir --skill vir -a claude-code
Open on GitHub

What vir does

vir turns earlier coding-agent sessions into short markdown notes: decisions, gotchas with their fixes, patterns, tools. The skill reads those notes and never writes to them. The point is not re-solving a problem you closed months ago.

Access follows the first path that works. When vir_query is available, the skill calls it with synthesize: false, because the default path bills an LLM call to your provider while you only need the matching notes. Next option is the CLI: vir query "<question>" --json --limit 5, retrieval only, no LLM call. Should the CLI be absent or its search fail, the skill reads ~/.vir/config.json and looks through <vaultPath>/<outputDir>/ with ordinary file tools — decisions/, gotchas/, patterns/, tools/ and topics/.

Phrase the query as the problem rather than a keyword, and name the project when the task is project-specific. Two or three queries cover it. Notes get cited by slug, like [[nextjs-middleware-session-1a2b3c4d]], and a past decision outranks a fresh default. Notes do go stale, though: if the code disagrees, the skill sides with the code and flags the conflict. A score below roughly 0.45 usually means an unrelated hit. On CLI failure you get {"error": "...", "kind": "..."}; retry once on busy, otherwise drop to reading files.

What it helps with

  • recall why a library was chosen for this project
  • find the note about a gotcha that broke the build before
  • check whether an auth decision was later reversed
  • pull up your own tooling patterns before a new task
  • skip re-investigating an error you already diagnosed

Example prompts for the agent

  • Check my vir notes: what did I decide about middleware and sessions in growthq?
  • I'm getting an empty session in auth middleware — have I hit this before? Look in vir.
  • Before picking a validation library, look in vir for decisions I already made.

How to install vir

1Skills CLI (Vercel)

npx skills add djolex999/vir --skill vir -a claude-code

2Manually: put the files in place

~/.claude/skills/vir/SKILL.md

Copy the whole skill folder; for one project use .claude/skills/vir/

Step by step, with commands for each platform: How to install skills in Claude Code: five ways

Questions about vir

How do I install vir in Claude Code?

Run npx skills add djolex999/vir --skill vir -a claude-code. The skill lands in ~/.claude/skills/vir/SKILL.md.

What does vir do?

It searches your personal note base for past decisions, gotchas, patterns and tools, then brings them into the current task. The base is built from your own agent sessions.

What does vir need to work?

Either the vir_query MCP tool, or the vir CLI, or a ~/.vir/config.json pointing at your notes vault. With none of those present, the skill says vir isn't set up and carries on without it.

Source text

SKILL.md · MIT
---
name: vir
description: "Consult the user's vir knowledge base: notes distilled from their own past coding-agent sessions (decisions, gotchas, patterns, tools). Use before starting non-trivial work in a project, when the user asks 'what did I decide about X', 'have I hit this before', 'check my notes/vault', when debugging an error that may have happened before, and before architectural or library choices."
---

# vir: the user's own past decisions

vir distills the user's past coding-agent sessions into short markdown notes:
**decisions** (what they chose and why), **gotchas** (what broke and the fix),
**patterns**, and **tools**. The notes are the user's own history, not general
advice. Checking them first avoids re-solving a problem they already solved
or re-opening a decision they already made.

This skill only **reads** the notes. It never writes them.

## 1. Pick the access path (first one that works)

1. **MCP tools.** If `vir_query` is among your tools, use it, and **pass
   `synthesize: false`**. By default it synthesizes an answer with an LLM call
   billed to the user's provider; you only need the matching notes, and you
   can read them yourself. Other read-only tools: `vir_recent_notes` (latest
   notes), `vir_project_summary` (one project's knowledge), `vir_status`
   (vault health).
2. **CLI.** If `vir --version` prints a version, search with:

   ```bash
   vir query "<question>" --json --limit 5
   ```

   This is retrieval only: no LLM call and no cost. The only side effect is a
   line in vir's local query log (`~/.vir/queries.jsonl`), which the user can
   turn off with `logQueries: false`.
3. **Plain files.** If the CLI is missing or its search fails, read
   `~/.vir/config.json`. The notes live in `<vaultPath>/<outputDir>/`, in
   `decisions/`, `gotchas/`, `patterns/`, `tools/`, plus `topics/` for
   synthesized pages. Search them with your normal file-search tools,
   read-only.
4. **Nothing found** (no MCP tool, no CLI, no `~/.vir/config.json`): vir is not
   set up. Say so once, briefly, and continue without it. See section 5 if the
   user wants it.

## 2. Ask good questions

- Phrase the query as the problem, not a keyword: "why does auth middleware
  read an empty session" beats "middleware".
- Include the project name when the task is project-specific.
- Two or three focused queries are enough. Don't sweep the whole vault.

## 3. Read the results

`vir query --json` returns a JSON array, best match first:

```json
[{ "path": "gotchas/nextjs-middleware-session-1a2b3c4d.md", "score": 0.69,
   "category": "gotcha", "confidence": 0.92, "preview": "first ~200 chars",
   "project": "growthq", "date": "2026-07-30T19:05:44.450Z" }]
```

- `path` is relative to `<vaultPath>/<outputDir>` from `~/.vir/config.json`.
  Open the top 1–3 relevant notes. The useful part is usually
  `## What Was Learned`.
- A score under ~0.45 is usually unrelated; don't force it.
- On failure the CLI prints `{"error": "...", "kind": "..."}` instead. Kinds:
  `no_vault`, `ollama_unavailable`, `busy`, `invalid_args`, `not_found`,
  `internal`. For `busy`, retry once. For anything else, fall back to plain
  files (path 3).

## 4. Use what you found

- **Cite** each note you rely on by its slug, i.e. the filename without `.md`,
  as `[[nextjs-middleware-session-1a2b3c4d]]`, so the user can open it.
- **Prefer the user's past decision** over a fresh default, and say you're
  doing so ("You decided in July to keep JWT checks out of middleware
  [[…]]; following that.").
- **Verify against the current code.** Notes can be stale: a library may have
  been upgraded or a decision reversed since. If the code contradicts a note,
  trust the code and point out the conflict.
- **Be honest about misses.** If nothing relevant came back, say "no vir notes
  on this" and move on. Never invent a note or a citation.

## 5. Hard limits

- **Never write, edit, move or delete** anything in the notes folder.
- **Never run commands that distill, spend money or change state** unless the
  user explicitly asks: `vir run`, `vir connect`, `vir sync-claude`,
  `vir review`, `vir prune`, `vir dedupe`, `vir compose`, or the
  `vir_compose` tool.
- **Never install vir on your own.** If the user wants it, explain: vir is an
  open-source CLI (github.com/djolex999/vir) that reads their local session
  transcripts (Claude Code and/or Codex) and needs an LLM provider (Anthropic
  key, Claude Code subscription, ChatGPT plan via the Codex CLI, or Kie). Then
  offer the commands for them to run:

  ```bash
  npm install -g @djolex999/vir-cli
  vir init
  vir mcp install                 # Claude Code
  vir mcp install --target codex  # Codex: prints the config block to add
  ```

- For "is vir working?" questions, `vir doctor` is safe and read-only.

© djolex999 · MIT · djolex999/vir

Similar skills

All skills for Agent setup: memory, context, orchestration →

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor