--- name: code-scoring description: Provides quantitative rubrics and criteria for scoring code quality on a 1-10 scale. Use when reviewing code, performing code audits, establishing quality baselines, comparing implementations, or providing objective code feedback. --- # Code Scoring Systematic, quantitative code quality assessment using weighted categories and standardized deductions. ## Quick Start **Full code review with score:** ``` Score this code on a 1-10 scale using the code-scoring rubric ``` **Category-specific assessment:** ``` Evaluate the error handling in this module using the scoring rubric ``` **Compare implementations:** ``` Score both implementations and recommend which is better ``` ## Scoring Methodology ### The Formula ``` Final Score = 10 - Total Deductions Where: Total Deductions = SUM(Category Deductions * Category Weight) Category Deduction = SUM(Issue Points * Severity Multiplier) ``` ### Category Weights | Category | Weight | Focus Areas | |----------|--------|-------------| | **Organization** | 12% | File structure, module boundaries, separation of concerns | | **Naming** | 10% | Variables, functions, classes, constants, files | | **Error Handling** | 12% | Try/catch, validation, error propagation, recovery | | **Testing** | 12% | Coverage, quality, edge cases, maintainability | | **Performance** | 10% | Efficiency, resource usage, scalability | | **Security** | 12% | Input validation, auth, data protection, secrets | | **Documentation** | 8% | Comments, API docs, README, inline explanations | | **SOLID Principles** | 10% | SRP, OCP, LSP, ISP, DIP adherence | | **Dependencies** | 6% | Version management, minimal deps, no circular refs | | **Maintainability** | 8% | Readability, complexity, changeability | **Total: 100%** ### Severity Multipliers | Severity | Multiplier | Description | |----------|------------|-------------| | **Critical** | 2.0x | Security vulnerabilities, data loss risks, crashes | | **Major** | 1.5x | Significant bugs, poor patterns, missing core functionality | | **Minor** | 1.0x | Code smells, style issues, minor inefficiencies | | **Nitpick** | 0.5x | Preferences, optional improvements | --- ## Quick Scoring Cheat Sheet | Score | Label | Meaning | Typical Characteristics | |-------|-------|---------|-------------------------| | **10** | Exemplary | Production excellence | Minimal issues, well-tested, secure, documented | | **9** | Excellent | Minor polish needed | 1-2 nitpicks, strong overall quality | | **8** | Very Good | Ready with small fixes | Few minor issues, solid fundamentals | | **7** | Good | Acceptable quality | Some improvements needed, no major issues | | **6** | Satisfactory | Functional but rough | Multiple minor issues, needs cleanup | | **5** | Adequate | Meets minimum bar | Works but has clear problems | | **4** | Below Average | Needs significant work | Major issues present, risky to deploy | | **3** | Poor | Substantial rework | Multiple major issues, architectural problems | | **2** | Very Poor | Fundamental problems | Barely functional, serious concerns | | **1** | Critical | Do not deploy | Security vulnerabilities, crashes, data risks | --- ## Common Deductions Table Quick reference for frequent issues. See [references/deduction-catalog.md](references/deduction-catalog.md) for complete list. ### High-Impact Deductions | Issue | Base Points | Category | |-------|-------------|----------| | SQL injection vulnerability | 2.0 | Security | | Hardcoded secrets/credentials | 2.0 | Security | | No error handling in critical path | 1.5 | Error Handling | | Missing input validation | 1.5 | Security | | No tests for core functionality | 1.5 | Testing | | N+1 query pattern | 1.5 | Performance | | God class (500+ lines) | 1.5 | Organization | ### Medium-Impact Deductions | Issue | Base Points | Category | |-------|-------------|----------| | Inconsistent naming convention | 1.0 | Naming | | Missing JSDoc/docstrings on public API | 1.0 | Documentation | | Circular dependency | 1.0 | Dependencies | | Deeply nested code (4+ levels) | 1.0 | Maintainability | | Magic numbers without constants | 1.0 | Naming | | Empty catch blocks | 1.0 | Error Handling | | Duplicated code blocks | 1.0 | Organization | ### Low-Impact Deductions | Issue | Base Points | Category | |-------|-------------|----------| | Inconsistent formatting | 0.5 | Maintainability | | Missing edge case tests | 0.5 | Testing | | Verbose variable names | 0.5 | Naming | | Outdated dependencies (no CVEs) | 0.5 | Dependencies | | Missing inline comments in complex logic | 0.5 | Documentation | --- ## Scoring Workflow ### Step 1: Initial Scan ``` 1. Count lines of code 2. Identify file/module structure 3. Note language and framework 4. Check for tests presence 5. Scan for obvious red flags ``` ### Step 2: Category Assessment For each of the 10 categories: ``` 1. Review relevant code sections 2. Identify issues 3. Classify severity (critical/major/minor/nitpick) 4. Calculate: Issues * Severity Multiplier 5. Apply category weight ``` ### Step 3: Calculate Final Score ``` Final Score = 10 - (Sum of weighted deductions) If score < 1: score = 1 If score > 10: score = 10 ``` ### Step 4: Generate Report ```markdown ## Code Score: X.X/10 ### Score Breakdown | Category | Weight | Deductions | Weighted | |----------|--------|------------|----------| | Organization | 12% | ... | ... | | ... | ... | ... | ... | ### Critical Issues (Fix Immediately) - [Issue 1] ### Major Issues (Fix Before Merge) - [Issue 1] ### Minor Issues (Fix When Convenient) - [Issue 1] ### Recommendations - [Improvement 1] ``` --- ## Category Quick Guides ### Organization (12%) **Excellent (0 deductions):** - Clear module boundaries - Single responsibility per file - Logical folder structure - No circular dependencies **Red flags:** - Files > 500 lines: -1.0 - Mixed concerns in module: -1.0 - No clear structure: -1.5 - Circular dependencies: -1.0 ### Naming (10%) **Excellent (0 deductions):** - Descriptive, intention-revealing names - Consistent convention (camelCase, snake_case) - Domain terminology used correctly - Acronyms handled consistently **Red flags:** - Single-letter variables (non-loop): -0.5 - Misleading names: -1.0 - Inconsistent convention: -1.0 - Magic numbers: -1.0 ### Error Handling (12%) **Excellent (0 deductions):** - All external calls wrapped - Specific error types used - Errors logged with context - Graceful degradation where appropriate **Red flags:** - Empty catch blocks: -1.0 - Generic catch-all: -0.5 - Missing validation: -1.5 - Swallowed errors: -1.0 ### Testing (12%) **Excellent (0 deductions):** - 80%+ coverage on critical paths - Unit, integration, and E2E tests - Edge cases covered - Tests are maintainable **Red flags:** - No tests: -2.0 - Only happy path: -1.0 - Flaky tests: -1.0 - Test code duplication: -0.5 ### Performance (10%) **Excellent (0 deductions):** - Efficient algorithms - Appropriate caching - No memory leaks - Optimized queries **Red flags:** - N+1 queries: -1.5 - Blocking operations in hot path: -1.0 - Memory leaks: -1.5 - No pagination on lists: -1.0 ### Security (12%) **Excellent (0 deductions):** - Input validation on all boundaries - Parameterized queries - Secrets in environment variables - Proper authentication/authorization **Red flags:** - SQL/command injection: -2.0 - Hardcoded secrets: -2.0 - Missing auth checks: -1.5 - XSS vulnerabilities: -1.5 ### Documentation (8%) **Excellent (0 deductions):** - Public API documented - Complex logic explained - README with setup instructions - Changelog maintained **Red flags:** - No documentation: -1.5 - Outdated docs: -1.0 - Missing API docs: -1.0 - No README: -0.5 ### SOLID Principles (10%) **Excellent (0 deductions):** - Single responsibility classes - Open for extension, closed for modification - Proper abstractions - Dependency injection used **Red flags:** - God classes: -1.5 - Tight coupling: -1.0 - Violation of LSP: -1.0 - Concrete dependencies: -0.5 ### Dependencies (6%) **Excellent (0 deductions):** - Minimal dependencies - Locked versions - No vulnerabilities - Clear dependency boundaries **Red flags:** - CVE vulnerabilities: -2.0 - Circular dependencies: -1.0 - Excessive dependencies: -0.5 - Unlocked versions: -0.5 ### Maintainability (8%) **Excellent (0 deductions):** - Low cyclomatic complexity - DRY principle followed - Consistent style - Easy to understand **Red flags:** - Cyclomatic complexity > 15: -1.0 - Duplicated code: -1.0 - Deep nesting (4+): -1.0 - Inconsistent style: -0.5 --- ## Score Interpretation Guide ### Deployment Readiness | Score Range | Deployment Decision | |-------------|---------------------| | 8-10 | Ready for production | | 7-7.9 | Ready with minor fixes | | 5-6.9 | Needs review and fixes | | 3-4.9 | Significant rework required | | 1-2.9 | Do not deploy | ### Review Actions | Score Range | Required Actions | |-------------|------------------| | 9-10 | Approve immediately | | 7-8.9 | Approve with suggestions | | 5-6.9 | Request changes | | 3-4.9 | Major revision needed | | 1-2.9 | Reject with detailed feedback | --- ## Reference Files - [references/scoring-rubrics.md](references/scoring-rubrics.md) - Detailed rubric for each category - [references/severity-weights.md](references/severity-weights.md) - How to weight different issue types - [references/score-descriptors.md](references/score-descriptors.md) - What each score 1-10 means with examples - [references/deduction-catalog.md](references/deduction-catalog.md) - Common issues and their point deductions