01One home for each kind of thing
Tasks live in the issue tracker, one per task. Status lives on a board the tracker feeds automatically. Orientation for a newcomer lives on one generated page built from small per-feature stubs. Design lives in a spec written before building; a pull request names its spec in its body rather than editing a shared spec file. Tasks live in issues, not a tasks file. A dependency bump needs no manual entry. Decisions are kept one file each, numbered so two agents never take the same number. Nothing is appended to a shared page just to pass a check, and a move on main in docs, specs or status never costs a green pull request a re-run.
02Eleven hooks, thirteen refusals
Dangerous commands are refused before they run, each with one sentence saying what to do instead. Some hooks carry more than one refusal. A stop hook refuses to let a task end with uncommitted files, stray images, or a server still running. The full list is below.
03A merge queue that batches
Finished, green pull requests are combined in the queue's own worktree, tested together, and merged as one. What conflicts or breaks is dropped, not everything. The steps are below.
04A session brief
When an agent starts, it sees where the project stands in one network call, about two seconds. It opens with today's date in the owner's time zone, the zone every date in the repository is written in. No reading twenty files to find out who has the ball.
05Three skills
Stand a project up, find out where everything stands, and propose the next round. Each one reads the project rather than asking you to describe it. The bootstrap survey opens by asking whether a sibling repository can supply the stack. Branch protection and the database are one script each: the rules the queue needs on main, and the project's Supabase database with the password written only to the env file. Only the board's built-in workflows stay manual, because GitHub has no API for them. One script files an issue through REST with its State label in the same call, and another prints the API budget on demand. The board script prints the board's address when it finishes and the agent hands that link to the owner, since the board is the status report and nobody finds it by hand.
06CI that runs only what changed
A pull request runs in three runner jobs: one runs every cheap rule check after a single checkout, one installs once and runs the type-check, tests and build, and a summary check reports the result. A newer push cancels a pull request's older run, and every check diffs the pull request from current main. The rule checks: change classification, a spec check, a setup-manual check, a shared-code check, a numbering check so parallel pull requests never take the same migration number, a line-endings check, and a nightly audit that speaks only when something is wrong. A project chooses which source folders the spec check covers. The spec check reports a diff it could not read, or pull request text it was never given, as exactly that, never as a missing spec. Every app change also gets a production build, and a check fails when code hands process.env to the browser whole. After each deploy, a smoke workflow loads the live site in a real browser and raises the alarm on any console error. A red main opens an issue only for the newest commit on main and closes it when the next run passes. A cancelled job is re-run once rather than counted as a failure, and a job that fails once and passes on re-run is recorded as a flake, the same way a test is. Self-hosted Windows runners are first-class: the templates say where jobs run and which shell they get, PowerShell steps name their own execution policy, so a locked-down machine still runs them, the installer refuses to run unelevated, installs one folder per repository, and reads the repository from the git remote rather than the API so a spent API budget cannot stop an install, a doctor script checks the machine before any run, and an hourly watch reports a runner gone quiet.
07An owner console
One page from one config file: what the project talks to, the state of each system, and how to do the routine things. A live picture of the merge queue labels every machine's work, whether a pull request, the batch, or main's test, deploy and build runs, and explains each step on hover. Neither the console nor the queue fails silently: when something stops, they say what and where. It also shows what agents do after a rule stops them: follow the guidance, ask the person, retry, move on, or reach the same result another way, which it flags in red. Each rule gets a follow rate. Only the rule's name and the session are recorded, never the command, and the record can be turned off.
08A sync that respects your edits
Keeps each project's copies of the scripts current with the plugin, feature by feature: it can apply one feature on its own, never adds a set of tools the project already has its own version of, keeps any local edits rather than overwriting them, and says what it left alone. A project can take over a plugin file outright, and the sync never writes it again. It can also stage its changes without committing, for a person to review first. It never rewrites a project's own CI file; a project on an older CI layout gets a step-by-step migration guide instead. Applied on a feature branch, it commits there rather than creating a dated one. A workflow it adds takes its runner and shell from the project's own CI file when that already says, filled in literally, and it refuses to commit a workflow holding a stray control byte; and the report names the secrets and variables each added workflow reads.
09Deploys that keep the bill down
With a host's defaults, every push to every branch is a build, and build time is most of the bill. One setup script picks the cheapest path the project can take. First choice: build on the project's own Linux or macOS runner and deploy the finished output on a schedule, so the host builds nothing. Second: a scheduled deploy the host builds. Third: deploys from main only, skipping changes that cannot affect the app, at most one an interval. Release builds, such as app store uploads and test distributions, pass the same deploy gate first, so a busy day of merges makes one release, not dozens. A project can choose to start them only when a person asks, and the queue never starts a release workflow that is turned off. A deploy that falls back to a host build says so, and the session brief and nightly audit say when deploys fall behind. The owner console lists the two settings with no API: the cheapest build machine and a spend cap.
10One design source
A project with a web app and a phone app starts with one design source: colors, type styles, spacing and icons in one file, generated into every platform's code, so a change is one line and the two apps never drift apart. A check stops any screen from using a hard-coded color, size or font, flags a screen whose two platforms use different type styles, and tracks when each screen was last compared across platforms by eye. It prints one line per step and ends after 90 seconds naming the step it was on.