code-quality
npx machina-cli add skill Fujigo-Software/f5-framework-claude/code-quality --openclawCode Quality Skills
Overview
Code quality practices for writing clean, maintainable, and reliable code. These skills cover linting, static analysis, refactoring, naming conventions, documentation, and best practices.
Quality Metrics
| Metric | Good | Warning | Bad |
|---|---|---|---|
| Cyclomatic Complexity | < 10 | 10-20 | > 20 |
| Function Length | < 20 lines | 20-50 | > 50 |
| File Length | < 300 lines | 300-500 | > 500 |
| Nesting Depth | < 3 | 3-4 | > 4 |
| Code Coverage | > 80% | 60-80% | < 60% |
| Duplicate Code | < 3% | 3-5% | > 5% |
| Technical Debt Ratio | < 5% | 5-10% | > 10% |
Categories
Linting
Automated code style enforcement and error detection:
- ESLint - JavaScript/TypeScript linting
- Prettier - Code formatting
- Stylelint - CSS/SCSS linting
- lint-staged - Pre-commit linting
Static Analysis
Deep code analysis beyond linting:
- TypeScript Strict Mode - Maximum type safety
- SonarQube - Comprehensive analysis platform
- Code Coverage - Test coverage metrics
Refactoring
Code improvement techniques:
- Code Smells - Identifying problematic patterns
- Refactoring Techniques - Systematic improvements
- Extract Method - Breaking down functions
- When to Refactor - Decision framework
Naming
Clear and consistent naming:
- Naming Conventions - Project-wide standards
- Variable Naming - Descriptive identifiers
- Function Naming - Action-oriented names
Documentation
In-code documentation:
- Code Comments - When and how to comment
- JSDoc/TSDoc - Type documentation
- README Standards - Project documentation
Practices
Development best practices:
- Clean Code Principles - Foundational concepts
- Code Review Checklist - Review guidelines
- Technical Debt - Managing and reducing debt
- Boy Scout Rule - Continuous improvement
Quality Gates Integration
# .f5/quality/code-quality-gate.yaml
code_quality_gate:
name: "Code Quality Standards"
metrics:
lint_errors: 0
lint_warnings: 10
complexity_max: 15
coverage_min: 80
duplication_max: 3
checks:
- eslint --max-warnings 0
- tsc --noEmit
- jest --coverage --coverageThreshold='{"global":{"lines":80}}'
Tool Stack
| Tool | Purpose | Configuration |
|---|---|---|
| ESLint | Linting | eslint.config.js |
| Prettier | Formatting | .prettierrc |
| TypeScript | Type checking | tsconfig.json |
| Jest | Testing/Coverage | jest.config.js |
| Husky | Git hooks | .husky/ |
| lint-staged | Pre-commit | package.json |
Quick Setup
# Install core tools
npm install -D eslint prettier typescript @typescript-eslint/parser @typescript-eslint/eslint-plugin
# Install formatting
npm install -D eslint-config-prettier eslint-plugin-prettier
# Install git hooks
npm install -D husky lint-staged
npx husky init
# Configure lint-staged
npm pkg set lint-staged='{"*.{ts,tsx}":["eslint --fix","prettier --write"]}'
Related Skills
- Testing - Test-driven quality
- Security - Secure coding practices
- Performance - Performance optimization
- Architecture - Structural quality
Source
git clone https://github.com/Fujigo-Software/f5-framework-claude/blob/main/plugins/f5-core/skills/code-quality/SKILL.mdView on GitHub Overview
Code quality skills cover linting, static analysis, refactoring, naming, documentation, and best practices to keep code clean, maintainable, and reliable. They leverage metrics and gates to enforce standards across projects.
How This Skill Works
You integrate linting (ESLint, Prettier, Stylelint) and static analysis (TypeScript strict mode, SonarQube) into your workflow, run tests to track coverage, and apply refactoring techniques like Extract Method when needed. Quality gates enforce minimum standards (e.g., 0 lint errors, 80% coverage, max complexity) before merging.
When to Use It
- Kick off a new project and establish coding standards.
- Enforce consistency in a legacy codebase with linting and refactoring.
- Guard PRs with CI gates requiring zero lint errors and minimum coverage.
- Reduce code smells by applying refactoring techniques and extracting methods.
- Improve documentation and naming consistency across modules.
Quick Start
- Step 1: Install core tools: npm install -D eslint prettier typescript @typescript-eslint/parser @typescript-eslint/eslint-plugin
- Step 2: Install formatting: npm install -D eslint-config-prettier eslint-plugin-prettier
- Step 3: Install git hooks and configure lint-staged (keep it simple: install Husky and lint-staged, then wire pre-commit to run linting)
Best Practices
- Enable ESLint, Prettier, Stylelint and fix all lint errors.
- Set and monitor quality gates: lint errors 0, coverage 80%+, complexity < 15, duplication < 3%.
- Apply refactoring techniques (e.g., Extract Method) to reduce complexity and improve readability.
- Maintain clear naming conventions for variables, functions, and modules.
- Document code with JSDoc/TSDoc and uphold README standards.
Example Use Cases
- Add ESLint and Prettier configs to a TypeScript project and fix issues.
- Introduce lint-staged and Husky for pre-commit linting.
- Configure CI to fail on lint errors and insufficient test coverage.
- Refactor a lengthy function by extracting logical blocks into smaller methods.
- Annotate APIs with JSDoc/TSDoc and standardize project README documentation.
Frequently Asked Questions
Related Skills
accessibility
Fujigo-Software/f5-framework-claude
Web accessibility guidelines and implementation
api-design
Fujigo-Software/f5-framework-claude
API design principles for REST, GraphQL, and gRPC
database
Fujigo-Software/f5-framework-claude
Database design, SQL, NoSQL, and data management
performance
Fujigo-Software/f5-framework-claude
Performance optimization strategies and techniques
devops
Fujigo-Software/f5-framework-claude
DevOps practices, CI/CD, and infrastructure management
git
Fujigo-Software/f5-framework-claude
Git version control and collaboration workflows