From exarchos
Checkpoint and resume workflow state for context persistence across sessions. Use when the user says 'save progress', 'checkpoint', 'I need to stop', or runs /checkpoint or /rehydrate. Saves current workflow phase, task progress, and artifacts for later resumption. Do NOT use for workflow initialization (handled by ideate/debug/refactor commands).
npx claudepluginhub lvlup-sw/exarchosThis skill uses the workspace's default tool permissions.
Manage persistent workflow state that survives context auto-summarization.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Creates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Manage persistent workflow state that survives context auto-summarization.
State files store: task details, worktree locations, PR URLs, and review status.
Activate this skill when:
/exarchos:ideate)/exarchos:rehydrate)/exarchos:checkpoint)Valid transitions, guards, and prerequisites for all workflow types are documented in references/phase-transitions.md. CRITICAL: When a transition has a guard, send the prerequisite updates and phase in a single set call — updates apply before guards evaluate.
Use exarchos_workflow({ action: "describe", actions: ["set", "init", "get"] }) for
parameter schemas and exarchos_workflow({ action: "describe", playbook: "feature" })
for phase transitions, guards, and playbook guidance. For the lightweight
oneshot variant (with its implementing → synthesize|completed choice state
driven by synthesisPolicy), call exarchos_workflow({ action: "describe", playbook: "oneshot" })
— oneshot is a first-class playbook alongside feature/debug/refactor. Use
exarchos_event({ action: "describe", eventTypes: ["workflow.transition", "task.completed"] })
for event data schemas.
Workflow state lives in the MCP event store, not the filesystem. Use exarchos_workflow get to read state and exarchos_view pipeline to discover active workflows. Do not scan ~/.claude/workflow-state/*.state.json — that path is legacy and may be stale or empty.
For full MCP tool signatures, error handling, and anti-patterns, see references/mcp-tool-reference.md.
At the start of /exarchos:ideate, use mcp__plugin_exarchos_exarchos__exarchos_workflow with action: "init" with:
featureId: the workflow identifier (e.g., "user-authentication")workflowType: one of "feature", "debug", "refactor", "oneshot"synthesisPolicy (optional, oneshot only): one of "always", "never", "on-request" (default "on-request") — silently ignored for non-oneshot typesThis creates a new workflow state entry. The initial phase depends on
workflowType:
feature → starts in ideatedebug → starts in triagerefactor → starts in exploreoneshot → starts in plan (skips ideate entirely)feature — full ideate → plan → delegate → review → synthesize for real features with subagent dispatch and two-stage reviewdebug — triage → investigate → (thorough | hotfix) for bug workflows with track selectionrefactor — explore → brief → (polish | overhaul) for code improvements, polish for small and overhaul for multi-taskoneshot — plan → implementing → (completed | synthesize) for trivial changes; direct-commit by default with an opt-in PR path resolved via a choice-state guard driven by synthesisPolicy and the synthesize.requested eventSee @skills/oneshot-workflow/SKILL.md for the lightweight variant's full prose, including the choice-state mechanics and finalize_oneshot trigger.
Use mcp__plugin_exarchos_exarchos__exarchos_workflow with action: "get" and featureId:
featureIdquery for dot-path lookup (e.g., query: "phase", query: "tasks")fields array for projection (e.g., fields: ["phase", "featureId", "tasks"])Field projection via fields returns only the requested top-level keys, reducing token cost.
Use mcp__plugin_exarchos_exarchos__exarchos_workflow with action: "set" with featureId and either updates, phase, or both:
phase: "delegate"updates: { "artifacts.design": "docs/designs/2026-01-05-feature.md" }updates: { "tasks[id=001].status": "complete", "tasks[id=001].completedAt": "<timestamp>" }updates: { "worktrees.wt-001": { "branch": "feature/001-types", "taskId": "001", "status": "active" } }phase: "delegate", updates: { "artifacts.plan": "docs/plans/plan.md" }Worktree status values: 'active' | 'merged' | 'removed'
For context restoration after summarization, use mcp__plugin_exarchos_exarchos__exarchos_workflow with action: "get" and featureId. This outputs a minimal summary suitable for rebuilding orchestrator context.
To verify state matches git reality, the SessionStart hook automatically reconciles on resume. For manual verification, run the reconciliation script:
exarchos_orchestrate({
action: "reconcile_state",
stateFile: "<state-file>",
repoRoot: "<repo-root>"
})
On passed: true: State is consistent.
On passed: false: Discrepancies found — review output and resolve.
| Event | State Update |
|---|---|
/exarchos:ideate starts | Create state file |
| Design saved | Set artifacts.design, phase = "plan" |
| Plan saved | Set artifacts.plan, populate tasks, phase = "plan-review" |
| Plan-review gaps found | Set planReview.gaps, auto-loop to plan |
| Plan-review approved | Set planReview.approved = true, phase = "delegate" |
| Task dispatched | Set task status = "in_progress", startedAt |
| Task complete | Set task status = "complete", completedAt |
| Worktree created | Add to worktrees object |
| Review complete | Update reviews object |
| PR created | Set artifacts.pr, synthesis.prUrl |
| PR feedback | Append to synthesis.prFeedback |
Oneshot is a first-class workflow type with a compressed lifecycle and an opt-in PR path. The rows below mirror the feature-workflow table above.
| Phase | State updates | Events emitted |
|---|---|---|
plan (oneshot) | oneshot.planSummary, artifacts.plan, optional oneshot.synthesisPolicy | workflow.transition |
implementing (oneshot) | tasks[].status, artifacts.tests | task.*, optional synthesize.requested (via request_synthesize) |
synthesize (oneshot) | synthesis.prUrl, artifacts.pr | workflow.transition, stack.submitted |
completed (oneshot) | — | workflow.transition (to completed) |
The implementing → synthesize | completed fork is a choice state resolved
by finalize_oneshot, which reads the synthesisOptedIn guard
(synthesisPolicy + synthesize.requested events). See
@skills/oneshot-workflow/SKILL.md for the full opt-in mechanics.
Skills should update state at key moments:
brainstorming/SKILL.md:
After saving design:
1. Update state: `.artifacts.design = "<path>"`
2. Update state: `.phase = "plan"`
implementation-planning/SKILL.md:
After saving plan:
1. Update state: `.artifacts.plan = "<path>"`
2. Populate `.tasks` from plan
3. Update state: `.phase = "delegate"`
delegation/SKILL.md:
On task dispatch:
- Update task status to "in_progress"
- Add worktree to state if created
On task complete:
- Update task status to "complete"
- Check if all tasks done, suggest checkpoint
See docs/schemas/workflow-state.schema.json for full schema.
Key sections:
version: Schema version (currently "1.1")featureId: Unique workflow identifierworkflowType: Required. One of "feature", "debug", "refactor", or "oneshot"phase: Current workflow phaseartifacts: Paths to design, plan, PRtasks: Task list with statusworktrees: Active git worktreesplanReview: Plan-review delta analysis results (gaps, approved)reviews: Review resultssynthesis: Merge/PR stateIf an Exarchos MCP tool returns an error:
mcp__plugin_exarchos_exarchos__exarchos_workflow with action: "get" and the featureIdmcp__plugin_exarchos_exarchos__exarchos_workflow with action: "cancel" and dryRun: trueIf workflow state doesn't match git reality:
git log and branch statemcp__plugin_exarchos_exarchos__exarchos_workflow with action: "set" to match git truthIf the PreCompact hook can't find state to checkpoint:
mcp__plugin_exarchos_exarchos__exarchos_workflow with action: "get" and the featureIdIf state references branches or worktrees that no longer exist:
If multiple workflow state files exist:
mcp__plugin_exarchos_exarchos__exarchos_workflow with action: "cancel" and dryRun: true on stale workflows to preview cleanupStart new workflow: Use mcp__plugin_exarchos_exarchos__exarchos_workflow with action: "init" with featureId: "user-authentication", workflowType: "feature"
After design phase: Use mcp__plugin_exarchos_exarchos__exarchos_workflow with action: "set" with:
featureId: "user-authentication"phase: "plan"updates: { "artifacts.design": "docs/designs/2026-01-05-user-auth.md" }Check state: Use mcp__plugin_exarchos_exarchos__exarchos_workflow with action: "get" with featureId: "user-authentication"
Resume after context loss: Use mcp__plugin_exarchos_exarchos__exarchos_workflow with action: "get" with featureId: "user-authentication" to get context restoration output