You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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.
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.
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.
Note
This is an update to an existing catalog entry, not a new submission. The
archiveextension is already inextensions/catalog.community.jsonat version 1.2.2. This submission bumps it to 1.3.0. Five fields change:version,download_url,requires.speckit_version,stars, andupdated_at. Everything else, including the description, category, effect and tags, is unchanged.Please note the version floor moves from
>=0.1.0to>=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 carryingcategoryandeffect, which a pre-0.10.2 CLI does not know. 0.14.0 is wherescripts/pythonbegan shipping in the wheel, which the newly declaredpy: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
Required Tools (optional)
None. The extension is a single command file; it runs no external tooling of its own beyond the
check-prerequisitesscript Spec Kit already ships.Number of Commands
1
Number of Hooks (optional)
0
Tags
archive, memory, merge, changelog
Key Features
.specify/memory/, folding duplicates rather than appending a per-feature digest[Source: specs/007-invoice/spec.md -> FR-012]traceability, with one ref per contributing featurebugextension's.specify/bugs/<slug>/, under a bounded read that never takes requirement text from themagent-contextextension manages, honouring its configured markers, and never writing inside a tool-managed blockTesting Checklist
Submission Requirements
extension.ymlmanifest includedTesting Details
Install: verified by installing the actual release archive with the real CLI (
specify1.0.0) into a clean project. It installs cleanly,specify extension listreports 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-onlykey set and its--no-persistbehaviour,resolve_specify_init_dir, theagent-contextextension's config keys and itsagent-context-defaults.jsonlookup order, thebugextension's actual templates,VALID_EFFECTS,_load_extensionignore, andresolve_command_refsin 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 onlycommands/archive.mdand 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
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:
agent-contextextension 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.__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.mdstill 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