sdd-archive · git:20260819.209d97b · 2026-08-19 · sha256 4cebb454c02befd0

sdd-archive git:20260819.209d97bA

Immutable. This exact content is served forever at /api/v1/blob/4cebb454c02befd0.

---
name: sdd-archive
description: |-
  Use when completing and archiving a change after all tasks are done and specs are synced. Triggers: "archive the change", "complete this change", "close out the change", "finish the change", "archive".
---

# SDD Archive

Complete a change by moving its directory to the archive.

> `SPECS_ROOT` is resolved by the `sdd` router before this skill runs.
> Replace `.specs/` with your project's actual specs root in all paths below.

## Writing Style

Write the archive report in the voice of a professional technical writer.
Prefer ASD-STE100 Simplified Technical English: short sentences, one instruction per sentence, active voice, and one term per concept.
Keep identifiers, commands, paths, and RFC 2119 keywords exact.

## When to Use

- All tasks in `tasks.md` are complete (`- [x]`)
- Delta specs have been synced into main specs with `sdd-sync`
- Ready to close out the change

## When Not to Use

- Tasks are incomplete — finish implementation first
- Delta specs exist but haven't been synced — consider running `sdd-sync` first (no automatic check; user judgement)

## Invocation Notice

- Tell the user when this skill is running: `sdd-archive`.
  Skip the notice when the user asked for the skill by name or slash command; spelling and spacing need not match.
  A phrase from this skill's own trigger list is not a name — naming the work is not naming the skill.

## Soft Gate

Check `tasks.md` for unchecked tasks before archiving.

If incomplete tasks remain:

> "{N} tasks are still incomplete. Archive anyway?"

Wait for user confirmation before proceeding.

## Process

### Phase 1: Confirm

1. Confirm which change to archive (ask if multiple active changes exist)
2. Read `tasks.md` — count complete vs. total tasks
3. If incomplete tasks: issue soft gate warning, wait for user

### Phase 2: Check Target

Target path: `.specs/changes/archive/YYYY-MM-DD-<change-name>/`

Where `YYYY-MM-DD` is today's date.

If the target already exists:

> "Archive target already exists: `.specs/changes/archive/{date}-{name}/`. Suggest using `{name}-2` or waiting until tomorrow."

Stop and ask the user how to proceed.

### Phase 3: Move

```bash
mkdir -p .specs/changes/archive/
mv .specs/changes/<name>/ .specs/changes/archive/YYYY-MM-DD-<name>/
```

Confirm the move succeeded by checking the archive path exists.

The change's `.verify/` scratch (if present) is self-gitignored, so it never enters the archived commit even though `mv` carries it along — leave it or delete it; it is not part of the archived record.

### Phase 4: Report

```text
Archived: .specs/changes/<name>/ → .specs/changes/archive/YYYY-MM-DD-<name>/
Tasks: {N}/{N} complete
```

## Common Mistakes

- Deleting instead of moving (archive, not delete — change history is preserved)
- Archiving before syncing delta specs into main specs
- Not checking for the target path existence before moving