Quality Check Skill
Purpose
Unified code quality validation across Python, JavaScript/TypeScript, Shell, and SQL. Runs formatting checks, linting, type checking, and complexity analysis.
Quick Start
# Auto-detect language and run appropriate checks
/quality-check [path]
Language Detection
The skill auto-detects language based on file extensions:
.py-> Python tools.js,.ts,.tsx,.jsx-> JavaScript/TypeScript tools.sh,.bash-> Shell tools.sql-> SQL validation
Tool Matrix
| Language | Formatter | Linter | Type Check | Complexity |
|---|---|---|---|---|
| Python | ruff format | ruff check | mypy | radon cc |
| JS/TS | prettier | eslint | tsc | eslint complexity |
| Shell | shfmt | shellcheck | - | - |
| SQL | - | sqlfluff | - | - |
| Swift | - | swiftlint | swift build | - |
| Go | gofmt | golint | go vet | - |
| Rust | rustfmt | clippy | - | - |
Commands by Language
Python
# Format check (replaces black + isort)
ruff format --check src/ tests/
# Lint
ruff check src/ tests/
# Type check
mypy src/
# Complexity (functions with cc > 10)
radon cc src/ -nc
JavaScript/TypeScript
# Format check
npx prettier --check "src/**/*.{ts,tsx,js,jsx}"
# Lint
npx eslint "src/**/*.{ts,tsx}"
# Type check
npx tsc --noEmit
# Dependency audit
npm audit --production
Shell
# Lint
shellcheck scripts/*.sh
# Format check (if shfmt installed)
shfmt -d scripts/*.sh
SQL
# Lint (if sqlfluff installed)
sqlfluff lint queries/
Swift
# Lint
swiftlint
# Build check (type checking)
swift build
Go
# Format check
gofmt -d .
# Lint
golint ./...
# Vet (static analysis)
go vet ./...
Rust
# Format check
cargo fmt --check
# Lint
cargo clippy -- -D warnings
Quality Standards
All Languages
| Metric | Threshold |
|---|---|
| File size | < 500 lines |
| Function size | < 50 lines |
| Complexity | < 10 per function |
| Nesting depth | < 4 levels |
Python-Specific
- Type hints on all functions
- Google-style docstrings on public API
- No bare
except:clauses - No mutable default arguments
TypeScript-Specific
- Strict mode enabled
- Explicit return types
- No
anytypes (except justified) - No unused variables
Output Format
# Quality Report
**Status**: PASS/FAIL
**Files Checked**: N
**Language**: Python/TypeScript/Mixed
## Results
| Check | Status | Issues |
| ---------- | ------ | ---------------- |
| Format | PASS | 0 |
| Lint | PASS | 0 |
| Types | PASS | 0 |
| Complexity | WARN | 2 functions > 10 |
## Issues Found
### Critical
[None or list]
### Warnings
- `src/utils.py:45` - complexity 12 (function `process_data`)
## Auto-fix Available
Run: `ruff format src/ && ruff check --fix src/`
Integration
This skill is called by /pre-commit as part of the full validation suite.
Troubleshooting
Tool Not Found
# Python
pip install ruff mypy radon
# JS/TS
npm install -D prettier eslint typescript
# Shell
brew install shellcheck shfmt # macOS
apt install shellcheck shfmt # Ubuntu
Too Many Errors
Focus on one category at a time:
- Fix formatting first (auto-fixable)
- Then linting (many auto-fixable)
- Then type errors (manual)
- Complexity last (refactoring)