Agent Toolkit
MCP servers, plugins, skills, and patterns I actually use with Claude Code
I run Claude Code most of the day, across a dozen projects and from my phone. This is the short list of what’s stuck. Everything here is something I use, not something I’ve only read about. Filter by MCP Server, Plugin, or Skill, or jump to the patterns.
Tools
| Title | Description | Categories |
|---|---|---|
| AgentMail | Real email inboxes for agents, over an API and MCP server. I pair it with a PreToolUse hook that blocks any send to an address outside an allowlist. | MCP Server |
| Anthropic Skills | The official skills repo. skill-creator (write, eval, and tune your own skills) earns its keep; the docx/pdf/pptx/xlsx skills handle real office files properly. | Skill |
| Claude in Chrome | Drives your real Chrome — with your existing sign-ins — from Claude Code. The right tool for authenticated dashboards and anything without an API; the wrong tool for apps you control (expose those over MCP instead). | MCP Server |
| Compound Engineering | Every’s Claude Code plugin built around a plan → work → review → compound loop. The persona-based code review (correctness, security, maintainability, and more, each confidence-gated) is the part I use most. | Plugin |
| GBrain | Persistent memory for agents. A markdown repo is the source of truth, indexed into embedded Postgres + pgvector and exposed as MCP tools for hybrid search and page reads/writes. My agents read a handful of canonical pages at session start instead of guessing. | MCP Server |
| Notion MCP | Notion’s hosted MCP server. Useful as a durable, shareable place for agent output that people will come back to. | MCP Server |
| Paper Writing Skill | SNL-UCSB’s academic writing pipeline (brainstorm, draft, audit, compress), distilled from thousands of real manuscript edits and reviews. I run it with my own layer for venues and a citation-integrity check. | Skill |
| map-mcp | Mine. Lets an agent drive and perceive a live MapLibre GL map — pan, zoom, query features, read what’s on screen — with a matching CLI for humans. | MCP Server, Built by me |
| pm-dogfood | Part of pm-system. Acceptance-tests a shipped library the way a stranger would — clean-room install from the published package, follow only the docs, then file the gaps between docs and reality. | Skill, Built by me |
| pm-system | Mine. An autonomous product-manager funnel — discover OSS opportunities, kill-test each one on four independent axes, RICE-rerank the survivors, draft specs, and dogfood what ships. Stops at a human gate before anything is built. | Plugin, Built by me |
| streamlit-mcp | Mine. Serves any Streamlit app as an MCP server, so an agent operates the app’s widgets directly instead of clicking through a browser. | MCP Server, Built by me |
Patterns
Most of what makes agents useful isn’t a tool. It’s habits around the tools. These came from things breaking.
Name every session, and keep a manifest
Launch each session with an explicit name and session ID (claude --name <name> --session-id <uuid>), and append a row to a plain TSV: timestamp, ID, name, working directory. A small wrapper script can then list what’s running, kill a session by name, or resume one that ended days ago, without digging through ~/.claude/projects for the right transcript.
Make sessions reachable from your phone
Start long-running sessions with --remote-control so you can check in and steer from anywhere. Two things silently break this:
- The folder-trust dialog. A session waiting at “Do you trust this folder?” never registers for remote control. Pre-trust the directory before launching. If several launches can run at once, serialize writes to
~/.claude.json: two racing writes once wiped the trust settings for every project. - The large-session resume prompt. Resuming a big or old session asks whether to resume from a summary or in full, and that prompt blocks remote control. Run
/compactheadlessly first, then resume. The session is small enough that the prompt never appears.
Back up transcripts additively
Session transcripts can disappear. I lost three multi-day sessions in one afternoon. A scheduled job copies ~/.claude/projects and ~/.claude/file-history every 30 minutes, without mirroring or purging, so a file deleted from the live folder survives in the backup. Only an age-based retention rule ever deletes anything. To restore, copy the .jsonl back and run claude --resume <id>.
Enforce with hooks, not prompts
A sentence in a system prompt is advice; a PreToolUse hook is a guarantee. Anything that leaves the machine, like email, posts, or deploys, gets a hook that checks the tool call and exits with code 2 to block it. My email hook allows sends only to an allowlist and logs every reply. This is what makes running in bypassPermissions mode reasonable.
Give agents a memory, and let it consolidate overnight
A fresh session knows nothing about you. Keep canonical facts (who you are, current priorities, how you like to work) in a markdown knowledge base with git history. Have every session read a few core pages first, and write back what it learned at the end. A nightly job turns recent transcripts into plain-text digests and runs a consolidation pass, so lessons from today’s sessions are in the brain tomorrow. See GBrain.
Turn what agents make into apps on a private shelf
When a session produces something I’ll come back to, I ask for it as a small interactive app, not a chat reply that scrolls away. That covers a technical course for work, a brief from a discussion, a playbook, or a draft I’m writing. Each one gets its own auth-gated private URL and a card on a private hub page, grouped by topic. There are about forty so far.
The routine stays cheap because every app has the same shape:
- No build step. Each app is static files: React through
htmand ES modules from a CDN, a shared sign-in gate, and one file per chapter. An agent can write it, and I can read the diff. - Verify before shipping. Syntax-check every module as ESM (a CommonJS check passes things that break in the browser), then render every chapter in a headless browser. Behind a sign-in gate, one broken chapter just shows a blank page, and nobody files a bug about it.
- Commit to deploy. The session registers the new app on the hub and commits; CI deploys it. Nothing gets copied around by hand.
- Treat the gate as a door, not a vault. A client-side sign-in keeps casual visitors out, but the private URL is what actually keeps the apps hidden. Anything truly sensitive belongs somewhere with server-side auth.
Split scheduled routines so each fits its time limit
I dogfood each library I maintain nightly with cloud-scheduled Claude Code routines: a clean-room install from PyPI, using only the docs, filing a GitHub issue for each gap. One routine covering all six libraries kept timing out, because a scheduled run has a wall-clock limit. Six small routines, staggered across an hour, fit easily. Plan around the time limit, not the token budget.
Launch interactive sessions in their own terminal
On Windows, starting claude through an inline powershell -Command re-parses the quoting. Long prompts get cut to their first word. Open a new terminal instead (wt.exe -d <folder> ...) and run the launcher script there.
Using something I should know about?