Skip to content

[Extension]: Update Archive Extension to v1.4.0 #4817

Description

@stn1slv

Note

This updates an existing catalog entry; it is not a new submission. The archive extension is in extensions/catalog.community.json at version 1.3.0, and this bumps it to 1.4.0. Four fields change: version, download_url, stars and updated_at. Everything else stays as it is, including the description, category, effect, tags and the >=0.14.0 version floor. All 1.4.0 changes are prompt text, so the floor does not move.

Extension ID

archive

Extension Name

Archive Extension

Version

1.4.0

Description

Archive merged features into main project memory, resolving gaps and conflicts.

Author

Stanislav Deviatov

Repository URL

https://github.com/stn1slv/spec-kit-archive

Download URL

https://github.com/stn1slv/spec-kit-archive/archive/refs/tags/v1.4.0.zip

License

MIT

Homepage (optional)

https://github.com/stn1slv/spec-kit-archive

Documentation URL (optional)

https://github.com/stn1slv/spec-kit-archive/blob/main/README.md

Changelog URL (optional)

https://github.com/stn1slv/spec-kit-archive/blob/main/CHANGELOG.md

Required Spec Kit Version

=0.14.0

Required Tools (optional)

None. The extension is a single command file. Apart from the check-prerequisites script that Spec Kit already ships, it runs no tools of its own.

Number of Commands

1

Number of Hooks (optional)

0

Tags

archive, memory, merge, changelog

Key Features

  • Consolidates a merged feature's spec, plan and technical debt into .specify/memory/, folding duplicates into existing entries instead of appending a digest per feature
  • Item-level [Source: specs/007-invoice/spec.md -> FR-012] traceability, with one ref per contributing feature
  • Detects requirements that a later feature supersedes and asks before deleting anything; retired IDs are recorded, never reissued, and (new in 1.4.0) a retired requirement does not come back when its feature is archived again
  • Checks each feature against the project constitution and keeps three cases apart: a conflict, an unmet obligation, and a rule that cannot be verified by reading artifacts
  • Runs before_archive / after_archive hooks under core's hook rules (new in 1.4.0: a missing enabled field counts as enabled, an unreadable extensions.yml is reported, mandatory hooks are actually invoked)
  • Updates every agent context file the agent-context extension manages, respects its configured markers, and never writes inside a tool-managed block

Testing Checklist

  • Extension installs successfully via download URL
  • All commands execute without errors
  • Documentation is complete and accurate
  • No security vulnerabilities identified
  • Tested on at least one real project

Submission Requirements

  • Valid extension.yml manifest included
  • README.md with installation and usage instructions
  • LICENSE file included
  • GitHub release created with version tag
  • All command files exist and are properly formatted
  • Extension ID follows naming conventions (lowercase-with-hyphens)

Testing Details

Install: smoke-tested with specify extension add --dev on Spec Kit 1.0.13. The command registers and renders correctly for claude (bash scripts) and codex (Python scripts, skills mode), and no __SPECKIT_COMMAND_*__ token is left unresolved. The tag archive resolves and contains a manifest at version 1.4.0, and the GitHub release is published (not a draft or prerelease). On 1.0.13 the generic integration does not register extension commands; #4785 fixed that after the release, and on main it registers correctly.

Fixture harness: the repository carries a synthetic Spec Kit project under tests/fixture/. Each case runs in a fresh agent that gets only commands/archive.md and its own working copy, and may not read the expectations, the baselines, the changelog or git history. Each round's expectations are committed before its runs, and every result is checked against the files the run actually wrote. For 1.4.0 there were three rounds (7, 7b and 7c), recorded in BASELINE-v1.4.0.md. They cover retirement chains, renumbered IDs, multi-ref RETIRED: lines, mandatory hooks running in order, and a failing mandatory hook stopping the run. A mandatory control case reproduces the earlier result.

Review: two six-model reviews ran over the release branch, and their findings were fixed and re-tested before the release.

Real-project testing: as in earlier submissions, v1.1.0 was verified end to end on stn1slv/Overtype@15cddd1, and another user field-tested v1.1.1 on an eight-feature project (issue #3). v1.4.0 itself has not been re-run on an external live project; its behavioural verification is the fixture harness above.

The extension writes only Markdown under .specify/memory/, the project's agent context files, and the archived feature's own **Status** field. It runs no code, makes no network calls, and needs no credentials.

Example Usage

# Install (add --force when upgrading an existing install)
specify extension add archive --from https://github.com/stn1slv/spec-kit-archive/archive/refs/tags/v1.4.0.zip --force

# Archive a merged feature into project memory, after its PR is merged
/speckit.archive.run specs/007-invoice-settings

# Restrict scope if desired
/speckit.archive.run specs/007-invoice-settings --spec-only

# Free-form guidance, as in the core commands
/speckit.archive.run specs/007-invoice-settings Pay extra attention to the entity model.

Proposed Catalog Entry

{
  "archive": {
    "name": "Archive Extension",
    "id": "archive",
    "description": "Archive merged features into main project memory, resolving gaps and conflicts.",
    "author": "Stanislav Deviatov",
    "version": "1.4.0",
    "download_url": "https://github.com/stn1slv/spec-kit-archive/archive/refs/tags/v1.4.0.zip",
    "repository": "https://github.com/stn1slv/spec-kit-archive",
    "homepage": "https://github.com/stn1slv/spec-kit-archive",
    "documentation": "https://github.com/stn1slv/spec-kit-archive/blob/main/README.md",
    "changelog": "https://github.com/stn1slv/spec-kit-archive/blob/main/CHANGELOG.md",
    "license": "MIT",
    "category": "docs",
    "effect": "read-write",
    "requires": {
      "speckit_version": ">=0.14.0"
    },
    "provides": {
      "commands": 1,
      "hooks": 0
    },
    "tags": [
      "archive",
      "memory",
      "merge",
      "changelog"
    ],
    "verified": false,
    "downloads": 0,
    "stars": 30,
    "created_at": "2026-03-14T00:00:00Z",
    "updated_at": "2026-10-02T00:00:00Z"
  }
}

Additional Context

1.4.0 fixes two defects that the 1.3.0 baseline recorded as open, and brings hook handling in line with core:

  • Retired requirements stay retired. Re-archiving a feature could bring back requirements that a later feature had retired, under new IDs. A new step reads the changelog's RETIRED: lines and leaves such an item out, but only when its content agrees with the retirement, because feature-local IDs move when specs are renumbered.
  • Idempotency per artifact. "Already merged" now suppresses duplicates only; missing sections are still completed.
  • Hooks follow core's rules. The extension-defined before_archive / after_archive events now use core's hook wording and defaults.

The README also gained sections on when to run the command (after merge, not as a workflow step) and on how archived memory can reach later specify and plan runs, which is a frequent question in #152 and #620.

Release notes: https://github.com/stn1slv/spec-kit-archive/releases/tag/v1.4.0

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions