Analyze a repository's configuration against CC and workflow best practices. Use when auditing a repo, after repo-init, or when troubleshooting token usage or workflow gaps. Reports issues by severity with auto-fix offers.
Analyzes repository configuration for security, token efficiency, and quality gaps, offering fixes for best practices.
npx claudepluginhub rbergman/dark-matter-marketplaceThis skill inherits all available tools. When active, it can use any tool Claude has access to.
Scan the current repository against CC optimization and workflow best practices. Reports gaps with severity ratings and offers to fix what it can.
Canonical reference: The checks below derive from cc-optimization-playbook.md. When in doubt, the playbook is the source of truth.
Related skills:
Run all checks in order. Collect findings into a report table, then present to user.
Default: Report only. Offer fixes inline — apply only with user confirmation.
Auto-detect from repo contents:
# Language detection
[ -f go.mod ] && echo "go"
[ -f Cargo.toml ] && echo "rust"
[ -f package.json ] && echo "node"
[ -f pyproject.toml ] || [ -f setup.py ] && echo "python"
[ -f mix.exs ] && echo "elixir"
Also detect: monorepo (multiple language markers or packages//apps/ dirs), web framework (.next/, vite.config.*), AI/ML (*.safetensors, models/).
Record detected types for use in subsequent checks.
.claudeignore exists (CRITICAL)Check: file exists at repo root.
If missing → offer to create from universal base + detected language patterns. Use templates from repo-init skill.
If exists → verify it covers:
| Category | Patterns to check | Severity |
|---|---|---|
| Secrets | .env, .env.*, .envrc, *.pem, *.key | CRITICAL |
| Lock files | package-lock.json, yarn.lock, Cargo.lock, go.sum, etc. | IMPORTANT |
| Source maps | *.map | IMPORTANT |
| Binary assets | *.png, *.jpg, *.svg, *.woff, etc. | IMPORTANT |
| Build output | Language-specific (node_modules/, target/, dist/, etc.) | IMPORTANT |
| Agent dirs | .worktrees/, history/ | NICE |
Report each missing category separately.
wc -l CLAUDE.md AGENTS.md 2>/dev/null
/compressbytes / 4If both files exist and neither is a symlink:
readlink CLAUDE.md)If ~/.claude/CLAUDE.md exists, check for sections duplicated into the repo's AGENTS.md/CLAUDE.md:
Flag matches as NICE — suggest removing from per-repo file.
.gitignore exists (CRITICAL)Check: file exists. If missing → offer to create from repo-init templates.
.gitignore coverage (IMPORTANT)Verify language-specific patterns are present for detected project type:
| Language | Must include |
|---|---|
| Node/TS | node_modules/, dist/, .next/ (if Next.js) |
| Python | __pycache__/, .venv/, *.pyc |
| Go | vendor/ (if vendoring), bin/ |
| Rust | target/ |
git ls-files | grep -iE '\.env$|\.env\.|\.pem$|\.key$|credentials|secret' 2>/dev/null
If matches found → CRITICAL. Do NOT auto-fix (destructive). Warn user.
command -v bd >/dev/null 2>&1 && echo "installed" || echo "not installed"
[ -d .beads ] && echo "initialized" || echo "not initialized"
Suggest bd init -q && bd onboard for project repos. Skip for config/docs-only repos.
bd doctor 2>/dev/null
Surface any warnings or failures.
.beads/ in .gitignore check (IMPORTANT)Beads tracks its own files in git, but .beads/beads.db* should NOT be tracked. Check:
git check-ignore -q .beads/beads.db 2>/dev/null || echo "beads.db not ignored"
command -v timbers >/dev/null 2>&1 && echo "installed" || echo "not installed"
[ -d .timbers ] && echo "initialized" || echo "not initialized"
timbers doctor 2>/dev/null
Surface any warnings or failures from timbers doctor output.
Suggest timbers init for project repos that have active development (commits in last 30 days).
timbers status --json 2>/dev/null
If pending commit count is high (>20), note it as INFO — suggest timbers log to catch up.
Verify the repo has infrastructure to catch problems before they ship. Detection uses the project type from Step 1.
Check for justfile at repo root:
[ -f justfile ] || [ -f Justfile ] && echo "exists" || echo "missing"
If exists, verify it has core recipes:
just --list 2>/dev/null | grep -E '^\s*(check|test|setup|clean)\b'
| Recipe | Purpose | Severity if missing |
|---|---|---|
check or test | Quality gates | IMPORTANT |
setup | First-time setup | NICE |
clean | Remove artifacts | NICE |
If no justfile at all → NICE (suggest creating via just-pro skill).
[ -f .mise.toml ] && echo "exists" || echo "missing"
If missing → NICE. Suggest mise use <lang>@<version> to pin.
If exists, verify at least one tool is pinned (not just comments):
grep -E '^\w+\s*=' .mise.toml 2>/dev/null | grep -v '^#'
Each lang-pro skill ships strict reference configs that enforce complexity limits, file/function length caps, and comprehensive lint rules. Repos should adopt these configs — they represent the quality floor.
Do NOT auto-create or auto-update configs. Instead: read the repo's current config, read the lang-pro reference, analyze the diff, and present the user with specific recommendations. Let the user decide what to adopt.
go-pro/references/golangci-v2.yml| Check | What to look for | Severity |
|---|---|---|
.golangci.yml exists | This is where Go quality lives — without it, only go vet runs | IMPORTANT |
| Linter count | Reference enables 40+ linters (funlen, gocognit, gosec, errcheck, etc.) | IMPORTANT |
| Complexity limits | funlen: 60 lines / 40 statements, gocognit: 15, cyclop: 10 | IMPORTANT |
| File length | revive file-length-limit: 350 | IMPORTANT |
| Line length | lll: 140 | NICE |
| Formatters | gofumpt + gci enabled | NICE |
If .golangci.yml exists but is weak (few linters, no complexity limits), diff against the reference and present gaps.
typescript-pro/references/Two configs to check:
tsconfig.json vs tsconfig.strict.json reference:
| Check | What to look for | Severity |
|---|---|---|
"strict": true | Base requirement | IMPORTANT |
"noUncheckedIndexedAccess": true | Catches undefined from index access | IMPORTANT |
"exactOptionalPropertyTypes": true | Distinguishes undefined from optional | IMPORTANT |
"noImplicitReturns": true | All code paths return | IMPORTANT |
"verbatimModuleSyntax": true | Enforces type-only imports | NICE |
eslint.config.js vs eslint.config.js reference:
| Check | What to look for | Severity |
|---|---|---|
| ESLint config exists | Any ESLint config file present | IMPORTANT |
strictTypeChecked preset | Reference uses tseslint.configs.strictTypeChecked | IMPORTANT |
| Zero-any rules | no-explicit-any, no-unsafe-* family all set to error | IMPORTANT |
| Floating promises | no-floating-promises set to error | IMPORTANT |
| Complexity limits | complexity: 10, max-lines-per-function: 60, max-lines: 400, max-depth: 4 | IMPORTANT |
| Comment discipline | no-restricted-disable blocks disabling critical rules | NICE |
rust-pro/references/Three configs:
clippy.toml reference:
| Check | What to look for | Severity |
|---|---|---|
clippy.toml exists | Complexity thresholds configured | IMPORTANT |
cognitive-complexity-threshold = 15 | Function complexity cap | IMPORTANT |
too-many-lines-threshold = 50 | Function length cap | IMPORTANT |
too-many-arguments-threshold = 5 | Parameter count cap | IMPORTANT |
Cargo.toml [lints] vs cargo_lints.toml reference:
| Check | What to look for | Severity |
|---|---|---|
[lints.clippy] section exists | Central lint configuration | IMPORTANT |
| Pedantic/nursery/cargo groups enabled | pedantic = "warn", etc. | IMPORTANT |
| Panic prevention denies | unwrap_used, expect_used, panic, indexing_slicing = "deny" | IMPORTANT |
| Type safety denies | as_conversions, cast_* family = "deny" | IMPORTANT |
unsafe_code = "deny" in [lints.rust] | Safety guarantee | IMPORTANT |
rustfmt.toml — check exists.
python-pro/references/pyproject.toml ruff section vs pyproject-ruff.toml reference:
| Check | What to look for | Severity |
|---|---|---|
[tool.ruff] section exists | Primary linter configured | IMPORTANT |
| Rule selection breadth | Reference selects: E, W, F, I, B, C4, UP, ARG, SIM, TCH, PTH, RUF | IMPORTANT |
target-version set | Ensures modern Python features | NICE |
Type checking vs pyrightconfig.json reference:
| Check | What to look for | Severity |
|---|---|---|
| Pyright or mypy configured | pyrightconfig.json, or [tool.pyright]/[tool.mypy] in pyproject.toml | IMPORTANT |
"typeCheckingMode": "strict" | Maximum type safety | IMPORTANT |
reportUnknown*Type rules enabled | Catches untyped code | IMPORTANT |
Verify tests can be discovered:
# Node/TS
[ -f package.json ] && grep -q '"test"' package.json && echo "npm test configured"
# Go
find . -name '*_test.go' -maxdepth 3 | head -1 | grep -q . && echo "go tests found"
# Rust
grep -q '\[dev-dependencies\]' Cargo.toml 2>/dev/null || find . -name '*_test.rs' -o -path '*/tests/*.rs' | head -1 | grep -q . && echo "rust tests found"
# Python
find . -name 'test_*.py' -o -name '*_test.py' -maxdepth 3 | head -1 | grep -q . && echo "python tests found"
No test files found → IMPORTANT. Suggest creating initial test structure via lang-pro skill.
[ -d .github/workflows ] && ls .github/workflows/*.yml .github/workflows/*.yaml 2>/dev/null | head -5
No CI workflows → NICE for private repos. IMPORTANT for repos with a remote and collaborators.
If CI exists, verify it runs quality gates (grep for test, check, lint in workflow files).
Collect all findings and present as a severity-grouped table:
## Repo Health Report: <repo-name>
Detected: <language(s)>, <project-type>
### CRITICAL
| Check | Status | Fix |
|-------|--------|-----|
| .claudeignore exists | MISSING | Create from template? |
| Secrets in tracked files | .env tracked | ⚠️ Manual removal needed |
### IMPORTANT
| Check | Status | Fix |
|-------|--------|-----|
| .claudeignore covers lock files | Missing Cargo.lock | Add pattern? |
| CLAUDE.md size | 147 lines (~920 tokens) | Run /compress? |
| Quality gates recipe | No `just check` recipe | Add to justfile? |
| TypeScript strict mode | `"strict": false` in tsconfig | Enable strict? |
| Test infrastructure | No test files found | See typescript-pro skill |
### NICE TO HAVE
| Check | Status | Fix |
|-------|--------|-----|
| Timbers initialized | Not initialized | Run timbers init? |
| Global config duplication | Prime Directive duplicated | Remove from AGENTS.md? |
### INFO
| Check | Status |
|-------|--------|
| Timbers pending | 42 undocumented commits |
| Beads doctor | 0 warnings |
### PASSED
✓ .gitignore exists
✓ .claudeignore covers secrets
✓ Beads initialized and healthy
✓ No CLAUDE.md/AGENTS.md duplication
✓ just check recipe exists
✓ tsconfig.json strict mode enabled
✓ CI workflow runs quality gates
For each finding with an available fix, ask the user:
/compress on oversized filesbd init, timbers init with confirmationNever auto-fix:
git filter-branch or BFG)| Level | Meaning | Examples |
|---|---|---|
| CRITICAL | Security risk or massive token waste | Missing .claudeignore, tracked secrets |
| IMPORTANT | Significant inefficiency | Missing lock file patterns, oversized CLAUDE.md |
| NICE | Improvement opportunity | Tool not initialized, global config duplication |
| INFO | Informational, no action needed | Pending timbers entries, beads stats |
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.