OPSX: Archive
The OPSX: Archive command preserves completed experimental workflow changes by archiving them after verifying artifact and task completion status. Use this command when a change development cycle is finished and ready to be moved from active changes to archive storage, with optional synchronization of delta specifications to main specs before archival.
mkdir -p ~/.claude/commands && curl -fsSL https://raw.githubusercontent.com/VILA-Lab/FigMirror/HEAD/.claude/commands/opsx/archive.md -o ~/.claude/commands/opsx-archive.mdarchive.md
Archive a completed change in the experimental workflow. **Input**: Optionally specify a change name after `/opsx:archive` (e.g., `/opsx:archive add-auth`). If omitted, check if it can be inferred from conversation context. If vague or ambiguous you MUST prompt for available changes. **Steps** 1. **If no change name provided, prompt for selection** Run `openspec list --json` to get available changes. Use the **AskUserQuestion tool** to let the user select. Show only active changes (not already archived). Include the schema used for each change if available. **IMPORTANT**: Do NOT guess or auto-select a change. Always let the user choose. 2. **Check artifact completion status** Run `openspec status --change "<name>" --json` to check artifact completion. Parse the JSON to understand: - `schemaName`: The workflow being used - `artifacts`: List of artifacts with their status (`done` or other) **If any artifacts are not `done`:** - Display warning listing incomplete artifacts - Prompt user for confirmation to continue - Proceed if user confirms 3. **Check task completion status** Read the tasks file (typically `tasks.md`) to check for incomplete tasks. Count tasks marked with `- [ ]` (incomplete) vs `- [x]` (complete). **If incomplete tasks found:** - Display warning showing count of incomplete tasks - Prompt user for confirmation to continue - Proceed if user confirms **If no tasks file exists:** Proceed without task-related warning. 4. **Assess delta spec sync state** Check for delta specs at `openspec/changes/<name>/specs/`. If none exist, proceed without sync prompt. **If delta specs exist:** - Compare each delta spec with its corresponding main spec at `openspec/specs/<capability>/spec.md` - Determine what changes would be applied (adds, modifications, removals, renames) - Show a combined summary before prompting **Prompt options:** - If changes needed: "Sync now (recommended)", "Archive without syncing" - If already synced: "Archive now", "Sync anyway", "Cancel" If user chooses sync, use Task tool (subagent_type: "general-purpose", prompt: "Use Skill tool to invoke openspec-sync-specs for change '<name>'. Delta spec analysis: <include the analyzed delta spec summary>"). Proceed to archive regardless of choice. 5. **Perform the archive** Create the archive directory if it doesn't exist: ```bash mkdir -p openspec/changes/archive ``` Generate target name using current date: `YYYY-MM-DD-<change-name>` **Check if target already exists:** - If yes: Fail with error, suggest renaming existing archive or using different date - If no: Move the change directory to archive ```bash mv openspec/changes/<name> openspec/changes/archive/YYYY-MM-DD-<name> ``` 6. **Display summary** Show archive completion summary including: - Change name - Schema that was used - Archive location - Spec sync status (synced / sync skipped / no delta specs) - Note about any warnings (incomplete artifacts/tasks) **Output On Success** ``` ## Archive Complete **Change:** <change-name> **Schema:** <schema-name> **Archived to:** openspec/changes/archive/YYYY-MM-DD-<name>/ **Specs:** ✓ Synced to main specs All artifacts complete. All tasks complete. ``` **Output On Success (No Delta Specs)** ``` ## Archive Complete **Change:** <change-name> **Schema:** <schema-name> **Archived to:** openspec/changes/archive/YYYY-MM-DD-<name>/ **Specs:** No delta specs All artifacts complete. All tasks complete. ``` **Output On Success With Warnings** ``` ## Archive Complete (with warnings) **Change:** <change-name> **Schema:** <schema-name> **Archived to:** openspec/changes/archive/YYYY-MM-DD-<name>/ **Specs:** Sync skipped (user chose to skip) **Warnings:** - Archived with 2 incomplete artifacts - Archived with 3 incomplete tasks - Delta spec sync was skipped (user chose to skip) Review the archive if this was not intentional. ``` **Output On Error (Archive Exists)** ``` ## Archive Failed **Change:** <change-name> **Target:** openspec/changes/archive/YYYY-MM-DD-<name>/ Target archive directory already exists. **Options:** 1. Rename the existing archive 2. Delete the existing archive if it's a duplicate 3. Wait until a different date to archive ``` **Guardrails** - Always prompt for change selection if not provided - Use artifact graph (openspec status --json) for completion checking - Don't block archive on warnings - just inform and confirm - Preserve .openspec.yaml when moving to archive (it moves with the directory) - Show clear summary of what happened - If sync is requested, use the Skill tool to invoke `openspec-sync-specs` (agent-driven) - If delta specs exist, always run the sync assessment and show the combined summary before prompting
Reviewer role in the FigMirror loop. Audits a draft figure against the L1 reference image, L2 aesthetic library, and optional 3D insert; outputs ONE strict JSON object (anchor.what_is_right + quality_floor + fidelity.verdict + focus_themes). Vision-only audit — must NOT read data.txt, drawer notes, or any path outside the audit_view directory it is briefed to read. Tools restricted to Read + Bash for PIL measurement on L1-reliable properties only. Dispatched by figure-orchestrator on each iter.
Drawer role in the FigMirror loop. Produces a self-contained matplotlib script + rendered PNG + iter notes that match a reference paper figure's STYLE (not its data). Reads the reference image, the user's data, the L2 aesthetic library, and optional 3D insert; runs an iter-0 anchor-measurement pass; self-checks the layout floor before handoff. Dispatched by figure-orchestrator on each iter of the Drawer/Reviewer loop. Do NOT use this agent standalone — it expects the workdir layout staged by figure-orchestrator.
Stage-0 image cropper for FigMirror. Cleans the user-supplied reference screenshot before Drawer/Reviewer style analysis by preserving the raw upload, cropping away captions/page text/screenshot margins/neighboring panels when safe, writing reference_clean.png plus a before/after crop check and report. Dispatched before figure-illustrator and figure-critic.
Implement tasks from an OpenSpec change (Experimental)
Enter explore mode - think through ideas, investigate problems, clarify requirements
Propose a new change - create it and generate all artifacts in one step
>
Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through tasks.