# Tool Validation

> Behaviour harness for the 8 ASCII Canvas drawing tools. Use when changing tools, canvas interaction, border styles, or when AGENTS.md tool checklist applies.

- Skill: `d-o-hub/tool-validation` (Agent Skill)
- Install (CLI): `npx skillmds@latest add d-o-hub/tool-validation`
- Raw SKILL.md: https://api.skillmd.com/api/skills/d-o-hub/tool-validation/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: d-o-hub (https://skillmd.com/u/d-o-hub)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/d-o-hub/tool-validation

---


# Tool Validation Skill

Behaviour-harness methodology for the 8 drawing tools. Complements computational sensors (`verify` / E2E). See [agents-docs/harness.md](../../../agents-docs/harness.md).

## Verification Checklist

### 1. Select Tool (V)
- **Selection**: Dragging should show a semi-transparent blue highlight.
- **Move**: Clicking inside an active selection and dragging should move the content.
- **Delete**: Pressing `Delete` or `Backspace` while a selection is active should clear the region.

### 2. Rectangle Tool (R)
- **Drawing**: Dragging should preview a box with the current border style.
- **Commit**: Releasing the mouse should commit the rectangle to the grid.

### 3. Line Tool (L)
- **Drawing**: Supports horizontal, vertical, and diagonal lines.
- **Direction**: Should respect "Auto", "Horizontal", or "Vertical" overrides if set.

### 4. Arrow Tool (A)
- **Head**: Should draw a directional arrowhead (▲▼◄►) at the end of the line.
- **Overlap**: The arrowhead must not be overwritten by the line character.

### 5. Diamond Tool (D)
- **Shape**: Should draw a rhombus using diagonal lines (╱╲).
- **Small Shapes**: Should fallback to `◆` for single-point or very small drags.

### 6. Text Tool (T)
- **Input**: Clicking on the canvas should set a cursor.
- **Typing**: Alphanumeric keys should appear at the cursor.
- **Controls**: `Enter` (newline), `Backspace` (delete previous), and `Delete` (delete current) must work.

### 7. Freehand Tool (F)
- **Style**: Must use the character associated with the current Border Style (e.g., `·` for Single, `*` for ASCII).
- **Interpolation**: Drawing fast should still produce a continuous line.

### 8. Eraser Tool (E)
- **Function**: Should clear cells within its radius to spaces.
- **Bounds**: Must not emit operations outside the grid coordinates.

## Automation
Use the provided Playwright scripts in `e2e/tools-drawing.spec.ts` for automated regression testing.

