
Health Check
- 20 installs
- 22 repo stars
- Updated May 28, 2026
- acedergren/agentic-tools
health-check is a Claude Code skill that runs codebase quality gates (typecheck, lint, tests, security, dead code, circular deps, audit) and reports pass/fail.
About
health-check is a Claude Code skill that runs a full codebase quality-gate diagnostic: typecheck, tests, lint, Semgrep security scan, circular-dependency and dead-code checks, and dependency audit. A developer uses it before a PR to see pass/fail across all gates. It is headless and only reports a summary table, never editing files or suggesting fixes.
- Runs typecheck, tests, lint, security, dead-code, and audit gates
- Headless: reports pass/fail without editing or suggesting fixes
- Ships a run-health-check.sh helper with quick/security/code-quality modes
Health Check by the numbers
- 20 all-time installs (skills.sh)
- Ranked #736 of 1,352 Code Review & Quality skills by installs in the Skillselion catalog
- Data as of Jul 28, 2026 (Skillselion catalog sync)
health-check capabilities & compatibility
Free; runs local dev tooling already in the repo.
- Capabilities
- quality gates · code review · security audit
- Use cases
- testing · code review · security audit
- Platforms
- macOS · Linux
- Pricing
- Free
What health-check says it does
Reports pass/fail across all checks without making edits or suggesting fixes.
Never stop after the first failing gate — report the full picture even with failures.
npx skills add https://github.com/acedergren/agentic-tools --skill health-checkAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 20 |
|---|---|
| repo stars | ★ 22 |
| Last updated | May 28, 2026 |
| Repository | acedergren/agentic-tools ↗ |
What it does
Run all codebase quality gates and report a pass/fail summary table before opening a PR.
Who is it for?
Pre-PR validation and repo diagnostics that need a full pass/fail picture without edits.
Skip if: Committing, pushing, mutating files, or analyzing and fixing the failures it reports.
When should I use this skill?
Use when running codebase quality gates such as typecheck, lint, tests, security, dead code, circular deps, and audits before a PR.
What you get
A summary table showing PASS/FAIL/SKIP/WARN for each gate.
- Pass/fail summary table across all gates
By the numbers
- 7 quality gates in the summary table
- 4 run modes (all, --quick, --security-only, --code-quality)
Files
Health Check
Full codebase diagnostic: typecheck, tests, security scans, dead code, circular deps, package health. Reports a summary table.
This skill is headless. Run each step as a single Bash command, capture the exit code and key output lines, then print the summary table. Do NOT analyze output, suggest fixes, or spawn agents. Just report what passed and what failed.
NEVER
- Never stop after the first failing gate — report the full picture even with failures.
- Never analyze failures or suggest fixes in the output.
- Never spawn subagents for interpretation.
- Never silently skip missing tools — mark them as
SKIP. - Never use this skill to commit, push, or mutate files.
Scripts
Use the helper instead of retyping the command matrix:
bash scripts/run-health-check.sh
bash scripts/run-health-check.sh --quick
bash scripts/run-health-check.sh --security-only
bash scripts/run-health-check.sh --code-qualityGates
Run all gates. Capture exit code and summary line. Do NOT stop on failure.
TypeCheck (all workspaces)
npx tsc --noEmit 2>&1; echo "EXIT:$?"Run for each workspace. Capture exit code + error count.
Tests
npx vitest run --reporter=dot 2>&1; echo "EXIT:$?"Use dot reporter to minimize output. Capture exit code + pass/fail counts.
Lint
npx eslint . 2>&1; echo "EXIT:$?"Capture exit code + error/warning counts.
Semgrep Security Scan
semgrep scan --config auto --severity ERROR --severity WARNING --quiet 2>&1; echo "EXIT:$?"If semgrep not installed: record as SKIP.
Circular Dependencies
npx madge --circular --ts-config tsconfig.json src/ 2>&1; echo "EXIT:$?"Record FAIL if any cycles found.
Dead Code / Unused Exports
npx knip --no-progress 2>&1; echo "EXIT:$?"Record WARN (not FAIL) — knip can be noisy on first run.
Dependency Vulnerabilities
npm audit --production 2>&1; echo "EXIT:$?"
# or: pnpm audit --prodWARN for low/moderate. FAIL for high/critical.
Summary Table
After all gates complete, print:
## Health Check Results
| Gate | Status | Details |
|--------------|--------|----------------------------------|
| TypeCheck | PASS | 0 errors |
| Tests | PASS | 1200 passed, 0 failed |
| Lint | PASS | 0 errors, 3 warnings |
| Semgrep | PASS | 0 findings |
| Circular | PASS | 0 circular dependencies |
| Dead Code | WARN | 3 unused exports |
| Audit | PASS | 0 vulnerabilities |Status values: PASS, FAIL, SKIP (tool not installed), WARN (non-zero but non-blocking).
That's it. Do not suggest fixes, do not analyze errors, do not read files. Just print the table.
Arguments
--quick: Skip Semgrep + knip (saves time)--security-only: Only Semgrep + audit--code-quality: Only knip + madge + typecheck (skip security + tests)- If empty: Run all gates
Customization
Common additions for project-specific gates:
- OpenAPI lint:
npx spectral lint openapi.json - Bundle size check:
npx bundlesize - Package exports:
npx publint && npx attw --pack - Secret scanning:
trufflehog git "file://$(pwd)" --only-verified
#!/usr/bin/env bash
set -u
MODE="${1:-all}"
run_gate() {
local name="$1"
local command="$2"
local non_blocking="${3:-false}"
local output exit_code status details
output=$(bash -lc "$command" 2>&1)
exit_code=$?
if [ $exit_code -eq 0 ]; then
status="PASS"
elif [ "$non_blocking" = "true" ]; then
status="WARN"
else
status="FAIL"
fi
details=$(printf '%s' "$output" | tail -n 3 | tr '\n' ' ' | sed 's/ */ /g')
if [ -z "$details" ]; then
details="exit $exit_code"
fi
printf '| %-12s | %-4s | %s |\n' "$name" "$status" "$details"
}
printf '## Health Check Results\n\n'
printf '| Gate | Status | Details |\n'
printf '|--------------|--------|---------|\n'
case "$MODE" in
--security-only)
run_gate "Semgrep" "command -v semgrep >/dev/null && semgrep scan --config auto --severity ERROR --severity WARNING --quiet || echo SKIP semgrep"
run_gate "Audit" "(pnpm audit --prod || npm audit --production) 2>/dev/null || true" true
;;
--code-quality)
run_gate "TypeCheck" "npx tsc --noEmit"
run_gate "Circular" "npx madge --circular --ts-config tsconfig.json src/"
run_gate "Dead Code" "npx knip --no-progress" true
;;
--quick)
run_gate "TypeCheck" "npx tsc --noEmit"
run_gate "Tests" "npx vitest run --reporter=dot"
run_gate "Lint" "npx eslint ."
run_gate "Audit" "(pnpm audit --prod || npm audit --production) 2>/dev/null || true" true
;;
*)
run_gate "TypeCheck" "npx tsc --noEmit"
run_gate "Tests" "npx vitest run --reporter=dot"
run_gate "Lint" "npx eslint ."
run_gate "Semgrep" "command -v semgrep >/dev/null && semgrep scan --config auto --severity ERROR --severity WARNING --quiet || echo SKIP semgrep"
run_gate "Circular" "npx madge --circular --ts-config tsconfig.json src/"
run_gate "Dead Code" "npx knip --no-progress" true
run_gate "Audit" "(pnpm audit --prod || npm audit --production) 2>/dev/null || true" true
;;
esac