{ "name": "review-skills", "description": "Dynamically inventory and review every skill with the standard checklist and regression-test plan.", "args": { "hint": "[skills-root]", "params": ["root"] }, "schemas": { "SkillInventory": { "type": "object", "properties": { "skills": { "type": "array", "items": { "type": "string" } } }, "required": ["skills"] }, "SkillReview": { "type": "object", "properties": { "skill": { "type": "string" }, "findings": { "type": "array", "items": { "type": "object", "properties": { "category": { "type": "string" }, "severity": { "type": "string" }, "file": { "type": "string" }, "line": { "type": "integer" }, "title": { "type": "string" }, "detail": { "type": "string" }, "fix": { "type": "string" }, "testPlan": { "type": "string" } }, "required": ["category", "severity", "file", "line", "title", "detail", "fix", "testPlan"] } }, "regressionTests": { "type": "array", "items": { "type": "string" } } }, "required": ["skill", "findings", "regressionTests"] }, "SkillReviewSummary": { "type": "object", "properties": { "summary": { "type": "string" }, "mustFix": { "type": "array", "items": { "type": "string" } }, "reviews": { "type": "array", "items": { "type": "object" } } }, "required": ["summary", "mustFix", "reviews"] } }, "phases": [ { "id": "inventory", "kind": "single", "step": { "prompt": "Use bash to list every file named SKILL.md under the skills root. Skills root argument: {args.root}. If the argument is empty, use agent/skills. Run an equivalent of: find ROOT -name SKILL.md -type f -printf parent-directory newline, then sort. Include ignored directories too. Return JSON matching the SkillInventory schema. The skills field must be an array of repo-relative directory strings such as agent/skills/brutal. Do not modify anything.", "tools": ["bash", "find", "ls"], "schema": "SkillInventory" } }, { "id": "review", "kind": "fanout", "over": "{inventory.results[].skills[]}", "concurrency": 6, "step": { "prompt": "Review skill directory {item}. Use this checklist: Correctness logic errors edge cases off-by-one; Security injection auth secrets input validation; Performance quadratic traps unnecessary allocations N plus one work; Readability naming complexity comments; Testing coverage gaps missing edge cases; Style brutal minimal direct code. Inspect SKILL.md plus sibling references scripts package files as needed. Provide specific line references and fix suggestions. Provide regression test plan items. Do not modify anything. Return JSON matching the SkillReview schema and echo {item} as skill.", "tools": ["read", "bash", "grep", "find", "ls"], "schema": "SkillReview" } }, { "id": "summarize", "kind": "single", "step": { "prompt": "Synthesize all skill reviews. If Reviews is empty, state that the workflow failed to produce reviews and add a mustFix entry for the workflow inventory or fanout. Otherwise deduplicate repeated repo-wide issues. Keep actionable findings with skill path, file, line, category, severity, fix, and regression test plan. Preserve empty per-skill reviews as clean. Reviews: {review.results}", "schema": "SkillReviewSummary" } } ], "return": "{summarize.results}" }