Architectural intelligence for AI coding agents — one call gives your editor full context before it edits. Provides deep static analysis of Python codebases with dependency graph analysis, coupling metrics, cycle detection, architecture rule enforcement, and symbol-level impact analysis.
Hawkeye provides 8 well-named, action-verb tools with comprehensive parameter schemas and detailed descriptions. All tools follow verb_noun naming (analyze, context, show, check, metrics, impact, hotspots, serve). Descriptions are substantive (150 - 250 chars), explaining WHAT, WHEN, and output. Input schemas are complete with types, enums, and descriptions. However, output schemas are NOT documented, LLMs cannot predict return structure. Error handling is absent; no recovery guidance or actionable error messages. No tool annotations (readOnlyHint, destructiveHint). Parameter descriptions could be more prescriptive about constraints (e.g., max_depth range, exclude glob syntax). Missing: per-tool output schema documentation, error classification, and confirmation patterns for destructive operations (check tool can fail CI/CD).
Full project analysis with metrics and health scoring. Scan a codebase and produce a comprehensive report including dependency graph, coupling metrics (Ca/Ce/I), complexity metrics (CC/Cog), abstractness (A), distance from main sequence (D), health classification, and cycle detection.
Enforce architecture rules — CI/CD gate with exit codes. Evaluate architecture rules defined in hawkeye.toml and exit non-zero on violations. Supports: layer ordering, forbidden imports, module independence (transitive), protected modules, acyclic sibling enforcement, and cycle detection.
AI-ready architectural context for one or more files. Generate a single JSON blob with everything an AI agent needs before editing a file: dependencies, dependents, blast radius, complexity, health, insights, risk classification, cycle involvement, and related files. For multi-file edits, pass multiple files to get combined blast radius and shared dependency analysis.
Git-based hotspot analysis combining code complexity with recent change frequency. Identifies modules that are both complex and frequently modified, indicating high-risk areas. Analyzes commit history over configurable time period.
Symbol-level impact analysis. Understand the blast radius of changing a specific class or function. Shows direct and transitive impact across modules. Supports hotspots mode (most-imported symbols), unused symbols detection, and per-symbol impact analysis.
Output schemas not documented. LLMs cannot predict return structure (fields, types, nesting). Forces agents to guess or fail on unexpected formats.
No error handling or recovery guidance. Tools can fail (missing project, invalid config, git errors) but provide no actionable error messages or next steps for LLMs.
No tool annotations. All tools marked READ_ONLY but lack explicit readOnlyHint/destructiveHint/idempotentHint in schema. 'check' tool can fail CI/CD (destructive consequence) but not annotated.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Deep-dive coupling, complexity, and Martin metrics. Display a sortable metrics table for all modules: Ca (Afferent coupling), Ce (Efferent coupling), I (Instability), CC (Cyclomatic complexity), Cog (Cognitive complexity), A (Abstractness), D (Distance from main sequence). Use --functions to see per-function/method complexity breakdown.
Start the MCP server for AI editor integration. Launches the Hawkeye MCP server that provides all analysis tools via the Model Context Protocol for use by AI coding agents and editors.
Open interactive D3.js dependency graph in browser. Generate a self-contained HTML page with an interactive force-directed dependency graph (D3.js). Includes search, zoom, drag, click-to-inspect, health coloring, and cycle highlighting. Opens automatically in browser.
Parameter constraints under-specified. max_depth, limit, days have no min/max bounds documented. exclude/include glob syntax not explained. LLMs may pass invalid values.
'serve' tool description (60 chars) is vague. Does not explain when to call it, what it returns, or how it differs from CLI invocation. Lacks WHEN guidance.