/test
Runs lint, type check, tests, and visual verification. Auto-detects tools. Use when running tests, linting, type checking, or writing tests.
$ npx -y skills add brsbl/ottonomous --skill test --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.
- You can call itInvoke it directly when you want it.
- Slash command
/test
Context preview
The summary Claude sees to decide when to auto-load this skill.
Runs lint, type check, tests, and visual verification. Auto-detects tools. Use when running tests, linting, type checking, or writing tests.
SKILL.md
test.SKILL.mdname: test
description: Runs lint, type check, tests, and visual verification. Auto-detects tools. Use when running tests, linting, type checking, or writing tests.
argument-hint: <run | write | browser | electron | all> [staged | branch]
**Arguments:** $ARGUMENTS
| Command | Behavior | |---------|----------| | `run` | Lint + type check + run tests | | `write` | Generate tests, then run pipeline | | `browser` | Visual verification (web apps) | | `electron` | Visual verification (Electron/VS Code apps) | | `all` | run + browser/electron combined |
**Scope (optional, default: branch):**
| Scope | Command | |-------|---------| | `branch` | `git diff main...HEAD --name-only` | | `staged` | `git diff --cached --name-only` |
---
Run Mode
1. Detect Tools
| Config | Tool | Command | |--------|------|---------| | `package.json` + vitest | Vitest | `npx vitest run` | | `package.json` + jest | Jest | `npx jest` | | `package.json` + `"test"` | npm | `npm test` | | `pyproject.toml` | pytest | `pytest` | | `Cargo.toml` | cargo | `cargo test` | | `go.mod` | go | `go test ./...` | | `.eslintrc*` / `eslint.config.*` | ESLint | `npx eslint .` | | `biome.json` | Biome | `npx biome check .` | | `tsconfig.json` | TypeScript | `npx tsc --noEmit` |
2. Setup (if missing)
# JS/TS test runner
npm install -D vitest
# JS/TS linter
npm install -D eslint @eslint/js
# JS/TS types
npm install -D typescript && npx tsc --init
# Python
pip install pytest ruff mypy
3. Run Pipeline
# 1. Lint
npx eslint . --fix # or: npx biome check . --write
# 2. Type check
npx tsc --noEmit # or: mypy .
# 3. Test
npx vitest run # or: pytest, cargo test, go test ./...
Fix errors, re-run until all pass.
---
Write Mode
1. Get Changed Files
git diff main...HEAD --name-only # branch scope
git diff --cached --name-only # staged scope
Filter to source files (exclude tests, configs, docs).
2. Launch Test Writers
Delegate files to the `test-writer` subagent (persona in `agents/test-writer.md`). It determines testability and writes tests.
| Files | Subagents | |-------|-----------| | 1-3 | 1 | | 4-8 | 2-3 | | 9+ | 3-5 |
spawn subagent(role="test-writer", prompt="Write tests for: [file list]. Runner: vitest. Convention: *.test.ts")
3. Run Pipeline
Same as Run Mode step 3.
---
Browser Mode
Visual verification for web apps. The legacy standalone UI automation workflow has been removed; use the host environment's available browser automation tool directly.
1. Detect dev server URL from package.json or running processes 2. Open the URL, capture an accessibility/DOM snapshot, interact through semantic selectors, and take screenshots 3. Screenshots go to `.otto/test-screenshots/` 4. Cleanup any browser session/tool process and remove `.otto/test-screenshots` when no longer needed
---
Electron Mode
Visual verification for Electron/VS Code apps. The legacy standalone UI automation workflow has been removed; use the app's project-specific harness first when available, otherwise use the host environment's available browser automation tool directly.
1. Detect app type: `engines.vscode` in package.json → VS Code extension, `electron` in dependencies → Electron app 2. Build first: `npm run compile` 3. Launch with CDP/automation hooks, connect, inspect snapshots/webviews, interact through semantic selectors, and take screenshots 4. Screenshots go to `.otto/test-screenshots/` 5. Cleanup browser/app processes and remove `.otto/test-screenshots` when no longer needed
---
All Mode
1. Run Mode (lint, type check, test) 2. Auto-detect: web → Browser Mode, Electron/VS Code → Electron Mode 3. Report results
Read more
name: test description: Runs lint, type check, tests, and visual verification. Auto-detects tools. Use when running tests, linting, type checking, or writing tests. argument-hint: <run | write | browser | electron | all> [staged | branch]
**Arguments:** $ARGUMENTS
| Command | Behavior | |---------|----------| | `run` | Lint + type check + run tests | | `write` | Generate tests, then run pipeline | | `browser` | Visual verification (web apps) | | `electron` | Visual verification (Electron/VS Code apps) | | `all` | run + browser/electron combined |
**Scope (optional, default: branch):**
| Scope | Command | |-------|---------| | `branch` | `git diff main...HEAD --name-only` | | `staged` | `git diff --cached --name-only` |
---
Run Mode
1. Detect Tools
| Config | Tool | Command | |--------|------|---------| | `package.json` + vitest | Vitest | `npx vitest run` | | `package.json` + jest | Jest | `npx jest` | | `package.json` + `"test"` | npm | `npm test` | | `pyproject.toml` | pytest | `pytest` | | `Cargo.toml` | cargo | `cargo test` | | `go.mod` | go | `go test ./...` | | `.eslintrc*` / `eslint.config.*` | ESLint | `npx eslint .` | | `biome.json` | Biome | `npx biome check .` | | `tsconfig.json` | TypeScript | `npx tsc --noEmit` |
2. Setup (if missing)
# JS/TS test runner npm install -D vitest # JS/TS linter npm install -D eslint @eslint/js # JS/TS types npm install -D typescript && npx tsc --init # Python pip install pytest ruff mypy
3. Run Pipeline
# 1. Lint npx eslint . --fix # or: npx biome check . --write # 2. Type check npx tsc --noEmit # or: mypy . # 3. Test npx vitest run # or: pytest, cargo test, go test ./...
Fix errors, re-run until all pass.
---
Write Mode
1. Get Changed Files
git diff main...HEAD --name-only # branch scope git diff --cached --name-only # staged scope
Filter to source files (exclude tests, configs, docs).
2. Launch Test Writers
Delegate files to the `test-writer` subagent (persona in `agents/test-writer.md`). It determines testability and writes tests.
| Files | Subagents | |-------|-----------| | 1-3 | 1 | | 4-8 | 2-3 | | 9+ | 3-5 |
spawn subagent(role="test-writer", prompt="Write tests for: [file list]. Runner: vitest. Convention: *.test.ts")
3. Run Pipeline
Same as Run Mode step 3.
---
Browser Mode
Visual verification for web apps. The legacy standalone UI automation workflow has been removed; use the host environment's available browser automation tool directly.
1. Detect dev server URL from package.json or running processes 2. Open the URL, capture an accessibility/DOM snapshot, interact through semantic selectors, and take screenshots 3. Screenshots go to `.otto/test-screenshots/` 4. Cleanup any browser session/tool process and remove `.otto/test-screenshots` when no longer needed
---
Electron Mode
Visual verification for Electron/VS Code apps. The legacy standalone UI automation workflow has been removed; use the app's project-specific harness first when available, otherwise use the host environment's available browser automation tool directly.
1. Detect app type: `engines.vscode` in package.json → VS Code extension, `electron` in dependencies → Electron app 2. Build first: `npm run compile` 3. Launch with CDP/automation hooks, connect, inspect snapshots/webviews, interact through semantic selectors, and take screenshots 4. Screenshots go to `.otto/test-screenshots/` 5. Cleanup browser/app processes and remove `.otto/test-screenshots` when no longer needed
---
All Mode
1. Run Mode (lint, type check, test) 2. Auto-detect: web → Browser Mode, Electron/VS Code → Electron Mode 3. Report results
Skills for every stage of product development — spec writing, task prioritization, implementation, testing, code review, and summaries — that work in both Claude Code and OpenAI Codex.
Repo: brsbl/ottonomous
Other skills on ottonomous.
- /reset-code
What to reset: diffs, otto, code, deps, or all (default: all)
Open skill - /skill-diff
Shows side-by-side diffs of skill changes. Generates HTML comparison of before/after for changed SKILL.md files. Use when reviewing skill changes.
Open skill - /next
Pick or implement the next task or session. Use when continuing work, picking the next task, or implementing tasks from a task list.
Open skill - /otto
Autonomous product development. Takes an idea and builds it end-to-end with subagents. Write a product spec, generate tasks from spec, implement each task while testing/reviewing changes, with final verification. Use when you want to build something from scratch.
Open skill - /reset
Subdirectories to clear: tasks, specs, sessions, or all (default: all). Docs are preserved.
Open skill - /review
Reviews code changes for bugs with P0-P2 prioritized feedback. Uses parallel subagents for thorough analysis, then creates fix plans. Use when reviewing code, finding bugs, checking quality, or before merging. Use review fix to implement fixes.
Open skill

