Add maintainer loop (orchestrator + triage skills)#1
Conversation
There was a problem hiding this comment.
Code Review
This pull request introduces two Claude Code skills (github-project-triage and maintainer-orchestrator) along with documentation (docs/MAINTAINER_LOOP.md) to establish an automated maintainer loop. The reviewer feedback correctly identifies several out-of-context references copied from another repository (such as the ITSEZMONEY organization and unrelated technologies like Drizzle) that should be updated to match the current repository's environment (adityash8 and Supabase). Additionally, a referenced script (scripts/fanout-maintainer-skills.sh) is missing and needs to be added or removed from the documentation.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| - Only broaden to multiple repos / the whole `ITSEZMONEY` org when the prompt | ||
| explicitly says `all`, `broad`, `org-wide`, or `everything`. |
There was a problem hiding this comment.
The reference to the ITSEZMONEY organization is copied from the gate-slip repository. It should be updated to the current organization/user (adityash8) to ensure the AI agent scopes its triage correctly.
| - Only broaden to multiple repos / the whole `ITSEZMONEY` org when the prompt | |
| explicitly says `all`, `broad`, `org-wide`, or `everything`. | |
| - Only broaden to multiple repos / the whole `adityash8` org when the prompt | |
| explicitly says `all`, `broad`, `org-wide`, or `everything`. |
| ## Risk heuristics (ITSEZMONEY / gate-slip context) | ||
|
|
||
| Treat as **high risk** anything touching: auth/Passport/OAuth, payments/Stripe, | ||
| `certificates/` or any key/secret, DB schema or migrations (`shared/schema.ts`), | ||
| the parsing pipeline's output shape (`flightDataSchema`, the dual-AI parsers), | ||
| or CI/release/`.env` config. Treat docs, copy, tests, lockfile/dep bumps, and | ||
| formatting as **low risk**. |
There was a problem hiding this comment.
The risk heuristics reference technologies and files from the gate-slip repository (such as auth/Passport/OAuth, shared/schema.ts, and flightDataSchema) which do not exist in this repository. Since exit-zero uses Supabase and Stripe, the heuristics should be updated to reflect the actual tech stack so the AI agent can accurately assess risk.
| ## Risk heuristics (ITSEZMONEY / gate-slip context) | |
| Treat as **high risk** anything touching: auth/Passport/OAuth, payments/Stripe, | |
| `certificates/` or any key/secret, DB schema or migrations (`shared/schema.ts`), | |
| the parsing pipeline's output shape (`flightDataSchema`, the dual-AI parsers), | |
| or CI/release/`.env` config. Treat docs, copy, tests, lockfile/dep bumps, and | |
| formatting as **low risk**. | |
| ## Risk heuristics (exit-zero context) | |
| Treat as **high risk** anything touching: auth/Supabase, payments/Stripe, | |
| `certificates/` or any key/secret, DB schema or migrations, | |
| or CI/release/`.env` config. Treat docs, copy, tests, lockfile/dep bumps, and | |
| formatting as **low risk**. |
| --- | ||
| name: maintainer-orchestrator | ||
| description: >- | ||
| Control-plane loop for maintaining ITSEZMONEY repositories. Use when asked to |
There was a problem hiding this comment.
| - It touches **none** of: auth, payments/Stripe, `certificates/` or any | ||
| key/secret, DB schema or migrations (`shared/schema.ts`, drizzle), CI/release | ||
| config, or anything in `.env*`. |
There was a problem hiding this comment.
The list of protected files and technologies includes shared/schema.ts and drizzle, which are not used in the exit-zero repository. Update this to reflect the actual database and authentication stack (Supabase).
| - It touches **none** of: auth, payments/Stripe, `certificates/` or any | |
| key/secret, DB schema or migrations (`shared/schema.ts`, drizzle), CI/release | |
| config, or anything in `.env*`. | |
| - It touches **none** of: auth/Supabase, payments/Stripe, `certificates/` or any | |
| key/secret, DB schema or migrations, CI/release | |
| config, or anything in `.env*`. |
| @@ -0,0 +1,113 @@ | |||
| # Maintainer Loop (cloud) | |||
|
|
|||
| A self-running maintenance loop for ITSEZMONEY repos: wake on a trigger → triage | |||
| 1. **Commit the skills.** They must live in the repo(s) the routine clones — | ||
| that's what this PR does. The fan-out script (below) copies them to every | ||
| ITSEZMONEY repo. |
There was a problem hiding this comment.
Update the organization reference from ITSEZMONEY to adityash8.
| 1. **Commit the skills.** They must live in the repo(s) the routine clones — | |
| that's what this PR does. The fan-out script (below) copies them to every | |
| ITSEZMONEY repo. | |
| 1. **Commit the skills.** They must live in the repo(s) the routine clones — | |
| that's what this PR does. The fan-out script (below) copies them to every | |
| adityash8 repo. |
| ## Fan out to all repos | ||
|
|
||
| ```bash | ||
| # Copy the skills + this runbook into every ITSEZMONEY repo and open a PR each. | ||
| scripts/fanout-maintainer-skills.sh # all org repos (needs gh + perms) | ||
| scripts/fanout-maintainer-skills.sh repo-a repo-b # just these | ||
| ``` |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: ad0682ad23
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| scripts/fanout-maintainer-skills.sh # all org repos (needs gh + perms) | ||
| scripts/fanout-maintainer-skills.sh repo-a repo-b # just these |
There was a problem hiding this comment.
Add the documented fan-out script
This setup step points users at scripts/fanout-maintainer-skills.sh, but that file is not present in the repo (the only file under scripts/ is scripts/setup.sh). Anyone following the documented "Fan out to all repos" workflow will hit a missing-file error before the skills can be copied or PRs opened, so either add the script in this change or remove/replace these commands.
Useful? React with 👍 / 👎.
| - Only broaden to multiple repos / the whole `ITSEZMONEY` org when the prompt | ||
| explicitly says `all`, `broad`, `org-wide`, or `everything`. |
There was a problem hiding this comment.
Remove the hard-coded source organization
When the routine is invoked with all/org-wide, this scope rule directs triage at the hard-coded ITSEZMONEY org even though this repository's metadata points to github.com/adityash8/exit-zero. That makes an org-wide ExitZero maintenance run inspect and potentially mutate the wrong organization while missing the intended owner/repo set; derive the org from the selected repositories instead of the copied source repo.
Useful? React with 👍 / 👎.
| (see *Autonomy policy* below). Stop touching an item the moment it stops | ||
| meeting the bar and reclassify it as needs-owner. | ||
| 5. **Escalate needs-owner items.** Don't guess at product/direction/secret | ||
| decisions. Label `needs-owner`, leave a one-paragraph comment stating the |
There was a problem hiding this comment.
Ensure the needs-owner label before applying it
When a needs-owner item is encountered in a repo that has not already created this custom label, this step can fail or leave the escalation unlabeled: the loop only ensures maintainer-ledger exists before applying it, and the repo does not include any label setup for needs-owner. Since this runbook is meant to bootstrap new repos, create/ensure the label before using it so owner-blocked items stay discoverable.
Useful? React with 👍 / 👎.
| 2. **Triage.** Invoke the `github-project-triage` skill to build item cards for | ||
| every open issue and PR (URL, what/why, author trust, fit, risk, proof/test | ||
| state, blockers, next action) and sort them into three buckets: | ||
| **autonomous · needs-owner · defer/close**. |
There was a problem hiding this comment.
Exclude the ledger issue from triage
After the first run creates the open ledger issue, this instruction still sends every open issue through triage on the next run, with no exception for the maintainer-ledger item. That means the durable ledger itself can be classified as backlog work and then deferred or closed by the later defer/close step, removing the state the loop relies on; filter the ledger issue out of the queue before building item cards.
Useful? React with 👍 / 👎.
ad0682a to
91e69ef
Compare
91e69ef to
d6c4e98
Compare
Adds the maintainer-loop tooling copied from gate-slip:
.claude/skills/maintainer-orchestrator/.claude/skills/github-project-triage/docs/MAINTAINER_LOOP.mdGenerated by Claude Code