health-audit
/health:audit
Audit the project's enabled plugins against the actual technology stack. Identifies plugins that don't apply to this project and suggests relevant plugins that aren't enabled.
When to Use This Skill
| Use this skill when... | Use another approach when... |
|---|---|
| Reviewing plugin relevance for current project | General health diagnostics (use /health:check) |
| Cleaning up unused plugins | Plugin registry corruption (use /health:plugins --fix) |
| Discovering relevant plugins for tech stack | Agentic optimization audit (use /health:agentic-audit) |
| Optimizing project-specific plugin configuration | Installing specific plugin (install directly) |
| Onboarding to existing project | Need comprehensive settings validation |
Context
- Current project: !
pwd - Project settings exists: !
find .claude -maxdepth 1 -name 'settings.json' - Enabled plugins: !
jq -r '.enabledPlugins[]? // empty' .claude/settings.json - Package.json exists: !
find . -maxdepth 1 -name 'package.json' - Cargo.toml exists: !
find . -maxdepth 1 -name 'Cargo.toml' - pyproject.toml exists: !
find . -maxdepth 1 -name 'pyproject.toml' - requirements.txt exists: !
find . -maxdepth 1 -name 'requirements.txt' - go.mod exists: !
find . -maxdepth 1 -name 'go.mod' - Dockerfile exists: !
find . -maxdepth 1 -name 'Dockerfile' - docker-compose exists: !
find . -maxdepth 1 \( -name 'docker-compose.yml' -o -name 'docker-compose.yaml' -o -name 'compose.yml' -o -name 'compose.yaml' \) - GitHub workflows: !
find .github/workflows -maxdepth 1 -name '*.yml' -quit -print - Terraform files: !
find . -maxdepth 2 -name '*.tf' -quit -print - Kubernetes manifests: !
find . -maxdepth 3 \( -path '*/k8s/*' -o -path '*/kubernetes/*' \) -name '*.yaml' -quit -print
Parameters
| Parameter | Description |
|---|---|
--fix |
Apply recommended changes to .claude/settings.json |
--dry-run |
Show what would be changed without modifying files |
--verbose |
Show detailed analysis of each plugin decision |
Execution
Execute this plugin relevance audit:
Step 1: Detect the project technology stack
Analyze project files from the context above to determine the technology stack. Match indicators against the tech stack mapping in REFERENCE.md.
Step 2: Retrieve available plugins
Run claude plugin list --json to get all available plugins from configured marketplaces. Parse the output for plugin name, description, keywords, and category.
Step 3: Read currently enabled plugins
Read .claude/settings.json and extract the enabledPlugins array. If the file does not exist or enabledPlugins is not set, treat as empty list.
Step 4: Analyze plugin relevance
Compare each enabled plugin against the detected tech stack. Use the plugin relevance mapping in REFERENCE.md to determine which plugins are relevant, irrelevant, or missing.
Categorize each plugin as:
- RELEVANT -- matches detected tech stack
- NOT RELEVANT -- no matching indicators found
- MISSING -- relevant plugin not currently enabled
Step 5: Generate the audit report
Print a structured report covering:
- Detected technology stack with evidence
- Currently enabled plugins with relevance status
- Suggested plugins to add (with reasons)
- Suggested plugins to remove (with reasons)
- Summary counts
Step 6: Apply changes (if --fix)
When --fix is passed:
- Back up current settings:
cp .claude/settings.json .claude/settings.json.backup - Ask for confirmation before each category of changes (removals, additions)
- Update
.claude/settings.json-- remove confirmed irrelevant plugins, add confirmed relevant plugins, preserve other settings - Verify changes by re-reading the file, confirming valid JSON, and showing the diff
User-Level vs Project-Level
Note: This command only manages project-level plugin settings in .claude/settings.json.
User-level plugins (in ~/.claude/settings.json) are managed separately and don't need duplication at project level.
When analyzing, check if a plugin is already enabled at user level:
jq -r '.enabledPlugins[]? // empty' ~/.claude/settings.json 2>/dev/null
If a plugin is enabled at user level, it doesn't need to be in project settings unless you want project-specific behavior.
Edge Cases
| Scenario | Behavior |
|---|---|
No .claude/settings.json |
Create it with recommended plugins |
Empty enabledPlugins |
Suggest adding relevant plugins |
| Monorepo with multiple languages | Suggest all matching plugins |
| Plugin not in marketplace | Flag as "unknown" but don't remove |
| User declined changes | Respect decision, show manual instructions |
Agentic Optimizations
| Context | Command |
|---|---|
| Plugin relevance audit | /health:audit |
| Audit with auto-fix | /health:audit --fix |
| Dry-run mode | /health:audit --dry-run |
| List enabled plugins | jq -r '.enabledPlugins[]? // empty' .claude/settings.json 2>/dev/null |
| Detect project languages | find . -maxdepth 1 \( -name 'package.json' -o -name 'Cargo.toml' -o -name 'pyproject.toml' \) -exec basename {} \; |
Flags
| Flag | Description |
|---|---|
--fix |
Apply recommended changes (with confirmation) |
--dry-run |
Show what would be changed without modifying |
--verbose |
Show detailed reasoning for each decision |
See Also
/health:plugins- Fix plugin registry issues/health:check- Full diagnostic scan/configure:claude-plugins- Initial plugin setup