coding-principles
Language-agnostic coding principles for maintainability, readability, and quality. Use when implementing features, refactoring code, or reviewing code quality.
Best use case
coding-principles is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Language-agnostic coding principles for maintainability, readability, and quality. Use when implementing features, refactoring code, or reviewing code quality.
Teams using coding-principles should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/coding-principles/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How coding-principles Compares
| Feature / Agent | coding-principles | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Language-agnostic coding principles for maintainability, readability, and quality. Use when implementing features, refactoring code, or reviewing code quality.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
AI Agents for Coding
Browse AI agent skills for coding, debugging, testing, refactoring, code review, and developer workflows across Claude, Cursor, and Codex.
Cursor vs Codex for AI Workflows
Compare Cursor and Codex for AI coding workflows, repository assistance, debugging, refactoring, and reusable developer skills.
SKILL.md Source
# Language-Agnostic Coding Principles ## Core Philosophy 1. **Maintainability over Speed**: Prioritize long-term code health over initial development velocity 2. **Simplicity First**: Choose the simplest solution that meets requirements (YAGNI principle) 3. **Explicit over Implicit**: Make intentions clear through code structure and naming 4. **Delete over Comment**: Remove unused code instead of commenting it out ## Code Quality ### Continuous Improvement - Refactor as you go - don't accumulate technical debt - Improve code structure incrementally - Keep the codebase lean and focused - Delete unused code immediately ### Readability - Use meaningful, descriptive names for variables and functions - Avoid abbreviations unless they are widely recognized - Keep code self-documenting where possible - Write code that humans can easily understand ## Function Design ### Parameter Management - **Recommended**: 0-2 parameters per function - **For 3+ parameters**: Use objects, structs, or dictionaries to group related parameters - **Example** (conceptual): ``` // Instead of: createUser(name, email, age, city, country) // Use: createUser(userData) ``` ### Single Responsibility - Each function should do one thing well - Keep functions small and focused (typically < 50 lines) - Extract complex logic into separate, well-named functions - Functions should have a single level of abstraction ### Function Organization - Pure functions when possible (no side effects) - Separate data transformation from side effects - Use early returns to reduce nesting - Avoid deep nesting (maximum 3 levels) ## Error Handling ### Error Management Principles - **Always handle errors**: Log with context or propagate explicitly - **Log appropriately**: Include context for debugging - **Protect sensitive data**: Mask or exclude passwords, tokens, PII from logs - **Fail fast**: Detect and report errors as early as possible ### Error Propagation - Use language-appropriate error handling mechanisms - Propagate errors to appropriate handling levels - Provide meaningful error messages - Include error context when re-throwing ## Dependency Management ### Loose Coupling - Inject external dependencies as parameters - Avoid direct imports within functions when possible - Depend on abstractions, not concrete implementations - Minimize inter-module dependencies ### Parameterized Dependencies - Pass dependencies explicitly through function parameters - Use constructor parameter injection for class-based languages - Use function parameters for functional/procedural approaches - Facilitate testing through mockable dependencies ## Performance Considerations ### Optimization Approach - **Measure first**: Profile before optimizing - **Focus on algorithms**: Algorithmic complexity > micro-optimizations - **Use appropriate data structures**: Choose based on access patterns - **Resource management**: Handle memory, connections, and files properly ### When to Optimize - After identifying actual bottlenecks - When performance issues are measurable - Not prematurely during initial development ## Code Organization ### Structural Principles - **Group related functionality**: Keep related code together - **Separate concerns**: Domain logic, data access, presentation - **Consistent naming**: Follow project conventions - **Module cohesion**: High cohesion within modules, low coupling between ### File Organization - One primary responsibility per file - Logical grouping of related functions/classes - Clear folder structure reflecting architecture - Avoid "god files" (files > 500 lines) ## Commenting Principles ### When to Comment - **Document "what"**: Describe what the code does - **Explain "why"**: Clarify reasoning behind decisions - **Note limitations**: Document known constraints or edge cases - **API documentation**: Public interfaces need clear documentation ### When NOT to Comment - Avoid describing "how" (the code shows that) - Don't include historical information (use version control) - Remove commented-out code (use git to retrieve old code) - Avoid obvious comments that restate the code ### Comment Quality - Keep comments concise and timeless - Update comments when changing code - Use proper grammar and formatting - Write for future maintainers ## Refactoring Approach ### Safe Refactoring - **Small steps**: Make one change at a time - **Maintain working state**: Keep tests passing - **Verify behavior**: Run tests after each change - **Incremental improvement**: Don't aim for perfection immediately ### Refactoring Triggers - Code duplication (DRY principle) - Functions > 50 lines - Complex conditional logic - Unclear naming or structure ## Clean Code Guidelines ### Naming Conventions - Use domain language in names - Be specific and descriptive - Avoid single-letter names (except loop counters) - Follow language-specific conventions (camelCase, snake_case, etc.) ### Code Structure - Prefer early returns over nested conditionals - Extract magic numbers into named constants - Remove debug statements before committing - Keep functions at a single level of abstraction ### Code Smells to Avoid - Long parameter lists - Deeply nested conditionals - Duplicated code blocks - Unclear variable names - Large modules, classes, or functions ## Testing Considerations ### Testability - Write testable code from the start - Avoid hidden dependencies - Keep side effects explicit - Design for parameterized dependencies ### Test-Driven Development - Write tests before implementation when appropriate - Keep tests simple and focused - Test behavior, not implementation - Maintain test quality equal to production code ## Security Principles ### General Security - Store secrets in environment variables or secret managers - Validate all external input - Use parameterized queries for databases - Follow principle of least privilege ### Data Protection - Encrypt sensitive data at rest and in transit - Sanitize user input - Avoid logging sensitive information - Use secure random generators for security-critical operations ## Documentation ### Code Documentation - Document public APIs and interfaces - Include usage examples for complex functionality - Maintain README files for modules - Keep documentation in sync with code ### Architecture Documentation - Document high-level design decisions - Explain integration points - Clarify data flows and boundaries - Record trade-offs and alternatives considered ## Version Control Practices ### Commit Practices - Make atomic, focused commits - Write clear, descriptive commit messages - Commit working code (passes tests) - Avoid committing debug code or secrets ### Code Review Readiness - Self-review before requesting review - Keep changes focused and reviewable - Provide context in pull request descriptions - Respond to feedback constructively ## Language-Specific Adaptations While these principles are language-agnostic, adapt them to your specific programming language: - **Static typing**: Use strong types when available - **Dynamic typing**: Add runtime validation - **OOP languages**: Apply SOLID principles - **Functional languages**: Prefer pure functions and immutability - **Concurrency**: Follow language-specific patterns for thread safety ## Continuous Learning - Stay updated with language-specific best practices - Learn from code reviews - Study well-maintained open source projects - Regularly refactor and improve existing code
Related Skills
dev-coding
Implement features as a Principal Engineering Developer
coding-style
Coding style, testing, and PR guidelines for the Kubb ecosystem. Use when writing or reviewing code for the Kubb ecosystem.
coding-standards
Provides coding standards for React Native — performance patterns, consistency rules, and clean React architecture. Use when writing, modifying, or reviewing code.
coding-lead
Smart coding skill that routes tasks by complexity. Simple tasks (<60 lines, single file) execute directly via OpenClaw agent tools. Medium/complex tasks spawn Claude Code via ACP with full project context, coding standards, and historical decisions from agent memory. Use when user asks to write code, fix bugs, build features, refactor, review PRs, deploy, or any software engineering task. Combines OpenClaw long-term memory with Claude Code deep coding ability.
coding-kotlin
Kotlin: coroutines, data classes, sealed classes, extension functions, Gradle, KMM multiplatform
cc-skill-coding-standards
Universal coding standards, best practices, and patterns for TypeScript, JavaScript, React, and Node.js development.
backend-coding
Expert backend development guidance covering Node.js, Python, Java, Go, API design (REST/GraphQL/gRPC), database patterns, authentication, caching, message queues, microservices, and testing. Produces production-ready, scalable, and secure backend code with industry best practices. Use when building APIs, implementing business logic, designing data models, integrating services, or when users mention backend development, server-side code, APIs, databases, or microservices.
architecture-principles
Core architecture principles (SSOT, DRY, Anti-Spaghetti) for maintainable code design. Use when planning features, implementing code, or reviewing architecture to prevent duplication and technical debt.
apply-key-principles
Apply and validate the 7 Key Principles to code - TDD, Fail Fast, Modular, Reuse, Open Source, No Debt, Excellence. Checks code compliance and suggests improvements. Use during code review or refactoring.
api-design-principles
Master REST and GraphQL API design principles to build intuitive, scalable, and maintainable APIs that delight developers. Use when designing new APIs, reviewing API specifications, or establishing API design standards.
1k-coding-patterns
Coding patterns and best practices for OneKey development. Use when writing React components, handling promises, error handling, or following code conventions. Triggers on react, component, hooks, promise, async, await, error, pattern, convention, typescript.
ui-ux-principles
Apply core UI/UX design principles for intuitive, beautiful interfaces. Covers visual hierarchy, color theory, typography, spacing systems, Gestalt principles, usability heuristics, and user-centered design. Use for design decisions, layout planning, and creating polished user experiences.