Ruff como linter e formatter padrão para Python (substitui Flake8, Black, isort)
Installation
Details
Usage
After installing, this skill will be available to your AI coding assistant.
Verify installation:
npx agent-skills-cli listSkill Instructions
name: ruff-linter-formatter description: Ruff como linter e formatter padrão para Python (substitui Flake8, Black, isort) triggers: [ruff, linter, formatter, python, lint, format] sources:
- https://docs.astral.sh/ruff/
- https://docs.astral.sh/ruff/configuration/
- https://docs.astral.sh/ruff/linter/
Ruff – Linter e Formatter Python
Ruff é o linter e formatter padrão para projetos Python a partir de agora.
Ruff é escrito em Rust, 10–100x mais rápido que Flake8/Black/isort, e substitui em um único binário: Flake8, Black, isort, pydocstyle, pyupgrade, autoflake.
Quando Usar
- Todo projeto Python (estudos e trabalho): FastAPI, Django, scripts, notebooks, libs.
- Antes de commit: rodar
ruff checkeruff format(ouruff check --fixeruff format). - Em CI: incluir
ruff checkeruff format --checkno pipeline. - No código: respeitar as regras que o Ruff reporta; usar
# noqasó quando justificado.
Comandos
Lint (checagem e correção automática)
# Checar apenas (não altera arquivos)
ruff check .
# Checar e aplicar correções automáticas
ruff check . --fix
# Checar caminho específico
ruff check src/ scripts/ tests/
Format (formatação estilo Black)
# Formatar arquivos
ruff format .
# Apenas checar se está formatado (útil em CI)
ruff format . --check
Uso típico antes de commit
ruff check . --fix && ruff format .
Configuração
Configurar em pyproject.toml (preferido), ruff.toml ou .ruff.toml.
Exemplo mínimo em pyproject.toml
[tool.ruff]
line-length = 88
target-version = "py311"
[tool.ruff.lint]
select = ["E", "F", "I", "N", "W", "UP"]
ignore = ["E501"]
[tool.ruff.format]
quote-style = "double"
indent-style = "space"
Opções úteis
| Seção | Opção | Descrição |
|---|---|---|
[tool.ruff] | line-length | Comprimento máximo de linha (default 88, como Black) |
target-version | Versão mínima Python: py39, py310, py311, py312 | |
exclude | Pastas/arquivos excluídos (ex.: .venv, build) | |
[tool.ruff.lint] | select | Regras habilitadas (E, F, I, N, W, UP, B, etc.) |
ignore | Regras desabilitadas (ex.: E501 para não forçar line-length) | |
fixable | Regras que podem ser corrigidas com --fix | |
[tool.ruff.lint.per-file-ignores] | "__init__.py" | Ex.: ["E402"] para imports não no topo |
Regras comuns
- E: pycodestyle errors
- F: Pyflakes
- I: isort (imports)
- N: pep8-naming
- W: pycodestyle warnings
- UP: pyupgrade (sintaxe moderna)
- B: flake8-bugbear
Integração em projetos
Novo projeto Python
- Adicionar
ruff>=0.2.0emrequirements.txtou[project.optional-dependencies].devnopyproject.toml. - Criar
[tool.ruff](e[tool.ruff.lint],[tool.ruff.format]) nopyproject.tomldo projeto. - No Makefile (se houver):
lint: ruff check .eformat: ruff format .(oulint: ruff check . --fix && ruff format .). - Em CI: passo que rode
ruff check .eruff format . --check.
Projetos existentes (threat-modeling-ai, fastapi-microservice-framework, etc.)
- fastapi-microservice-framework: já usa Ruff em
pyproject.tomle no CI. - threat-modeling-ai: adicionar
pyproject.tomlcom[tool.ruff]e incluirruffnas dependências de dev; rodarruff check --fixeruff formatno código Python e notebooks.
Regras para os agentes
- Projetos Python: usar Ruff como linter e formatter padrão. Não introduzir Black, Flake8 ou isort em projetos novos; em projetos antigos, migrar para Ruff quando for tocar no repo.
- Antes de sugerir commit: garantir que
ruff check .eruff format .passem (ou que o usuário rode). - Configuração: preferir
pyproject.tomlcom[tool.ruff]para manter tudo no mesmo lugar. - Notebooks: Ruff linta e formata
.ipynbpor padrão (Ruff 0.6+). Para só lintar ou só formatar notebooks, usar[tool.ruff.format] exclude = ["*.ipynb"]ou[tool.ruff.lint] excludeconforme necessário.
Referências
- Documentação: https://docs.astral.sh/ruff/
- Configuração: https://docs.astral.sh/ruff/configuration/
- Regras (linter): https://docs.astral.sh/ruff/linter/
- Editor (VS Code): extensão Ruff oficial; usar Ruff como formatter/linter no lugar de Pylance/Black quando configurado.
More by LucasBiason
View allPadroniza documentação existente no formato canônico Spec-Driven. Remove duplicação e melhora rastreabilidade.
Gera resumos didáticos extensos e estruturados de aulas/cursos para cards do Notion. Use ao resumir aulas, apostilas, transcrições ou materiais de estudo para incluir no corpo do card (não apenas no campo Descrição), com flashcards, exemplos de código, diagramas Mermaid, mapa conceitual e perguntas de reforço.
Gera critérios de aceite Given/When/Then para requisitos funcionais. Inclui happy path, edge cases e falhas.
Python best practices e styleguide
