diag

Runs build and test commands under a timeout and diffs parsed diagnostics between runs.

Updated Jul 28, 2026
One-click install
npx skills add https://github.com/vinzenz/workflows --skill diag-vinzenz
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: diag
Source: https://github.com/vinzenz/workflows/tree/main/.agents/skills/diag
Command: npx skills add https://github.com/vinzenz/workflows --skill diag-vinzenz

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Build, lint, and test commands produce walls of output that agents must reread after every fix. diag runs the command under an enforced timeout, normalizes the output into a fixed diagnostic shape, persists the run, and diffs it against the previous run of the same command so you only see what is new and what got fixed. ## Core Features & Use Cases - Run-Parse-Persist-Diff Loop: Wrap any build/test/lint command in diag run -- and get new/fixed/unchanged counts instead of the full log on reruns. - Format Adapters: Auto-detects parsers for tsc, eslint JSON, node --test, pytest/ruff/flake8, and a generic path:line:col: severity shape, with an honest unparsed status when nothing matches. - Timeout Enforcement: Commands that hang (watchers, stuck tests) are killed after --timeout and reported as real failures instead of silence. - Use Case: After fixing a TypeScript error, rerun diag run -- npx tsc -p . --noEmit and read new: 0 fixed: 3 unchanged: 2 instead of scrolling the entire compiler output again. ## Quick Start Run my TypeScript check through diag so that on the next run I only see which diagnostics are new or fixed.

Frequently Asked Questions about diag

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run a build command and only see new errors?▼

Wrap the command with diag run, for example diag run -- npx tsc -p . --noEmit. On the first run it stores the parsed diagnostics; rerunning the exact same command reports new, fixed, and unchanged counts instead of the full output.

What output formats can diag parse?▼

diag auto-detects adapters for tsc, eslint JSON output, node --test (default and TAP reporters), pytest short summary, ruff/flake8 style file:line:col lines, and a generic path:line:col severity shape. You can force one with diag run --parser <name>.

Does diag handle commands that hang or time out?▼

Yes, diag run enforces a real timeout via the --timeout flag and kills the wrapped command when it expires. The run is reported as timed out with the exit status and captured output rather than hanging silently.

Why does diag report parser none or status unparsed?▼

parser none means no adapter recognized the command's output format. If the run also failed or timed out, diag reports status unparsed with the exit code and a raw output tail, so an empty diagnostic table is never mistaken for success.

When should I not use diag for running commands?▼

Avoid diag for one-off ad hoc commands or first-time exploration of a command's output, since there is no previous run to diff against. Plain shell or rtk is cheaper when you will not rerun the exact same command string.