Extension Lifecycle
1. Discovery
bash
specify extension search jira
# Searches catalog for extensions matching "jira"Process:
- Fetch extension catalog from GitHub
- Filter by search term (name, tags, description)
- Display results with metadata
2. Installation
bash
specify extension add jiraProcess:
- Resolve: Look up extension in catalog
- Download: Fetch extension package (ZIP from GitHub release)
- Validate: Check manifest schema, compatibility
- Extract: Unpack to
.specify/extensions/jira/ - Configure: Copy config templates
- Register: Add commands to AI agent config
- Record: Update
.specify/extensions/.registry
Registry Format (.specify/extensions/.registry):
json
{
"schema_version": "1.0",
"extensions": {
"jira": {
"version": "1.0.0",
"installed_at": "2026-01-28T14:30:00Z",
"source": "catalog",
"manifest_hash": "sha256:abc123...",
"enabled": true,
"priority": 10
}
}
}Priority Field: Extensions are ordered by priority (lower = higher precedence). Default is 10. Used for template resolution when multiple extensions provide the same template.
3. Configuration
bash
# User edits extension config
vim .specify/extensions/jira/jira-config.ymlConfig discovery order:
- Extension defaults (
extension.yml→defaults) - Project config (
jira-config.yml) - Local overrides (
jira-config.local.yml- gitignored) - Environment variables (
SPECKIT_JIRA_*)
4. Usage
bash
claude
> /speckit.jira.specstoissuesCommand resolution:
- AI agent finds command in
.claude/commands/speckit.jira.specstoissues.md - Command file references extension scripts/config
- Extension executes with full context
5. Update
bash
specify extension update jiraProcess:
- Check catalog for newer version
- Download new version
- Validate compatibility
- Back up current config
- Extract new version (preserve config)
- Re-register commands
- Update registry
6. Removal
bash
specify extension remove jiraProcess:
- Confirm with user (show what will be removed)
- Unregister commands from AI agent
- Remove from
.specify/extensions/jira/ - Update registry
- Optionally preserve config for reinstall