with one click
ln-511-code-quality-checker
// Checks DRY/KISS/YAGNI/architecture compliance with quantitative Code Quality Score. Use when implementation tasks are Done and need quality scoring.
// Checks DRY/KISS/YAGNI/architecture compliance with quantitative Code Quality Score. Use when implementation tasks are Done and need quality scoring.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | ln-511-code-quality-checker |
| description | Checks DRY/KISS/YAGNI/architecture compliance with quantitative Code Quality Score. Use when implementation tasks are Done and need quality scoring. |
| allowed-tools | Read, Grep, Glob, Bash, WebFetch, mcp__Ref, mcp__context7, mcp__hex-line__outline, mcp__hex-graph__audit_workspace, mcp__hex-graph__analyze_architecture |
| license | MIT |
Paths: File paths (
references/,../ln-*) are relative to this skill directory.
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
Tool policy: follow host AGENTS.md MCP preferences; load references/mcp_tool_preferences.md and references/mcp_integration_patterns.md only when host policy is absent or MCP behavior is unclear. - 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 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 references/git_scope_detection.md
changed_files[] from coordinator context ā proceed to Enrich step in guideTwo-Layer Detection (MANDATORY):
MANDATORY READ: Load 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 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 references/clean_code_checklist.md, 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. 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 references/quality_summary_contract.md, 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.mdreferences/git_scope_detection.mdreferences/code_metrics.md (thresholds and penalties)docs/guides/references/templates/task_template_implementation.mdreferences/clean_code_checklist.mdreferences/research_tool_fallback.mdVersion: 5.1.0 Last Updated: 2026-03-15