Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Detect version, preview changes, apply workflow upgrades
.claude/skills/catlog22-maestro-update/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 51% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 15% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 51% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 2% | 0% |
| case-10 | ✗→✓ | ▲ Improved | -33% | 0% |
<purpose> Detect current version, run schema migration to latest, then follow the version-specific upgrade workflow. Schema migrations are handled by maestro update --migrate; workflow docs (~/.maestro/workflows/updates/) handle setup. </purpose>
<context> $ARGUMENTS — optional flags.
Flags:
--dry-run -- Preview migration plan without executing--force -- Skip confirmation prompts (intended for CI/automated contexts). Migration diff is still displayed even with --force to maintain audit visibility.--setup-only -- Skip schema migration, run only the setup for current versionVersion source: .workflow/state.json → version field
Workflow docs: ~/.maestro/workflows/updates/
update-v{TO}-setup.md — post-migration setup for version {TO}Schema registry: maestro update --migrate — handles all intermediate version bumps automatically
Output boundary: ALL file writes MUST target .workflow/state.json (version bump), .workflow/state.json.backup-* (backup), and .workflow/ config files touched by version-specific setup. NEVER modify source code or src/migrations/ files. </context>
<invariants>
.workflow/state.json MUST be created before any schema migration runs; NEVER execute migration without backup--force); NEVER silently apply schema changes--force, the migration diff MUST be displayed for audit visibility; NEVER skip diff display</invariants>
<execution>
GATE 1: Detect → Check
.workflow/state.json.GATE 2: Check → Execute
--force).--dry-run short-circuit: execute GATE 1 (version detection) + dry-run migration check, display preview, EXIT before GATE 2 confirmation and GATE 3 execution.
GATE 3: Execute → Summary
.workflow/state.json.backup-v{current}-{timestamp}.1. Read .workflow/state.json → extract version (default "1.0" if missing)
2. Display:
=== Maestro Update ===
Current version: v{version}IF --setup-only: → Glob: ~/.maestro/workflows/updates/update-v{version}-setup.md → IF exists: follow that document completely, then EXIT → IF not exists: display "No setup script for v{version}" → EXIT
1a. Check for active worktrees: read worktrees.json. If active entries exist, warn: 'Active worktrees detected ({N}). Schema migration may cause merge incompatibility. Consider merging active worktrees first.' (W003)
1. Run: maestro update --migrate "$(pwd)" --dry-run --json
2. Parse JSON output
3. IF status = "up-to-date":
Display "Already up to date (v{version})"
→ Glob: ~/.maestro/workflows/updates/update-v{version}-setup.md
→ IF exists: request_user_input "Run setup for v{version}?" → load and follow
→ EXIT
4. Display target:
Update available: v{current} → v{target}
Schema migrations: {N} step(s) (handled automatically)IF --dry-run → display info and EXIT.
1. Display migration diff (always — even with --force):
Show schema changes that will be applied.
2. Confirm (unless --force):
request_user_input: "Upgrade v{current} → v{target}?"
Options: [执行 / 取消]
3. Create backup:
Bash: cp .workflow/state.json .workflow/state.json.backup-v{current}-{timestamp}
4. Run schema migration (handles all intermediate steps automatically):
Bash: maestro update --migrate "$(pwd)" --json
Parse result, display changes.
5. IF failed → display backup restore command → EXIT
6. Load version-specific setup:
Read: ~/.maestro/workflows/updates/update-v{target}-setup.md
IF exists → follow completely (hooks, deps, knowledge system config)
7. Display: "v{current} → v{target}: done"=== Update Complete ===
Version: v{current} → v{target}
Backup: .workflow/state.json.backup-v{current}-{timestamp}
Next steps:
/maestro -- Continue workflow</execution>
<error_codes> | Code | Severity | Condition | Recovery | |------|----------|-----------|----------| | E001 | error | .workflow/state.json not found or unreadable | Run /maestro-init first | | E002 | error | Schema migration failed (npx tsx returned error) | Display backup restore command: cp .workflow/state.json.backup-* .workflow/state.json | | E003 | error | Version-specific setup doc failed to execute | Manual setup: read ~/.maestro/workflows/updates/update-v{target}-setup.md | | W001 | warning | No version-specific setup doc found for target version | Proceed without setup; schema migration alone is sufficient | | W002 | warning | --setup-only but no setup script exists for current version | Display message and exit | | W003 | warning | Active worktrees detected during update | Consider merging worktrees before migration | </error_codes>
<success_criteria>
</success_criteria>
<completion>
| Condition | Suggestion | |-----------|-----------| | Want to continue workflow | /maestro | </completion>
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 7,332 | 5,554 | -24% | 1 | 1 | 0% | 1,145 | 1,977 | +73% | 0 | 0 | — |
case-02 | fail→fail | 9,267 | 6,517 | -30% | 1 | 1 | 0% | 1,336 | 2,091 | +57% | 0 | 0 | — |
case-03 | fail→fail | 10,511 | 3,218 | -69% | 1 | 1 | 0% | 1,483 | 2,011 | +36% | 0 | 0 | — |
case-04 | fail→pass | 9,686 | 2,834 | -71% | 1 | 1 | 0% | 1,433 | 2,161 | +51% | 0 | 0 | — |
case-05 | fail→pass | 14,190 | 4,251 | -70% | 1 | 1 | 0% | 2,032 | 2,334 | +15% | 0 | 0 | — |
case-06 | fail→pass | 9,987 | 3,127 | -69% | 1 | 1 | 0% | 1,468 | 2,222 | +51% | 0 | 0 | — |
case-07 | pass→pass | 13,741 | 3,493 | -75% | 1 | 1 | 0% | 2,016 | 2,210 | +10% | 0 | 0 | — |
case-08 | fail→pass | 14,072 | 2,492 | -82% | 1 | 1 | 0% | 1,977 | 2,012 | +2% | 0 | 0 | — |
case-09 | pass→pass | 8,662 | 1,579 | -82% | 1 | 1 | 0% | 1,179 | 1,868 | +58% | 0 | 0 | — |
case-10 | fail→pass | 21,762 | 3,022 | -86% | 1 | 1 | 0% | 3,197 | 2,142 | -33% | 0 | 0 | — |
case-11 | pass→pass | 11,115 | 3,716 | -67% | 1 | 1 | 0% | 1,696 | 2,265 | +34% | 0 | 0 | — |
case-12 | fail→pass | 13,646 | 2,805 | -79% | 1 | 1 | 0% | 1,892 | 2,111 | +12% | 0 | 0 | — |
case-13 | pass→fail | 11,506 | 2,908 | -75% | 1 | 1 | 0% | 1,676 | 2,098 | +25% | 0 | 0 | — |
case-14 | fail→pass | 10,737 | 2,920 | -73% | 1 | 1 | 0% | 1,526 | 2,094 | +37% | 0 | 0 | — |
case-15 | pass→pass | 10,901 | 2,623 | -76% | 1 | 1 | 0% | 1,557 | 2,116 | +36% | 0 | 0 | — |
case-16 | fail→pass | 14,832 | 4,527 | -69% | 1 | 1 | 0% | 2,053 | 2,440 | +19% | 0 | 0 | — |
case-17 | pass→pass | 11,039 | 4,452 | -60% | 1 | 1 | 0% | 1,699 | 2,404 | +41% | 0 | 0 | — |
case-18 | fail→pass | 10,245 | 3,215 | -69% | 1 | 1 | 0% | 1,371 | 2,208 | +61% | 0 | 0 | — |
case-19 | fail→pass | 14,450 | 6,475 | -55% | 1 | 1 | 0% | 2,298 | 2,707 | +18% | 0 | 0 | — |
case-20 | fail→fail | 12,252 | 13,815 | +13% | 1 | 1 | 0% | 2,028 | 4,152 | +105% | 0 | 0 | — |
case-21 | fail→fail | 6,734 | 7,212 | +7% | 1 | 1 | 0% | 1,040 | 2,017 | +94% | 0 | 0 | — |
case-22 | fail→fail | 3,627 | 7,617 | +110% | 1 | 1 | 0% | 367 | 2,154 | +487% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 19 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +41 percentage points is the difference between those two pass rates over the 19 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.