Repository navigation
fix(install): accept a registry scope absent from the content id - #433
Merged
Merged
Conversation
`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>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
fastskill skill add scope/name@versionfrom an http-registry failed:An http-registry names packages
scope/name, but the content (SKILL.md / skill-project.toml) usually declares onlyname. The identity check inprepare_fetchedcompared the two strings exactly.Fix
identity_matches(install/verification.rs): for a repository origin, ascope/namereference also accepts content whose id is the barename. 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 recordingscope/name, so lock restore andproject repinare unchanged.Tests
a_registry_scope_may_be_absent_from_the_content_id_and_nothing_else_may_differtests/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.skill add scope/name@2.1.0installs;project repin --check/repinreport nothing to do;project installandproject install --offlinerestore from the lock (0.9.275 also restores it).🤖 Generated with Claude Code