maestro-merge

SkillDev tools

Merge 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.

Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

maestro-mergeStart free

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-cleanup flag 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

ConditionSuggestion
Next dep-ready sessionroute step analyze through /maestro-next or the canonical receipt-chained session open -> session chain insert --command analyze --arg "<goal>" -> run next flow

<error_codes>

CodeSeverityConditionRecovery
E001errorRunning inside a worktreeRun from main worktree
E002errorNo worktree registry foundNothing to merge
E003error--continue but no merge stateStart fresh merge
E004errorNo session ID providedProvide --session <session_id>
W001warningStale registry entries foundAuto-cleaned
W002warningIncomplete artifacts (without --force)Confirm or use --force
W003warningConflict pulling main into worktreeResolve in worktree first
W004warningSchema version mismatch between worktree and mainRun 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.json registry updated (entry removed)
  • worktree-scope.json removed 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