Skip to content

feat: fail the gate when a trigger is recorded but unroutable - #9

Merged
jpantsjoha merged 1 commit into
mainfrom
feat/routable-triggers-guard
Aug 7, 2026
Merged

feat: fail the gate when a trigger is recorded but unroutable#9
jpantsjoha merged 1 commit into
mainfrom
feat/routable-triggers-guard

Conversation

@jpantsjoha

Copy link
Copy Markdown
Owner

Third and final cherry-pick from #4.

The gap it closes

Moving routing keywords out of triggers and into description left the metadata copy as a second source of truth with nothing keeping the two in step. A trigger that lives only in metadata is unroutable — no conformant client reads metadata, they match on description alone — so it rots silently while still looking like coverage.

validate_skills.py and the smoke tests now assert every metadata trigger appears in the description. That makes the metadata index a derived view rather than a competing source of truth.

  • Current main already satisfies the invariant — this is a pure regression guard, no fixes needed.
  • Verified to fail correctly on an injected unroutable trigger.
  • Tests 195 → 212.

Also adds the skills/mcp-servers/SKILL.md section on what the portable mcp.json ships versus what the reader opts into, and why Toolbox is excluded.

Why cherry-pick rather than merge #4

#4 is CONFLICTING. Merging it would delete CHANGELOG.md (-109), delete skills/mcp-servers/references/agent-plugins-mcp.md (-89), revert the version to 0.1.0, and revert the routing disambiguation clauses in eight skills. Its genuinely additive content is now fully extracted across #8 and this PR.

Moving routing keywords out of `triggers` and into `description` left the
metadata copy as a second source of truth with nothing keeping the two in step.
A trigger that lives only in metadata is unroutable — no conformant client reads
metadata, they match on `description` alone — so it would rot silently and give
a false impression of coverage.

validate_skills.py and the smoke tests now assert every metadata trigger appears
in the description, making the metadata index a derived view rather than a
competitor. Current main satisfies this already; the check is a regression guard,
verified to fail on an injected unroutable trigger. Tests 195 -> 212.

skills/mcp-servers/SKILL.md gains the section explaining what the portable
mcp.json ships versus what the reader opts into, and why Toolbox is excluded.

Cherry-picked from the parallel branch on PR #4.
@jpantsjoha
jpantsjoha merged commit 3dca6e3 into main Aug 7, 2026
1 check passed
@jpantsjoha
jpantsjoha deleted the feat/routable-triggers-guard branch August 7, 2026 14:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants