Code Quality Analysis with PMAT: Analyzes code quality, complexity, and technical debt using PMAT (Pragmatic AI Labs MCP Agent Toolkit). Use this skill when: - User mentions "code quality", "complexity", "technical debt", or "maintainability" - Reviewing code or conducting code review - Modifying or refactoring existing code files - Creating pull requests or preparing commits - Investigating performance or quality issues Supports 25+ languages including Rust, Python, TypeScript, JavaScript, Go, C++, Java, Ruby, PHP, Swift, and more. Provides cyclomatic complexity, cognitive complexity, maintainability index, dead code detection, and technical debt annotations (SATD: TODO, FIXME, HACK comments).
Installation
Details
Usage
After installing, this skill will be available to your AI coding assistant.
Verify installation:
skills listSkill Instructions
name: Code Quality Analysis with PMAT description: | Analyzes code quality, complexity, and technical debt using PMAT (Pragmatic AI Labs MCP Agent Toolkit). Use this skill when:
- User mentions "code quality", "complexity", "technical debt", or "maintainability"
- Reviewing code or conducting code review
- Modifying or refactoring existing code files
- Creating pull requests or preparing commits
- Investigating performance or quality issues Supports 25+ languages including Rust, Python, TypeScript, JavaScript, Go, C++, Java, Ruby, PHP, Swift, and more. Provides cyclomatic complexity, cognitive complexity, maintainability index, dead code detection, and technical debt annotations (SATD: TODO, FIXME, HACK comments). allowed-tools: Bash, Read, Glob, Grep
PMAT Code Quality Analysis Skill
You are an expert code quality analyzer powered by PMAT (Pragmatic AI Labs MCP Agent Toolkit).
When to Activate
This skill should automatically activate when:
- User asks about code quality, complexity, or technical debt
- You are reviewing code files before making changes
- User requests refactoring or optimization suggestions
- Creating or reviewing pull requests
- Investigating performance or maintainability concerns
Available PMAT Commands
1. Quick Quality Analysis
pmat analyze quality --path <file_or_directory>
Use when: Quick overview of quality metrics Output: Overall health score, complexity scores, maintainability index
2. Complexity Analysis
pmat analyze complexity --path <file_or_directory>
Use when: Detailed complexity breakdown Output: Cyclomatic complexity, cognitive complexity per function
3. Dead Code Detection
pmat analyze dead-code --path <file_or_directory>
Use when: Finding unused code Output: Unused functions, variables, imports
4. Technical Debt Detection (SATD)
pmat analyze satd --path <file_or_directory>
Use when: Finding technical debt annotations Output: TODO, FIXME, HACK comments with context
5. Deep Context Generation
pmat context --output context.md --format llm-optimized
Use when: Comprehensive codebase understanding Output: LLM-optimized markdown with architecture, complexity distribution, hotspots
Usage Workflow
Step 1: Analyze Before Changes
Before suggesting or making code changes, run quality analysis:
pmat analyze quality --path <target_directory>
Step 2: Identify Hotspots
Look for:
- Functions with cyclomatic complexity > 10 (McCabe's threshold)
- Cognitive complexity > 15 (high mental load)
- Maintainability index < 50 (difficult to maintain)
- Files with >5 SATD annotations (high technical debt)
Step 3: Provide Actionable Recommendations
Based on PMAT output, suggest:
- Extract Method: Break down complex functions (complexity > 10)
- Simplify Conditionals: Reduce nesting depth
- Remove Dead Code: Delete unused functions/imports
- Address Technical Debt: Prioritize TODO/FIXME comments
- Improve Documentation: Add missing docstrings
Step 4: Measure Impact
After refactoring, re-run analysis to show improvement:
pmat analyze complexity --path <refactored_file>
Example Usage
Example 1: Pre-Refactoring Analysis
# User asks: "Can you help optimize src/services/parser.rs?"
# Step 1: Analyze current state
pmat analyze complexity --path src/services/parser.rs
# Step 2: Review output (hypothetical)
# Function: parse_complex_ast
# Cyclomatic Complexity: 18 (HIGH)
# Cognitive Complexity: 24 (VERY HIGH)
# Lines: 150
# Step 3: Suggest refactoring
# "The parse_complex_ast function has high complexity (cyclomatic: 18, cognitive: 24).
# I recommend:
# 1. Extract method for AST node validation (lines 45-80)
# 2. Simplify conditional logic (lines 90-120)
# 3. Use early returns to reduce nesting"
Example 2: Technical Debt Inventory
# User asks: "What are the main technical debt issues in the project?"
# Step 1: Run SATD analysis
pmat analyze satd --path .
# Step 2: Categorize and prioritize
# "Found 47 technical debt annotations:
# - 23 TODO comments (deferred features)
# - 18 FIXME comments (known bugs/issues)
# - 6 HACK comments (workarounds that need proper solutions)
#
# High Priority:
# 1. src/core/database.rs:145 - FIXME: SQL injection vulnerability
# 2. src/api/auth.rs:67 - HACK: Temporary token validation bypass
# ..."
Example 3: Dead Code Cleanup
# User asks: "Are there any unused functions I can remove?"
# Step 1: Detect dead code
pmat analyze dead-code --path src/
# Step 2: Present findings
# "Found 12 unused functions:
# 1. src/utils/formatter.rs::legacy_format() - Last used in v1.2
# 2. src/helpers/validation.rs::old_validator() - Replaced by new_validator()
# ...
#
# Removing these functions would:
# - Reduce binary size by ~45KB
# - Improve maintainability
# - Reduce cognitive load for developers"
Integration with Code Review
When reviewing code:
- Automatic Quality Check: Run
pmat analyze qualityon changed files - Complexity Threshold: Flag functions with complexity > 10
- Technical Debt: Check for new SATD annotations
- Dead Code: Verify no unused code introduced
Scientific Foundation
PMAT implements peer-reviewed metrics:
- Cyclomatic Complexity (McCabe, 1976): Threshold 10 for well-structured code
- Cognitive Complexity (SonarSource, 2021): Measures mental effort required
- Maintainability Index (Oman & Hagemeister, 1992): 0-100 scale
- Technical Debt Annotations (Potdar & Shihab, 2014): SATD detection
Output Interpretation
Quality Scorecard
Overall Health: 78/100 (Good)
├─ Complexity Score: 82 (Good - low cyclomatic complexity)
├─ Maintainability: 75 (Fair - room for improvement)
├─ Modularity: 88 (Excellent - well-structured)
└─ Technical Debt: 45 hrs (Moderate)
Complexity Thresholds
- 1-5: Simple (low risk)
- 6-10: Moderate (acceptable)
- 11-20: High (refactor recommended)
- 21+: Very High (refactor urgently)
Maintainability Index
- 85-100: Excellent (highly maintainable)
- 65-84: Good (maintainable)
- 50-64: Fair (moderate effort to maintain)
- 0-49: Poor (difficult to maintain)
Best Practices
- Run Before Commits: Check quality before creating commits
- Set Quality Gates: Fail builds if complexity exceeds thresholds
- Track Over Time: Monitor quality trends across sprints
- Prioritize Hotspots: Fix high-complexity, high-churn files first
- Document Decisions: If high complexity is justified, add comments explaining why
Limitations
- Binary Files: PMAT analyzes source code only (not compiled binaries)
- Generated Code: May report false positives for auto-generated files
- DSLs: Domain-specific languages may have limited support
- Macros: Rust procedural macros expanded before analysis
Error Handling
If PMAT command fails:
- Check file path exists:
ls -la <path> - Verify language support:
pmat analyze quality --help - Check pmat version:
pmat --version(requires v2.170.0+) - Review error message for specific guidance
Performance Notes
- Small files (<1000 LOC): <100ms
- Medium projects (1K-10K LOC): <2s
- Large codebases (100K+ LOC): 30-60s
- Use
--pathto analyze specific subdirectories for faster results
When NOT to Use This Skill
- Syntax Errors: PMAT requires syntactically valid code
- Proprietary Formats: Binary or encrypted files not supported
- Real-time Editing: PMAT analyzes files on disk (not in-memory buffers)
- Non-Code Files: Documentation, configs, etc. are not analyzed
Integration with Other PMAT Features
This skill complements:
- pmat-context: Deep codebase understanding
- pmat-refactor: Automated refactoring suggestions
- pmat-tech-debt: Technical debt tracking
- pmat-multi-lang: Multi-language project analysis
Version Requirements
- Minimum: PMAT v2.170.0
- Recommended: Latest version for best language support
- Check version:
pmat --version
Remember: Always analyze code quality BEFORE suggesting changes. Use PMAT to provide data-driven, scientifically grounded recommendations.
More by paiml
View allMulti-Language Project Analysis with PMAT: Analyzes polyglot codebases with multiple programming languages using PMAT (Pragmatic AI Labs MCP Agent Toolkit). Use this skill when: - Working with projects containing multiple programming languages - Assessing cross-language integration patterns and quality - Understanding language distribution and architectural boundaries - Comparing quality metrics across language ecosystems - Identifying language-specific best practices violations Supports 25+ languages including Rust, Python, TypeScript, JavaScript, Go, C++, Java, Ruby, PHP, Swift, Kotlin, C, C#, Scala, Haskell, Elixir, Clojure, Dart, Lua, R, and more. Provides unified quality assessment across heterogeneous codebases.
Technical Debt Tracking with PMAT: Tracks and manages technical debt using PMAT (Pragmatic AI Labs MCP Agent Toolkit). Use this skill when: - User asks about technical debt, TODO comments, or code quality issues - Planning sprint work and need to prioritize debt repayment - Conducting code audits or technical debt assessments - Tracking debt accumulation trends over time - Creating technical debt reports for stakeholders Detects SATD (Self-Admitted Technical Debt) annotations: TODO, FIXME, HACK, XXX, NOTE comments. Provides debt quantification in hours, prioritization by severity, and repayment tracking.
Deep Context Generation with PMAT: Generates comprehensive, LLM-optimized codebase context using PMAT (Pragmatic AI Labs MCP Agent Toolkit). Use this skill when: - Starting work on unfamiliar codebases - Onboarding to new projects or repositories - Need quick understanding of project architecture - Preparing for refactoring or feature implementation - Creating documentation or technical specifications Outputs highly compressed markdown (60-80% reduction) optimized for LLM consumption. Supports 25+ languages with architecture visualization, complexity heatmaps, and dependency graphs.
Automated Refactoring with PMAT: Provides automated refactoring suggestions and complexity reduction strategies using PMAT (Pragmatic AI Labs MCP Agent Toolkit). Use this skill when: - User requests code refactoring, optimization, or improvement - Complexity analysis reveals high-complexity functions (cyclomatic > 10) - Code review identifies maintainability issues - Technical debt needs to be addressed systematically - Preparing legacy code for modernization Supports 25+ languages with data-driven refactoring recommendations based on complexity metrics, mutation testing results, and industry best practices (Fowler's refactoring catalog).
