Skip to content

/openspec-archive-change

Archive a completed change in the experimental workflow. Use when the user wants to finalize and archive a change after implementation is complete.

From plugin
signum
186 skills5 agents23 commands

Claude Code

$ npx -y skills add heurema/signum --skill openspec-archive-change --agent claude-code

SKILL.md

openspec-archive-change.SKILL.md
name: openspec-archive-change
description: Archive a completed change in the experimental workflow. Use when the user wants to finalize and archive a change after implementation is complete.
allowed-tools: Bash(openspec:*)
license: MIT
compatibility: Requires openspec CLI.
metadata:
  author: openspec
  version: "1.0"
  generatedBy: "1.6.0"

Archive a completed change in the experimental workflow.

**Store selection:** If the user names a store (a store is a standalone OpenSpec repo registered on this machine) or the work lives in one, run `openspec store list --json` to discover registered store ids, then pass `--store <id>` on the commands that read or write specs and changes (`new change`, `status`, `instructions`, `list`, `show`, `validate`, `archive`, `doctor`, `context`). Other commands do not take the flag. Hints printed by commands already carry the flag; keep it on follow-ups. Without a store, commands act on the nearest local `openspec/` root.

**Input**: Optionally specify a change name. 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
  • `planningHome`, `changeRoot`, `artifactPaths`, and `actionContext`: path and scope context
  • `artifacts`: List of artifacts with their status (`done` or other)

**If any artifacts are not `done`:**

  • Display warning listing incomplete artifacts
  • Use **AskUserQuestion tool** to confirm user wants to proceed
  • 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
  • Use **AskUserQuestion tool** to confirm user wants to proceed
  • Proceed if user confirms

**If no tasks file exists:** Proceed without task-related warning.

4. **Assess delta spec sync state**

Use `artifactPaths.specs.existingOutputPaths` from status JSON to check for delta 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 an `archive` directory under `planningHome.changesDir` if it doesn't exist:

   mkdir -p "<planningHome.changesDir>/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 `changeRoot` to the archive directory
   mv "<changeRoot>" "<planningHome.changesDir>/archive/YYYY-MM-DD-<name>"

6. **Display summary**

Show archive completion summary including:

  • Change name
  • Schema that was used
  • Archive location
  • Whether specs were synced (if applicable)
  • Note about any warnings (incomplete artifacts/tasks)

**Output On Success**

## Archive Complete

**Change:** <change-name>
**Schema:** <schema-name>
**Archived to:** the archive path derived from `planningHome.changesDir`/YYYY-MM-DD-<name>/
**Specs:** ✓ Synced to main specs (or "No delta specs" or "Sync skipped")

All artifacts complete. All tasks complete.

**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 openspec-sync-specs approach (agent-driven)
  • If delta specs exist, always run the sync assessment and show the combined summary before prompting
Read more
@heurema
Ships withsignum

Signum is a contract-first proof gate for agentic software changes: it turns a task into a reviewed contract, executes against that contract, audits the result, and packages evidence that humans and CI can inspect.

Stars on GitHub

Momentum

stars in total
18
Star history of heurema/signum on GitHub, a chart by star-history.com

Other skills on signum.

openspec-apply-change
Auto-invoked

openspec-apply-change

Implement tasks from an OpenSpec change. Use when the user wants to start implementing, continue implementation, or work through…

@heurema@heuremaInstall Skill
openspec-explore
Auto-invoked

openspec-explore

Enter explore mode - a thinking partner for exploring ideas, investigating problems, and clarifying requirements. Use when the…

@heurema@heuremaInstall Skill
openspec-propose
Auto-invoked

openspec-propose

Propose a new change with all artifacts generated in one step. Use when the user wants to quickly describe what they want to…

@heurema@heuremaInstall Skill
openspec-sync-specs
Auto-invoked

openspec-sync-specs

Sync delta specs from a change to main specs. Use when the user wants to update main specs with changes from a delta spec,…

@heurema@heuremaInstall Skill
openspec-update-change
Auto-invoked

openspec-update-change

Update an OpenSpec change by revising its existing planning artifacts and keeping them coherent with one another. Use when the…

@heurema@heuremaInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills11d309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc12d293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react1d252k
@facebook@facebookInstall Skill

Questions about openspec-archive-change.

Which coding agents can use openspec-archive-change?
openspec-archive-change installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.