Stop babysitting your AI coding agent.
The Agent Ops Kit is the D.O.E. framework — Directive / Orchestration / Execution — that turns Claude Code, Cursor or Codex from a clever intern into a reliable operator: it reads an SOP, runs a deterministic script, and writes what it learned back into the SOP.
Secure checkout by Stripe. Works with Claude Code (CLAUDE.md, skills, a guard hook), Cursor (.mdc project rules), Codex (AGENTS.md) and Gemini CLI (GEMINI.md).
Try the free version first (Claude Code plugin, MIT): /plugin marketplace add skibuff22/agent-ops-kit-lite then /plugin install agent-ops-kit-lite@calyx-ai. It scaffolds CLAUDE.md, a directive and the secrets linter, and adds /verify-claims for drafts. Source on GitHub.
# CLAUDE.md (excerpt) Layer 1 — Directive: SOPs in directives/*.md Layer 2 — Orchestration: you. Route, don't do. Layer 3 — Execution: scripts in executions/ 1. Fix the root cause, not the symptom. A retry/reset/reprocess is RECOVERY, never a fix. 5. Every bug fix gets a test AND a standard. 6. Repair → deploy → verify → THEN recover. Mandatory checks before touching: | Deploys | directives/deploy_service.md | | Bug fixes | directives/core/bug-fix-standard.md |
What it stops
- Secrets in git.
lint_secrets.pyruns before a commit and fails on hard-coded Stripe, GitHub, AWS, Slack, OpenAI and Anthropic keys and private keys. It found a live Stripe secret in this store's own repo (below). - Instructions that point nowhere.
lint_directives.pyfails when CLAUDE.md or a directive references a script or directive that does not exist. It caught the kit's own CLAUDE.md doing that before release. - Risky shell commands, before they run. In Claude Code, the kit's
guard_bash.pyhook blocks a commit while the secrets linter finds a key,--no-verify, force-push,rm -ron/,~or the project root, and an ad-hocpip install requeststhat never reaches requirements.txt. The agent sees why and what to do instead. - "Fixes" that only hide the failure. The bug-fix standard makes the agent name the root cause and add a test that fails before the fix (plus a written rule when it is a pattern); the operating principles treat a retry, reset or reprocess as recovery, never as the fix.
The hook on real commands (captured 2026-11-07)
A throwaway git repo with the kit's hooks/ and the example settings.json, Claude Code 2.1.312. Output unedited except for line wrapping. The last part is headless Claude Code, told to run pip install requests and not to work around a block.
$ pip install requests [guard_bash] ad-hoc `pip install requests` blocked: the package would be missing from the requirements file, so the next machine (CI, prod) breaks. Add it to requirements.txt (or pyproject.toml) with a version pin, then `pip install -r requirements.txt`. Set AOK_ALLOW_ADHOC_PIP=1 to allow this per project. exit 2 $ git push --force origin main [guard_bash] force-push blocked: it can delete commits on the remote. Use `git push --force-with-lease` after checking `git log origin/<branch>..`, or ask the human. exit 2 $ git push --force-with-lease origin main exit 0 # claude -p, after the block: A project hook (`hooks/guard_bash.py`) blocked `pip install requests`, because a package installed ad hoc wouldn't be listed in a requirements file and CI or prod would then break. Instead, I'd add `requests` with a version pin to `requirements.txt` (or `pyproject.toml`) and run `pip install -r requirements.txt`, which is what the hook asks for, or you could set `AOK_ALLOW_ADHOC_PIP=1` if you really want a one-off install.
Why agents fail on real work
A model that's 90 % reliable per step is 59 % reliable over five steps. Real tasks are ten to fifty steps. If the agent executes everything itself — fetching, parsing, transforming, deploying — compounding error does the rest, and you end up watching it.
D.O.E. moves everything with a right answer into tested code and leaves the agent exactly one job: deciding what to run next. Then it makes the system self-annealing — every failure becomes a test, a rule, and a lint, so month three is dramatically better than week one.
What's inside (42 files)
CLAUDE.md that sets out the loop
The 3 layers, 6 operating principles, the self-annealing loop, a mandatory-directive-checks table, and a definition of done.
4 core directives
Operating principles, self-annealing loop, bug-fix standard, agent governance. They are project-neutral, so the same four files can go into every repo.
3 complete example directives
Deploy a service, QA a website, scrape a site — each with Goal, Inputs, Execution tools, Outputs, Edge cases & learnings and Verification sections (the sections lint_directives.py checks for).
7 execution scripts
Script template (argparse, .env, retries, exit codes), directive↔script linter, secrets linter, anneal log, headless QA/SEO crawler, SSH deploy with CRLF/BOM fix, robots-aware scraper.
24 tests
For the two linters, the QA crawler's link check and the guard hook, including one that runs the directive linter on the kit itself. The deploy, scrape, anneal and template scripts have no tests yet.
Multi-agent templates
PM agent + worker agent definitions, an example agent registry, work-authorization rules (an agent works only on tasks from the owner or its PM agent) and a no-meta-work-before-product-work rule.
3 Claude Code skills
qa-test, deploy, project-status: short SKILL.md files (13-18 lines) that tell Claude Code which script to run.
Claude Code guard hook
A PreToolUse hook for the Bash tool plus a settings.json example: blocks the five command types under "What it stops" and tells the agent why, with the alternative in the message. --force-with-lease and pip install -r pass.
Cursor rules + a FastAPI stack file
Three .mdc project rules (D.O.E. core, Python + FastAPI, Linux deploy) and a CLAUDE.md addendum for FastAPI services: pinned dependencies, settings from the environment, HTTPException errors, a test per endpoint change.
3 guides
Why D.O.E. works · Adopting it in an existing codebase (day 1 / week 1 / month 1) · Running a fleet of agents without burning a fortune.
File tree
agent-ops-kit-v1/
START-HERE.md
CLAUDE.md
LICENSE.txt
CHANGELOG.md
directives/
00_template.md
core/operating-principles.md
core/self-annealing-loop.md
core/bug-fix-standard.md
core/agent-governance.md
examples/deploy_service.md
examples/qa_website.md
examples/scrape_website.md executions/
00_template.py
lint_directives.py
lint_secrets.py
anneal.py
qa_website.py
deploy_service.py
scrape_website.py
tests/ (4 test files, 24 tests)
hooks/guard_bash.py
settings.example.json
cursor/rules/doe-core.mdc
python-fastapi.mdc · linux-deploy.mdc
stacks/fastapi-python-linux/CLAUDE.md
skills/qa-test · deploy · project-status
agents/pm-agent.md · worker-agent.md
registry.example.json
docs/why-doe.md · adopting-doe.md
running-a-fleet.mdTwo real findings from building this very store
A live Stripe secret turned up hard-coded in an old helper script in the seller's own repo. lint_secrets.py now runs before every commit there — and lint_directives.py caught the kit's own CLAUDE.md pointing at a directive that didn't exist:
$ py executions/lint_secrets.py ERROR executions/create_links.py:3: stripe live secret lint_secrets: FAIL (1 findings) $ py executions/lint_directives.py ERROR CLAUDE.md: references directives/scrape_website.md which does not exist lint_directives: FAIL (7 directives, 1 errors)
(Both fixed before release. The kit itself passes both linters, and a test runs the directive linter on it.)
Who it's for
| You | What changes |
|---|---|
| Solo dev / founder shipping with Claude Code or Cursor | The agent reads an SOP before acting and stops re-learning your gotchas every session. |
| Small team adopting agents | Shared directives are your team's operating manual; new people (and new agents) onboard from the same files. |
| Running several agents | Work authorization, one-agent-per-capability, deploy approval gate, meta-work cap — rules that each cost a real incident to learn. |
FAQ
Does it only work with Claude Code?
No. CLAUDE.md is the canonical file; Cursor users copy the three .mdc rules into .cursor/rules/; Codex and Gemini CLI users paste CLAUDE.md into AGENTS.md / GEMINI.md. The directives and scripts are tool-agnostic (plain Markdown and Python 3 scripts).
Is there a free version?
Yes — a lite version (CLAUDE.md + one core directive + the secrets linter, plus the /verify-claims skill) is on GitHub, installable as a Claude Code plugin. The paid kit adds the other directives, all scripts and tests, the skills, the agent templates and the guides.
Why not just write my own CLAUDE.md?
You can, and the free plugin gives you ours to start from. A CLAUDE.md is only advice; the agent can ignore it. The paid kit is the part that checks: linters (with tests) that exit with an error, directives written after real incidents on a running business platform, and the loop that turns each failure into a test and a rule. If the free version is enough for you, keep using it.
How is it delivered?
Instantly: a download page right after checkout plus the same link by email (valid 30 days). Updates are emailed to every buyer free.
Refunds?
14 days, no questions — reply to your receipt email.
Who made this?
Calyx AI is a product line of Quality Tester Solutions LLC (St. Petersburg, FL), a small engineering company that builds test equipment and runs its own CRM, invoicing and inventory platform with a fleet of AI agents using exactly this framework.
Agent Ops Kit v1
Instant download · free updates · 14-day refund · license for unlimited projects you own or work on
Buy nowPublish Gate v1: check AI-assisted posts before they go out
The gate this store's own agent runs before it posts anything. verify_post.py checks a draft against your facts.md and voice.md: stock AI phrases and your own banned list, numbers that are not in your facts file, dead links, checkout links without utm_source, then an LLM claim-by-claim check. If the LLM is unreachable the gate fails; it never passes unverified. A PASS writes the draft's sha256, and the publishers refuse a draft that changed after it passed.
In the zip
verify_post.py, publish_common.py, an example dev.to publisher, facts and voice templates, a directive for your coding agent, an example post and 8 tests. Python 3.9+, no third-party packages. Uses claude -p by default; set PUBLISH_GATE_LLM for any other model CLI.
What it does not do
It does not write posts for you, and it cannot catch a false fact you put in facts.md yourself. The LLM check is a second opinion; the deterministic checks are the floor.
Same terms as the kit: instant download, 14-day refund, license for projects you own or work on. The bundle is both zips unchanged in one download.
