feat(skills): publish an Agent Skills discovery index - #89
Merged
Conversation
Steel ships five skills through steel-dev/skills, but an agent could only find them by reading the docs or knowing the repo name. Publish the discovery index from cloudflare/agent-skills-discovery-rfc at /.well-known/agent-skills/index.json so they can be fetched in one request. Each entry points at a SKILL.md pinned to the commit it was read from and carries the SHA-256 of those exact bytes. Pinning matters: with a branch URL an upstream edit would silently invalidate every published digest, whereas a pinned pair stays verifiable and the next build re-pins to whatever main holds then. The index is generated during `bun run generate`, like llms.txt, and is gitignored. If GitHub cannot be reached the generator warns and skips, so a docs deploy never hinges on it. An absent index is honest; a stale one would not be.
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
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
isitagentready.comscoreschecks.discovery.agentSkillsas fail: no index at/.well-known/agent-skills/index.json.Unlike most of the other
discoveryfails, this one describes something Steel genuinely has. Five skills ship throughsteel-dev/skillsand are documented under/overview/skills, but an agent can only find them by reading the docs or already knowing the repo name.Change
Publish the index defined by the Cloudflare Agent Skills Discovery RFC (schema
0.2.0), generated from the upstream catalog:{ "$schema": "https://schemas.agentskills.io/discovery/0.2.0/schema.json", "skills": [ { "name": "steel-browser", "type": "skill-md", "description": "Skill for agent-driven web workflows using Steel cloud browsers and API tools.", "url": "https://raw.githubusercontent.com/steel-dev/skills/35bf2783.../steel-browser/SKILL.md", "digest": "sha256:9dee3ac2724d64b37d1b38c56950d84fe821e575faaceaa91f049aa04f65af49" } ] }All five skills are included, beta ones too, since the docs already advertise them.
Artifact URLs are pinned to a commit, not to
main. The schema requires adigestover the artifact's raw bytes. Against a branch URL, any upstream edit to aSKILL.mdwould silently invalidate every digest we publish, and a client that verifies would reject the artifact. Pinned, the URL and digest stay consistent permanently, and each build re-pins to whatevermainholds at that moment.Generated at build, not committed. It runs inside
bun run generatealongsidellms.txtand is gitignored. If GitHub is unreachable the generator warns and skips rather than failing the build: a docs deploy should not hinge on it, and an absent index is honest where a stale one would not be.Verification
Six unit tests on the builder, written failing first, covering the schema URI, one entry per skill, commit pinning, the digest, and rejection of invalid names, over-long descriptions and an empty catalog.
The digest was checked independently of the code that wrote it, by fetching the pinned URL and hashing it:
Served over HTTP as
200 application/jsonwith all five entries. Full suite 218 pass / 0 fail,bun run checkandbun run typecheckclean.Not in this PR
auth.mdwas on the shortlist until we checked what it actually is: WorkOS's agent registration protocol, where an agent signs up for a service on a user's behalf and is issued credentials. Steel has no such flow, so publishing it would advertise a capability that does not exist. Same reasoning retiresoauthDiscovery,oauthProtectedResource,mcpServerCardanda2aAgentCard: those checks should keep failing until the underlying thing exists.apiCatalogremains open and is real work rather than a stub: the generated OpenAPI spec is gitignored and unreachable (docs.steel.dev/openapi.json404s), so publishing the spec is the valuable half and the RFC 9727 linkset follows from it.