Packs / Context Recall
Context Recall
Skillv1.0.0Searches prior session logs and notes for a topic and summarizes the last three relevant sessions so work resumes with context.
Install
# once per machine curl -fsSL https://hookcrate.com/install | bash # then hookcrate install context-recall
Get access
One license covers all packs.
What it does
A cold-start recovery skill. Given a topic, recall.ts scans your Claude Code session transcripts (~/.claude/projects/**/*.jsonl) and any notes directories you configure, scores files by hit density and recency, and prints the three most relevant sessions with their date, first user prompt, matching excerpts and files touched. Claude then summarizes what was decided and what was left open before starting the new task. Nothing leaves the machine; it is a local text search.
Usage: bun .claude/skills/context-recall/scripts/recall.ts "rate limiter" --dir ./notes --limit 3
When to use this
Use Context Recall when you work on the same codebase across many sessions and keep re-explaining decisions you already made. Every new Claude Code session starts cold: it does not know that last Tuesday you chose six retry attempts, or that the provider rejects duplicate webhooks, or that the flaky test was already investigated twice. The transcripts of those sessions are on your disk, and so are your notes — the skill simply searches them. Given a topic, recall.ts scans session logs and notes directories, scores files by how often the terms appear and how recent they are, and prints the three best matches with the date, the first prompt of that session (what it was about), matching excerpts, and the files that were edited. The agent then writes a short "context from earlier sessions" block before starting, and treats recorded decisions as the default rather than silently re-deciding. It is most useful for solo developers running long projects, for anyone who rotates between several repositories, and for picking up work after a break. It needs nothing beyond local files: no database, no embedding service, no upload. If you already keep decision logs, point --dir at them and they are searched too.
When it triggers
- User says: what did we do about X, pick up where we left off, continue the Y work, remind me how Z works, last time we…
- Start of any task that references earlier work
- User invokes /context-recall <topic>
Preview — a sample session
Illustrative transcript showing the pack in use.
User: Continue the webhook retry work from last week.
Claude: "Continue … from last week" → context-recall before I touch anything.
● Bash(bun .claude/skills/context-recall/scripts/recall.ts "webhook retry" "retry queue" --limit 3)
⎿ context-recall: top 3 for "webhook retry", "retry queue"
1. 2026-03-04 17:42 a91f…c3.jsonl (23 hits)
path: ~/.claude/projects/-home-dev-shop-api/a91f…c3.jsonl
about: Design a retry queue for outbound webhooks with exponential backoff and a dead-letter table
edited: src/webhooks/retry.ts, src/db/migrations/0012_webhook_dlq.sql, src/webhooks/retry.test.ts
> decided: max 6 attempts, backoff 1m·2^n capped at 6h, then move to webhook_dlq
> open: idempotency key on the receiver side is still TODO — provider B rejects duplicates
> bun test src/webhooks → 9 pass, 0 fail
2. 2026-03-02 11:08 notes/webhooks.md (6 hits)
path: /home/dev/shop-api/notes/webhooks.md
> Provider A tolerates duplicates; Provider B returns 409 on replay. Need per-delivery UUID header.
3. 2026-02-26 09:30 5d0e…7a.jsonl (4 hits)
about: Why are webhook deliveries silently dropped after a 5xx?
edited: src/webhooks/send.ts
> root cause: send() swallowed non-2xx; now throws DeliveryError
Claude:
Context from earlier sessions
- 2026-03-04 — built retry.ts + DLQ migration; decided 6 attempts, 1m·2^n backoff capped at 6h; tests green (9/9).
- 2026-03-02 — note: Provider B rejects replays with 409 → every retry needs a stable per-delivery idempotency header.
- 2026-02-26 — fixed send() swallowing 5xx; it now throws DeliveryError, which is what retry.ts catches.
Carrying forward: the open item is the idempotency header, not the backoff. I'll implement `X-Delivery-Id` from the delivery row's UUID and add a test that two attempts send the same header.
Starting there — reading src/webhooks/retry.ts to see where attempts are built.
FAQ
Does it send my transcripts anywhere?
No. It is a local text search over files on your disk. Nothing is uploaded, indexed remotely, or modified.
How are results ranked?
By log(hits) multiplied by a recency decay with a 30-day half-life, so a heavily relevant session from last month can still beat a one-line mention from yesterday. --days bounds how far back it looks (default 90).
What if it finds nothing?
The agent says so in one line and proceeds. The skill explicitly forbids inventing history — an empty result is a valid answer, not a prompt to guess.