skills-catalog/ln-511-code-quality-checker/SKILL.md
Checks DRY/KISS/YAGNI/architecture compliance with quantitative Code Quality Score. Use when implementation tasks are Done and need quality scoring.
npx skillsauth add levnikolaevich/claude-code-skills ln-511-code-quality-checkerInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Paths: File paths (
shared/,references/,../ln-*) are relative to skills repo root. If not found at CWD, locate this SKILL.md directory and go up one level for repo root. Ifshared/is missing, fetch files via WebFetch fromhttps://raw.githubusercontent.com/levnikolaevich/claude-code-skills/master/skills/{path}.
Type: L3 Worker Category: 5XX Quality
Analyzes Done implementation tasks with quantitative Code Quality Score based on metrics, MCP Ref validation, and issue penalties.
| Input | Required | Source | Description |
|-------|----------|--------|-------------|
| storyId | Yes | args, git branch, kanban, user | Story to process |
Resolution: Story Resolution Chain. Status filter: In Progress, To Review
MANDATORY READ: Load shared/references/mcp_tool_preferences.md and shared/references/mcp_integration_patterns.md - use hex-graph as the primary path for clone, architecture, and semantic quality evidence when the project is indexed. Fall back to Grep/Read only when graph is unavailable or unsupported.
| Metric | Threshold | Penalty | |--------|-----------|---------| | Cyclomatic Complexity | ≤10 OK, 11-20 warning, >20 fail | -5 (warning), -10 (fail) per function | | Function size | ≤50 lines OK, >50 warning | -3 per function | | File size | ≤500 lines OK, >500 warning | -5 per file | | Nesting depth | ≤3 OK, >3 warning | -3 per instance | | Parameter count | ≤4 OK, >4 warning | -2 per function |
Formula: Code Quality Score = 100 - metric_penalties - issue_penalties
Issue penalties by severity:
| Severity | Penalty | Examples | |----------|---------|----------| | high | -20 | Security vulnerability, O(n²)+ algorithm, N+1 query | | medium | -10 | DRY violation, suboptimal approach, missing config | | low | -3 | Naming convention, minor code smell |
Score interpretation:
| Score | Status | Verdict | |-------|--------|---------| | 90-100 | Excellent | PASS | | 70-89 | Acceptable | CONCERNS | | <70 | Below threshold | ISSUES_FOUND |
| Prefix | Category | Default Severity | MCP Ref | |--------|----------|------------------|---------| | SEC- | Security (auth, validation, secrets) | high | — | | SEC-DESTR- | Destructive ops (guards: DB, FS, MIG, ENV, FORCE) | high/medium | — | | PERF- | Performance (algorithms, configs, bottlenecks) | medium/high | ✓ Required | | MNT- | Maintainability (DRY, SOLID, complexity, dead code) | medium | — | | ARCH- | Architecture (layers, boundaries, patterns, contracts) | medium | — | | BP- | Best Practices (implementation differs from recommended) | medium | ✓ Required | | OPT- | Optimality (better approach exists for this goal) | medium | ✓ Required |
OPT- subcategories:
| Prefix | Category | Severity | |--------|----------|----------| | OPT-OSS- | Open-source replacement available | medium (high if >200 LOC) |
ARCH- subcategories:
| Prefix | Category | Severity | |--------|----------|----------| | ARCH-LB- | Layer Boundary: I/O outside infra, HTTP in domain | high | | ARCH-TX- | Transaction Boundaries: commit() in 3+ layers, mixed UoW ownership | high (CRITICAL if auth/payment) | | ARCH-DTO- | Missing DTO (4+ params without DTO), Entity Leakage (ORM entity in API response) | medium (high if auth/payment) | | ARCH-DI- | Dependency Injection: dependencies not replaceable for testing (direct instantiation, no injection mechanism). Exception: small scripts/CLIs where params/closures suffice → skip | medium | | ARCH-CEH- | Centralized Error Handling: errors silently swallowed, stack traces leak to prod, no consistent error logging. Exception: 50-line scripts → downgrade to LOW | medium (high if no handler at all) | | ARCH-SES- | Session Ownership: DI session + local session in same module | medium | | ARCH-AI-SEB | Side-Effect Breadth: 3+ side-effect categories in one leaf function. Conflict Resolution: orchestrator/coordinator functions (imports 3+ services AND delegates sequentially) are EXPECTED to have multiple categories — do NOT flag SEB | medium | | ARCH-AI-AH | Architectural Honesty: read-named function with write side-effects | medium | | ARCH-AI-FO | Flat Orchestration: leaf service imports 3+ other services. Orchestrator imports are expected — do NOT flag | medium | | ARCH-EVENT- | Event Channel Consistency: publisher/subscriber name mismatch (MISMATCH), orphaned channel with no counterpart (ORPHAN) | high (mismatch), medium (orphan) |
PERF- subcategories:
| Prefix | Category | Severity | |--------|----------|----------| | PERF-ALG- | Algorithm complexity (Big O) | high if O(n²)+ | | PERF-CFG- | Package/library configuration | medium | | PERF-PTN- | Architectural pattern performance | high | | PERF-DB- | Database queries, indexes | high |
MNT- subcategories:
| Prefix | Category | Severity | |--------|----------|----------| | MNT-DC- | Dead code: replaced implementations, unused exports/re-exports, backward-compat wrappers, unsupported aliases | medium (high if public API) | | MNT-DRY- | DRY violations: duplicate logic across files | medium | | MNT-GOD- | God Classes: class with >15 methods or >500 lines (not just file size) | medium (high if >1000 lines) | | MNT-SIG- | Method Signature Quality: boolean flag params, unclear return types, inconsistent naming, >5 optional params | low | | MNT-ERR- | Error Contract inconsistency: mixed raise + return None in same service | medium |
MANDATORY READ: Load shared/references/input_resolution_pattern.md
Resolve storyId: Run Story Resolution Chain per guide (status filter: [In Progress, To Review]).
Load Story (full) and Done implementation tasks (full descriptions) via Linear; skip tasks with label "tests".
Collect changed files (changed_files[]):
MANDATORY READ: Load shared/references/git_scope_detection.md
changed_files[] from coordinator context → proceed to Enrich step in guideTwo-Layer Detection (MANDATORY):
MANDATORY READ: Load shared/references/two_layer_detection.md
All threshold-based findings require Layer 2 context analysis. Layer 1 finding without Layer 2 = NOT a valid finding. Before reporting any metric violation, ask: "Is this violation intentional or justified by design?" See Exception column in metrics below.
Calculate code metrics:
MCP Ref Validation (MANDATORY for code changes — SKIP if --skip-mcp-ref flag passed):
MANDATORY READ: Load shared/references/research_tool_fallback.md
Fast-track mode: When invoked with
--skip-mcp-ref, skip this entire step (no OPT-, BP-, PERF- checks). Proceed directly to step 6 (static analysis). This reduces cost from ~5000 to ~800 tokens while preserving metrics + static analysis coverage.
Level 1 — OPTIMALITY (OPT-):
ref_search_documentation("{goal} approaches comparison {tech_stack} 2026")Level 2 — BEST PRACTICES (BP-):
ref_search_documentation("{chosen_approach} best practices {tech_stack} 2026")query-docs(library_id, "best practices implementation patterns")Level 3 — PERFORMANCE (PERF-):
query-docsref_search_documentation("{pattern} performance bottlenecks")query-docs(orm_library_id, "query optimization")Triggers for MCP Ref validation:
Analyze code for static issues (assign prefixes):
MANDATORY READ: Load shared/references/clean_code_checklist.md, shared/references/destructive_operation_safety.md
outline(file_path) before targeted reads.catch.*Error|handleError, validators: validate|isValid, config access: getSettings|getConfig) across ALL src/ files (count mode). If any pattern appears in 5+ files, sample 3 files (Read 50 lines each) and check structural similarity. If >80% similar → MNT-DRY-CROSS (medium, -10 points): Pattern X duplicated in N files — extract to shared module.audit_workspace(path=scan_path, verbosity="minimal", limit=5, clone_member_limit=3). Each clone group with 2+ members in different files = MNT-DRY-CROSS. Raise limits only when the bounded preview is insufficient. Use returned hotspot and clone context for priority. Fall back to Grep pattern scan above if hex-graph unavailable.export declarations. Then Grep across ALL src/ for import references to those exports. Exports with 0 import references → MNT-DC-CROSS (medium, -10 points): {export} in {file} exported but never imported — remove or mark internal.docs/project/.audit/ln-640/*/645-open-source-replacer*.md exists (glob across dates, take latest), check if any HIGH-confidence replacement matches files changed in current Story. IF match found → create OPT-OSS-{N} issue with module path, goal, recommended package, confidence, stars, license from ln-645 report. Severity: high if >200 LOC, medium otherwise. This check reads local files only — no MCP calls — runs even with --skip-mcp-ref.NOTIFY|pg_notify|\.publish\(|\.emit\( (publishers) and LISTEN|\.subscribe\(|\.on\( (subscribers) in changed_files[]. Cross-reference channel name strings. <!-- Defense-in-depth: also checked by ln-652 Rule 6 -->Calculate Code Quality Score:
Output verdict with score and structured issues.
MANDATORY READ: Load references/output_schema.md
Format output per schema. Add Linear comment with findings.
MANDATORY READ: Load shared/references/quality_summary_contract.md, shared/references/quality_worker_runtime_contract.md
Runtime profile:
quality-workerln-511quality-workerworker, status, verdict, score, issues, warningsInvocation rules:
runId and summaryArtifactPathrunId and exact summaryArtifactPathreferences/output_schema.mdshared/references/git_scope_detection.mdreferences/code_metrics.md (thresholds and penalties)docs/guides/shared/templates/task_template_implementation.mdshared/references/clean_code_checklist.mdshared/references/research_tool_fallback.mdVersion: 5.1.0 Last Updated: 2026-03-15
testing
Drafts and publishes fact-checked GitHub Discussions announcements. Use for releases, updates, or project news; not for release creation or issue responses.
testing
Prepares and publishes a tagged GitHub release from repository evidence. Use for an explicit release request; not for ordinary commits, packages, or community news.
testing
Validates, commits, pushes, and remotely verifies approved repository changes. Use when publication is requested; not for releases, package publishing, or announcements.
development
Reviews standalone skills and their configured distribution surfaces before publication. Use for skill release readiness; not for product code or implementation-plan review.