Learns a codebase's unwritten conventions and ghostwrites new code that matches them. Exposes tools for analyzing codebases, extracting style rules, and refreshing profiles via MCP.
Three tools with clear verb-noun naming (analyze_repo, get_style_rules, refresh_style_profile) and reasonable descriptions (120-180 chars). All parameters have type definitions and descriptions. However, output schemas are not documented, the tools return plain strings with no structured field definitions. Error handling is minimal (no recovery guidance for 'no files found' case). Tool annotations present but incomplete (missing destructiveHint details). Parameters lack constraints (e.g., path validation, enum values). No pagination or result limits documented despite potential for large analysis outputs.
Analyze a codebase's real coding conventions (naming, docstrings, error handling, typing, formatting, imports) and return them as rules.
Get the style rules for a codebase, using a cached profile if one exists at .style-dna/style_profile.json, otherwise analyzing fresh.
Re-analyze a codebase and overwrite its cached style profile. Call this after significant new code has been merged, so the learned conventions stay current.
Output schemas not documented. Tools return plain strings with no structured field definitions. LLMs cannot parse results or chain to downstream tools.
No error recovery guidance. 'No supported source files found' error provides no actionable next step (e.g., 'Check that path contains Python/JS/TS/React/CSS/HTML files').
Path parameter lacks validation constraints. Description does not specify: must be absolute or relative? Must exist? What happens if path is invalid or inaccessible?
Tool annotations incomplete. analyze_repo and refresh_style_profile marked destructiveHint=false but both write to .style-dna/style_profile.json, should be true.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
No result limits or pagination. Large codebases could produce very long rule strings, risking context window exhaustion. No mention of max output size or truncation behavior.