Lazy router over the local Claude Code skill library: search + load SKILL.md files by keyword overlap, so a caller can find a skill without scanning every directory itself.
Three tools with clear verb-noun naming (skill_search, skill_load, skill_reindex). Descriptions are present and reasonably detailed (100-150 chars), guiding LLM selection. Input schemas are properly defined with types and descriptions for all parameters. However, output schemas are completely undocumented, LLMs cannot predict what fields to expect from responses. skill_search and skill_load lack error recovery guidance. skill_reindex has no parameters documented in schema (empty properties object). No pagination support despite search potentially returning many results. Responses are JSON-wrapped in text fields rather than structured tool output.
Load the full SKILL.md content for a skill id (from skill_search) or name.
Rescan the skill roots and rebuild the index. Returns counts per source.
Search the local skill library; returns ranked skill ids to pass to skill_load. Use concrete task keywords (e.g. 'web performance audit', 'cold email sequence'), not filler words. If the top results look wrong, retry once with different domain terms.
Output schemas completely undocumented. LLMs cannot predict response structure (fields, types, nesting). skill_search returns ranked results but format is opaque; skill_load returns {id, name, path, siblings, content} but this is inferred, not declared.
No pagination support. skill_search accepts limit (max 20) but no offset/cursor. If index grows large, LLMs cannot iterate through results beyond top 20. No total count returned to signal more results exist.
Error handling lacks recovery guidance. skill_load returns 'Unknown skill id' with closest matches, which is good. But skill_search returns bare 'No matches' without suggesting retry strategies or broader search terms.
skill_reindex has empty inputSchema properties object. No parameters are documented, even though the tool is callable. Schema should explicitly state it takes no required parameters.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Responses wrapped in JSON-stringified text fields rather than structured output. LLMs must parse JSON from text, wasting tokens and inviting parse errors. Use MCP structured response format.