Context retrieval using the manifest index. Pull only the files relevant to the current task — no full context load. Use at the start of any task to identify which boxes to open. Consult ~/.claude/manifest.json to match task keywords to tags, then read only those files.
Install
npx skillscat add g-eskayo/marvin/index Install via the SkillsCat registry.
Index — Pull the Right Boxes
Pull exactly the boxes the task needs. Nothing else.
Primary: hybrid retrieval engine
retrieve.py is the real engine — semantic (ChromaDB + Ollama) + BM25 keyword, merged via RRF, with intent-aware thresholds. Use it first.
MUST run via the venv interpreter — bare python3 lacks the deps and silently degrades to tag matching:
~/.agents/venv/bin/python ~/.agents/skills/self-improve/scripts/retrieve.py "<task description>" --intent <intent> --model <your-tier>--intent tunes precision/recall: debug/fix/diagnose (precise), create/ideate/brainstorm (recall), plan/research/tdd (mid). Omit if unsure.
--model (optional) filters results by which Claude model can run them. Pass your current tier (haiku, sonnet, or opus) — you'll find it in your system context. Add --json for structured output.
Then load the returned paths. Check each loaded skill's calls: and load those too if the task needs them.
Fallback: manual manifest matching
If the engine prints INFO: ... tag fallback or returns nothing, match by hand:
- Read the request — extract 2–4 keywords describing the task
- Read
~/.claude/manifest.json— scan theindex[]array - Collect entries whose
tagsintersect the task keywords - Skip any entries whose
model-scopeexcludes your current tier (check your system context for which model you're running) - Load those files — read each matched
path - Check
calls— if a loaded skill declarescalls: [x, y], load those too if the task needs them - Proceed with only what's relevant
~/.claude/manifest.json is the unified index for all skills AND knowledge files. Each entry has name, path, tags[], optionally model-scope, and optionally calls[]. Tags use namespace:value — domain:, intent:, type:.
Tag Namespaces & Fields
| Field | Meaning | Examples |
|---|---|---|
domain: (tag) |
Subject area | domain:mcp, domain:debugging, domain:testing |
intent: (tag) |
What you're doing | intent:build, intent:debug, intent:plan |
type: (tag) |
Kind of file | type:skill, type:knowledge, type:memory-user |
model-scope (field) |
Model tier restrictions | sonnet+ (sonnet or better), haiku,sonnet (comma list), omitted/all (unrestricted) |
Examples
"There's a bug in the auth middleware"
Keywords: debug, fix → match intent:debug, intent:fix
Load: diagnose skill
Also check: domain:auth entries → reference_mcp.md if MCP-related
"Let's TDD the payment feature"
Keywords: tdd, test, build → match domain:testing, intent:tdd, intent:build
Load: tdd skill (which calls: [diagnose] if needed)
"Help me build an MCP server"
Keywords: build, mcp → match domain:mcp, intent:build
Load: reference_mcp.md (knowledge) + research/build skills
Manifest Structure
always — loaded every session (CLAUDE.md, lexicon.md)
on_session_start — checked at session start (handoffs, suggestions)
index[] — flat array of all tagged entries:
name — identifier
path — file to read (~ = home)
tags — namespaced tag array
calls — (optional) other skills this one may invokeKeeping the Manifest Current
Manifest is auto-generated from frontmatter. Do not edit it by hand.
When creating a new skill or memory file:
- Add
tags: [namespace:value, ...]to its frontmatter - Add
calls: [skill-name, ...]if it depends on other skills - The PostToolUse hook runs
rebuild-manifest.pyautomatically
To rebuild manually (use the venv interpreter — same dep requirement as retrieve.py):
~/.agents/venv/bin/python ~/.agents/skills/self-improve/scripts/rebuild-manifest.py