repo-health

repo-health is a skill for Claude Code from Sassy-Dog/sassydog-skills. It costs 154 tokens per session (3,199 once invoked), scanned A, original, Apache-2.0.

A read-only scan of a code repository that reports unfinished-work markers, skipped tests, and selected continuous-integration health signals. Continuous integration is the automated process that builds and tests code after changes.

In plain words
What is it for?
Use it to find TODO, FIXME, and HACK markers, locate skipped tests, measure CI duration, identify failures that later pass, and check mobile release lag.
Why use it?
It gives developers quick evidence about technical debt, tests that are not running, slow builds, and flaky checks without changing the repository or filing issues.

Skill for Claude Code

Written for Claude Code: ${CLAUDE_PLUGIN_ROOT} variable. Also seen: reads .claude/ paths.

Runs only inside its plugin — its command needs a path that Claude Code sets for a plugin’s own hooks and for nothing else. Install the plugin, not this.

Part of the sassy-dog plugin — 21 skills, 10 agents shipped together

Good fit Use it to find TODO, FIXME, and HACK markers, locate skipped tests, measure CI duration, identify failures that later pass, and check mobile release lag.

Compare 6 skills from other repositories ↓
Install

Getting it into your agent

This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.

Claude Code
/plugin marketplace add Sassy-Dog/sassydog-skills
Claude Code
/plugin install sassy-dog

Made for: Claude Code.

Or install sassy-dog, the plugin that ships this one along with the rest of its 21 skills, 10 agents.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for repo-health

README.md
[![agentmods](https://agentmods.dev/badge/skills/sassy-dog/sassydog-skills/repo-health/github.svg)](https://agentmods.dev/skills/sassy-dog/sassydog-skills/repo-health)
Your own site
<a href="https://agentmods.dev/skills/sassy-dog/sassydog-skills/repo-health"><img src="https://agentmods.dev/badge/skills/sassy-dog/sassydog-skills/repo-health/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for repo-health

Your own site · 80×15
<a href="https://agentmods.dev/skills/sassy-dog/sassydog-skills/repo-health"><img src="https://agentmods.dev/badge/skills/sassy-dog/sassydog-skills/repo-health.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 154 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 3,199 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00154 $0.03199
Opus 5 $0.00077 $0.01599
Sonnet 5 $0.00031 $0.00640
Haiku 4.5 $0.00015 $0.00320

Measured 4d ago against content hash efb27b7bb34c, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-12, from the pricing page.

Security

Grade A, and why

repo-health scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

The scan reads SKILL.md. This mod also ships 7 executable files (scripts/pull-ci-health.sh, scripts/pull-code-scanning.sh, scripts/pull-dependency-exposure.sh, …), listed below but not scanned — reading those needs a real analyzer, not pattern matching.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/repo-health/SKILL.md · 201 lines

How it starts

The opening of the file, as written. The whole thing — 201 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Repo Health

Fast, scripted, read-only signal scans: tech-debt markers, skipped tests, CI duration/flake, mobile release lag. Each scan is one bundled script emitting parseable output. This is the cheap input layer for prioritization (e.g. a project survey-work); it makes no writes and files no issues.

Scans

Tech debt markers + skipped tests

SCAN_PATHS="apps/ packages/" \
EXCLUDE_PATHSPECS="packages/db/src/migrations/** src/generated/**" \
bash ${CLAUDE_PLUGIN_ROOT}/skills/repo-health/scripts/pull-tech-debt.sh
  • SCAN_PATHS defaults to the whole tracked tree; pass source dirs to cut noise.
  • EXCLUDE_PATHSPECS for generated/migration dirs the caller knows about. Pass bare paths — the script adds the :(exclude) magic itself. A leading :(exclude) is stripped for back-compat with configs written against the old contract, but only one: doubling it produces a pathspec git accepts and silently ignores. Values reach git literally (the loop is fenced with set -f), so a ** here is a git pathspec, not a shell glob. An element that is unusable after the strip — a lone :(exclude), or a remainder still starting with : — is dropped with a warning on stderr rather than passed through, because a bare :(exclude) is an empty pattern git reads as "exclude everything".
  • Output sections: todo-markers (capped 200), skipped-tests (capped 100), todo-by-dir (top 20 directories by marker count).

CI duration + flake

WORKFLOW=ci.yml bash ${CLAUDE_PLUGIN_ROOT}/skills/repo-health/scripts/pull-ci-health.sh

Emits JSON: {sample, median_min, p90_min, flake_runs, flake_shas}. REPO defaults to cwd; LIMIT defaults to 50 runs. A "flake" is the same (headSha, event) failing then passing — the event key deliberately excludes merge-queue false positives (explained in the script header; don't simplify it away).

Dependency exposure + remediation

bash ${CLAUDE_PLUGIN_ROOT}/skills/repo-health/scripts/pull-dependency-exposure.sh

Read the full file on GitHub · 201 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago Changed efb27b7bb34c
  2. 5d ago Changed · +71 lines 561f2a31484f
  3. 12d ago First seen · 130 lines · 154 tokens per session scan A 85928d6fdd49

Subscribe to this mod's changes

repo-health is a skill published in the GitHub repository Sassy-Dog/sassydog-skills (0 stars, last pushed 3d ago), licensed Apache-2.0. It adds 154 tokens to every session and 3,199 once invoked, about $0.0008 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.