Skip to content

[Extension]: Update Archive Extension to v1.3.0 #4278

Description

@stn1slv

Note

This is an update to an existing catalog entry, not a new submission. The archive extension is already in extensions/catalog.community.json at version 1.2.2. This submission bumps it to 1.3.0. Five fields change: version, download_url, requires.speckit_version, stars, and updated_at. Everything else, including the description, category, effect and tags, is unchanged.

Please note the version floor moves from >=0.1.0 to >=0.14.0. That is the one change worth a reviewer's attention. The old floor was never verified against anything and could not survive a manifest carrying category and effect, which a pre-0.10.2 CLI does not know. 0.14.0 is where scripts/python began shipping in the wheel, which the newly declared py: script variant needs before it can resolve. Users on older cores keep working on v1.2.2.

Extension ID

archive

Extension Name

Archive Extension

Version

1.3.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.3.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; it runs no external tooling of its own beyond the check-prerequisites script Spec Kit already ships.

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 rather than appending a per-feature digest
  • Item-level [Source: specs/007-invoice/spec.md -> FR-012] traceability, with one ref per contributing feature
  • Detects requirements a later feature supersedes and asks before deleting anything; retired IDs are recorded and never reissued
  • Checks each feature against the project constitution, separating a conflict from an unmet obligation from a rule it cannot verify by reading artifacts
  • Reads bug reports from both layouts, including the first-party bug extension's .specify/bugs/<slug>/, under a bounded read that never takes requirement text from them
  • Updates every agent context file the agent-context extension manages, honouring its configured markers, and never writing 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: verified by installing the actual release archive with the real CLI (specify 1.0.0) into a clean project. It installs cleanly, specify extension list reports v1.3.0, and .specify/extensions/archive/ contains exactly five files, the rest being excluded by .extensionignore. The tag archive returns HTTP 200 and the release is published, not a draft and not a prerelease.

Compatibility claims checked against source, not memory. Every assertion this release makes about Spec Kit was verified against a local checkout of v1.0.1: the --json --paths-only key set and its --no-persist behaviour, resolve_specify_init_dir, the agent-context extension's config keys and its agent-context-defaults.json lookup order, the bug extension's actual templates, VALID_EFFECTS, _load_extensionignore, and resolve_command_refs in both separator styles. Two claims failed that check during review and were corrected before release.

Real-project testing: v1.1.0 was verified end to end on stn1slv/Overtype@15cddd1, and v1.1.1 was independently field-tested by another user on an eight-feature project (issue #3). Stated plainly, as in the previous submission: v1.3.0 itself has not been re-run on an external live project. Its behavioural verification is the fixture harness below.

Fixture harness: the repository carries a synthetic Spec Kit project under tests/fixture/. Each run uses a fresh agent given only commands/archive.md and its own working copy, forbidden from reading the expectations file, the baselines, the changelog or git history. Expectations must land in a commit before the runs that judge them, and every claim is verified against the files each run actually wrote.

For 1.3.0 the round was 16 invocations across 13 cases, plus 5 re-runs after the final review, recorded in BASELINE-v1.3.0.md. A mandatory control case reproduces the previous release's result unchanged, because the three behavioural changes edit text every earlier case exercises. The bounded-read result is the one worth citing here: five requirement-shaped phrases were planted in bug-report sections the command is not allowed to take content from, and none reached main memory or any agent context file, including two placed inside the one file the command does legitimately open.

That baseline also records, openly, three findings this release does not fix, one of which predates it.

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 requires 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.3.0.zip --force

# Archive a merged feature into project memory
/speckit.archive.run specs/007-invoice-settings

# Timestamped and scope-nested layouts both work as of this release
/speckit.archive.run specs/20260814-101500-invoice-settings
/speckit.archive.run specs/billing/006-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.3.0",
    "download_url": "https://github.com/stn1slv/spec-kit-archive/archive/refs/tags/v1.3.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": 28,
    "created_at": "2026-03-14T00:00:00Z",
    "updated_at": "2026-08-22T00:00:00Z"
  }
}

Additional Context

This release exists because Spec Kit generalized several conventions the extension had hard-coded. It changes which projects the extension works in, not what archival means:

  • Feature directories in every layout Spec Kit produces. Timestamped names and layouts nested under a scope directory now archive correctly, because nothing keys on a three-digit prefix any more.
  • Agent context files are discovered rather than guessed. Since core 0.12.0 the CLI does not manage these files and the opt-in agent-context extension owns them, so this command now performs that extension's own lookup instead of probing three filenames. Those three names are the mapped anchor for twenty of the thirty-seven integrations in the defaults map, so a Copilot, Cursor or Qwen project was previously missed or written to the wrong anchor.
  • Command references are agent-neutral. Every in-body reference is now a __SPECKIT_COMMAND_*__ token. The literals it printed before named a command that does not exist on the hyphen-separator and skills integrations. Worth flagging for anyone else publishing an extension: EXTENSION-DEVELOPMENT-GUIDE.md still warns that these tokens reach skills agents verbatim, which stopped being true in 0.12.17 (fix(extensions): resolve __SPECKIT_COMMAND tokens in auto-registered skills #3544). That stale caveat is what led this extension to keep literals for a full release cycle.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions