Knowledge about the ruff linter and patterns for solving errors. **ZERO noqa policy** — always look for the proper solution.
From pythonnpx claudepluginhub ruslan-korneev/claude-plugins --plugin pythonThis skill uses the workspace's default tool permissions.
examples/fastapi-pyproject.tomlreferences/recommended-config.mdreferences/rule-solutions.mdreferences/why-no-noqa.mdDesigns and optimizes AI agent action spaces, tool definitions, observation formats, error recovery, and context for higher task completion rates.
Enables AI agents to execute x402 payments with per-task budgets, spending controls, and non-custodial wallets via MCP tools. Use when agents pay for APIs, services, or other agents.
Compares coding agents like Claude Code and Aider on custom YAML-defined codebase tasks using git worktrees, measuring pass rate, cost, time, and consistency.
Knowledge about the ruff linter and patterns for solving errors. ZERO noqa policy — always look for the proper solution.
Use this skill when the user:
Every ruff error has a proper solution. Using # noqa is:
Instead of noqa:
More details: ${CLAUDE_PLUGIN_ROOT}/skills/ruff-patterns/references/why-no-noqa.md
uv add ruff --dev
# Check
ruff check .
# Format
ruff format .
# Auto-fix safe errors
ruff check --fix .
# Auto-fix all errors (including potentially unsafe)
ruff check --fix --unsafe-fixes .
[tool.ruff]
target-version = "py312"
line-length = 120
src = ["src"]
[tool.ruff.lint]
select = ["ALL"]
ignore = [
"D", # docstrings
"ANN101", # self annotation
"ANN102", # cls annotation
"FBT003", # boolean positional arg
"PLR0913", # too many arguments
"S101", # assert (allowed in tests via per-file-ignores)
"COM812", # trailing comma conflict
"ISC001", # implicit string concat conflict
]
[tool.ruff.lint.per-file-ignores]
"tests/**/*.py" = ["S101", "PLR2004"]
"alembic/versions/*.py" = ["ALL"]
"__init__.py" = ["F401"]
[tool.ruff.format]
quote-style = "double"
Full example: ${CLAUDE_PLUGIN_ROOT}/skills/ruff-patterns/examples/fastapi-pyproject.toml
Detailed solution database: ${CLAUDE_PLUGIN_ROOT}/skills/ruff-patterns/references/rule-solutions.md
| Code | Problem | Solution |
|---|---|---|
| E501 | Line too long | Use parentheses for line breaks |
| F401 | Unused import | Remove or add to __all__ |
| F841 | Unused variable | Use _ or remove |
| B008 | Function call in default | None + check |
| PLR0913 | Too many arguments | Dataclass/Pydantic model |
| S101 | Assert in code | Explicit check + raise |
| UP007 | Outdated Union | Use X | Y |
Ruff completely replaces these tools:
ruff format = blackruff check --select I = isortruff check = flake8 + plugins# Remove old dependencies
uv remove black isort flake8 flake8-bugbear flake8-comprehensions
# Add ruff
uv add ruff --dev
# Remove old configs
rm .flake8 .isort.cfg
# Remove [tool.black], [tool.isort] sections from pyproject.toml
Ruff covers most pylint rules through PL* groups:
- name: Lint with ruff
run: |
ruff check --output-format=github .
ruff format --check .
repos:
- repo: https://github.com/astral-sh/ruff-pre-commit
rev: v0.8.0
hooks:
- id: ruff
args: [--fix]
- id: ruff-format
/lint:check [path] — check code/lint:explain <error> — error explanation + solution/lint:config [preset] — configure ruff for the project