Maintainer Guide¶
Rosey maintainer workflow for Agoras. Each step is a skill invocation; details
live in the skill files under .cursor/skills/.
Workflow overview¶
For each feature:
rosey-lfg-code— brainstorm requirements, create a plan, implement on a feature branch (viarosey-brainstorm,rosey-plan,rosey-work).rosey-lfg-quality— QA review, lint/build after fixes, open or update PR (viarosey-qa,rosey-pr). PRs targetdevelop. This skill does not merge PRs or fix CI; see Pull request CI and auto-merge below.
Repeat 1–2 for every feature in the release.
When develop is ready to ship:
rosey-release— publish a release (patch, minor, or major). Five gates: (1) Docker preflight (make release-preflight:make lint,make format,make test; on Python reposmake testruns coverage), (2)release/<version>branch pushed, (3) Push workflow (push.yml) on the release branch — see GitHub branch protection for the one-timepush.ymlpatch, (4) tag and GitHub release (scripts/release.sh/ git-flow finish), (5) Publish Release workflow (release.yml) after publish (PyPI build and publish) — gate 5 is verified byrosey-releaseaftermake release-*completes, not by the release script. Patch releases attach a retroactive milestone from eligible closed issues since the prior release (seerosey-release). Minor and major require explicit confirmation of milestone handling before release scripts run. On failure, rolls back withVERSION=<version> make undo-releaseand halts. Optional post-bump hooks live in.bumpversion.cfgunder[rosey-maintainer].
Pull request CI and auto-merge¶
``pr.yml`` — repo-specific CI on
pull_requesttodevelop. Each job’sname:field becomes a candidate required status check ondevelop. Static sync injects a managed Code Quality Semgrep job block when the quality bundle is present; it may strip legacypushbackup triggers andconcurrency. The dynamic phase may patch trigger/checkout security only (removepull_request_target, PR-head checkout, and in-file approve/merge jobs).``pr-auto-merge.yml`` — static-synced. Triggers on
workflow_runafter Pull Request completes successfully on an eligible head branch (feature/**ordependabot/**; notrelease/**). A gate job verifies the PR targetsdevelopand head branch eligibility, then approve/merge via the GitHub API (no checkout of PR code). All jobs in Pull Request (including Code Quality) must be green. Limited todependabot[bot],cursor[bot](Cursor PR automation), andgithub.repository_owner. ConfigureREPO_PERSONAL_ACCESS_TOKENwhen Dependabot merges need permissions beyondGITHUB_TOKEN.Cursor PR CI automation — one Cursor automation per repo (fleet prompts in rosey-maintainer-tools
docs/cursor-automations/<repo>.md; setup indocs/cursor-pr-ci-automation.md). Triggers on failed PR checks for owner/Dependabot PRs targetingdeveloponfeature/**ordependabot/**(not on directdeveloppushes). The agent pushes fixes to the PR head branch only; CI retriggers viapull_requestsynchronize(not workflow dispatch). It does not approve or merge. When the Pull Request workflow succeeds (all jobs green, including Code Quality when present),pr-auto-merge.ymlcompletes the merge.rosey-lfg-qualityandrosey-prdo not fix CI or merge.Auto-merge eligibility: head
feature/**ordependabot/**; basedevelop(gate); actor repo owner or Dependabot; required Pull Request workflow on samehead_sha(includes Code Quality when bundle present); excludedrelease/**, PRs not targetingdevelop, external contributors.
Skill reference¶
rosey-lfg-codeAutonomous code stage: requirements → plan → implementation and lint/build. Emits
ROSEY_LFG_QUALITY_HANDOFFfor the quality stage.rosey-lfg-qualityAutonomous quality stage: QA autofix, post-review lint, PR create/update. Emits
<promise>DONE</promise>when the PR is ready. Does not merge, watch, or fix CI, create milestones, or publish releases.rosey-releaseRelease only:
patch(default),minor, ormajor. Invoke from cleandevelop. Arguments:[mode:interactive|mode:non-interactive] [patch|minor|major]. Inmode:non-interactive, runsNON_INTERACTIVE=true make release-<type>(e.g.make release-patch). Gates 1–4 run insidescripts/release.sh; gate 5 is verified by the skill after the Make target succeeds.
Prerequisites (checked by release script)¶
git,git flow,docker(daemon running),make,gh(authenticated),bumpversion,gpguser.signingkeyconfigured with secret key available locallyClean working tree (no modified or untracked files)
GitHub branch protection (configure once)¶
`develop` — require PR; required status checks must match job name: fields
in .github/workflows/pr.yml (including Code Quality when the managed block
is present). Run rosey-maintain protect-github --apply
(after GitHub Pro on private repos) to create the Rosey: develop ruleset with
those checks (including matrix-expanded job names where applicable).
``master`` — restrict pushes; disallow force pushes.
``release/*`` — push.yml must list release/** under on.push.branches
and include a terminal Release Gate job after all CI jobs (one-time manual patch;
static sync does not manage push.yml). scripts/release.sh waits for the full
Push workflow to succeed on the release branch before tagging.
Version tags — restrict creation to maintainers; prevent tag deletion except by admins.