Hey all,
Agent ecosystems need a canonical way to reference the skills an agent offers. Today skills declarations live only inside offchain URI files, which makes it harder to discover agents by skill, aggregate reputation at the skill level, or link a completed job to the specific skills that produced it.
I’d like to propose an EIP that introduces:
- Canonical Onchain Skill Identity: An ERC-721
SkillRegistrywhere each token is a skill, withtokenURIpointing to a standardized offchain manifest describing the skill. Skills are stable, transferable, and identifiable across the ecosystem. - Skill Registration File Format: Fields native to skills such as:
invocations(prompt bundles, MCP servers, code packages, plugins), each with aninstallationslot for commands or LLM-ready prompts.license, dependencies, requirements, taxonomy (OASF, etc.), and status - Event Level Attestation Layer: A
SkillAttestationcontract emitsSkillUsedevents covering various authorization paths including self-attestation, ERC-8183 job evaluator attestation, and ERC-8183 hook attested routes. Indexers fold events into per-agent-per-skill and per-skill views. - Event Level Installation Layer: A
SkillInstallationcontract emits install/uninstall events so each agent can declare capabilities with the particular skills it offers.
Proposed Spec: ERC PR
Reference Implementation: vorpalengineering/agent-skill-registry
Happy to dig into the spec for any questions you might have!
A few open questions to spark discussion:
- An earlier version of the spec used ERC-1155 instead of ERC-721 for the Skill Registry. The idea here was that registrations would create a new tokenId (with standard Ownable features) and balances would represent installations of that skill in a soulbound-like fashion (balance capped at 1 and non-transferrable). The current event-only design was favored to keep the spec light and more gas-efficient, however it does prevent some interesting token-gated skill possibilities and onchain skill installation query-ability through balances.
- How do we feel about piggybacking off the ERC-8004 Reputation system? Currently it requires taking up both
tag1andtag2on thegiveFeedback()calls. Rolling our own skill reputation system felt unnecessary when we could tap into existing rails, and this allows indexers to filter and parse on specific tags. - The current attestation design covers 3 unique types: self-attested, evaluator-attested, and hook-attested. Is this sufficient coverage? Is this design missing any critical types or blocking support for standardized attestations (i.e. EAS attestations?)