Skip to content

fix(install): accept a registry scope absent from the content id - #433

Merged
aroff merged 1 commit into
mainfrom
fix/scoped-id-registry-add
Oct 18, 2026
Merged

aroff merged 1 commit into
mainfrom
fix/scoped-id-registry-add

Conversation

@aroff

@aroff aroff commented Oct 18, 2026

Copy link
Copy Markdown
Contributor

Problem

fastskill skill add scope/name@version from an http-registry failed:

origin for 'scope/name' produced skill 'name'; refusing to install under the wrong identity

An http-registry names packages scope/name, but the content (SKILL.md / skill-project.toml) usually declares only name. The identity check in prepare_fetched compared the two strings exactly.

Fix

identity_matches (install/verification.rs): for a repository origin, a scope/name reference also accepts content whose id is the bare name. Everything else is still refused: another name, another scope, scoped content under an unscoped reference, and any mismatch for git/local origins. Per ADR-0014 the lock keeps the content id (name) with the repository origin recording scope/name, so lock restore and project repin are unchanged.

Tests

  • unit: a_registry_scope_may_be_absent_from_the_content_id_and_nothing_else_may_differ
  • integration (tests/registry_scoped_identity_test.rs, wiremock registry): a scoped reference installs bare-name content; content naming another skill is still refused.
  • scripts/run-tests.sh: 2260 tests, 0 failed.
  • Checked by hand against a live http-registry: skill add scope/name@2.1.0 installs; project repin --check/repin report nothing to do; project install and project install --offline restore from the lock (0.9.275 also restores it).

🤖 Generated with Claude Code

`skill add scope/name@x` from an http-registry refused content whose
SKILL.md declares only `name` ("refusing to install under the wrong
identity"). For a repository origin, a `scope/name` reference now also
accepts bare `name` content; any other name or scope is still refused.
The lock keeps the content id, so restore and repin are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@aroff
aroff enabled auto-merge (squash) October 18, 2026 06:14
@aroff
aroff merged commit 1dac756 into main Oct 18, 2026
14 checks passed
@aroff
aroff deleted the fix/scoped-id-registry-add branch October 18, 2026 06:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants