Repository navigation
fix(artifact-delivery): run a named Skill by its registry identity - #481
Merged
Merged
Conversation
A name search read the whole Repository tree under the 2,000 entry limit for one Skill folder, so every Repository over that size failed with INVALID_SOURCE. Copies of one Skill in Agent folders or plugin mirrors failed as ambiguous. The search now reads one recursive tree and picks the canonical copy: visible folders first, then fewest segments, then code unit order. Size rejections now name the Skill folder, the size, and the limit, and say when a root Skill counts the whole Repository.
The registry admits a Skill by its folder, so a frontmatter name that differs from the folder, a long description, or a missing field never changes which Skill runs. These findings blocked delivery of Skills the registry lists, such as leonxlnx/taste-skill. The check now reports them as a non-required warning with the exact values, and the policy version moves so no older attestation is reused. Safety checks stay required. A failed Resolution now carries retryAfterSeconds when the failure is retryable. skilld 3.2.0 and later read it. Production rate limits cluster at the top of the hour with waits of 4 to 288 seconds, so a client can wait instead of failing.
skilld run OWNER/REPO/NAME searched the Repository tree for the name, so delivery could disagree with the registry: it failed on copies the registry had already resolved, and it delivered the branch head while the Skill page named another commit. A public name the registry admitted now resolves the admitted folder at the commit the Skill page names. The registry answers over HTTP. A name it does not hold keeps the tree search. A reference the request names still wins.
Nothing noticed when a listed Skill stopped running: each failure surfaced only when a person copied its run command. The sweep-skill-runs task sends the Resolution request the CLI sends for 25 indexed Skills every 15 minutes, records how each settles in artifact_run_checks, and fails its run when a Skill starts failing for a reason a retry cannot change. The cadence watchdog alerts on that failed run.
Collaborator
Author
|
Agent note (Harlan Agent Kit). Checked by hand, since CI cannot cover it:
|
Contributor
🤖 MERGED
GitHub merged this pull request.
Review completed. No finding above 80/100. Selected findings run after merge and open separate pull requests. |
This was referenced Oct 6, 2026
This was referenced Oct 6, 2026
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.
🔗 Linked issue
Related to skilld-dev/skilld#203
❓ Type of change
📚 Description
Popular Skills that the registry lists failed
skilld run. The failures had four causes:INVALID_SOURCE, for examplegithub/awesome-copilot,garrytan/gstackandheygen-com/hyperframes.pbakaus/impeccablehas 20 copies.agent-skills-speccheck blocked Skills whose frontmatter name differs from the folder, or whose description is over 1,024 characters, such asleonxlnx/taste-skill. The registry admits these Skills by folder name.A public name the registry admitted now resolves the admitted folder at the commit the Skill page names. Artifact delivery reads that identity from the new
GET /api/skills/run-identityroute over HTTP. A name the registry does not hold keeps the tree search. That search no longer applies the folder limit, and it picks the canonical copy: visible folders first, then fewest segments, then code unit order.agent-skills-specnow reports its findings as a non-required warning with the exact values. The credential, path and size checks stay required. The policy version moves, so no older attestation is reused.Size rejections name the folder, the size and the limit. They also say when a root Skill counts the whole Repository. Skills over a limit still fail:
tt-a1i/archifypacks to 10.36 MiB, andlatent-spaces/bragholds four music files of 2.01 to 3.76 MiB. A failed Resolution now carriesretryAfterSecondswhen it is retryable. skilld 3.2.0 and later read it.The new
sweep-skill-runstask sends the CLI's Resolution request for 40 indexed Skills every 15 minutes, so the 5,949 indexed Skills cycle in about 37 hours. It records how each one settles inartifact_run_checks. It fails its run when a Skill starts to fail for a reason a retry cannot change, and the cadence watchdog alerts on that run.During the deploy, the artifact signer updates before the site. A build that the old site checked in that window cannot be signed. A rerun after the deploy works.