Code quality check: linting, complexity analysis, duplication detection, and dead code identification. Detects project linting config, runs appropriate tools, and creates a structured GitHub issue.
From dlcnpx claudepluginhub rube-de/cc-skills --plugin dlcThis skill is limited to using the following tools:
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Run code quality analysis against the current project and create a GitHub issue with findings.
Before running, read ../dlc/references/ISSUE-TEMPLATE.md now for the issue format, and read ../dlc/references/REPORT-FORMAT.md now for the findings data structure.
Scan for linting configuration and project type:
| Config File | Linter | Language |
|---|---|---|
.eslintrc* / eslint.config.* / biome.json | ESLint / Biome | JS/TS |
ruff.toml / pyproject.toml (with [tool.ruff]) | Ruff | Python |
.golangci.yml / .golangci.yaml | golangci-lint | Go |
clippy.toml / Cargo.toml | Clippy | Rust |
.rubocop.yml | RuboCop | Ruby |
Also check for formatter configs: .prettierrc*, .editorconfig, rustfmt.toml.
Run the detected linter with JSON/machine-readable output:
Select the tool based on availability (command -v), not exit codes — linters exit non-zero when issues are found, which is a valid result to capture.
# JS/TS — select by availability
if command -v eslint >/dev/null 2>&1; then
eslint . --format=json 2>/dev/null
elif command -v biome >/dev/null 2>&1; then
biome check . --reporter=json 2>/dev/null
fi
# Python — prefer Ruff, fall back to flake8
if command -v ruff >/dev/null 2>&1; then
ruff check . --output-format=json 2>/dev/null
elif command -v flake8 >/dev/null 2>&1; then
flake8 . --format=json 2>/dev/null
fi
# Go
command -v golangci-lint >/dev/null 2>&1 && golangci-lint run --out-format=json 2>/dev/null
# Rust
command -v cargo-clippy >/dev/null 2>&1 && cargo clippy --message-format=json 2>/dev/null
# JS/TS — eslint complexity rule or cr tool
eslint . --rule '{"complexity": ["warn", 10]}' --format=json 2>/dev/null
# Python
radon cc . --json --min=C 2>/dev/null
# General — if no tool available, use Claude analysis
# Look for functions > 50 lines, cyclomatic complexity > 10, deep nesting > 4 levels
# JS/TS
jscpd . --reporters=json 2>/dev/null
# General
# If no tool available, Claude analysis: search for repeated code blocks > 10 lines
# JS/TS — select by availability
if command -v knip >/dev/null 2>&1; then
knip --reporter=json 2>/dev/null
elif command -v ts-prune >/dev/null 2>&1; then
ts-prune 2>/dev/null
fi
# Python
command -v vulture >/dev/null 2>&1 && vulture . 2>/dev/null
If no dedicated quality tools are available, use the Explore agent to discover code quality hotspots across the codebase. Use repomix-explorer (if available) for large codebases to get a structural overview. Then use targeted Grep and Read for detailed analysis:
Map tool output to the findings format from REPORT-FORMAT.md.
Severity mapping (reinforced here for defense-in-depth):
| Finding Type | Severity |
|---|---|
| Error-level lint violation | High |
| Cyclomatic complexity > 20 | High |
| Warning-level lint violation | Medium |
| Cyclomatic complexity 10-20 | Medium |
| Duplication > 50 lines | Medium |
| Dead code / unused exports | Low |
| Style/formatting issues | Info |
Read ../dlc/references/ISSUE-TEMPLATE.md now and format the issue body exactly as specified.
Critical format rules (reinforced here):
[DLC] Quality: {summary of top finding}dlc-qualityREPO=$(gh repo view --json nameWithOwner -q .nameWithOwner)
BRANCH=$(git branch --show-current)
TIMESTAMP=$(date +%s)
BODY_FILE="/tmp/dlc-issue-${TIMESTAMP}.md"
gh issue create \
--repo "$REPO" \
--title "[DLC] Quality: {summary}" \
--body-file "$BODY_FILE" \
--label "dlc-quality"
If issue creation fails, save draft to /tmp/dlc-draft-${TIMESTAMP}.md and print the path.
Quality check complete.
- Linter: {detected linter}
- Tools used: {list}
- Findings: {high} high, {medium} medium, {low} low
- Issue: #{number} ({url})
If no findings, skip issue creation and report: "No quality issues found."