Skip to content

fix(extensions): reject aliases that resolve to installed skill names - #5134

Open
chelsealong wants to merge 1 commit into
github:mainfrom
chelsealong:fix/codex-spec-kit-5081
Open

chelsealong wants to merge 1 commit into
github:mainfrom
chelsealong:fix/codex-spec-kit-5081

Conversation

@chelsealong

Copy link
Copy Markdown
Contributor

Description

Fixes #5081. Normalize installed extension command and alias names when checking a new extension for conflicts. This rejects names such as shared.sync and shared-sync that would produce the same skill file. Updated the extension design document to describe the behavior.

The regression test confirms that a conflicting install is rejected and the first extension’s skill file remains unchanged. It fails against the base source and passes with this patch.

Testing

  • CLI help: .venv/bin/specify --help passed.
  • Focused extension tests: 697 passed.
  • Full suite: 13,157 passed, 124 skipped, 63 warnings.
  • Pinned Ruff 0.15.0 check of src and tests: zero findings.
  • git diff --check passed.

AI Disclosure

  • I did use AI assistance.

AI disclosure: Codex (GPT-6, default reasoning settings, autonomous) authored the code, regression test, and documentation update and ran the checks reported above. No human review or testing is claimed.

@chelsealong
chelsealong requested a review from mnriem as a code owner October 26, 2026 21:32
@mnriem mnriem added the triage-must-have Verdict: high-value, important work for Spec Kit — do first label Oct 26, 2026
@mnriem

mnriem commented Oct 26, 2026

Copy link
Copy Markdown
Collaborator

Thanks for addressing this—the reported overwrite and removal behavior is a real bug. However, this change also rejects extension combinations that were previously accepted, including during updates and forced reinstalls, so we should not merge the hard failure without a compatibility transition. Could you open a tracking issue and sequence this across three PRs: first a deprecation warning while still allowing installation, then rejection by default with an explicit override, and finally a hard failure without an override? This PR could become the first stage, with the remaining two linked to the tracking issue. Throughout the transition, installation and removal must preserve another extension’s files; allowing installation should not mean allowing destructive overwrites, and any conflicting alias left unregistered should be clearly reported. The tracking issue should also define which output layouts actually collide, how existing installations and updates are handled, and whether the override should reuse --force or have a dedicated option. We can decide when to advance each stage rather than committing to a release schedule.

@mnriem mnriem added the author-awaiting Waiting on author response label Oct 26, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

author-awaiting Waiting on author response triage-must-have Verdict: high-value, important work for Spec Kit — do first

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug]: Extension alias conflict check misses spellings that map to the same file, so one extension overwrites and then deletes another's alias

2 participants