Single tool 'get_affected_tests' with clear, well-structured definition. Tool name uses action verb appropriately. Description is substantial (235 chars) and explains what/when/how clearly. Input schema is fully defined with proper JSON Schema structure, types, and parameter descriptions. Risk classification (READ_ONLY) is explicit. However, output schema is not documented, the tool returns text responses but no structured field definitions are provided. Error handling includes contextual guidance for recoverable failures (timeout, missing branch, git errors). Composition is focused (one job: identify affected tests). Minor gap: output schema documentation would improve LLM planning for downstream operations.
Get tests affected by code changes. Runs git diff internally and analyzes which tests need to be run. Returns a sorted list of test FQNs (fully qualified names). If the diff contains changes outside the analyzed Kotlin sources (build scripts, resources), a note is appended — consider running the full test suite for those changes.
Output schema not documented. Tool returns text (affected tests as newline-separated FQNs, optionally with a note about unanalyzed files), but no structured field definitions are provided in the tool definition or source comments. LLMs cannot predict the response structure for downstream planning or extraction.
Parameter 'scope' has default semantics documented ('deep' is default) but no explicit default value is declared in the schema. This invites LLMs to omit the parameter, which is fine here, but best practice is to either make it required or declare a default in the schema.
Error messages are informative for some cases (e.g., timeout guidance: 'analysis timed out after 120s. The project may be too large; consider running the full test suite.') but generic for others (e.g., 'Error: ${e.message}' for uncaught exceptions). Catch Exception broadly and format recovery guidance for specific error types.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | 2026-07-28+ | v2 |