Bug Description
When an extension or preset provides a command override, the command is correctly registered in Copilot skills mode. However, running:
specify integration upgrade --force
regenerates .github/skills/*/SKILL.md from the core command templates and removes the command content supplied by installed extensions or presets.
Environment
• Spec Kit: 0.14.2
• Integration: Copilot
• Mode: --integration-options="--skills"
• Affected assets: extensions and presets that provide command overrides
Steps to Reproduce
specify extension add --dev /path/to/extension
or
specify preset add --dev /path/to/preset
Verify that the generated skill contains custom command content. Then run:
specify integration upgrade --force
Inspect the skill again:
grep -n "custom marker or command-specific text" \ .github/skills/<skill-name>/SKILL.md
The extension- or preset-specific content is gone.
Expected Behavior
integration upgrade should preserve the effective command content from all active layers:
- Project overrides
- Presets
- Extensions
- Core templates
Generated SKILL.md files should reflect the highest-priority effective command, including wrap , prepend , and append composition strategies.
Actual Behavior
integration upgrade rewrites skills from the core command templates only. This removes active extension and preset command overrides, even though those assets remain installed and registered.
The registry may still list the corresponding entries under registered_skills , but the generated files no longer contain their effective content.
Specify CLI Version
0.14.2
AI Agent
GitHub Copilot
Operating System
macOS 26.5.1
Python Version
3.14.6
Error Logs
Additional Context
Root cause
Extension and preset installation paths perform command registration and skill reconciliation. The integration upgrade path regenerates integration files afterward but does not reconcile the active extension and preset command layers.
Suggested fix
After an integration upgrade regenerates agent skills, run the same reconciliation logic used after extension and preset installation/removal.
The reconciliation should:
• Resolve the effective command for each registered command.
• Apply the complete extension/preset/core composition stack.
• Generate the corresponding SKILL.md with the correct integration frontmatter.
• Preserve user-managed files according to the existing manifest/hash rules.
• Avoid changing unrelated integrations or skills.
Bug Description
When an extension or preset provides a command override, the command is correctly registered in Copilot skills mode. However, running:
specify integration upgrade --forceregenerates .github/skills/*/SKILL.md from the core command templates and removes the command content supplied by installed extensions or presets.
Environment
• Spec Kit: 0.14.2
• Integration: Copilot
• Mode: --integration-options="--skills"
• Affected assets: extensions and presets that provide command overrides
Steps to Reproduce
specify extension add --dev /path/to/extensionor
specify preset add --dev /path/to/presetVerify that the generated skill contains custom command content. Then run:
specify integration upgrade --forceInspect the skill again:
grep -n "custom marker or command-specific text" \ .github/skills/<skill-name>/SKILL.mdThe extension- or preset-specific content is gone.
Expected Behavior
integration upgradeshould preserve the effective command content from all active layers:Generated SKILL.md files should reflect the highest-priority effective command, including wrap , prepend , and append composition strategies.
Actual Behavior
integration upgraderewrites skills from the core command templates only. This removes active extension and preset command overrides, even though those assets remain installed and registered.The registry may still list the corresponding entries under
registered_skills, but the generated files no longer contain their effective content.Specify CLI Version
0.14.2
AI Agent
GitHub Copilot
Operating System
macOS 26.5.1
Python Version
3.14.6
Error Logs
Additional Context
Root cause
Extension and preset installation paths perform command registration and skill reconciliation. The integration upgrade path regenerates integration files afterward but does not reconcile the active extension and preset command layers.
Suggested fix
After an integration upgrade regenerates agent skills, run the same reconciliation logic used after extension and preset installation/removal.
The reconciliation should:
• Resolve the effective command for each registered command.
• Apply the complete extension/preset/core composition stack.
• Generate the corresponding SKILL.md with the correct integration frontmatter.
• Preserve user-managed files according to the existing manifest/hash rules.
• Avoid changing unrelated integrations or skills.