| name | coding-rules |
| description | Language-agnostic coding standards for maintainability, readability, and quality. Use when: implementing features, refactoring code, reviewing code quality, or writing functions. |
Coding Rules
Language-Specific References
For language-specific rules, also read:
Core Philosophy [MANDATORY]
- Maintainability over Speed: Prioritize long-term code health
- Simplicity First: YAGNI principle — simplest solution that meets requirements
- Design Convergence: Deliver the current required outcome with the least new design surface. Add surface only to satisfy a current requirement, verified constraint, observed problem, or evidence-backed material risk; among sufficient options, choose the lowest-lifecycle-cost option.
- Explicit over Implicit: Clear intentions through code structure and naming
- Delete over Comment: Remove unused code instead of commenting it out
ENFORCEMENT: Every code change MUST align with these principles
Design Surface Terms [MANDATORY]
Use these definitions when classifying Design Convergence additions or code-review escalation.
- Maintenance-surface-bearing elements: persistent state; public-contract or cross-boundary fields/props; behavioral modes, flags, or variants; reusable abstractions; extracted services; shared utilities; component splits.
- Non-surface elements: private local variables, internal helper functions with no external observers, test fixtures or mocks, temporary migration scaffolding removed before completion, and private implementation details confined to one function or file.
- Classification precedence: When an element matches both surface-bearing and non-surface conditions, classify it as surface-bearing.
- Selection rule: Add a surface-bearing element only when it is required by a current requirement, verified constraint, observed problem, or evidence-backed material risk. Prefer fewer new elements only when the remaining candidates are otherwise sufficient and equivalent.
- Relation to YAGNI: YAGNI decides present vs. future need over time; Design Convergence minimizes surface area for the current accepted scope.
Code Quality [MANDATORY]
- Resolve technical debt within confirmed scope or dependencies required for its outcome; report other debt separately
- Use meaningful, descriptive names from the problem domain
- Extract magic numbers and strings into named constants
- Keep code self-documenting
Function Design [MANDATORY]
- 0-2 parameters per function (use objects for 3+)
- Single responsibility — each function MUST do one thing well
- Keep functions < 50 lines
- Use pure functions where possible — separate data transformation from side effects
- Use early returns to keep nesting ≤ 3 levels
- Inject external dependencies explicitly — pass as parameters for testability
Error Handling [MANDATORY]
- Always handle errors: Log with context or propagate explicitly — error suppression is PROHIBITED
- Fail fast: Detect and report errors early
- Protect sensitive data: Mask passwords, tokens, PII from logs
- Use language-appropriate error handling mechanisms
- Include error context when re-throwing
ENFORCEMENT: Zero silent error suppression — every error MUST have log output and appropriate handling
Dependency Management
- Inject external dependencies explicitly — pass as parameters for testability
- Depend on abstractions, not concrete implementations
- Minimize inter-module dependencies
Reference Representativeness
Verifying References Before Adoption
When adopting patterns, APIs, or dependencies from existing code:
- If referencing only nearby files, verify the pattern is representative across the repository before adopting it
- If multiple approaches coexist, identify the majority pattern and make a deliberate choice
- If adopting an external dependency, verify repository-wide usage distribution for that dependency and its version
- If repository evidence is insufficient to choose an appropriate dependency version, escalate instead of guessing
- If following an existing pattern when alternatives exist, state the reason for following it
Principle
Nearby code is a starting point for investigation, not a sufficient basis for adoption. Confirm that the reference is representative of repository conventions before using it as the model.
Performance
- Measure first: Profile before optimizing — no premature optimization
- Focus on algorithms over micro-optimizations
- Choose data structures based on access patterns
Code Organization
- One primary responsibility per file
- Group related functionality together
- Separate concerns: domain logic, data access, presentation
- Keep files ≤ 500 lines
Commenting Principles
- Prefer names, types, and structure over comments
- Add comments only for why, limitations, edge cases, or public API contracts
- No historical information — use version control
- Remove commented-out code
- Keep comments concise and timeless
Refactoring [SAFE CHANGE PROTOCOL]
STEP 1: Understand current state
STEP 2: Make one small change
STEP 3: Run tests — confirm all pass
STEP 4: Repeat from STEP 2
Triggers: duplication, functions > 50 lines, complex conditionals
ENFORCEMENT: Each step MUST maintain working state
Security
Secure Defaults
- Store credentials and secrets through environment variables or dedicated secret managers
- Use parameterized queries (prepared statements) for all database access
- Use established cryptographic libraries provided by the language or framework
- Generate security-critical values (tokens, IDs, nonces) with cryptographically secure random generators
- Encrypt sensitive data at rest and in transit using standard protocols
Input and Output Boundaries
- Validate all external input at system entry points for expected format, type, and length
- Encode output appropriately for its rendering context (HTML, SQL, shell, URL)
- Return only information necessary for the caller in error responses; log detailed diagnostics server-side
Access Control
- Apply authentication to all entry points that handle user data or trigger state changes
- Verify authorization for each resource access, not only at the entry point
- Grant only the permissions required for the operation (files, database connections, API scopes)
Knowledge Cutoff Supplement (2026-03)
- OWASP Top 10:2025 shifted from symptoms to root causes; added "Software Supply Chain Failures" (A03) and "Mishandling of Exceptional Conditions" (A10)
- Recent research indicates AI-generated code shows elevated rates of access control gaps — treat authentication and authorization as high-priority review targets
- OpenSSF published "Security-Focused Guide for AI Code Assistant Instructions" — recommends language-specific, actionable constraints over generic advice
- For detailed detection patterns, see
references/security-checks.md
Version Control [MANDATORY]
- Atomic, focused commits with clear messages
- Commit working code that passes all tests
- Never commit debug code or secrets
ENFORCEMENT: Code MUST pass all quality checks before commit