Skip to content

TheStack-ai/pulser

Repository files navigation

pulser

pulser — Diagnose. Prescribe. Fix.

Website · npm · 한국어

npm license

"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

What it does

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.

Install

npm install -g pulser-cli

On install, pulser registers itself as a Claude Code skill — say "check my skills" or /pulser to run it conversationally.

Usage

In Claude Code

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.

In terminal

# 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-anim

Eval — Skill Testing

New in v0.4.0: test your skills against real inputs.

pulser eval

Write 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: 30

pulser 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).

Exit Codes (eval)

Code Meaning
0 All tests passed
1 Failures found
3 Regression detected (previously passing test now fails)

Core Pipeline

  1. Diagnose — Scan and classify issues across 8 rules
  2. Prescribe — Explain why it matters, provide ready-to-use templates
  3. Fix — Auto-apply safe structural fixes with full backup
  4. Eval — Test skills against real inputs, track regressions
  5. Rollback — Instant undo, your safety net

Exit Codes

Code Meaning
0 All rules passed
1 Errors found
2 Warnings found (with --strict)

Patient Monitor TUI

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.

License

MIT — whynowlab

About

Diagnose, classify, prescribe, and fix Claude Code skills — without leaving the conversation.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors