auto-merge

Solid

Automatically merge open PRs that have passing CI, no blocking reviews, and no conflicts

Code & Development 508 stars 166 forks Updated today MIT

Install

View on GitHub

Quality Score: 94/100

Stars 20%
90
Recency 20%
100
Frontmatter 20%
70
Documentation 15%
100
Issue Health 10%
50
License 10%
100
Description 5%
100

Skill Content

<!-- autoresearch: variation C — safety-hardened (author allowlist, size cap, UNKNOWN retry, fork block, dry-run mode) so an autonomous agent with merge credentials cannot accidentally ship a hostile or oversized PR --> > **${var}** — Repo (owner/repo) to target. If empty, uses every repo in memory/watched-repos.md. > Env: `AUTO_MERGE_DRY_RUN=1` logs intent without merging. `MAX_AUTO_MERGE=N` caps merges per run (default 3). Merge open PRs that are fully green **and** pass an explicit safety policy. The policy exists because this skill runs autonomously with write access — a bug in the gate is a bug that ships to main. Read memory/MEMORY.md and memory/watched-repos.md for repos to target. Read the last 2 days of memory/logs/ to avoid re-logging PRs already merged. ## Safety policy A PR merges only when every one of the following holds: - **Author allowlist**: `author.login` is one of `dependabot[bot]`, `renovate[bot]`, `github-actions[bot]`, OR appears under a `## Trusted Authors` section in memory/watched-repos.md. No allowlist → only the three bot logins are eligible. - **Size cap**: `additions + deletions ≤ 500`. Override by applying the label `auto-merge-large` on the PR. - **Base branch**: `baseRefName` is `main` or `master`. Refuse any other target. - **Not a fork**: `isCrossRepository == false` (fork CI can be tampered with). - **Not draft**: `isDraft == false`. - **Not already queued**: `autoMergeRequest == null` (avoid fighting GitHub's native auto-merge if a h...

Details

Author
aaronjmars
Repository
aaronjmars/aeon
Created
3 months ago
Last Updated
today
Language
TypeScript
License
MIT

Similar Skills

Semantically similar based on skill content — not just same category