Audit, fix, reduce, and route Claude Code agents safely inside your existing Claude Code setup.
agentmd provides 10 tools with explicit schemas and descriptions. Most tools have clear verb-noun naming (scan_agents, audit_agent, find_agent) and reasonable descriptions (avg ~150 chars). However, several critical gaps reduce quality: (1) Parameter descriptions are minimal or missing context (e.g., 'repo_path' lacks guidance on what happens if invalid); (2) Output schemas are not documented, tools return JSON but LLMs cannot predict field structure; (3) Error handling is generic (fail() wraps errors as text) with no recovery guidance; (4) Some parameters lack constraints (e.g., max_results, max_agents unbounded); (5) Tool descriptions omit prerequisites and side effects (e.g., find_agent with write=true modifies disk but this is buried in description). Naming is solid, but schema completeness and error guidance lag production standards.
Audit a single agent from a file path, raw markdown, URL, or github: source against the current repo.
Audit every agent in a repo: risk, routing, repo-fit, overlap and utility scores, verdicts, duplicate clusters, and prioritized recommendations.
Enforce the repo's .agentmd.yml (or the safe default) against its agents.
Search external Claude Code agent collections for agents matching a natural-language need (e.g. 'react code reviewer'), deduplicate near-identical results, score them for this repo, and return safety-improved, ready-to-use agent .md definitions. Set write to save the top matches into .claude/agents.
Generate a safer rewrite of an existing agent (improve description, reduce permissions, add boundaries, set model, split role). Returns a diff; set apply to write it.
Import agents from a file, URL, raw text, or github:owner/repo, audit them, and recommend which to install for this repo. Use mode to preview or install.
Output schemas not documented. Tools return JSON via json() helper but LLMs cannot predict field structure (e.g., audit_all_agents returns 'report' but fields are opaque). This forces agents to guess at response shape and breaks downstream tool chaining.
Parameter descriptions lack actionable constraints. 'max_results' and 'max_agents' are unbounded integers with no min/max guidance. 'repo_path' defaults to cwd but does not explain validation or error behavior if path is invalid.
Error handling is generic. fail() wraps all errors as plain text with no recovery guidance. LLMs receive 'Error: No agent found at source' but cannot determine if they should retry, adjust parameters, or ask the user.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Install preset agents into .claude/agents. Provide agent ids, or omit to install the repo recommendation. Use dry_run to preview.
Return the minimal, safe agent pack recommended for this repo (from the 5 safe presets by default).
Recommend a conservative, read-only-first chain of agents for a task, plus any agents that should be blocked.
Scan local (and optionally global) Claude Code agents and return the parsed agent definitions.
Destructive operations lack confirmation. find_agent and import_agent with write=true modify disk (.claude/agents) but descriptions do not emphasize this is irreversible. No dry-run or confirmation step offered.
Parameter 'sources' in find_agent is complex (array of objects with 'spec' and 'label') but lacks examples or validation guidance. LLMs may struggle to construct valid source objects without clearer documentation.