Agent skill

Claude Health

by sd0xdev in sd0xdev/sd0x-harness

Claude Code config health check + plugin sync. An agent skill from sd0xdev/sd0x-harness.

MITAuto-check passedDevelopment

Install Claude Health

skills CLI
$ npx skills add sd0xdev/sd0x-harness --skill claude-health -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install sd0xdev/sd0x-harness claude-health --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/sd0xdev/sd0x-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/claude-health .claude/skills/claude-health && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
claude-health
GitHub stars
192
Token cost
~6.2k tokens
SKILL.md length
1,918 words
Files
2 (incl. references)
Skills in repo
89
Repo updated
First seen
Licence
MIT

At a glance

Claude Code config health check + plugin sync. An agent skill from sd0xdev/sd0x-harness.

  • : auditing .claude/ structure
  • SKILL.md covers Trigger, When NOT to Use, Scope and Workflow, plus 4 more sections
  • Calls git, node and bash
  • Checking naming

What it does

Claude Health is an agent skill from sd0xdev/sd0x-harness. Claude Code config health check + plugin sync. Use when: auditing .claude/ structure, checking naming, verifying hook setup, detecting plugin version drift, syncing installed assets. Not for: skill quality (use skill-health-check), code review (use codex-code-review). Output: health report + fix recommendations.

Its SKILL.md is about 6.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/best-practices.md`).

It sits in Development, covering Code review. The repository describes itself as: The harness layer for Claude Code — a reference implementation of harness engineering with hook-enforced dual review, state-machine gates that survive context compaction, and… The licence is MIT.

When your agent uses it

  • : auditing .claude/ structure
  • Checking naming
  • Verifying hook setup
  • Detecting plugin version drift

Example prompts

  • “/claude-health”

Requirements

  • Pre-approved tools (allowed-tools): Read, Grep, Glob, Bash(ls:*), Bash(find:*), Bash(wc:*), Bash(du:*), Bash(rm:*), Bash(git:*), Bash(/bin/bash:*), Bash(node:*)

What it can do on your machine

Read from SKILL.md and the folder at commit a4d4bc1. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Grep
    • Glob
    • Bash(ls:*)
    • Bash(find:*)
    • Bash(wc:*)
    • Bash(du:*)
    • Bash(rm:*)
    • Bash(git:*)
    • Bash(/bin/bash:*)

    …and 1 more on the same allowed-tools line.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • node
    • bash

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Claude Health loads about 6.2k tokens when it runs, and up to ~6.7k if it reads all its reference files. Until then it costs about 82 tokens; SKILL.md has 1,918 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~82
When it runs · the whole SKILL.md, loaded when a task matches
~6.2k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~6.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from sd0xdev/sd0x-harness at commit a4d4bc1, republished under its MIT licence (© sd0xdev). 1,918 words, ~6,182 tokens.

Download SKILL.mdSave it as .claude/skills/claude-health/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
claude-health
description
Claude Code config health check + plugin sync. Use when: auditing .claude/ structure, checking naming, verifying hook setup, detecting plugin version drift, syncing installed assets. Not for: skill quality (use skill-health-check), code review (use codex-code-review). Output: health report + fix recommendations.
allowed-tools
Read, Grep, Glob, Bash(ls:*), Bash(find:*), Bash(wc:*), Bash(du:*), Bash(rm:*), Bash(git:*), Bash(/bin/bash:*), Bash(node:*)
context
fork

Claude Health Check

Trigger

  • Keywords: health check, .claude check, config audit, lint .claude, claude health, plugin sync, version drift, upgrade check, doctor

When NOT to Use

  • Code review (use /codex-review-fast)
  • Doc review (use /codex-review-doc)
  • Security review (use /codex-security)

Scope

ArgumentDescription
--scope hygieneOnly run C1-C7 hygiene checks
--scope syncOnly run S1-S3 sync checks and the S4 plugin-copies inventory
--scope budgetOnly run the Instruction Budget Module (B1-B3)
--scope allRun every module — hygiene, sync and budget (default)

Workflow

[--scope] → Select modules → Scan → Classify → Report → Fix suggestions
               │                                  │
       ┌───────┴───────┐                     P0/P1/P2
       ▼               ▼                    + fix commands
  Hygiene (C1-C7)  Sync (S1-S3)
Hygiene Module — Checks (7 items)
#CheckMethodCriteria
1Junk filesfind .claude/ -name ".DS_Store" -o -name "*.zip" -o -name ".tmp*"Any exists → P1
2.gitignore existsls .claude/.gitignoreMissing → P1
3.gitignore completenessRead .claude/.gitignore, compare required itemsMissing required → P2
4Naming consistencyScan all skills/*/ for reference vs referencesInconsistent → P2
5README count syncCount actual vs README descriptionMismatch → P2
6Command-Skill pairingEach core skill should have corresponding commandMissing → P1
7Cache sizedu -sh .claude/cache/> 50M → P2
Check 1: Junk Files
bash
find .claude/ -name ".DS_Store" -o -name "*.zip" -o -name ".tmp*" 2>/dev/null
  • Has results → P1: List files, suggest deletion
  • No results → ✅
Check 2-3: .gitignore
bash
ls .claude/.gitignore 2>/dev/null || echo "MISSING"

Missing → P1. If exists, read content and compare required items:

Required ItemReason
.DS_StoremacOS generates continuously
settings.local.jsonPersonal config
cache/Runtime cache
.tmp*Temp files
*.tmpTemp files (suffix variant)
*.zipBackup archives

Missing any → P2

Check 4: Naming Consistency
bash
# Scan all skill subdirectories
for dir in .claude/skills/*/; do
  if [ -d "${dir}reference" ]; then echo "INCONSISTENT: ${dir}reference"; fi
done

Has reference/ (singular) → P2, suggest renaming to references/

Check 5: README Count Sync
bash
# Count actual items
ls .claude/commands/ 2>/dev/null | wc -l
ls .claude/skills/ 2>/dev/null | wc -l
ls .claude/agents/ 2>/dev/null | wc -l
ls .claude/rules/ 2>/dev/null | wc -l
ls .claude/hooks/*.sh 2>/dev/null | wc -l

Extract counts from README.md, compare. Mismatch → P2

Check 6: Command-Skill Pairing

Scan all skills/*/SKILL.md, exclude these types, then check for corresponding command:

Exclude TypeExamplesReason
Domain KBportfolio, aumReferenced by other skills, no standalone entry
Externalagent-browserNot maintained by this project

Remaining skills without command → P1

Check 7: Cache Size
bash
du -sh .claude/cache/ 2>/dev/null
  • > 50M → P2, suggest cleanup
  • ≤ 50M → ✅
Sync Module — Checks (S1-S3)

Only runs when --scope sync or --scope all (default).

S1: Version Check
#CheckMethodCriteria
S1.1Manifest existsRead .sd0x/install-state.jsonMissing → P1
S1.2Manifest parseableJSON.parseParse error → P1
S1.3schema_version current== 1Mismatch → P2
S1.4plugin_version matchesmanifest vs .claude-plugin/plugin.json or package.jsonMismatch → P1
S1.5Manifest completenessHas rules + hook_scripts + scripts keysMissing key → P2 (MANIFEST_GAP)

Plugin version resolution (priority order):

.claude-plugin/plugin.json → package.json → "unknown"

Plugin source location (same as /install-rules Phase 1):

Glob: ~/.claude/plugins/**/sd0x-dev-flow/rules/auto-loop.md
Glob: ${REPO_ROOT}/node_modules/sd0x-dev-flow/rules/auto-loop.md
Fallback: @rules/auto-loop.md (plugin-relative)
S2: Component Classification

For each managed component (rules, hooks, scripts), compute 3 hashes and classify:

bash
manifest_hash  = manifest[category][filename].hash    # null if missing
local_hash     = git hash-object --no-filters <local-path>  # null if file missing
plugin_hash    = git hash-object --no-filters <plugin-path>  # source of truth

Classification table (read-only diagnostic; maps to install-rules states for delegation):

Doctor StateConditionSeverityinstall-rules Equivalent
OKlocal == manifest == plugin✅SKIP
MISSINGlocal_hash is null, plugin existsP1FRESH_INSTALL
OUTDATEDlocal == manifest, plugin != manifestP1AUTO_UPDATE
LOCAL_MODIFIEDlocal != manifest, plugin == manifest✅KEEP_LOCAL
CONFLICTlocal != manifest, plugin != manifestP2CONFLICT
LEGACYmanifest_hash is null, local existsP2LEGACY
MANIFEST_GAPmanifest category key missingP2N/A
TOMBSTONEDmanifest deleted: true, local missing✅SKIP_DELETED
RETIREDname on /install-rules' retired list, plugin file absent, local existsP2Retired (remove when unmodified, keep when modified)

Managed inventory (hardcoded):

CategoryLocal PathPlugin SourceFiles
Rules.claude/rules/*.mdrules/*.mdauto-loop.md, codex-invocation.md, testing.md, security.md, git-workflow.md, logging.md, docs-writing.md, docs-numbering.md, self-improvement.md, context-management.md, discretion.md, scope-discipline.md, override-contract.md
Hooks.claude/hooks/*.shhooks/*.shpre-edit-guard.sh, pre-bash-codex-launch-guard.sh, post-edit-format.sh, post-skill-auto-loop.sh, post-compact-auto-loop.sh, stop-guard.sh, user-prompt-review-guard.sh
Retired rules.claude/rules/*.md— (no longer shipped)Every name on /install-rules' Retired table — today fix-all-issues.md, framework.md. Classified RETIRED when the local file exists, TOMBSTONED when the manifest marks it deleted, and nothing when neither
Scripts.claude/scripts/scripts/precommit-runner.js, verify-runner.js, review-state.js, dep-audit.sh, commit-msg-guard.sh, pre-push-gate.sh, protected-branches.sh, lib/utils.js, lib/tree-digest.js
S2.5: Override Safeguard Checks

7 checks for project override files (e.g., auto-loop-project.md):

#CheckSeverityDetectionRecommendation
1Override driftP2based_on hash comment in project file vs the hash of the base file that comment names (derived, never hard-coded — auto-loop-project.md, testing-project.md and git-workflow-project.md all ship) — only when the override file has active content; a scaffold with every section still commented out has no overrides to review, so drift is not reported"Base <rule> updated since override authored; review your overrides"
2Policy contradictionP1An overridden section omits a required check command that the same section of the base rule contains"Override drops a required check command its base section carries"
3Missing reference or baseP1For each shipped override file (auto-loop-project.md, testing-project.md, git-workflow-project.md): .claude/CLAUDE.md has @rules/<file> but the file is missing, OR the file exists but is not referenced (by @rules/<file>, or — for a template carrying paths: frontmatter — by a plain rules/<file> mention; an @ import of a path-scoped template is reported P2 instead, because it loads the file at launch and defeats the scoping), OR the file exists but the base rule its Based on: comment names is missing from .claude/rules//install-rules to recreate the missing file or base, or add the reference
4Wrong-layer editP2Base auto-loop.md has LOCAL_MODIFIED, CONFLICT, or LEGACY state while project override exists"Move customization to auto-loop-project.md"
5Duplicate headingP2Override file has multiple active ## <heading> with same text"Keep one, remove duplicates. Last occurrence takes effect."
6Legacy precedence headerP2Precedence declaration exists only inside an HTML comment (<!-- Precedence: present, no live Precedence: line before the first ##) — HTML comments are stripped from model context (R8), so the declaration never reaches its only reader"Header predates the live-precedence contract; migrate the precedence line to live text by hand or regenerate via /install-rules --customize <rule> --reset. This check is read-only — it never edits the user-owned file"
7Git override conflictP1 / P2git-workflow-project.md only. P1 whenever the file exists, active content or not — two empty duplicate ## Protected Branches headings are already a parse error: when /bin/bash -p -- <resolver> --root <repo> --list exits 2, where <resolver> is the plugin install's copy — ${CLAUDE_PLUGIN_ROOT}/scripts/protected-branches.sh when that variable is set and its real path lies outside the audited repository, else ~/.claude/plugins/**/sd0x-dev-flow/scripts/protected-branches.sh (one match) — never a copy inside the audited repository (.claude/scripts/, scripts/, node_modules/), because this check is read-only and the repository controls those files; no plugin install found → execute nothing and report check #7 as not run (P2), while S2 still classifies the local copy by hash — a removal attempt (- !main), a malformed bullet or a duplicate heading in ## Protected Branches, which makes every branch read as protected; an omitted default is never reported, since the set only widens. P2, active content only, when a ## Deploy Workflow line matches neither merge <source> -> <target> [--no-ff|--ff-only] nor run <path> [args…] with every token in ^[A-Za-z0-9._/@:=+,-]+$, or when ## Offer Mode / ## Run Steps carries a value outside on|commit-only|off / print|execute"Fix the named line; until then the protected set reads every branch as protected / the deploy block is ignored / the setting keeps its default"

Policy contradiction detection: For each ## <heading> section the override restates, extract the backticked check commands (/codex-review-fast, /codex-review-doc, /precommit) from the same-heading section of the base auto-loop.md and require the restated section to keep every one of them. A verbatim copy therefore never flags; only a restatement that drops a command its base section carries is P1. (The base's Auto-Trigger table was retired by R3 — code/doc routing now lives in the unheaded terminal-invariant paragraph, which the exact-##-heading override mechanism cannot restate, so routing itself is not overridable and is out of this check's scope.) No restated section → check passes vacuously.

Override drift detection: First check whether the project file has active content. Two forms count, and the distinction matters because the scaffold ships its ## headings live: a non-empty, non-comment body line under any heading, or a heading that carries its own value (## Plan Review: enabled, ## Git Memory: enabled — for these settings the heading is the value, so there is no body to look for). A bare scaffold heading with nothing but comments beneath it is an empty slot, not an override. The live Precedence: header is preamble material and never activation. A scaffold whose sections are all still commented out is skipped: drift means "the base changed since you wrote your overrides", and there are none, so reporting it on a fresh install is a false positive rather than a finding. Otherwise read the <!-- Based on: <base>.md @ <hash> --> comment and derive the base file from the comment's own filename — git hash-object --no-filters .claude/rules/<base>.md | cut -c1-7. The base must not be hard-coded: R8 distributes testing-project.md alongside auto-loop-project.md, so a fixed auto-loop.md comparand would check a testing override's hash against the wrong rule and report drift that does not exist. If the derived base file is missing, drift is undefined rather than zero — report it through check #3's missing base branch (P1) and do not emit a drift finding. Both checks must cover every shipped override file, not just auto-loop-project.md: an active testing-project.md whose testing.md has been deleted would otherwise fall through both. If the hashes differ, the base has been updated since the override was authored. Uses blob hash for content-level comparison; accepts legacy commit-style hashes (any 7+ hex chars) during backward-compat transition.

Show full SKILL.md (973 more words)Show less
S3: Settings Compatibility

Check both settings.json and settings.local.json (precedence: settings.local.json > settings.json). A hook entry in either file satisfies the integrity check.

#CheckMethodCriteria
S3.1Legacy hook pathsGrep both settings files for bare .claude/hooks/ without $CLAUDE_PROJECT_DIRFound → P2
S3.2Retired guard-mode settingRead env.STOP_GUARD_MODE (and legacy hooks_config.stop_guard_mode) from either settings fileFound in either → P2 (retired: the Stop hook is reminder-only since hook-lightweighting — the setting is dead config, recommend removing it). Absent → ✅
S3.3Hook entry integrityEach installed hook script has matching entry in either settings fileMissing from both → P1
S3.4Orphan hook entriesEither settings file references script that doesn't exist on diskOrphan → P2

Settings file precedence: settings.local.json overrides settings.json at runtime. When delegating S3 fixes, use /install-hooks --local if the issue is in settings.local.json.

Legacy path detection:

Grep for: "\.claude/hooks/[^"]+\.sh"  (without leading "$CLAUDE_PROJECT_DIR")
Applied to both: settings.json and settings.local.json
Fix Tiers

Only applies when --fix-safe or --fix is specified alongside sync scope.

TierFlagDescription
Report(default)Diagnosis only — output actionable recommendations
Safe--fix-safeAuto-fix P1 hygiene + safe sync fixes
Guided--fixAuto-fix P1 hygiene + guided sync remediation (interactive)

Category-specific safe fix delegation:

CategoryMISSINGOUTDATEDCONFLICT/LEGACY
Rules/install-rules <names>/install-rules <names> (smart merge AUTO_UPDATE)Skip (report only)
Hooks/install-hooks <names>Report only + suggest /install-hooks <names> --forceSkip (report only)
Scripts/install-scripts <names>Report only + suggest /install-scripts <names> --forceSkip (report only)

Why hooks/scripts OUTDATED is report-only in safe tier: /install-hooks and /install-scripts use skip/force semantics (no manifest-aware smart merge). Only /install-rules has 7-state classification for safe auto-update.

S3 settings fix delegation: All settings mutations delegate to /install-hooks (sync module never writes JSON directly).

--fix tier: Delegates all actionable states (including CONFLICT, LEGACY) to /install-* commands which handle interactive resolution.

Argument conflict: --fix and --fix-safe are mutually exclusive. If both specified, error.

Instruction Budget Module

Claude Code adds up every always-loaded instruction file at launch and warns when the sum passes a total limit. The check reproduces that accounting (2.1.281) so the user learns it here first, with the plugin's share separated out. Runs under --scope budget and --scope all (the default), never under --scope hygiene or --scope sync. The script is the plugin install's copy — $CLAUDE_PLUGIN_ROOT when its real path lies outside the audited repository — never a copy inside the audited repository (.claude/scripts/, scripts/), because this check is read-only and the repository controls those files. No plugin install found → skip the module with a note:

bash
REPO_ROOT=$(git rev-parse --show-toplevel) || { echo "instruction budget: skipped — not in a git repository"; exit 0; }
PR="${CLAUDE_PLUGIN_ROOT:-}"
case "$(cd "$PR" 2>/dev/null && pwd -P)/" in "$(cd "$REPO_ROOT" && pwd -P)/"*|/) PR="" ;; esac
[ -n "$PR" ] && [ -r "$PR/scripts/instruction-budget.js" ] \
  && node "$PR/scripts/instruction-budget.js" --root "$REPO_ROOT" --plugin-root "$PR" \
  || echo "instruction budget: skipped — no plugin install outside this repository"
#CheckSeverityRecommendation
B1Always-loaded total over the limit (total = max(120000, per-file); pass --per-file for the model in use — the default is the 150,000 observed on 2.1.281)P2Move a rule on demand (paths: frontmatter) or trim it; the three largest files are listed
B2A file over the per-file limitP2Claude Code warns on it alone and leaves it out of the total; split or trim it
B3A lessons, archive, log or history file in .claude/rules/P2Move it out of rules/ — the lessons log lives at .claude/sd0x-dev-flow-lessons.md — or give it paths: frontmatter

The script is read-only; it never edits or moves a file. A missing script skips the module with a note rather than guessing a total.

Plugin Copies (S4)

Runs with the Sync module (--scope sync and --scope all). Report-only: it lists where copies of this plugin's content come from, so a stale or second copy is seen before it is mistaken for the plugin's current text. It never deletes, moves or edits a copy.

OriginWhereVersion read from
Local install.claude/rules/, .claude/hooks/, .claude/scripts/.sd0x/install-state.json plugin_version (S1)
Marketplace pluginEvery ~/.claude/plugins/**/sd0x-dev-flow/**/.claude-plugin/plugin.json whose name is sd0x-dev-flow — the versioned cache (cache/<marketplace>/sd0x-dev-flow/<version>/) and the marketplace checkout both matchEach match's version; several matches are listed as found, never collapsed to one
claude.ai synced skills~/.claude/skills/synced/ (Claude Code 2.1.273 and later)None — a synced skill carries no plugin version; list each directory named like a skill this plugin ships
#CheckSeverity
S4.1Marketplace copies carry different versionsP2 — the stale copies are the host's cache, cleared through /plugin; local-install drift is S1.4's finding, reported there once and never re-graded here
S4.2A synced skill has the same name as a plugin skillP2 — two skills of one name are offered; the plugin's runs as /sd0x-dev-flow:<name>. Rename or turn off the copy on claude.ai: sync overwrites a local edit
S4.3An origin cannot be readReported as not checked, never as absent
Prompt Audit (manual step)

Claude Code 2.1.283 and later audit instruction files for outdated or conflicting content with /doctor prompt-audit [path] (alias /checkup prompt-audit). It covers CLAUDE.md, CLAUDE.local.md and AGENTS.md plus the rules and skills under .claude/ and ~/.claude/, reports findings with proposed edits, and changes nothing until asked. This skill does not run it: it is the host's command, and the report names it as the manual next step. Its findings on this plugin's content are handled by owner:

Finding onHandling
.claude/rules/*.md, .claude/hooks/ or .claude/scripts/ installed by this pluginReport only. Fix it upstream, or customize through a *-project.md override; S2 detects a local edit on every later run and classifies it by its hash table (LOCAL_MODIFIED, CONFLICT or LEGACY)
Anchor text — the Anchor Register in rules/discretion.md, or the Anchors section of the generated AGENTS.mdRejected. The plugin pins that text byte-for-byte and /codex-setup sync regenerates the AGENTS.md Anchors from rules/, so an edit there is a spec change for the maintainer, never an audit fix
*-project.md overrides and the project's own CLAUDE.mdThe user's call — these files are user-owned

Output

markdown
# .claude/ Health Check Report

## Hygiene Summary (C1-C7)

| Item | Status | Notes |
|------|--------|-------|
| Junk files | ✅/⛔ | ... |
| .gitignore | ✅/⛔ | ... |
| Naming consistency | ✅/⛔ | ... |
| README count | ✅/⛔ | ... |
| Command-Skill | ✅/⛔ | ... |
| Cache size | ✅/⛔ | ... |

## Sync Summary (S1-S3)

### S1: Version
| Check | Status | Detail |
|-------|--------|--------|
| Manifest | ✅/⛔ | Found / Missing |
| Plugin version | ✅/⛔ | 2.0.3 == 2.0.3 / 1.8.12 → 2.0.3 |
| Manifest keys | ✅/⛔ | Complete / Missing: hook_scripts, scripts |

### S2: Component Status
| File | Category | Status | Action |
|------|----------|--------|--------|
| auto-loop.md | Rules | OUTDATED | `/install-rules auto-loop` |
| security.md | Rules | OK | — |
| stop-guard.sh | Hooks | MISSING | `/install-hooks stop-guard` |
| ... | ... | ... | ... |

### S3: Settings Compatibility
| Check | Status | Detail |
|-------|--------|--------|
| Hook paths | ✅/⛔ | Modern / Legacy found |
| Retired guard mode | ✅/⚠️ | absent / STOP_GUARD_MODE found (dead config) |
| Entry integrity | ✅/⛔ | All matched / N missing |
| Orphan entries | ✅/⛔ | None / N orphans |

## Budget Summary (B1-B3)
| Check | Status | Detail |
|-------|--------|--------|
| B1 Total | ✅/⚠️ | 89,472 / 150,000 chars; plugin share 89,472 |
| B2 Per-file | ✅/⚠️ | None over / .claude/rules/big.md (152,000) |
| B3 Lessons in rules/ | ✅/⚠️ | None / .claude/rules/lessons.md → move to .claude/sd0x-dev-flow-lessons.md |

## Plugin Copies (S4)

| Origin | Version | Note |
|--------|---------|------|
| Local install | 5.0.0 | from `.sd0x/install-state.json` |
| Marketplace plugin | 5.0.0 / not checked | |
| claude.ai synced skills | — | names shared with plugin skills, or none |

Next step (manual): `/doctor prompt-audit` — findings on plugin-shipped content are report-only.

## Statistics

| Category | Count |
|----------|-------|
| Commands | N |
| Skills | N |
| Rules | N (installed) / N (managed) |
| Hooks | N |

## Issues

### P1
- [Issue] → [Fix recommendation / command]

### P2
- [Issue] → [Fix recommendation]

## Gate
✅ All Pass / ⛔ N issues need fixing

Verification

  • Hygiene: All 7 checks executed (when scope includes hygiene)
  • Sync: S1-S3 checks executed (when scope includes sync)
  • Budget: B1-B3 reported, or the skip note printed (when scope is budget or all)
  • Each check has clear ✅/⛔ status
  • P1 issues have specific fix commands
  • S2 classification covers every file in the managed inventory above (29 today: 13 rules, 7 hooks, 9 scripts)
  • Fix delegation uses targeted file names (not --all)

References

  • references/best-practices.md — Best practices for .claude/ directory structure

Examples

Input: /claude-health
Action: Scan hygiene (7 items) + sync (S1-S3) → Generate consolidated report

Input: /claude-health --scope sync
Action: Scan S1-S3 only → Report version drift + component status

Input: /claude-health --fix-safe
Action: Scan all → Auto-fix safe items → Delegate to /install-* → Report

Input: Is my plugin up to date?
Action: Trigger sync check → Report version + component drift

© sd0xdev, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in skills/claude-health of sd0xdev/sd0x-harness.

  • SKILL.md
  • references/best-practices.md

Open the folder on GitHubat commit a4d4bc1

Compare with similar skills

Claude Health next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Claude Health compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Claude Health this skillsd0xdev/sd0x-harness192—~6.2kAutomated safety check: PassMIT
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Code Review ChecklistshareAI-lab/learn-claude-code78k4 repos~1.1kAutomated safety check: PassMIT
Backend Code Reviewlangflow-ai/langflow155k—~3.5kAutomated safety check: NotesMIT
Mole Bug Patternstw93/Mole70k—~2kAutomated safety check: PassGPL-3.0
Backend Code Reviewlanggenius/dify158k—~676Automated safety check: PassCustom licence

Similar skills

  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Code Review Checklist

    shareAI-lab/learn-claude-code

    Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.

    78k GitHub starsUsed in 4 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Backend Code Review

    langflow-ai/langflow

    Review backend code for quality, security, maintainability, and best practices based on established checklist rules.

    155k GitHub stars~3.5k tokensUpdated today
    DevelopmentAuto-check: notes
  • A catalog of recurring bug shapes in the Mole Mac cleaner, used to review safety-sensitive diffs for deletion safety, unbounded commands, shell traps and weak tests.

    70k GitHub stars~2k tokensUpdated today
    DevelopmentAuto-check passed
  • Backend Code Review

    langgenius/dify

    Reviews backend code under api/ for concrete, reproducible defects, routes to rule packs for architecture, schema, repositories and SQLAlchemy, and ranks findings from P0 to P3.

    158k GitHub stars~676 tokensUpdated today
    DevelopmentAuto-check passed
  • WooCommerce Code Review

    woocommerce/woocommerce

    Reviews WooCommerce code changes against the project's standards, flagging backend PHP architecture, naming, documentation, data integrity and testing violations.

    11k GitHub starsUsed in 3 repos~1.1k tokens
    DevelopmentAuto-check passed

More from sd0xdev/sd0x-harness

All 89 skills in this repo
  • Adr

    sd0xdev/sd0x-harness

    Write an Architecture Decision Record (ADR) for a feature — Context / Decision / Status / Consequences / Alternatives, filed as docs/features/<feature/adr-<NNN-<title.md with a 3-digit zero-padded…

    192 GitHub stars~4.8k tokensUpdated 2 days ago
    Auto-check passed
  • Load PR Review

    sd0xdev/sd0x-harness

    Load GitHub PR review comments into AI session — analyze, triage, plan.

    192 GitHub stars~4.4k tokensUpdated 2 days ago
    Auto-check passed
  • Next Step

    sd0xdev/sd0x-harness

    Change-aware next step advisor. An agent skill from sd0xdev/sd0x-harness.

    192 GitHub stars~1.6k tokensUpdated 2 days ago
    Auto-check passed
  • Obsidian CLI

    sd0xdev/sd0x-harness

    Obsidian vault integration via official CLI. An agent skill from sd0xdev/sd0x-harness.

    192 GitHub stars~1.1k tokensUpdated 2 days ago
    Auto-check passed
  • Orchestrate

    sd0xdev/sd0x-harness

    Agent-driven workflow orchestration (v1 report-only). An agent skill from sd0xdev/sd0x-harness.

    192 GitHub stars~2.5k tokensUpdated 2 days ago
    Auto-check passed
  • PR Comment

    sd0xdev/sd0x-harness

    Post friendly review comments to a GitHub PR — prepare locally, preview, then submit as atomic review.

    192 GitHub stars~1.5k tokensUpdated 2 days ago
    Auto-check passed

Categories

Questions about Claude Health

What does Claude Health do?

Claude Code config health check + plugin sync. An agent skill from sd0xdev/sd0x-harness. Claude Health is an agent skill from sd0xdev/sd0x-harness. Claude Code config health check + plugin sync.

When should I use Claude Health?

Claude Health fits situations like: : auditing .claude/ structure; checking naming; verifying hook setup; detecting plugin version drift.

How do I install Claude Health in Claude Code?

Run `npx skills add sd0xdev/sd0x-harness --skill claude-health -a claude-code`. Or copy the skill folder (skills/claude-health in sd0xdev/sd0x-harness) into .claude/skills/claude-health in your project. Claude Code loads it when a task matches its description.

How do I install Claude Health in Codex?

Run `npx skills add sd0xdev/sd0x-harness --skill claude-health -a codex`. Or copy the skill folder (skills/claude-health in sd0xdev/sd0x-harness) into .agents/skills/claude-health in your project. Codex loads it when a task matches its description.

Can I use Claude Health in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add sd0xdev/sd0x-harness --skill claude-health -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/claude-health, .gemini/skills/claude-health, .github/skills/claude-health and .opencode/skills/claude-health in your project.

What does Claude Health need to run?

Going by SKILL.md and its folder, Claude Health needs the command-line tools its instructions call (git, node and bash). Its frontmatter pre-approves these tools: Read, Grep, Glob, Bash(ls:*), Bash(find:*), Bash(wc:*), Bash(du:*), Bash(rm:*), Bash(git:*), Bash(/bin/bash:*), Bash(node:*).

Does Claude Health access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Claude Health safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Claude Health use?

Claude Health is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Claude Health use?

About 6.2k tokens (SKILL.md is roughly 25k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 548 tokens, read only when the agent opens those files.

What are the alternatives to Claude Health?

Skills that share tags, products or a category with Claude Health: PR Babysitter (openinterpreter/openinterpreter, 69k stars), Code Review Checklist (shareAI-lab/learn-claude-code, 78k stars), Backend Code Review (langflow-ai/langflow, 155k stars) and Mole Bug Patterns (tw93/Mole, 70k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Claude Health?

sd0xdev (a GitHub user) maintains it in sd0xdev/sd0x-harness, which has 192 GitHub stars. The repository holds 89 skills in this directory. The repository was last updated on October 8, 2026.

Source: sd0xdev/sd0x-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.