A lightweight AI coding assistant running as a bash script with tools for reading, editing, and writing files, running bash commands, and searching codebases
claude.sh provides 6 tools with complete input schemas and descriptions. Naming is clear and action-oriented (Bash, Read, Edit, Write, Glob, Grep). Descriptions are adequate (80-150 chars) and explain purpose. However, output schemas are entirely undocumented, LLMs cannot predict what fields to expect from tool results. Parameter descriptions are present but minimal (10-30 chars), lacking format constraints, ranges, or examples. Error handling is basic; no guidance on recovery or retryability. No tool annotations (readOnlyHint, destructiveHint) despite clear risk profiles. Bash tool lacks input validation for command injection and has no dry-run capability for destructive operations.
Executes a bash command and returns its output. Use for running shell commands, installing packages, running tests, git operations, etc.
Performs string replacement in a file. The old_string must match exactly (including whitespace/indentation). Read the file first.
Finds files matching a glob pattern. Returns file paths sorted by modification time.
Searches file contents using ripgrep. Supports regex patterns.
Reads a file and returns its contents with line numbers. Use to understand code before modifying it.
Creates or overwrites a file with the given content. Use for creating new files.
No output schemas documented. LLMs cannot predict tool result structure (fields, types, pagination). Forces agents to guess what data is available.
Bash tool lacks input validation and command injection protection. No dry-run or confirmation step for destructive commands. Agents can accidentally delete files or corrupt systems.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Bash and Edit/Write are destructive but unmarked. LLMs cannot distinguish safe from risky tools.
Parameter descriptions are minimal (10-30 chars) and lack format constraints. 'timeout' has no range documented (code shows max 300s but description omits this). 'pattern' for Glob/Grep lacks examples of valid glob/regex syntax.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Error handling is generic. No recovery guidance. Bash tool returns '(exit code: N)' but does not tell LLM whether to retry, ask user, or abort. No categorization of retryable vs fatal errors.