Simple, effective agent loop with tool execution and event streaming
yoagent provides 7 tools with basic schemas and descriptions, but falls short of production quality. Most tools have descriptions (6/7), but they are generic and lack actionable guidance. Schemas are present but minimal, parameters lack detailed type constraints, ranges, or format specifications. Critical gaps: no error recovery guidance, no parameter validation rules in descriptions, no output schema documentation. The bash tool is particularly risky with no safety constraints or dry-run capability. Tools like shared_state lack idempotency guarantees. Average tool score: 52/100.
Execute shell commands
Replace text in a file
List files in a directory
Read file contents with optional line offset and limit
Search for a pattern in files
Read and write named variables in a shared store. Variables persist across tool calls within this session.
Write content to a file, creating directories as needed
bash tool lacks safety constraints and error guidance. No dry-run, no confirmation step, no list of forbidden commands. Description is 18 chars, too brief to guide LLM on when/how to use it safely.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. E.g., read_file should document it returns {content: string, line_count: int}.
Parameter descriptions lack constraints and format specs. E.g., 'path' has no guidance on absolute vs relative, symlink handling, or max length. 'limit' in read_file has no min/max bounds.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | <=2025-11-25 | v2 |
search tool is vague. 'Pattern' could mean regex, glob, or literal string, no enum or format constraint. No guidance on file scope, recursion depth, or result limit. Naming is generic ('search' vs 'search_files').
No error recovery guidance. Tools return errors but do not tell LLM what to do next. E.g., 'File not found' should suggest 'Try list_files() to see available files.'