cleanup
Cleanup Skill
VCS Provider
This skill uses VCS operations through Exarchos MCP actions (list_prs, get_pr_comments, etc.).
These actions automatically detect and route to the correct VCS provider (GitHub, GitLab, Azure DevOps).
No gh/glab/az commands needed — the MCP server handles provider dispatch.
Overview
Resolve merged workflows to completed state in a single operation. Replaces the manual multi-step process of navigating HSM guards after PR stacks merge.
Batch Pruning for Stale Workflows
For bulk cleanup of accumulated stale or abandoned workflows (as opposed to resolving a single merged workflow), use @skills/prune-workflows/SKILL.md. That skill invokes exarchos_orchestrate prune_stale_workflows in dry-run mode, displays candidates, and applies after user confirmation. Safeguards automatically skip workflows with open PRs or recent commits.
Rule of thumb: cleanup is per-workflow (one merged feature → completed); prune is bulk (N inactive workflows → cancelled). They are complementary, not alternatives.
Triggers
Activate this skill when:
- User runs
/exarchos:cleanupcommand - User says "cleanup", "resolve workflow", "mark as done"
- PR stack has merged and workflow needs resolution
- User wants to close out a completed feature
Prerequisites
- Active workflow in any non-terminal phase
- All PRs merged on GitHub
Process
1. Identify Target Workflow
Read workflow state to get current phase and metadata:
mcp__plugin_exarchos_exarchos__exarchos_workflow({ action: "get", featureId: "<id>" })
If featureId not provided, use pipeline view to list active workflows:
mcp__plugin_exarchos_exarchos__exarchos_view({ action: "pipeline" })
2. Verify Merge Status
For each PR associated with the workflow, verify it is merged.
Primary method — VCS MCP action:
exarchos_orchestrate({ action: "list_prs", state: "merged" })
For individual PR details, use exarchos_orchestrate({ action: "get_pr_comments", prId: "<number>" }) or the VCS provider's native API.
Collect from merged PRs:
prUrl: The PR URL (or array of URLs for stacked PRs)mergedBranches: The head branch names that were merged
Safety check: If ANY PR is not merged, abort with clear error message.
For detailed verification guidance, see references/merge-verification.md.
2.5. Post-Merge Regression Check (Advisory)
After verifying merge status, run the post-merge regression check:
exarchos_orchestrate({
action: "check_post_merge",
featureId: "<id>",
prUrl: "<url>",
mergeSha: "<sha>"
})
This check is advisory — findings are reported but do not block cleanup. If findings are detected, log them for the user's awareness before proceeding.
3. Invoke Cleanup Action
Call the MCP cleanup action with collected data:
mcp__plugin_exarchos_exarchos__exarchos_workflow({
action: "cleanup",
featureId: "<id>",
mergeVerified: true,
prUrl: "<url-or-array>",
mergedBranches: ["branch1", "branch2"]
})
This single call:
- Backfills
synthesis.prUrlandsynthesis.mergedBranches - Force-resolves all blocking review statuses to
approved - Transitions to
completedvia universal cleanup path - Emits
workflow.cleanupevent to event store
4. Worktree Cleanup
Remove all worktrees associated with the workflow:
# Read worktrees from state (already captured in step 1)
git worktree remove .worktrees/<name>
git worktree prune
Handle gracefully if worktrees are already removed.
5. Branch Sync
Remove merged local branches:
git fetch --prune
git branch -d <merged-branch-1> <merged-branch-2> ...
6. Report Completion
Output summary:
## Cleanup Complete
**Feature:** <featureId>
**Transition:** <previousPhase> → completed
**PRs merged:** <count>
**Worktrees removed:** <count>
**Branches synced:** ✓
Dry Run
Use dryRun: true to preview what cleanup would do without modifying state:
mcp__plugin_exarchos_exarchos__exarchos_workflow({
action: "cleanup",
featureId: "<id>",
mergeVerified: true,
dryRun: true
})
Error Handling
| Error | Cause | Resolution |
|---|---|---|
| STATE_NOT_FOUND | Invalid featureId | Check pipeline view for active workflows |
| ALREADY_COMPLETED | Workflow already done | No action needed |
| INVALID_TRANSITION | Workflow is cancelled | Cannot cleanup cancelled workflows |
| GUARD_FAILED | mergeVerified is false | Verify PRs are merged before cleanup |
Anti-Patterns
| Don't | Do Instead |
|---|---|
| Use cleanup as escape hatch during implementation | Only use after PRs are merged |
| Skip merge verification | Always verify via GitHub API |
| Manually navigate HSM guards post-merge | Use /exarchos:cleanup |
| Leave worktrees after cleanup | Include worktree removal in process |
Exarchos Integration
The cleanup action auto-emits events — do NOT manually emit:
workflow.cleanup— emitted by the MCP cleanup action for the phase change to completed
More from lvlup-sw/exarchos
xml-tags
A skill with <xml-tag> characters in the description.
26refactor
Code improvement workflow with polish and overhaul tracks. Triggers: 'refactor', 'clean up', 'restructure', 'reorganize', or /refactor. Phases: explore, brief, implement, validate. Existing code only — Do NOT use for bug fixes (/debug) or new features (/ideate).
26shepherd
Shepherd PRs through CI and reviews to merge readiness. Operates as an iteration loop within the synthesize phase (not a separate HSM phase). Uses assess_stack to check PR health, fix failures, and request approval. Triggers: 'shepherd', 'tend PRs', 'check CI', or /shepherd.
26dogfood
Review failed Exarchos MCP tool calls from the current session, diagnose root causes, and categorize into code bug, documentation issue, or user error. Use when the user says 'dogfood', 'review failures', 'what went wrong', 'triage errors', or runs /dogfood. Scopes exclusively to Exarchos tools (exarchos_workflow, exarchos_event, exarchos_orchestrate, exarchos_view, exarchos_sync). Do NOT use for debugging application code or non-Exarchos tool failures.
26debug
Bug investigation and fix workflow. Triggers: 'debug', 'fix bug', 'investigate issue', 'something is broken', or /debug. Hotfix track for quick fixes, thorough track for root cause analysis. Do NOT use for feature development or refactoring. Do NOT escalate to /ideate unless the fix requires architectural redesign.
26broken-reference
A skill with a broken reference link.
26