Proposal: Optional requires field for runtime-agnostic skill content portability
#443
Replies: 2 comments
|
Realized the original proposal didn't explain the "why this helps agentskills.io" clearly enough. Adding that here. Why
|
That sounds a lot like the existing I think it's very useful in cases like yours where tool names aren't reliable (e.g., due to client-side name mangling). By the way, if you're interested, there are some other discussion threads where semantic tool match has come up. For example, #392 (comment). |
Uh oh!
There was an error while loading. Please reload this page.
Proposal: Optional
requiresfield for LLM-agnostic skill portabilityThe real problem (not theoretical)
I maintain the same skill — adversarial code review — in two versions:
Agent(subagent_type: "code-reviewer")to spawn reviewersdelegate_task()with adversarial promptsSame process. Same intent. Two completely different tool-invocation syntaxes. Every time I fix a step or improve the prompt, I have to edit two files. Every new runtime adds a third version.
This isn't a future problem. It's a right-now problem with 5+ major AI coding agent runtimes, each with different tool names for the same operations.
What I'm proposing
A lightweight
requiresfield in the SKILL.md frontmatter. That's it. One optional field. The semantics live in a separate companion spec.requireslists which semantic verbs (abstract operations) the skill depends on. It does not name runtime-specific tools. It does not change how agentskills.io works today.Why
requiresand not something heavierThe semantic verb standard lives elsewhere
I built a companion specification at checkgrow/skill-runtime with 10 semantic verbs + a mapping table for Claude Code/Hermes/Codex. This is deliberately separate from agentskills.io — agentskills owns the packaging standard. skill-runtime is an optional portability layer.
The
requiresfield is the bridge between them.What this looks like in practice
A SKILL.md uses
{review}instead ofAgent(subagent_type: "code-reviewer"):Before loading into the LLM context, a thin adapter (60-line Python script) replaces
{review}with the current runtime's native tool call. Claude Code →Agent(subagent_type: "code-reviewer"). Hermes →delegate_task(). Codex → its equivalent.Relationship to existing fields
name/description: No change.requiresis an additional optional field.allowed-tools(Claude Code ecosystem): Complementary.requiresdeclares what the skill needs.allowed-toolsconstrains what it may use. If both exist, the runtime reconciles them.Why I think this belongs in agentskills.io
agentskills.io already solves the "write once, use everywhere" problem for skill packaging (directory structure, metadata). But skills that reference runtime-specific tools are only portable on paper — they break when you switch runtimes. The
requiresfield makes the existing portability promise real for skills that need to invoke tools.Disclosure
This proposal was developed with Claude Code assistance. The semantic verb standard and adapter implementation are in checkgrow/skill-runtime. The real-world problem (two versions of the same skill for different runtimes) is documented in that repo's SPEC.md.
All reactions