Summary
Add a specify integration subcommand group — consistent with the existing specify extension and specify preset patterns — for managing integrations in existing projects after initial setup.
Motivation
Currently, integrations can only be set up during specify init. There's no way to install, uninstall, or switch integrations after project creation. This subcommand fills that gap using the manifest-based hash tracking introduced in #1924.
Proposed Commands
specify integration list # show available + installed status
specify integration install copilot # install into existing project
specify integration uninstall copilot # hash-safe removal
specify integration switch claude # uninstall current, install target
Key Behaviors
install writes files + manifest (same as specify init --integration)
uninstall checks manifest hashes — removes unmodified files, reports modified files
switch reads the current integration from .specify/agent.json, uninstalls it, installs the target; shared infra (.specify/scripts/, templates, memory) untouched
Naming Convention
Follows the established specify <noun> <verb> pattern:
| Feature |
Subcommand |
| Extensions |
specify extension list / add / remove |
| Presets |
specify preset list / add / remove |
| Integrations |
specify integration list / install / uninstall / switch |
Depends on
Acceptance Criteria
Summary
Add a
specify integrationsubcommand group — consistent with the existingspecify extensionandspecify presetpatterns — for managing integrations in existing projects after initial setup.Motivation
Currently, integrations can only be set up during
specify init. There's no way to install, uninstall, or switch integrations after project creation. This subcommand fills that gap using the manifest-based hash tracking introduced in #1924.Proposed Commands
Key Behaviors
installwrites files + manifest (same asspecify init --integration)uninstallchecks manifest hashes — removes unmodified files, reports modified filesswitchreads the current integration from.specify/agent.json, uninstalls it, installs the target; shared infra (.specify/scripts/, templates, memory) untouchedNaming Convention
Follows the established
specify <noun> <verb>pattern:specify extension list/add/removespecify preset list/add/removespecify integration list/install/uninstall/switchDepends on
Acceptance Criteria
specify integration listshows available integrations and installed statusspecify integration install <key>installs an integration into an existing projectspecify integration uninstall <key>safely removes unmodified files, keeps modified onesspecify integration switch <target>reads current from.specify/agent.json, performs uninstall + install