maestro-merge
SkillDev toolsMerge session worktree branch back to main
Use maestro-merge in Claude, ChatGPT or Ahel Desktop
Free. Sign in, add maestro-merge and connect your AI. About a minute.
Also: Claude Code · Cursor · Codex
Then ask your AI: use the maestro-merge skill
Details
Instructions available. Your AI can read the instructions. Execution depends on the setup they require.
Account requirements not reviewed. Check the skill instructions before use; Ahel provides instructions and does not run this skill.
No other account needed.
Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
What this skill tells your AI
The instructions your AI receives, as published by catlog22/maestro-flow in .codex/skills/maestro-merge/SKILL.md and read by Ahel’s review.
<required_reading>
@/.maestro/workflows/run-mode.md
@/.maestro/workflows/codex-run-mode.md
</required_reading>
Terminology: this command uses 'session' throughout. The underlying workflow file (merge.md) may use 'milestone' as a legacy alias for 'session'. Treat them as equivalent: --session maps to workflow's -m, state.json.sessions[] maps to state.json.milestones[].
Flags (--session, --force, --dry-run, --no-cleanup, --continue), merge sequence, artifact sync detail, and conflict handling are defined in workflow merge.md.
--dry-run short-circuit: execute GATE 1 health check only, display merge preview (files that would change, artifact sync plan), then EXIT before rebase/merge. GATE 2 and GATE 3 are not reached.
Gates (MANDATORY, BLOCKING)
GATE 1: Pre-merge → Git Merge
- REQUIRED: Registry health check completed (stale entries cleaned or flagged).
- REQUIRED: Pre-merge rebase successful (worktree has latest main).
- REQUIRED: worktree state.json schema version matches main state.json version. If mismatch → W004 (suggest running maestro-update in worktree first).
- BLOCKED if rebase has conflicts: resolve in worktree first (W003).
Note on --force: skips user confirmation for incomplete phase artifacts (W002). Does NOT skip conflict resolution or rebase. Specifically: GATE 1 and GATE 2 are unaffected by --force; GATE 3's artifact completeness check uses --force to bypass the W002 confirmation.
GATE 2: Git Merge → Artifact Sync
- REQUIRED: Git merge completed without conflicts (or conflicts resolved via --continue).
- BLOCKED if: merge has unresolved conflicts — do NOT sync artifacts until git merge succeeds (prevents partial state corruption).
GATE 3: Artifact Sync → Completion
- REQUIRED: All Run artifacts synced to main
sessions/{session_id}/runs/. - REQUIRED: Artifact registry reconciled (worktree entries merged into main).
- REQUIRED: Worktree cleaned up OR
--no-cleanupflag present. - BLOCKED if missing: artifacts not synced or registry not reconciled — main worktree would have incomplete state.
After successful merge, use request_user_input to confirm knowledge persistence:
question: "Merge 完成。是否记录本次工作经验教训?"
options:
- label: "记录经验"
description: "通过 maestro-spec add 持久化此次工作的关键洞察"
- label: "跳过"
description: "不记录,直接完成"
User selects "记录经验" → prompt for title/insight, then recommend /maestro-spec add learning "<title>" "<insight>" --keywords <kw1>,<kw2> --description "<summary>". User selects "跳过" → proceed to next-step routing.
Next-step routing
| Condition | Suggestion |
|---|---|
| Next dep-ready session | route step analyze through /maestro-next or the canonical receipt-chained session open -> session chain insert --command analyze --arg "<goal>" -> run next flow |
<error_codes>
| Code | Severity | Condition | Recovery |
|---|---|---|---|
| E001 | error | Running inside a worktree | Run from main worktree |
| E002 | error | No worktree registry found | Nothing to merge |
| E003 | error | --continue but no merge state | Start fresh merge |
| E004 | error | No session ID provided | Provide --session <session_id> |
| W001 | warning | Stale registry entries found | Auto-cleaned |
| W002 | warning | Incomplete artifacts (without --force) | Confirm or use --force |
| W003 | warning | Conflict pulling main into worktree | Resolve in worktree first |
| W004 | warning | Schema version mismatch between worktree and main | Run maestro-update in worktree before merge |
| </error_codes> |
<success_criteria>
- Registry health check passed (stale entries cleaned)
- Pre-merge rebase successful (worktree has latest main)
- Git merge completed without conflicts (or conflicts resolved via --continue)
- All Run artifacts synced to main
sessions/{session_id}/runs/ - Artifact registry reconciled (worktree entries merged into main)
- Session lifecycle updated (forked_from cleared)
- Worktree removed and branch deleted (unless --no-cleanup)
-
worktrees.jsonregistry updated (entry removed) -
worktree-scope.jsonremoved from worktree (even with --no-cleanup, to prevent stale scope detection) </success_criteria>
Signals
- GitHub stars
- 560
- Forks
- 68
- Last commit
- Sep 2026
Advanced
- Item type
- skill
- Key
maestro-merge- Source
- github.com/catlog22/maestro-flow
github.com/catlog22/maestro-flow