
ruff-recursive-fix
Run Ruff checks with optional scope and rule overrides, apply safe and unsafe autofixes iteratively, review each change, and resolve remaining findings with targeted edits or user decisions.
- Installs
- 1.5K
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/github/awesome-copilot --skill ruff-recursive-fix- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads ruff-recursive-fix automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Ruff Recursive Fix
Overview
Use this skill to enforce code quality with Ruff in a controlled, iterative workflow. It supports:
- Optional scope limitation to a specific folder.
- Default project settings from
pyproject.toml. - Flexible Ruff invocation (
uv, directruff,python -m ruff, or equivalent). - Optional per-run rule overrides (
--select,--ignore,--extend-select,--extend-ignore). - Automatic safe then unsafe autofixes.
- Diff review after each fix pass.
- Recursive repetition until findings are resolved or require a decision.
- Judicious use of inline
# noqaonly when suppression is justified.
Inputs
Collect these inputs before running:
target_path(optional): folder or file to check. Empty means whole repository.ruff_runner(optional): explicit Ruff command prefix (for exampleuv run,ruff,python -m ruff,pipx run ruff).rules_select(optional): comma-separated rule codes to enforce.rules_ignore(optional): comma-separated rule codes to ignore.extend_select(optional): extra rules to add without replacing configured defaults.extend_ignore(optional): extra ignored rules without replacing configured defaults.allow_unsafe_fixes(default: true): whether to run Ruff unsafe fixes.ask_on_ambiguity(default: true): always ask the user when multiple valid choices exist.
Command Construction
Build Ruff commands from inputs.
0. Resolve Ruff Runner
Determine a reusable ruff_cmd prefix before building commands.
Resolution order:
- If
ruff_runneris provided, use it as-is. - Else if
uvis available and Ruff is managed throughuv, useuv run ruff. - Else if
ruffis available onPATH, useruff. - Else if Python is available and Ruff is installed in that environment, use
python -m ruff. - Else use any project-specific equivalent that invokes installed Ruff (for example
pipx run ruff), or stop and ask the user.
Use the same resolved ruff_cmd for all check and format commands in the workflow.
Base command:
<ruff_cmd> check
Formatter command:
<ruff_cmd> format
With optional target:
<ruff_cmd> format <target_path>
Add optional target:
<ruff_cmd> check <target_path>
Add optional overrides as needed:
--select <codes>
--ignore <codes>
--extend-select <codes>
--extend-ignore <codes>
Examples:
# Full project with defaults from pyproject.toml
ruff check
# One folder with defaults
python -m ruff check src/models
# Override to skip docs and TODO-like rules for this run
uv run ruff check src --extend-ignore D,TD
# Check only selected rules in a folder
ruff check src/data --select F,E9,I
Workflow
1. Baseline Analysis
- Run
<ruff_cmd> checkwith the selected scope and options. - Classify findings by type:
- Autofixable safe.
- Autofixable unsafe.
- Not autofixable.
- If no findings remain, stop.
2. Safe Autofix Pass
- Run Ruff with
--fixusing the same scope/options. - Review resulting diff carefully for semantic correctness and style consistency.
- Run
<ruff_cmd> formaton the same scope. - Re-run
<ruff_cmd> checkto refresh remaining findings.
3. Unsafe Autofix Pass
Run only if findings remain and allow_unsafe_fixes=true.
- Run Ruff with
--fix --unsafe-fixesusing the same scope/options. - Review resulting diff carefully, prioritizing behavior-sensitive edits.
- Run
<ruff_cmd> formaton the same scope. - Re-run
<ruff_cmd> check.
4. Manual Remediation Pass
For remaining findings:
- Fix directly in code when there is a clear, safe correction.
- Keep edits minimal and local.
- Run
<ruff_cmd> formaton the same scope. - Re-run
<ruff_cmd> check.
5. Ambiguity Policy
If there are multiple valid solutions at any step, always ask the user before proceeding. Do not choose silently between equivalent options.
6. Suppression Decision (# noqa)
Use suppression only when all conditions are true:
- The rule conflicts with required behavior, public API, framework conventions, or readability goals.
- Refactoring would be disproportionate to the value of the rule.
- The suppression is narrow and specific (single line, explicit code when possible).
Guidelines:
- Prefer
# noqa: <RULE>over broad# noqa. - Add a brief reason comment for non-obvious suppressions.
- If two or more valid outcomes exist, always ask the user which option to prefer.
7. Recursive Loop and Stop Criteria
Repeat steps 2 to 6 until one of these outcomes:
<ruff_cmd> checkreturns clean.- Remaining findings require architectural/product decisions.
- Remaining findings are intentionally suppressed with documented rationale.
- Repeated loop makes no progress.
Each loop iteration must include <ruff_cmd> format before the next <ruff_cmd> check.
When no progress is detected:
- Summarize blocked rules and affected files.
- Present valid options and trade-offs.
- Ask the user to choose.
Quality Gates
Before declaring completion:
- Ruff returns no unexpected findings for the chosen scope/options.
- All autofix diffs are reviewed for correctness.
- No suppression is added without explicit justification.
- Any unsafe fix with possible behavioral impact is highlighted to the user.
- Ruff formatting is executed in every iteration.
Output Contract
At the end of execution, report:
- Scope and Ruff options used.
- Number of iterations performed.
- Summary of fixed findings.
- List of manual fixes.
- List of suppressions with rationale.
- Remaining findings, if any, and required user decisions.
Suggested Prompt Starters
- "Run ruff-recursive-fix on the whole repo with default config."
- "Run ruff-recursive-fix only on src/models, ignore DOC rules."
- "Run ruff-recursive-fix on tests with select F,E9,I and no unsafe fixes."
- "Run ruff-recursive-fix on src/data and ask me before adding any noqa."
FAQ
What does the ruff-recursive-fix skill do?
Run Ruff checks with optional scope and rule overrides, apply safe and unsafe autofixes iteratively, review each change, and resolve remaining findings with targeted edits or user decisions.
How do I install ruff-recursive-fix?
Run npx skills add https://github.com/github/awesome-copilot --skill ruff-recursive-fix in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/ruff-recursive-fix/ (personal) or .claude/skills/ruff-recursive-fix/ (project).
Which AI agents can use ruff-recursive-fix?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is ruff-recursive-fix safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains ruff-recursive-fix?
It is published by github in github/awesome-copilot, and it is an official skill from the maker of the technology it covers. It has 1,518 recorded installs.
More from github/awesome-copilot
git-commit
github/awesome-copilot
Use this skill when the user wants to make a Git commit or split changes into more than one commit. Also use it when the user types "/commit" or asks for a conventional commit. The skill examines the diff, stages the related files, writes a Conventional Commits message, and runs git commit. Do not use it when the user wants only a commit message and no commit. Do not use it to push, open a pull request, rebase, or change the commit history.
excalidraw-diagram-generator
github/awesome-copilot
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
multi-stage-dockerfile
github/awesome-copilot
Create optimized multi-stage Dockerfiles for any language or framework
documentation-writer
github/awesome-copilot
Diátaxis Documentation Expert. An expert technical writer specializing in creating high-quality software documentation, guided by the principles and structure of the Diátaxis technical documentation authoring framework.
prd
github/awesome-copilot
Generate high-quality Product Requirements Documents (PRDs) for software systems and AI-powered features. Includes executive summaries, user stories, technical specifications, and risk analysis.
refactor
github/awesome-copilot
Surgical code refactoring to improve maintainability without changing behavior. Covers extracting functions, renaming variables, breaking down god functions, improving type safety, eliminating code smells, and applying design patterns. Less drastic than repo-rebuilder; use for gradual improvements.
Popular code quality & workflow skills
grill-me
mattpocock/skills
A relentless interview to sharpen a plan or design.
improve-codebase-architecture
mattpocock/skills
Scan a codebase for deepening opportunities, present them as a visual HTML report, then grill through whichever one you pick.
handoff
mattpocock/skills
Compact the current conversation into a handoff document for another agent to pick up.
domain-modeling
mattpocock/skills
Build and sharpen a project's domain model. Use when discussing codebase terminology, writing or editing a GLOSSARY.md, or recording or editing an ADR.
codebase-design
mattpocock/skills
Shared vocabulary for designing deep modules. Use when the user wants to design or improve a module's interface, find deepening opportunities, decide where a seam goes, make code more testable or AI-navigable, or when another skill needs the deep-module vocabulary.
diagnosing-bugs
mattpocock/skills
Diagnosis loop for hard bugs and performance regressions. Use when the user says "diagnose"/"debug this", or reports something broken/throwing/failing/slow.