Validate WCAG 2.1 Level AA compliance and accessibility best practices. Use when performing accessibility audits and WCAG certification.
日本語の概要は準備中です。原文の説明を表示しています。
Validate Python code quality with formatting, type checking, linting, and security analysis. Use for Python codebases to ensure PEP 8 compliance, type safety, and code quality.
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
This skill provides comprehensive Python code quality validation including formatting (Black), type checking (mypy), linting (flake8/ruff), security analysis (bandit), and complexity analysis. Ensures code meets Python best practices and project standards.
Verify Tools Installed:
# Check Python version
python --version
# Check quality tools
black --version
mypy --version
flake8 --version
bandit --version
# Or install missing tools
pip install black mypy flake8 bandit ruff
Install Development Dependencies:
# Install all dev tools
pip install -e ".[dev]"
# Or from requirements
pip install -r requirements-dev.txt
Deliverable: Quality tools ready
Check Formatting:
# Check if code is formatted
black --check src/ tests/
# Check with diff
black --check --diff src/ tests/
# Check specific files
black --check src/tools/feature/core.py
# Check with color output
black --check --color src/ tests/
Auto-Format Code:
# Format all code
black src/ tests/
# Format specific directory
black src/tools/feature/
# Format with specific line length
black --line-length 100 src/
# Preview changes without applying
black --check --diff src/
Configuration (pyproject.toml):
[tool.black]
line-length = 88
target-version = ['py311']
include = '\.pyi?$'
extend-exclude = '''
/(
# Directories
\.eggs
| \.git
| \.venv
| build
| dist
)/
'''
Deliverable: Formatting validation report
Run Type Checks:
# Check entire codebase
mypy src/
# Check specific module
mypy src/tools/feature/
# Check with stricter settings
mypy --strict src/
# Show error codes
mypy --show-error-codes src/
# Generate HTML report
mypy --html-report mypy-report/ src/
Common Type Issues:
# Check for missing type hints
mypy --disallow-untyped-defs src/
# Check for Any types
mypy --disallow-any-explicit src/
# Check for incomplete definitions
mypy --check-untyped-defs src/
Configuration (pyproject.toml):
[tool.mypy]
python_version = "3.11"
warn_return_any = true
warn_unused_configs = true
disallow_untyped_defs = true
disallow_incomplete_defs = true
check_untyped_defs = true
no_implicit_optional = true
warn_redundant_casts = true
warn_unused_ignores = true
warn_no_return = true
warn_unreachable = true
strict_equality = true
show_error_codes = true
[[tool.mypy.overrides]]
module = "tests.*"
disallow_untyped_defs = false
Deliverable: Type checking report
Flake8 Linting:
# Lint entire codebase
flake8 src/ tests/
# Lint with statistics
flake8 --statistics src/
# Lint with detailed output
flake8 --show-source --show-pep8 src/
# Generate HTML report
flake8 --format=html --htmldir=flake8-report/ src/
Ruff Linting (Faster Alternative):
# Lint with ruff
ruff check src/ tests/
# Auto-fix issues
ruff check --fix src/ tests/
# Show violations
ruff check --output-format=full src/
# Specific rules
ruff check --select=E,F,I src/
Flake8 Configuration (.flake8):
[flake8]
max-line-length = 88
extend-ignore = E203, W503
exclude =
.git,
__pycache__,
.venv,
venv,
build,
dist
max-complexity = 10
per-file-ignores =
__init__.py:F401
Ruff Configuration (pyproject.toml):
[tool.ruff]
line-length = 88
target-version = "py311"
select = [
"E", # pycodestyle errors
"W", # pycodestyle warnings
"F", # pyflakes
"I", # isort
"N", # pep8-naming
"UP", # pyupgrade
"B", # flake8-bugbear
"C4", # flake8-comprehensions
]
ignore = ["E203", "W503"]
exclude = [
".git",
"__pycache__",
".venv",
"build",
"dist",
]
[tool.ruff.per-file-ignores]
"__init__.py" = ["F401"]
Deliverable: Linting report
Run Security Checks:
# Basic security scan
bandit -r src/
# Detailed report
bandit -r src/ -f json -o bandit-report.json
# Exclude test files
bandit -r src/ --exclude tests/
# Specific confidence level
bandit -r src/ -ll # Low confidence
bandit -r src/ -l # Medium confidence
bandit -r src/ # All levels
# Skip specific issues
bandit -r src/ -s B101,B601
Common Security Issues:
# Check for hardcoded passwords
bandit -r src/ -t B105,B106
# Check for SQL injection
bandit -r src/ -t B608
# Check for command injection
bandit -r src/ -t B602,B603
# Check for unsafe YAML loading
bandit -r src/ -t B506
Configuration (.bandit):
# .bandit
exclude_dirs:
- /tests/
- /venv/
- /.venv/
skips:
- B101 # Skip assert warnings in production code
- B601 # Skip shell=True warnings (if justified)
tests:
- B201 # flask_debug_true
- B501 # request_with_no_cert_validation
- B502 # ssl_with_bad_version
Deliverable: Security analysis report
Check Import Organization:
# Check imports
isort --check-only src/ tests/
# Check with diff
isort --check-only --diff src/ tests/
# Auto-fix imports
isort src/ tests/
Configuration (pyproject.toml):
[tool.isort]
profile = "black"
line_length = 88
multi_line_output = 3
include_trailing_comma = true
force_grid_wrap = 0
use_parentheses = true
ensure_newline_before_comments = true
Deliverable: Import sorting validation
Check Code Complexity:
# Cyclomatic complexity with radon
pip install radon
radon cc src/ -a
# Show complex functions (>10)
radon cc src/ -nc
# Maintainability index
radon mi src/
# Raw metrics
radon raw src/
McCabe Complexity (via flake8):
# Check complexity with flake8
flake8 --max-complexity=10 src/
# Show complexity metrics
pip install flake8-mccabe
flake8 --statistics --select=C src/
Deliverable: Complexity analysis report
Run All Checks:
#!/bin/bash
# scripts/quality-check.sh
set -e # Exit on first error
echo "=== Python Quality Checks ==="
echo "1. Code Formatting (Black)..."
black --check src/ tests/
echo "2. Import Sorting (isort)..."
isort --check-only src/ tests/
echo "3. Type Checking (mypy)..."
mypy src/
echo "4. Linting (ruff)..."
ruff check src/ tests/
echo "5. Security Analysis (bandit)..."
bandit -r src/ -ll
echo "6. Complexity Check..."
radon cc src/ -nc
echo "=== All Quality Checks Passed ✅ ==="
Make script executable:
chmod +x scripts/quality-check.sh
./scripts/quality-check.sh
Deliverable: Comprehensive quality report
Any types (except justified)| Check | Tool | Threshold | Auto-Fix |
|---|---|---|---|
| Formatting | Black | Must pass | Yes |
| Type hints | mypy | 0 errors | No |
| Linting | ruff/flake8 | 0 errors | Partial |
| Imports | isort | Must pass | Yes |
| Security | bandit | 0 high severity | No |
| Complexity | radon | ≤ 10 | No |
Setup pre-commit hooks:
# .pre-commit-config.yaml
repos:
- repo: https://github.com/psf/black
rev: 23.9.1
hooks:
- id: black
language_version: python3.11
- repo: https://github.com/pycqa/isort
rev: 5.12.0
hooks:
- id: isort
args: ["--profile", "black"]
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.1.0
hooks:
- id: ruff
args: [--fix, --exit-non-zero-on-fix]
- repo: https://github.com/pre-commit/mirrors-mypy
rev: v1.5.1
hooks:
- id: mypy
additional_dependencies: [types-all]
- repo: https://github.com/PyCQA/bandit
rev: 1.7.5
hooks:
- id: bandit
args: ["-ll", "-r", "src/"]
Install and run:
# Install pre-commit
pip install pre-commit
# Install hooks
pre-commit install
# Run manually
pre-commit run --all-files
Deliverable: Pre-commit hooks configured
GitHub Actions Example:
# .github/workflows/quality.yml
name: Python Quality Checks
on: [push, pull_request]
jobs:
quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: '3.11'
- name: Install dependencies
run: |
pip install black mypy ruff bandit isort radon
pip install -r requirements.txt
- name: Check formatting
run: black --check src/ tests/
- name: Check imports
run: isort --check-only src/ tests/
- name: Type checking
run: mypy src/
- name: Linting
run: ruff check src/ tests/
- name: Security scan
run: bandit -r src/ -ll
- name: Complexity check
run: radon cc src/ -nc
Deliverable: CI/CD quality pipeline
# Check what would change
black --check --diff src/
# Apply fixes
black src/
# Check specific file
black --check src/tools/feature/core.py
# Show detailed error
mypy --show-error-codes src/
# Check specific file
mypy src/tools/feature/core.py
# Ignore specific error (last resort)
# type: ignore[error-code]
# Show violation details
ruff check --output-format=full src/
# Auto-fix safe violations
ruff check --fix src/
# Ignore specific line (last resort)
# noqa: F401
# Show detailed report
bandit -r src/ -f json
# Skip false positives
# nosec B101
# Exclude specific tests
bandit -r src/ -s B101,B601
# Python Quality Check Report
## Summary
- **Status**: ✅ All checks passed
- **Date**: 2024-01-15
- **Code Base**: src/
## Checks Performed
### Formatting (Black)
- **Status**: ✅ PASS
- **Files Checked**: 45
- **Issues**: 0
### Type Checking (mypy)
- **Status**: ✅ PASS
- **Files Checked**: 45
- **Errors**: 0
- **Warnings**: 0
### Linting (ruff)
- **Status**: ✅ PASS
- **Files Checked**: 45
- **Violations**: 0
### Security (bandit)
- **Status**: ✅ PASS
- **Files Scanned**: 45
- **High Severity**: 0
- **Medium Severity**: 0
- **Low Severity**: 2 (acceptable)
### Complexity (radon)
- **Status**: ✅ PASS
- **Average Complexity**: 4.2
- **Max Complexity**: 8
- **Files > 10**: 0
## Details
All Python quality checks passed successfully. Code is well-formatted, type-safe, lint-free, secure, and maintainable.
## Recommendations
- Continue maintaining type hints for all new functions
- Keep cyclomatic complexity below 10
- Run pre-commit hooks before commits
Input: Python codebase quality check request Process: Run all Python quality tools and analyze results Output: Comprehensive quality report with pass/fail status Next Step: Report to code-quality-specialist for consolidation
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Validate WCAG 2.1 Level AA compliance and accessibility best practices. Use when performing accessibility audits and WCAG certification.
日本語の概要は準備中です。原文の説明を表示しています。
Analyze feature requirements, dependencies, and security considerations. Use when starting feature implementation from GitHub issues to understand scope, technical feasibility, and risks.
日本語の概要は準備中です。原文の説明を表示しています。
Run SQL queries against psql, BigQuery, or MySQL from the terminal, including natural-language-to-SQL and schema exploration. Use when analyzing data, inspecting DB state, or debugging tables. Trigger on "query the database", "SQL", "show me data from", "explore table".
日本語の概要は準備中です。原文の説明を表示しています。
Design REST APIs or function contracts with clear request/response specifications, error handling patterns, authentication strategies, and comprehensive documentation.
日本語の概要は準備中です。原文の説明を表示しています。
Generate comprehensive API endpoint tests for REST and GraphQL APIs. Creates tests for all HTTP methods, status codes, authentication, and validation.
日本語の概要は準備中です。原文の説明を表示しています。
Design component architecture and module structure using established architectural patterns for clean, maintainable, and scalable systems.
日本語の概要は準備中です。原文の説明を表示しています。