Skills and hooks that make Claude Code finish what it starts A developer built agent-harness, an open-source set of Agent Skills, rules and hooks for Claude Code and Codex that scales the agent's behavior to the request—from a simple fix to a full product or company workflow—and enforces completion with a Stop hook (done-check.py) that sends the agent back to work when results aren't verifiably finished. The harness adds evidence-based ledgers (READINESS.md, COMPANY.md, PORTFOLIO.md), standing approvals in OWNER.md with money, signing and new accounts reserved for the owner, and a scheduler that runs 'continue' in a project every few hours without a chat open. It installs idempotently via install.sh, works with any agent reading AGENTS.md and ~/.agents/skills, and ships an offline test suite. The most expensive thing a coding agent does is not writing a bug. It is ending a turn that sounds finished when it is not: "Deployed " with no URL checked, three requests with one done, or a list of "next steps for you" that the agent could have done itself. I run many projects through Claude Code and Codex at the same time, so I built agent-harness https://github.com/fainir/agent-harness : a set of Agent Skills, rules and hooks that change how the agent sizes, finishes and reports work. There is no service behind it; it is files in your agent's config. The harness reads what you asked and picks how to act: | You type | The agent acts as | It keeps | |---|---|---| | a question or a tiny edit | an engineer | nothing extra | | "fix the login bug" | engineer + QA | the matching row, if a ledger exists | | "make it production ready" | the whole product team: spec, build, UX review, QA of every flow, release gates, deploy | READINESS.md | | "get customers" | the CEO: product, growth, sales, support, money | COMPANY.md | | "finish all my projects" | a portfolio head with bounded parallel workers | PORTFOLIO.md | A fix stays a fix. A product request gets a ledger of every user flow and release gate. Every row in a ledger is verified only with evidence: a test run, phone and desktop screenshots, or a URL check. A Stop hook done-check.py reads your last request when the agent tries to stop and sends it back when the work is not verifiably finished. You write standing approvals once in OWNER.md : money caps, which accounts and channels the agent may use, which decisions it makes alone. Inside them it acts. Outside them it asks one exact thing: php NEEDS YOU 1 of 3 : Stripe - create the account - unblocks checkout Moving money, signing and creating new third-party accounts always stay yours. run-company/scripts/schedule.sh installs a launchd or cron job that runs continue in a project every few hours, with no chat open. Every friction and every owner ask is logged, and a weekly review tests one harness change against the current version on the same task before keeping it. git clone https://github.com/fainir/agent-harness ~/agent-harness && ~/agent-harness/install.sh The installer is idempotent and keeps your own content; ./install.sh --uninstall removes everything it added. It works with Claude Code and Codex, and with any agent that reads AGENTS.md and ~/.agents/skills . bash tests/test.sh runs the offline test suite hooks, learn scripts and a full install and uninstall cycle in a throwaway home . Limits, honestly: the agent is only as good as the model and the accounts it can reach, and background runs spend model usage while they run. Pause one with schedule.sh --remove