python-code-quality — Claude Code skill: ruff and ty together
An index skill that ties linting, formatting and type checking into one stack, then points you to the focused skill for each tool.
npx skills add laurigates/claude-plugins --skill python-code-quality -a claude-codeWhat python-code-quality does
This skill does not restate tool commands. It routes. Picking lint rules sends you to ruff-linting; quote style and line length live in ruff-formatting; type checking sits in ty-type-checking or basedpyright-type-checking. Dead-code detection is vulture-dead-code, test quality and coverage are python-testing and pytest-advanced.
What it owns is the combined setup. The .pre-commit-config.yaml example wires ruff and ty in one file with three hooks: ruff-check with --fix, ruff-format, and ty. The same three steps make up a typical CI gate — ruff check, ruff format --check, ty check.
The skill is marked user-invocable: false, so there is no slash command to type. It triggers on its own when ruff, ty, linting, formatting or type checking come up in the conversation. Its allowed tools are Bash, Read, Grep and Glob. If you already know which single tool you are tuning, the index just adds a routing hop — go straight to the focused skill.
What it helps with
- wire lint, format and type-check into one pre-commit run
- find which skill owns a specific tool
- keep CI and pre-commit steps identical
- split ruff and ty configuration into separate tasks
- locate the skill for dead code or test coverage
Example prompts for the agent
- set up ruff and ty in pre-commit for a new project
- which quality checks should CI run
- where do I tune ruff lint rules
How to install python-code-quality
1Skills CLI (Vercel)
npx skills add laurigates/claude-plugins --skill python-code-quality -a claude-code2Manually: put the files in place
~/.claude/skills/python-code-quality/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/python-code-quality/
1Skills CLI (Vercel)
npx skills add laurigates/claude-plugins --skill python-code-quality -a codex2Manually: put the files in place
.agents/skills/python-code-quality/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add laurigates/claude-plugins --skill python-code-quality -a cursor2Manually: put the files in place
.cursor/skills/python-code-quality/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install laurigates/claude-plugins python-code-quality2Manually: put the files in place
.github/skills/python-code-quality/SKILL.md1Skills CLI (Vercel)
npx skills add laurigates/claude-plugins --skill python-code-quality -a gemini-cli2Platform CLI
gemini skills install https://github.com/laurigates/claude-plugins --path python-plugin/skills/python-code-qualityManually: put the files in place
.devin/skills/python-code-quality/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add laurigates/claude-plugins --skill python-code-quality -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about python-code-quality
How do I install python-code-quality in Claude?
Run npx skills add laurigates/claude-plugins --skill python-code-quality -a claude-code. The skill file lands at ~/.claude/skills/python-code-quality/SKILL.md.
What does python-code-quality do?
It acts as an index for the Python quality stack, telling you which focused skill handles linting, formatting, type checking, dead code and tests. Its own content is the shared pre-commit config for ruff and ty.
Why can't I invoke this skill manually?
It carries user-invocable: false, so no slash command exists. It fires on its own when ruff, ty, linting, formatting or type checking are mentioned.
Source text
SKILL.md · MIT
---
created: 2025-12-16
modified: 2026-05-29
reviewed: 2026-05-29
name: python-code-quality
description: Python code quality with ruff and ty. Use when the user mentions ruff, ty, linting, formatting, type checking, or Python code style.
user-invocable: false
allowed-tools: Bash, Read, Grep, Glob
---
# Python Code Quality
Orchestration index for the Python quality stack. This skill **routes** to
the focused skills that own each tool — it does not restate their commands.
Reach for it when setting up or reasoning about the whole stack (lint +
format + type-check + tests) at once; reach for a focused skill when tuning
one tool.
## When to Use This Skill
| Use this skill when... | Use a focused sibling instead when... |
|---|---|
| Standing up a complete quality stack for a new project | Tuning only ruff lint rule selection — use `ruff-linting` |
| Reasoning about how the tools fit together / comparing them | Configuring only ruff formatter quirks — use `ruff-formatting` |
| Wiring lint + type-check into pre-commit and CI together | Configuring strict type-checker rules — use `ty-type-checking` or `basedpyright-type-checking` |
## Routing Table
| Concern | Focused skill |
|---------|---------------|
| Lint rules, rule selection, auto-fix | `python-plugin:ruff-linting` |
| Code formatting (quote style, line length) | `python-plugin:ruff-formatting` |
| Editor / pre-commit / CI / Docker wiring for ruff | `python-plugin:ruff-linting` → its `REFERENCE.md` |
| Type checking with ty | `python-plugin:ty-type-checking` |
| Type checking with basedpyright | `python-plugin:basedpyright-type-checking` |
| Dead-code detection | `python-plugin:vulture-dead-code` |
| Test quality / coverage | `python-plugin:python-testing`, `python-plugin:pytest-advanced` |
| Modern type-hint syntax and idioms | `python-plugin:python-development` |
| Adding the tools to a project | `python-plugin:uv-project-management` |
## Full Stack at a Glance
The one thing this index owns: the tools running **together** in pre-commit.
For each tool's flags and config, follow the routing table above.
```yaml
# .pre-commit-config.yaml — ruff (lint + format) and ty together
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.14.0
hooks:
- id: ruff-check
args: [--fix]
- id: ruff-format
- repo: https://github.com/astral-sh/ty
rev: v0.0.10
hooks:
- id: ty
```
A typical CI quality gate runs the same three steps: `ruff check`,
`ruff format --check`, `ty check`. See `ruff-linting` § CI/CD Integration and
`ty-type-checking` for the runnable forms.
## References
- Ruff: <https://docs.astral.sh/ruff/>
- ty: <https://docs.astral.sh/ty/>
© laurigates · MIT · laurigates/claude-plugins