From full-stack
AI-powered code quality analysis for Python, Markdown, and Mermaid diagrams. Use this skill when: (1) reviewing code for quality issues, (2) checking Python files for PEP8 violations, unused code, missing type hints, docstring problems, complexity issues, or potential runtime errors, (3) validating Markdown documentation for broken links, heading structure, or formatting issues, (4) validating Mermaid diagram syntax, (5) the user asks for a "code review" or "quality check", (6) analyzing code snippets pasted in conversation, or (7) suggesting and applying fixes for code quality issues.
How this skill is triggered — by the user, by Claude, or both
Slash command
/full-stack:daa-code-reviewThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Analyze Python code, Markdown documentation, and Mermaid diagrams for quality issues. Combines external linters (ruff) with Claude's analysis to provide comprehensive code review with suggested fixes.
references/fix-workflow.mdreferences/markdown-checks.mdreferences/mermaid-checks.mdreferences/python-checks.mdscripts/__init__.pyscripts/markdown_analyzer.pyscripts/models.pyscripts/python_analyzer.pyscripts/report_generator.pyscripts/tests/__init__.pyscripts/tests/test_encoding_detection.pyscripts/tests/test_markdown_analyzer.pyscripts/tests/test_models.pyscripts/tests/test_python_analyzer.pyscripts/tests/test_report_generator.pyAnalyze Python code, Markdown documentation, and Mermaid diagrams for quality issues. Combines external linters (ruff) with Claude's analysis to provide comprehensive code review with suggested fixes. Should not just be about running ruff and other linters, instead checks code for conformance with good software engineering practice (SOLID, DRY, YAGNI, simplicity not complexity); security vulnerabilities; and descriptive variable naming e.g. Don't do this:
pkb = p_key.private_bytes(
encoding=serialization.Encoding.DER,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption(),
)
Instead do this:
private_key_bytes = p_key.private_bytes(
encoding=serialization.Encoding.DER,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.NoEncryption(),
)
from python_analyzer import analyze_python, analyze_python_file
from report_generator import generate_console_report, generate_markdown_report
from models import ReviewReport
# Analyze a code snippet
result = analyze_python(code_string)
# Analyze a file
result = analyze_python_file(Path("src/module.py"))
# Generate report
report = ReviewReport(results=[result], title="Code Review")
generate_console_report(report) # Console output
markdown = generate_markdown_report(report) # Markdown string
from markdown_analyzer import analyze_markdown, analyze_markdown_file
result = analyze_markdown(content)
# or
result = analyze_markdown_file(Path("README.md"))
For Mermaid validation, use Claude's understanding combined with web search for latest syntax. See mermaid-checks.md.
docs/code_reviews/{YYYY-MM-DD}_{file_name}.md (create directory if needed)| Category | Examples | Severity |
|---|---|---|
| PEP8 | Line length, indentation, whitespace | WARNING/INFO |
| Unused Code | Unused imports, variables, arguments | WARNING |
| Type Hints | Missing annotations on functions | INFO |
| Docstrings | Missing/malformed numpy-style docstrings | INFO |
| Complexity | Functions with high cyclomatic complexity | INFO |
| Runtime Errors | Undefined names, syntax errors | ERROR |
| Imports | Unsorted imports, banned imports | INFO |
| Check | Description | Severity |
|---|---|---|
| Heading Structure | Proper h1→h2→h3 sequence | WARNING |
| Broken Links | File links that don't exist | ERROR |
| Missing Alt Text | Images without accessibility text | WARNING |
| Formatting | Trailing whitespace, blank lines | INFO |
| Code Blocks | Missing language identifier | INFO |
| Encoding Corruption | UTF-8 chars appearing as ×, âœ", etc. | ERROR |
Search web for latest Mermaid.js documentation before validating. Check:
Colorized output with severity indicators:
Saved to docs/code_reviews/{YYYY-MM-DD}_{file_name}.md. For multi-file reviews, use a descriptive name (e.g., 2026-03-02_full_repo_review.md).
Structured report with:
Fixes can be approved:
See fix-workflow.md for detailed workflow.
User: "Review the code quality in my project"
1. List Python and Markdown files
2. Analyze each file
3. Aggregate into ReviewReport
4. Present console summary
5. Save report to docs/code_reviews/{YYYY-MM-DD}_full_repo_review.md
6. Offer to apply fixes
User: [pastes code snippet]
"Any issues with this?"
1. Analyze snippet directly
2. Report issues inline
3. Suggest specific fixes
User: "Check these files before I commit"
1. Analyze specified files
2. Focus on errors and warnings
3. Block if errors found
4. Apply quick fixes if approved
5. Check if README needs updating based on changes
6. Update README if new features, APIs, or dependencies changed
| Script | Purpose |
|---|---|
models.py | Data structures (Issue, Severity, AnalysisResult) |
python_analyzer.py | Python analysis with ruff |
markdown_analyzer.py | Markdown quality checks |
report_generator.py | Console and Markdown report generation |
npx claudepluginhub cdcoonce/claude-workflow --plugin full-stackValidates and repairs Mermaid diagrams in markdown files by scanning code blocks, validating syntax, and auto-fixing common errors. Useful for documentation with broken diagrams.
Guides markdown linting with markdownlint-cli2: run checks, fix MD0XX errors, configure .markdownlint-cli2.jsonc rules/ignores, set up VS Code extension and GitHub Actions. Supports GFM/CommonMark for validation and workflows.
Audits and improves project READMEs for structure, completeness, and clarity: verifies essential sections like title, installation, usage, requirements, license; reviews content quality and provides fixes with severity ratings.