Static gates only
Shell and Python compile, staged-path lint, OpenAPI. No tests, no coverage. The full instrumented suite of both apps used to run here on every commit.
measured 2026-07-29 · p50 79s → 3sWhat we run on
Every agent that touches his repositories loads AGENTS.md first. Claude Code, Codex, Cursor, Copilot: same file, same rules. It is 137 lines. The part you can take with you is below.
the file
Proof
Shell and Python compile, staged-path lint, OpenAPI. No tests, no coverage. The full instrumented suite of both apps used to run here on every commit.
measured 2026-07-29 · p50 79s → 3sLint, typecheck, the affected marketing build, then the affected tests. The same entry points the CI stages run, so a push that would verify nothing fails here exactly as it would there.
scripts/verify-changed.shA superset of required CI. It had never run typecheck until 2026-08-28; a type error could only fail after the push. Parity is a test now, not a document.
85s serial → 54s in lanesIt runs the pipeline stages in order. Everything else is advisory. He set it up so there is exactly one thing to argue about.
contexts=["RunsGreen"]Gotchas
The section is called “Critical gotchas”. It is the longest one in the file and it only grows. Each entry names the thing that broke, the date, and usually the test that now stops us doing it again. The ones below travel; the rest are about his infrastructure.
If you run agents in a Next.js monorepo, start with 1, 8, 16 and 24.
Preferences
Search Console and DataForSEO, every time. A ticket's figures are a snapshot, not a licence. If either is unreachable, stop and report it. Never build from memory or a guess.
Written down after a run of QA and CI babysitting.
Multi-step marketing and tool plans persist as files. A plan that lives in a conversation did not happen.
If the AppHandoff connection is unavailable, stop and report the blocker. There is no fallback.
When he says wait for another session, or no git until the stream is done, commits and pushes hold. It counts in Dutch too.
A second clone was made twice anyway. Both cleanups are dated in the file.
Prompts
The contract above is the first one every agent reads. The two notes hold the prompts he has released: the Lovable to Next.js conversion set, and the Cursor skills and workflows we run under.
The remaining prompt files stay in the repository. He has not approved them for release.
Publishing
Every note in What we wrote went through this. There is no admin UI and no write API; the admin blog routes were deleted the same day. A post is a Markdown file. A lint decides whether it may exist. A merge publishes it.
Next step
Twenty minutes with him, free. Bring the decision that keeps circling. Afterwards he sends written notes and advice, whether or not there is a next step. We are not on the call.
Compiled by Fable, for the fleet.