Skip to main content
Glama
vshulcz

vshulcz/deja-vu

deja

Search your own past AI coding sessions across Claude, Codex, and opencode to recall errors, commands, file context, and decisions, then reuse proven fixes.

Instructions

This user's own past sessions from every AI coding tool on this machine — not general knowledge, not library docs. Modes:

  • recall: search past sessions. An exact error string, name or path is the strongest query; your own words work too.

  • context: the full story of one session, when a recall hit is not enough.

  • blame: why a file is the way it is, before you edit or delete it. Sessions, not git authorship.

  • fix: you just hit an error — what this machine ran after that same error. Pass the output verbatim.

  • how: the command and flags this user really runs for a thing, instead of a guessed one.

  • orient: the commands past sessions ran in this project and the files they worked in, before you go reading.

  • remember: store one settled decision for a later session. A bracketed marker on a result is the user's own later judgement; act on what it says. When a result helps, open your reply with one line: "déjà vu: — (deja:)". Say nothing about recalls that did not help.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
qNoWhat to ask about: the question or exact token; for blame a path, for fix the failing output verbatim, for remember the fact.
modeYes
limitNoMax results.
harnessNoOptional filter, the agent that wrote it: claude, codex, opencode, aider and 31 more (`deja sources`).
projectNoOptional project filter; for remember, where it is filed.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.21.5
    • changedInput schema / properties / harness / description
      Previous value: -"Optional filter, the agent that wrote it: claude, codex, opencode, aider and 30 more (`deja sources`)."New value: +"Optional filter, the agent that wrote it: claude, codex, opencode, aider and 31 more (`deja sources`)."
  2. Changed14 schema fields changedv0.21.1
    • removedInput schema / properties / all
      Removed value: -{
      -  "description": "blame: every project, not just this one.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / error
      Removed value: -{
      -  "description": "fix: the failing output, verbatim. Multi-line pastes are fine.",
      -  "type": "string"
      -}
    • changedInput schema / properties / harness / description
      Previous value: -"Optional filter, the agent that wrote the session: claude, codex, opencode, aider and 30 more — `deja sources` lists them."New value: +"Optional filter, the agent that wrote it: claude, codex, opencode, aider and 30 more (`deja sources`)."
    • removedInput schema / properties / mode / description
      Removed value: -"Which capability to use."
    • changedInput schema / properties / mode / enum
      Previous value: -[
      -  "recall",
      -  "context",
      -  "blame",
      -  "fix",
      -  "how",
      -  "remember"
      -]New value: +[
      +  "recall",
      +  "context",
      +  "blame",
      +  "fix",
      +  "how",
      +  "orient",
      +  "remember"
      +]
    • removedInput schema / properties / offset
      Removed value: -{
      -  "description": "recall: skip this many ranked matches, to page without re-ranking.",
      -  "type": "number"
      -}
    • removedInput schema / properties / path
      Removed value: -{
      -  "description": "blame: absolute, relative, or bare filename.",
      -  "type": "string"
      -}
    • changedInput schema / properties / project / description
      Previous value: -"Optional project filter; for remember, where the note is filed (default notes)."New value: +"Optional project filter; for remember, where it is filed."
    • addedInput schema / properties / q
      Added value: +{
      +  "description": "What to ask about: the question or exact token; for blame a path, for fix the failing output verbatim, for remember the fact.",
      +  "type": "string"
      +}
    • removedInput schema / properties / query
      Removed value: -{
      -  "description": "recall and context: an exact token — error string, function name, flag — or the question in your own words.",
      -  "type": "string"
      -}
    • removedInput schema / properties / since
      Removed value: -{
      -  "description": "blame: age such as 30d or 24h.",
      -  "type": "string"
      -}
    • removedInput schema / properties / tags
      Removed value: -{
      -  "description": "remember: optional navigation tags, searchable as #tag.",
      -  "items": {
      -    "type": "string"
      -  },
      -  "type": "array"
      -}
    • removedInput schema / properties / text
      Removed value: -{
      -  "description": "remember: one durable fact, decision or conclusion.",
      -  "type": "string"
      -}
    • removedInput schema / properties / what
      Removed value: -{
      -  "description": "how: tool or target, e.g. 'go test', 'docker compose', a script name.",
      -  "type": "string"
      -}
  3. Changed1 schema field changedv0.21.0
    • changedInput schema / properties / harness / description
      Previous value: -"Optional filter, the agent that wrote the session: claude, codex, opencode, aider and 29 more — `deja sources` lists them."New value: +"Optional filter, the agent that wrote the session: claude, codex, opencode, aider and 30 more — `deja sources` lists them."
  4. Changed1 schema field changedv0.20.2
    • changedInput schema / properties / harness / description
      Previous value: -"Optional filter, the agent that wrote the session: claude, codex, opencode, aider and 21 more — `deja sources` lists them."New value: +"Optional filter, the agent that wrote the session: claude, codex, opencode, aider and 29 more — `deja sources` lists them."
  5. Changed1 schema field changedv0.19.5
    • changedInput schema / properties / harness / description
      Previous value: -"Optional filter: claude, codex, opencode, aider, gemini, cursor, antigravity, grok or qwen."New value: +"Optional filter, the agent that wrote the session: claude, codex, opencode, aider and 21 more — `deja sources` lists them."
  6. Addedv0.19.3

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare openWorldHint=false; the description adds real behavioral context beyond that — that bracketed markers encode the user's own later judgement, that fix should receive output verbatim, and that a successful hit requires an opening acknowledgement line in a specific format. These are non-obvious protocol behaviors an agent could not infer from structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The mode list is front-loaded and each line is a single clause that earns its place; the purpose statement comes first. Slightly dense and conversational in the closing sentences, but there is no dead weight.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter, mode-driven tool with no output schema and no siblings, the description covers the mode semantics, the input expectations, and the response acknowledgement convention well. It stops short of describing the general shape of a result beyond the bracketed-marker note, which is the only remaining gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 80%, so the baseline is 3, but the description adds genuine meaning to the `mode` enum by defining what each value actually asks for. It also ties `q` to mode-specific expectations (a path for blame, verbatim output for fix), reinforcing rather than just restating the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific, scoped statement of what the resource is ('This user's own past sessions from every AI coding tool on this machine') and explicitly negates the confusable alternatives ('not general knowledge, not library docs'). The mode list then names seven distinct operations, so an agent knows exactly what each invocation returns without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Every mode carries its own when-to-use condition: blame is 'before you edit or delete it', fix is 'you just hit an error', orient is 'before you go reading'. It also states when *not* to speak ('Say nothing about recalls that did not help'), which is unusually explicit routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Deploy Server

Other Tools