1.9 KiB
1.9 KiB
name, description, disable-model-invocation, user-invocable, argument-hint, allowed-tools
| name | description | disable-model-invocation | user-invocable | argument-hint | allowed-tools | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| pr-review | Review a PR against the Oikos Hard Constraints and decide close/request-changes/merge | true | true | <pr-number> |
|
Run from inside oikos/. $1 is the PR number.
- Fetch —
gh pr view $1 --repo ulsklyc/oikos,gh pr diff $1 --repo ulsklyc/oikos,gh pr checks $1 --repo ulsklyc/oikos. Note failing checks. Delegate the deep read to thepr-reviewersubagent (Agent({ subagent_type: "pr-reviewer", ... })) so main-thread context stays free. - Constraint check — walk the diff against CLAUDE.md Hard Constraints:
- No frontend frameworks / bundlers / CSS libraries added
- No
require, onlyimport/export - No
eval, noinnerHTML - All UI text via
t('key');delocale updated - Migrations append-only (
server/db.js) - Design values from
public/styles/tokens.css - Route handlers wrapped in try/catch
- API shape
{ data }/{ error, code }Also check: PR has tests touching the relevanttest-<module>.js, CHANGELOG entry under## [Unreleased], commit subjects are Conventional Commits.
- Decide
- Blocking issue found →
gh pr review $1 --request-changes --body "<english, grouped by file:line>"and stop. - Not a fit → explain politely and
gh pr close $1 --comment "...". - Clean →
gh pr review $1 --approve --body "LGTM"thengh pr merge $1 --squash --delete-branch. After merge, fetchmainlocally and consider running/release-prep.
- Blocking issue found →
Guardrails
- Comments and review bodies: always English.
- Never merge with failing required checks. Never force-merge.
- Never close a PR without a reason comment — silent closes burn contributor trust.
- Never push directly to the PR branch. If a small fix is warranted, ask the contributor.