It started with a feature request that should have been straightforward. A simple API addition — new query parameter, validate it, pass it through. Three hours of work. The kind of ticket you assign to an agent and expect back before lunch.
What came back was technically perfect and completely wrong. The parameter landed on the wrong endpoint. The validation matched no existing pattern. The tests passed. The direction didn’t. Nobody caught it until PR review — because nobody was checking spec alignment between the ticket and the output.
That failure was not an edge case. It happened regularly. The browser that kept getting flagged by WAFs. The CLI that took forty-five minutes to set up on every new machine. The pull request that broke staging because nobody checked the dependency graph. The bookmark lost when the tab closed. Not one-offs — patterns.
Every artifact in this toolkit started as a fix for a recurring failure. The patterns draw from direct shipping experience — agentic workflows, browser automation patterns, tool-use architectures. None of this is theoretical.
The session failure
The feature request that went off the rails exposed the real problem. The agent was capable — it built the right thing for the wrong problem. The root cause was not intelligence. It was structure. No spec to anchor against. No review gate checking directional alignment before code quality.
The fix was a pipeline. Seven phases, codified as standalone skills: spec, plan, implement, test, review, simplify, ship. Each phase gates the next. Spec must pass before a plan is written. Plan must be reviewed before implementation starts. Implementation must pass review before shipping.

The first time we ran this pipeline, the agent stopped at the spec phase and asked for clarification on two ambiguous requirements. Not because it was confused — because the gate forced it to surface ambiguity before building.
Seven phases, each a standalone skill:
- Spec-driven development — requirements before a line of code ships
- Planning and task breakdown — decompose the spec into scoped tasks
- Incremental implementation — deliver in reviewable chunks, not one push
- Test-driven development — red-green-refactor, tests before code
- Code review and quality — five mandatory axes per commit
- Code simplification — strip complexity after delivery
- Shipping and launch — pre-flight checklist, deploy verification, rollback plan
The code review skill caught credentials that three human reviewers missed. The TDD workflow enforces discipline without a human to enforce it. The pipeline runs from spec to deploy without oversight.

The browser problem
Standard headless Chrome hits detectable flags within milliseconds — navigator.webdriver set, empty plugin arrays, different Permissions API behaviour. Most WAFs check these signals before the page loads. The fix was a Manifest V3 extension that strips those vectors at document_start, paired with an MCP wrapper that exposes navigation, extraction, and screenshot as native agent tools. Tested daily against production sites, not synthetic benchmarks.
The handoff cost
Every machine change, new teammate, or fresh install burned forty-five minutes rebuilding the toolchain. Same tools, different versions. Dependencies that worked on one machine broke on another. Config files scattered across five directories. The fix was a hard constraint: single-file tools with zero external dependencies. karakeep for bookmarking, opencode-analyzer for cost monitoring, email-triage for inbox filtering. They work the second they land on any machine — no pip install, no npm ci, no setup instructions longer than the tool code itself.
The knowledge problem
I save things constantly — articles, transcripts, product breakdowns, team output I want to revisit. The old pattern was save-and-forget. Links accumulated. Context evaporated. The fix was karakeep, a zero-dependency CLI that ingests content — URLs, YouTube transcripts, articles — and parses them into structured notes the system can actually read. Not just stored. Understood.

The enrichment pipeline pulls full text and transcripts automatically, so the system knows what each save is about. It maps interests, tracks learning trajectories, and surfaces relevant ideas and crew content based on where my head is at. A bookmarked article on agent architectures doesn’t just sit in a vault — it feeds the team’s understanding of what I’m focused on, and the relevant content finds its way back to me.
Where it proves out
None of this is hypothetical. The toolkit runs in production across a multi-agent crew:
- 20+ skills deployed across six specialist agent profiles
- Browser automation reaching pages that block standard headless Chrome
- CLIs running on machines that never shared a package manager
- Remote sessions that survive connection drops without losing state
The artifacts ↗
development/
Seven ordered SDLC phases — spec, plan, implement, test, review, simplify, ship. Multi-axis code review and TDD workflow.
productivity/
Context files so agents operate from your actual framework instead of a blank slate. Constitution, goals, business strategy.
tools/karakeep
Zero-dependency CLI that turns URLs into Obsidian notes. Tag, sync, enrich with transcripts and full text.
tools/
Single-file zero-dependency CLIs for the rest — email triage, OpenRouter cost analysis.
browser/
Headless automation that handles real WAFs. agent-browser CLI plus Manifest V3 extension and MCP wrapper.
extensions/
Browser fingerprint patches at document_start. Patches navigator.webdriver, plugins, arrays, languages, Permissions API.
mcp/
MCP servers wrapping browser automation as standards-compatible tools for any MCP-compatible agent.
autonomous-agents / hermes/
Pi agent integration wrapping the full RPC lifecycle — start, send, poll, wait, stop. Session recovery built in.
references / themes
Documentation references and theme files for the agent-toolkit site.
The feature request that went to the wrong endpoint? It goes through spec review first. The browser that got flagged loads the page. The CLI that took forty-five minutes to set up works in ten seconds. The bookmark lost when the tab closed is in the vault.
None of these fixes are clever. They just refused to treat recurring failures as acceptable.