Reconstruct your recent working context from your own chat history, live state, and the shared record (user reports, prior fixes, incidents), then hand back a tight current-state brief. Use for 'recall my work on X', 'catch me up', 'what have I been working on', 'where did I leave off', before starting or resuming work.
npx skills add https://github.com/uzairansaruzi/p3-stack --skill recall
Before you start or resume work, you rebuild the user's recent working context and hand back a tight capsule of where things stand now and what to do next.
Keep it tight and on-topic. Read only what the in-scope threads need, then stop.
Your context lives in two records. Your own chat history holds what you did and decided. The shared record holds everything that happened around the same code under other names: the symptoms users keep reporting, the fixes that shipped and got reverted, the errors still firing in prod. That second record is what the why skill searches, across source control, the issue tracker, chat and issue channels, long-form docs, and error tracking. A feature with a long bug tail keeps most of its story there, so don't reconstruct it from your threads alone.
Chat history lives in T3 threads. t3_thread_search finds them by topic and t3_thread_read reads one, scoped to the active project.
session-pickup playbook, not this. Turning habits into a durable skill is automate-me. A human-readable summary of your work is a different task. Recall loads working context across recent chats before you act. If the user already gave you a full state capsule (paths, branch, the change), use it and skip the mining.delegate_task with mode: "async" to spawn parallel workers on the how explorer role, each taking a slice of the corpus. Every brief stands alone, since the worker gets only the brief and never your context. It must say read-only, inspect only, no writes. Tell every worker to order candidates by real last-activity time and never by thread ID, run t3_thread_search on the topic first and then t3_thread_read only the matching threads and only their relevant regions, and skip the current thread plus obvious noise (delegated-task, eval, and test threads). Each returns the same schema, one block per thread: topic, the user's goal, decisions, open threads, struggles and corrections, and artifacts (PRs, tickets, branches), each citing the thread ID. For one or two threads, skip the fan-out and search directly. Drain with task_status. The raw threads stay in the workers. The main thread gets only their findings.git, gh, and list_thread_pull_requests. When the answer hinges on what an agent actually did (the tools it ran, files it read, errors it hit), t3_thread_read the full thread, not just a trimmed summary.Lead with the capsule, then the thread status, then the problems, then the next move. Deeper detail goes below or gets cut.
[merged #N], [open PR #N], [in flight <branch>], [verified, uncommitted], [reverted #N], or [planned, not started]. A thread with no tag is not done yet, so tag it.An adjacent feature or ticket stays out unless it blocks this one. When the capsule and thread lines outgrow a screen, cut detail before you cut threads. Write the brief through the unslop skill, cite chat findings by thread ID and shared-record findings by their source (PR #, ticket ID, chat permalink, error-tracker issue), and sanitize private context before any public output.
Reply: the brief, to the contract above.
Take uzairansaruzi/recall from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.