Coding rules
Controlled, reviewable agentic coding workflows for OpenAI Codex CLI with task-specific subagents, explicit planning, TDD, and quality gates.
npx -y skills add shinpr/codex-workflows --skill coding-rulesAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
Language-agnostic coding standards for maintainability, readability, and quality. Use when: implementing features, refactoring code, reviewing code quality, or writing functions.
SKILL.md
7.2 KB, as published. Nobody here has run it
Coding Rules
Language-Specific References
For language-specific rules, also read:
- TypeScript/React: references/typescript.md
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