jules-merge Agent Skill
SkillDev toolsA skill for dev tools by google-labs-code.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the jules-merge Agent Skill skill
What this skill tells your AI
The instructions your AI receives, as published by google-labs-code/jules-sdk in packages/merge/SKILL.md and read by ahel’s review.
Workflow Order
Always execute commands in this sequence:
scan— detect conflicts and build the manifestget-contents— fetch file versions (base, main, pr:) for each hot zonestage-resolution— write resolved content for each conflicted filestatus— confirm all files resolved (ready: true,pendingis empty)push— create the multi-parent reconciliation commit and PRmerge— merge the reconciliation PR using a merge commit
Command Reference
scan
- Required:
prs(array of PR numbers),repo(owner/repo) - Optional:
base(branch name, default: main),includeClean
get-contents
sourcevalues:"base"|"main"|"pr:<N>"(e.g."pr:42")- Always check
totalLinesin the response — if it exceeds your context budget, surface to the user rather than attempting to process the file "base"= the common ancestor commit (merge base), not main
stage-resolution
parentsformat:"main,<prNumber>,<prNumber>"— always start with"main", followed by the PR numbers (as strings) that touch the file- Example:
["main", "10", "11"] - Either
content(inline string) orfromFile(local path) must be provided - Use
--dry-runto validate without writing to the manifest
push
mergeStrategyvalues:"sequential"(default) |"octopus"sequential: creates N 2-parent merge commits in a chain — required for GitHub auto-closeoctopus: creates a single N-parent commit — use for non-GitHub platforms or atomic history
- Check
warningsin the output — if"BASE_SHA_MISMATCH"is present, re-runscanbefore merging --dry-runis safe to call at any time; it validates without writingpushis idempotent: calling it twice on the same branch reuses the existing PR- When using
sequential, the output includesmergeChain— an array of{ commitSha, parents, prId }per step
merge
- Always uses merge commit strategy — never squash or rebase
- This preserves the ancestry chain that auto-closes fleet PRs via GitHub's "closes" detection
Exit Codes
| Code | Meaning | Action |
|---|---|---|
0 | Success | Continue |
1 | Recoverable conflict | Surface to user or re-scan |
2 | Hard error | Abort and surface to user |
Key Invariants
- Merge strategy: always
merge(not squash/rebase) — squash breaks the ancestry chain that closes fleet PRs - Push merge strategy: default
sequentialcreates 2-parent chain for GitHub compatibility; useoctopusonly for non-GitHub platforms - parents format:
["main", "<prN>", "<prN>"]— the string"main"is always first, followed by PR numbers as strings - Scan before push: if
pushreturnswarnings: ["BASE_SHA_MISMATCH"], re-runscanto refresh the base SHA before proceeding - Context window: check
totalLineson everyget-contentsresponse; if a file is too large for your context budget, surface to the user rather than processing it - Idempotency:
scanoverwrites the manifest;pushreuses an existing open PR on the same branch - No pending files:
pushwill throw ifstatus.pendingis non-empty — resolve all hot zones first
Schema Introspection
jules-merge schema <command> # input/output schema for one command
jules-merge schema --all # all schemas at once
Signals
- GitHub stars
- 129
- Forks
- 32
- Last commit
- Jul 2026
Advanced
- Catalog kind
- skill
- Gateway key
jules-merge- Source
- github.com/google-labs-code/jules-sdk