New to Claude Skills? Learn how to install them →

vectorize-io on GitHub

Hindsight Coding-Agent Memory

Free

Enhance your coding sessions with long-term memory.

Get this skill

Free · Opens the source repo

What Hindsight Coding-Agent Memory does

The Hindsight Coding-Agent Memory skill provides a structured way to manage long-term knowledge during coding sessions. It automatically creates a memory bank for each repository, seeding it with recent commit messages and a codebase survey on first use. This memory bank is updated continuously throughout your sessions, ensuring that you have access to the most relevant information without needing to run any additional commands. The skill also captures session transcripts automatically, allowing you to focus on coding rather than manual note-taking.

You can explicitly store external documents or new initiatives using simple commands, making it easy to integrate new findings or project plans into your memory bank. Retrieval is straightforward, with commands designed to quickly search and read knowledge pages, or to reflect on past decisions for deeper understanding. This functionality is particularly useful for teams working on complex projects where maintaining a clear record of decisions and changes is crucial.

Configuration is handled via a single JSON file, allowing for fine-tuning of memory behavior per repository. You can disable memory for specific repositories, control how much commit history is ingested, and even rename memory banks for better organization. The skill also includes diagnostic commands to check the status of your memory and logs to help troubleshoot any issues that arise.

Overall, this skill is aimed at developers and teams looking to enhance their coding workflow by leveraging long-term memory, ensuring that valuable insights and decisions are preserved and easily accessible throughout the development process.

When to use it

Use this skill when working on long-term coding projects that require consistent tracking of decisions and knowledge over time.

When not to use it

This skill may not be suitable for short-term or one-off coding tasks where memory tracking is unnecessary.

What you can build with it

Team Collaboration

In a team setting, use this skill to maintain a shared memory bank that captures project decisions and discussions, ensuring everyone is aligned.

Long-Term Projects

For long-term projects, leverage this skill to automatically track changes and decisions, making it easier to onboard new team members.

Documentation of Features

When starting new features, use the skill to capture the initiative details, ensuring that all relevant information is stored for future reference.

How to install Hindsight Coding-Agent Memory

View source

1. Install with the skills CLI

npx skills add vectorize-io/hindsight/skill --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by vectorize-io

Hindsight Coding-Agent Memory

This machine runs the hindsight-coding-agents plugin: long-term project memory for coding sessions, backed by a Hindsight server. You (the agent) are already wired into it — this skill explains what happens automatically, which tools you have, and how to configure or debug it.

What happens automatically (no action needed)

  • Per-repo memory bank: each repository resolves to a bank (shown in the session banner: ↳ memory bank “coding-agent::<repo>”). Worktrees share the main repo's bank.
  • Ingestion builds itself: on first open, the bank is seeded from recent commit messages and a read-only codebase survey; every session start, a background engine tops it up (new commits, new conversations) and keeps 5 knowledge pages current. There is NO ingest command to run.
  • Session synthesis: the first prompt of a session triggers one deep memory synthesis (reflect) injected into context. Later turns inject nothing automatically.
  • Write-back: the session transcript is retained into the bank automatically at session end (per-turn on opencode). The user never needs to "save" a conversation.

Storing things deliberately

When the user says "store this in hindsight" / "remember this":

  • The current conversation is captured automatically at session end — say so; no tool needed.
  • An external document, notes, or durable findingshindsight_ingest_document(title, content).
  • A new feature/initiative being startedhindsight_capture_initiative(title, summary), once, right after the plan is agreed and before code is written.

Retrieving

  • hindsight_search_knowledge_pages(query) — FIRST STOP for project questions (components, conventions, past decisions, initiatives). Server-side hybrid search, fast.
  • hindsight_read_knowledge_page(page_id) / hindsight_list_knowledge_pages — read pages fully.
  • hindsight_reflect(query) — deep reasoning over the whole memory for WHY questions and exact decided values; slower (seconds), use deliberately.
  • Credit visibly whenever memory informs an answer: start that part with 🧠 From Hindsight memory (<page>): … — and never credit memory that didn't contribute.

Correcting wrong or stale memory

If you verify that something Hindsight served is wrong or outdated (the code, git, or an external source contradicts it), FIX THE RECORD — don't just ignore it. Call hindsight_ingest_document with:

  • title: Correction: <topic> (e.g. Correction: retry policy 4xx set)
  • content: (1) what memory claimed, (2) what is verifiably true now, (3) the evidence you checked (file/commit/output). Quote exact values verbatim.

Newer facts supersede older ones in retrieval, so one clear correction permanently outranks the stale memory. Do this whenever you catch a wrong injected memory, a stale knowledge-page claim, or an outdated decision — silent disregard leaves the trap armed for the next session.

Configuration — ONE file: ~/.hindsight/coding-agent.json

No environment variables (exceptions: HINDSIGHT_CONFIG relocates this file; HINDSIGHT_DIAG_FILE/HINDSIGHT_LOG_FILE/HINDSIGHT_LOG_LEVEL for diagnostics). Layering, later wins: defaults → file → harnesses.<name>banks.<resolvedBankId>.

{
  "apiUrl": "http://localhost:8888", // your Hindsight server
  "apiToken": "…", // Hindsight Cloud only
  "gitIngest": "message", // "message" | "full" (per-commit diffs) | "none"
  "harnesses": { "claude-code": { "disabled": true } }, // per-agent override of anything
  "mapPathToBank": { "/Users/me/work/client-x": "client-x-memory" }, // path-prefix → bank
  "banks": {
    // per-repo control, keyed by RESOLVED bank id
    "coding-agent::secret": { "disabled": true }, // blacklist a repo
    "coding-agent::old": { "bank": "team::shared" }, // rename / converge banks (single hop)
    "coding-agent::mono": { "gitIngest": "full", "retainSessions": false },
  },
}

Key behavioral fields (any of them valid per-harness or per-bank): disabled, retainSessions (write-back opt-out), gitIngest, reflectTimeoutMs (default 120000; hooks cap at 25s), autoReflect (true; false = no injected first-prompt synthesis — the agent is instead told to call hindsight_reflect on new goals), pageRefreshEveryTurns (10), autoSeed/seedLimit (true/300), codebaseSurvey/surveyModel/surveyBudgetUsd (true/haiku/2), surveyRefreshCommits (0=off), logLevel ("info").

Blacklist a whole directory tree: map it to one bank and disable that bank — "mapPathToBank": {"~/scratch": "scratch"} + "banks": {"scratch": {"disabled": true}}.

Bank resolution order: mapPathToBank longest prefix → static bankId → template (default coding-agent::{gitProject}) → the matching banks.<id> section (its bank field renames the destination). Two repos share memory by converging their banks.<id>.bank on one name, or by one mapPathToBank prefix over their parent directory.

Install / update (for setting up another machine or harness)

npx @vectorize-io/hindsight-coding-agents install all     # every detected agent
npx @vectorize-io/hindsight-coding-agents install codex   # or specific: opencode|claude-code|codex|antigravity-cli|cursor-cli
npx @vectorize-io/hindsight-coding-agents uninstall       # removes exactly what install added
# updating is the same install command again — it re-copies the runtime in place

Debugging

  • Readiness: hindsight_sync_statussynced: true = seeded memory queryable; also shows gitlog freshness, per-commit deepening progress, survey state (surveyDocs 0–4 = findings present; baseline without findings retries automatically), and active extraction ops.
  • Logs: $TMPDIR/hindsight-coding-agent/plugin.log (leveled; set "logLevel": "debug" or HINDSIGHT_LOG_LEVEL=debug to mirror every event) and /tmp/hindsight-plugin.log (structured JSONL diag events with timings: session_start, reflect_ok, deepen_done, retain_ok, …).
  • Reset a repo's memory: delete its bank on the server — the bank is the ONLY state; the next session is a true first-open. No client files to clean.
  • Rule of thumb: memory silently missing → check the diag log for whether session_start/ deepen_started ever fired for that bank; a session started before the plugin was installed has no SessionStart behind it (its first prompt after install self-heals).
  • Internal marker docs you may notice (safe to ignore, safe to delete): survey-baseline:<sha> — "🛰️ researching…" while a codebase survey runs, flipped to "✅ completed" once its findings land. Retained under the survey strategy, whose marker rule extracts NOTHING from status markers; powers the re-survey cadence and surveyBaseline in sync status. gitlog:<repo> is the aggregated commit-message seed document.
  • Failures never break the agent: reflect/pages/retain failures degrade to a normal memoryless turn and are recorded in the logs.

Frequently asked questions about Hindsight Coding-Agent Memory

Similar skills