This is the toolkit I use when working with coding agents. Five plugins, vendored here so Claude Code, Codex, Pi, and OpenClaw can install them from a single Git clone. I package it as a marketplace because that's what the agents read.
Five tools, five jobs. I picked or built each one to do a thing the others don't.
Customer-facing writing. agent-writing is what I reach for when the output is going to be read by humans who'll notice if the prose is flat. Posts, customer-facing copy, anything where voice matters. It runs three voices as rivals: a journalist who investigates and grounds, a writer who drafts, and an editor who cuts. The writer and editor never call each other — the cycle is external to both — because cooperation creates sycophancy. A single agent that drafts and then polishes its own work will praise the parts it just wrote.
SEO content. agent-seo is my long-form pipeline for search — keyword research, drafting, humanizing AI-shaped prose, fact-checking, and optimizing against my existing site. /seo:fact-check ships as a first-class command because I want fact-checking inside the workflow, not bolted on after the article's already convinced me.
UI work. screenote gives the agent eyes. It captures the rendered page, publishes it through the OAuth-enabled Screenote CLI for human annotation, and pulls the comments back into the agent's context. I use it when the agent needs to see what it just built, instead of guessing from the DOM.
Project documentation. llm-wiki bootstraps and maintains an LLM-readable wiki for the project, indexed by QMD. I use it to keep what one agent learned available to the next one, across sessions and across machines. The pattern is Karpathy's — the wiki is the agent's memory, not mine.
Code review. agent-reviewer clones my team's best reviewers from their PR history and runs them as a review panel. It reads a reviewer's past comments in the context of the code they were reviewing and extracts a persona — what they care about, what they let slide, how they sound — not a rule list. Point it at several repos and it calibrates: separating the person's standards from what one codebase happened to drag out of them. It ships a cheat-proof, model-agnostic eval harness (plugins/agent-reviewer/eval/) so you can measure a persona against the real reviewer with any model and no way to game it.
/plugin marketplace add ivankuznetsov/agent-plugins
/plugin install agent-writing@aikuznetsov-marketplace
/plugin install agent-seo@aikuznetsov-marketplace
/plugin install screenote@aikuznetsov-marketplace
/plugin install llm-wiki@aikuznetsov-marketplace
/plugin install agent-reviewer@aikuznetsov-marketplace
codex plugin marketplace add ivankuznetsov/agent-pluginsOpen Codex, run /plugins, select aikuznetsov-marketplace, and install the plugins you want.
Clone this repository, then install any self-contained plugin directory:
pi install /path/to/agent-plugins/plugins/agent-writing
pi install /path/to/agent-plugins/plugins/agent-seo
pi install /path/to/agent-plugins/plugins/screenote
pi install /path/to/agent-plugins/plugins/llm-wiki
pi install /path/to/agent-plugins/plugins/agent-reviewerInstall the same copied directories as native OpenClaw packages:
openclaw plugins install /path/to/agent-plugins/plugins/agent-writing
openclaw plugins install /path/to/agent-plugins/plugins/agent-seo
openclaw plugins install /path/to/agent-plugins/plugins/screenote
openclaw plugins install /path/to/agent-plugins/plugins/llm-wiki
openclaw plugins install /path/to/agent-plugins/plugins/agent-reviewerSee the complete invocation and tested-version matrix in Agent compatibility. Screenote 2.x users should also read the JSON CLI migration before upgrading.
.claude-plugin/marketplace.json # Claude Code marketplace catalog
.agents/plugins/marketplace.json # Codex marketplace catalog
plugins/agent-writing # vendored plugin files
plugins/agent-seo # vendored plugin files
plugins/screenote # vendored plugin files
plugins/llm-wiki # vendored plugin files
plugins/agent-reviewer # vendored plugin files
Plugins are vendored as plain directories, not submodules. Codex reads marketplace-local plugin paths from a normal clone and doesn't initialize submodules first, so vendoring is what makes a single repo work for both agents. llm-wiki and agent-seo have upstream plugin repositories; screenote, agent-writing, and agent-reviewer are maintained here. The Screenote CLI remains its own public repository.
When refreshing a plugin from an upstream source repo, I copy the contents into the matching plugins/<name> directory without the nested .git metadata, then update both marketplace catalogs if the plugin metadata changed.
Validate the contract, generated packages, and offline behavior after any edit:
python3 scripts/validate-agent-packages.py --inventory
python3 scripts/generate-agent-packages.py --check
python3 -m unittest discover -s tests -vThe required package contract, offline security suite, and isolated native-host smokes are documented in Agent compatibility.
One principle shows up across all five plugins: ground claims before producing them. llm-wiki doesn't invent documentation — it reads source files and records uncertainty in wiki/gaps.md. agent-writing's journalist never writes the story they cannot ground; every citation in a brief is verified against reality before the brief is final. agent-seo runs fact-check as a workflow step, not a final polish. screenote exists because pixels are easier to lie about than to look at.
That's the style I want my agents to work in. The plugins are the implementation.