pstack is a collection of plain Agent Skills and engineering principles that guide AI-assisted software development across coding agents such as Claude Code, Codex, Pi, Cursor, and OpenCode. It is for developers who want reusable practices for tasks including testing, technical writing, debugging, review, and coordinating agent work. The catalogue entries are the project's skills, agents, and plugin.
Getting it into your agent
This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.
/plugin marketplace add backnotprop/pstack/plugin install pstackWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/backnotprop/pstack/recall)<a href="https://agentmods.dev/skills/backnotprop/pstack/recall"><img src="https://agentmods.dev/badge/skills/backnotprop/pstack/recall/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/backnotprop/pstack/recall"><img src="https://agentmods.dev/badge/skills/backnotprop/pstack/recall.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- Socket pass
- Snyk warn
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00077 | $0.01428 |
| Opus 5.5 | $0.00031 | $0.00571 |
| Sonnet 5.5 | $0.00015 | $0.00286 |
| Haiku 4.5 | $0.00008 | $0.00143 |
Grade A, and why
recall scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 6d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
This is a copy
94% identical to recall — 24 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 42 lines — stays where its author put it; the contents beside it link to each section on GitHub.
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 transcripts alone.
Transcripts live where your harness keeps them. Each file is JSONL. Find the active workspace's directory for your harness. If you can't tell which harness you are, check which of these exist for this workspace:
- Cursor:
~/.cursor/projects/<slug>/agent-transcripts/<uuid>/<uuid>.jsonl.<slug>is the workspace path with the leading slash dropped and each "/" turned into "-" (/Users/you/projbecomesUsers-you-proj). - Claude Code:
~/.claude/projects/<slug>/<session-id>.jsonl.<slug>is the workspace path with every character that isn't a letter or digit turned into "-" (/Users/you/projbecomes-Users-you-proj). - Pi:
~/.pi/agent/sessions/--<slug>--/<timestamp>_<id>.jsonl.<slug>is the workspace path with the leading slash dropped and each "/" turned into "-" (--Users-you-proj--). - Codex:
~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl, not grouped by workspace. Keep only files whose first line haspayload.cwdequal to the workspace path. - OpenCode:
~/.local/share/opencode/storage/. Sessions are JSON files undersession/<project-id>/, with their messages undermessage/andpart/.
- Classify, then route. One specific prior chat to resume is the
session-pickupplaybook, not this. Turning habits into a durable skill isautomate-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. - Lock the scope before searching. Pin the window ("recent" is a real range, default the last 7 days), the topic if named, and the workspace (default the active one. Never read another project's transcripts without being asked). State the scope back. Never quietly turn "all" into "recent N".
- Fan out across your chat history. Spawn parallel subagents on a fast, cheap model, each taking a slice of the corpus. Tell every subagent to order candidates by real modification time (
ls -t) and never by UUID name, grep the topic first and then read only the matching chats and only their relevant regions, and skip the current chat plus obvious noise (subagent, eval, and test chats). Each returns the same schema, one block per chat: topic, the user's goal, decisions, open threads, struggles and corrections, and artifacts (PRs, tickets, branches), each citing the chat UUID. For one or two chats, skip the fan-out and search directly. The raw transcripts stay in the subagents. The main thread gets only their findings. Pick each subagent's reasoning level and fast or standard speed for the job, per the Subagents section of the poteto-mode skill. - Sweep the shared record whenever the topic names a feature, file, subsystem, area, or bug. This is the default, not a judgment call, and "my work on X" does not exempt it. Hand it to the why skill's source investigators, but steer their question from "why was this built this way" to "what's the current state, what's been tried and didn't hold, and what are users still reporting". Reuse its per-source playbooks, run the investigators in parallel with the chat-history mining, and inherit its posture: one investigator per source, null results are findings, skip an unavailable MCP and say so. Fold what comes back into the brief. Skip this step only for pure activity recall with no named target ("what did I do this week"), where your own history and live state are the entire answer.
- Verify against live state. Take the PRs, branches, and tickets that the mining and the sweep surfaced and check them with
gitandgh. When the answer hinges on what an agent actually did (the tools it ran, files it read, errors it hit), read the full transcript, not just a trimmed local copy. - Write the brief to the contract below. Group by thread. Stay on the named topic.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 6d ago Changed c0a208e084bb
- 1mo ago Changed · +6 lines d5c39c7d80af
- 1mo ago First seen · 36 lines · 77 tokens per session scan A 90d290daec50
recall is a skill published in the GitHub repository backnotprop/pstack (2,498 stars, last pushed yesterday), licensed MIT. It adds 77 tokens to every session and 1,428 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. It is 94% identical to recall, differing in 24 lines, and is treated as a copy.
Other skills, from other repositories
bootstrap-agent-identity
Consistent agent behavior after restart — progressive identity loading, working context reconstruction from persistent artifacts, fresh-vs-continuation detection, calibration through centering and attunement, and identity verification for coherence. Addresses the cold-start problem where an agent must reconstruct who…
coordinate-reasoning
AI internal coordination using stigmergic signals — managing information freshness in context and memory, decay rates for assumption staleness, and emergent coherent behavior from simple local protocols. Use during complex tasks where multiple sub-tasks must coordinate, when context has grown long and information…
log-session
Append a structured entry to the project's session log (docs/LOGS.md): what was done this session, files touched, decisions taken, and the next step — so the next session (or another person) can pick up the thread without re-reading git history. Run it before /clear, before closing your agent session, or at any…
context-engine
Loads and manages company context for all C-suite advisor skills. Reads /.claude/company-context.md, detects stale context (>90 days), enriches context during conversations, and enforces privacy/anonymization rules before external API calls. Use when starting any C-suite advisor session, when context looks stale or…
decision-logger
Two-layer memory architecture for board meeting decisions. Manages raw transcripts (Layer 1) and approved decisions (Layer 2). Use when logging decisions after a board meeting, reviewing past decisions with /cs:decisions, or checking overdue action items with /cs:review. Invoked automatically by the board-meeting…
decide
/cs:decide — Log a decision to two-layer memory via decision-logger. Approved memo becomes durable; raw transcripts kept for reference. Use when the founder has approved a boardroom memo and the decision must become durable company memory — e.g. right after /cs:boardroom concludes.