---
name: "caspar-recall"
description: "Use when the user wants to search the project's captured knowledge, recall a specific past learning, or discover what learnings already exist (e.g. \"/caspar:recall\", \"what do we know about X\", \"is there a learning for Y\"). Do NOT trigger to capture or write new knowledge — that is /caspar:learn."
user-invocable: true
---

# recall — Search Project Knowledge

## Purpose
Find and load the project's captured caspar learnings relevant to a query, so the answer is grounded in prior knowledge instead of re-derived.

## Inputs
- `$ARGUMENTS` — the search query. Empty = list everything by category.
- The knowledge registry, read just-in-time (not inlined here):
  - `{{project_root}}/.agents/skills/caspar-recall/SKILL.md` (Claude Code), or
  - `{{project_root}}/.agents/skills/caspar-recall/SKILL.md` (Codex).
  Each registry row is `skill-name|category|triggers|description`. Live trigger keywords also sit in each loaded skill's frontmatter description.

## Working Set
Read-only: the registry file above and the frontmatter descriptions already in context. No writes.

## Outputs + DONE
A grounded answer, plus the matching knowledge loaded into context. DONE when:
- The query was matched against registry triggers/descriptions AND in-context skill descriptions; and
- The match-count rule below was applied; and
- On any match, the chosen learning(s) were loaded via `Skill({skill-name})` before answering.

## Method / guardrails
- Match the query against registry `triggers` + `description` and the trigger keywords in loaded skills' frontmatter.
- Decision rule (load-bearing — apply exactly):
  - **Single match** → load it automatically: `Skill({skill-name})`.
  - **Multiple matches** → list the options and ask the user which to load (do not auto-load several).
  - **No match** → say so and suggest `caspar-learn` to capture it.
- Empty query → list all available knowledge grouped by category; do not load.
- If no registry file exists at either path → report that no project knowledge registry exists yet and suggest `caspar-learn` once the current work yields something worth preserving. Do not fabricate entries.

## Handoff
Return the loaded knowledge and a 1–2 line note on what was applied, in-thread. Persist nothing.

## Escalate-If
- Multiple plausible matches and the user's intent is ambiguous → ask which to load.
- Query implies knowledge that should exist but the registry lacks it → surface the gap and point to `caspar-learn`.
