RFC: Make agents self-describing — tags + when_to_use as the single source of truth
#563
msitarzewski
started this conversation in
Ideas
Replies: 1 comment
|
This is exactly what I built in skillhub (github.com/chandrudp29/skillhub). I went with name: debug-agent
|
0 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
RFC: Make agents self-describing —
tags+when_to_useas the single source of truthTL;DR
Add two frontmatter fields to every agent —
tags(capability keywords) andwhen_to_use(a one-line routing trigger) — and make the README roster, search, and tool integrations generate from them instead of being hand-maintained. This kills doc drift, improves agent routing across Claude Code / Codex / Hermes, and powers the search + MCP ideas the community already proposed. New agents must include both fields (CI-enforced on submission, with a minimal quality bar); the existing 203 are backfilled on a non-blocking track from data we already have — then the fields are required for everyone.Why now
We just hit 203 agents / 14 divisions. Two recurring pains keep surfacing:
descriptionthat's written as identity, not when to use.The root cause is the same: the data that describes an agent's capability and when to reach for it lives in the README (or nowhere), not with the agent. This RFC moves it to the source.
Prior art (this RFC consolidates, with thanks)
This isn't new — it's scattered across dormant threads. Crediting and unifying them:
tagsfield (this RFC adopts it)search.shover tags/descriptionAgentFrontmattertypeThe only genuinely new piece here is
when_to_use(splitting the routing trigger out ofdescription). Everything else is gluing the above into one coherent model.Proposed schema
Two new required-going-forward fields (see enforcement below). Crisp, non-overlapping semantics so they don't drift into three blurbs:
descriptionwhen_to_use(new, required)description, Hermes "When to Use", MCP routingtags(new, required)vibeEnforcement (the key decision)
The fields are only worth adding if coverage is complete — a generated roster / search / router that's missing
when_to_usefor 40% of agents is broken. "Optional forever" guarantees exactly that half-populated outcome. So the fields are required going forward — but enforced in a way that never turns CI red on the 203 legacy agents:new file mode). A new agent withoutwhen_to_use+tagsfails CI with a clear message. The author writes them — which is higher-quality than us inferring from theirdescriptionanyway. This is enforcement on the person who knows the agent best, from day one.Quality bar (presence ≠ quality)
Requiring a field tends to produce lazy values (
tags: [ai, general]). So enforcement is paired with a minimal substance check in the linter, in the spirit of the originality check and the persona-section gate:when_to_use: a real sentence (≥ ~6 words); must not just restate the agent name.tags: a list of ≥ 3, lowercase-kebab-case.Non-negotiables (kept)
when_to_useand a shorttagslist — is a modest, value-adding ask (they make the agent route better), not build-system friction. A clear template + actionable CI errors keep the first-time-contributor path smooth.--check), same pattern as feat: generate README agent index from source files #361; nothing underintegrations/changes.Downstream payoff (what generating from frontmatter unlocks)
tagsacross divisions.tags+when_to_useinstead of grepping prose.when_to_usemaps directly into the fields target tools already use for delegation:description(delegation trigger)description("when Codex should use this agent")Migration (phased, low-risk)
AgentFrontmattertype.tagsfrom the README's hand-curated Specialty column andwhen_to_usefrom the When to Use column — this data already exists and was curated by hand, so the migration is mostly mechanical + a review pass. No curation is wasted; it's promoted to source-of-truth.--checkguard; retire the hand-maintained tables.when_to_usemapping (Codex/Hermes/Claude).Each phase is independently shippable and reversible.
Open questions
when_to_usevs. just rewritingdescription? Alternative: drop the new field, redefinedescriptionto be trigger-oriented, accept a slightly weaker identity line. Simpler (no schema change) but loses the clean identity/trigger split. (RFC's lean: keep them separate — the split is what makes routing good.)tags: freeform or controlled vocabulary? Lean: start freeform, curate a canonical set later once usage shows the natural taxonomy.when_to_usevsuse_whenvstriggersvsactivation.What this RFC is NOT proposing
tagsis additive discovery, divisions stay.Asks for the thread
All reactions