"Check my skills." Diagnose, classify, prescribe, and fix — without leaving the conversation.
$ pulser
pulser v0.4.0
54 skills scanned · Score: 89/100
✓ 48 healthy ⚠ 4 warnings ✗ 2 errors
Top issues:
cardnews — No Gotchas, no allowed-tools
geo-audit — 338 lines, single file
💊 Rx #1 — cardnews
[GOTCHAS] Add Gotchas section
Why: Anthropic's highest-ROI improvement
Template:
## Gotchas
1. Validate output against conventions
2. Check scope — don't over-generate
Fix type: AUTO
pulser scans your SKILL.md files against 8 diagnostic rules derived from Anthropic's published principles in "Building Claude Code: How We Use Skills":
| Rule | What it checks |
|---|---|
frontmatter |
Required name and description fields |
description |
Trigger keywords, "Use when" pattern, length |
file-size |
SKILL.md under 500 lines |
gotchas |
Gotchas section with failure patterns |
allowed-tools |
Tool restrictions appropriate for skill type |
structure |
Supporting files for large skills |
conflicts |
Trigger keyword overlap between skills |
usage-hooks |
Skill usage logging hook installed |
Each skill is auto-classified by type (analysis, research, generation, execution, reference) with confidence scoring. Prescriptions are tailored to the detected type.
npm install -g pulser-cliOn install, pulser registers itself as a Claude Code skill — say "check my skills" or /pulser to run it conversationally.
Just say it:
check my skills
Or use the slash command:
/pulser
Claude runs the diagnosis, summarizes results, and offers to fix issues — all within the conversation.
# Scan default path (~/.claude/skills/)
pulser
# Scan a specific directory
pulser ./my-skills/
# Scan a single skill
pulser --skill reasoning-tracer
# Auto-fix issues with backup
pulser --fix
# Rollback the last fix
pulser undo
# JSON output (for CI/automation)
pulser --format json
# Markdown report
pulser --format md
# Treat warnings as errors
pulser --strict
# Disable TUI animation
pulser --no-animNew in v0.4.0: test your skills against real inputs.
pulser evalWrite eval.yaml next to your SKILL.md:
tests:
- name: "catches bugs"
input: "Review: function add(a,b) { return a - b }"
assert:
- contains: "subtract"
- min-length: 30pulser runs each test through claude -p, checks assertions, and tracks regressions automatically.
$ pulser eval
reviewer (2 tests)
✓ catches bugs 320ms
✓ passes clean code 280ms
2 passed · 0 failed · 0.6s
Supported assertions: contains, not-contains, min-length, max-length, matches (regex).
| Code | Meaning |
|---|---|
0 |
All tests passed |
1 |
Failures found |
3 |
Regression detected (previously passing test now fails) |
- Diagnose — Scan and classify issues across 8 rules
- Prescribe — Explain why it matters, provide ready-to-use templates
- Fix — Auto-apply safe structural fixes with full backup
- Eval — Test skills against real inputs, track regressions
- Rollback — Instant undo, your safety net
| Code | Meaning |
|---|---|
0 |
All rules passed |
1 |
Errors found |
2 |
Warnings found (with --strict) |
When running in a TTY terminal, pulser displays a hospital-style patient monitor with real-time waveform animation:
- Green ECG — Skills being scanned
- Green capnography — Pass/warn/fail counts
- Cyan plethysmograph — Health score
- Yellow respiratory — Prescription count
Disable with --no-anim or pipe to a file.
MIT — whynowlab