ruff-recursive-fix

작성자: github

Ruff 검사를 선택적 범위 및 규칙 재정의와 함께 실행하고, 안전 및 불안전 자동 수정을 반복적으로 적용하며, 각 변경 사항을 검토하고, 남은 발견 사항을 해결합니다…

npx skills add https://github.com/github/awesome-copilot --skill ruff-recursive-fix

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, direct ruff, 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 # noqa only 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 example uv 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:

  1. If ruff_runner is provided, use it as-is.
  2. Else if uv is available and Ruff is managed through uv, use uv run ruff.
  3. Else if ruff is available on PATH, use ruff.
  4. Else if Python is available and Ruff is installed in that environment, use python -m ruff.
  5. 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

  1. Run <ruff_cmd> check with the selected scope and options.
  2. Classify findings by type:
    • Autofixable safe.
    • Autofixable unsafe.
    • Not autofixable.
  3. If no findings remain, stop.

2. Safe Autofix Pass

  1. Run Ruff with --fix using the same scope/options.
  2. Review resulting diff carefully for semantic correctness and style consistency.
  3. Run <ruff_cmd> format on the same scope.
  4. Re-run <ruff_cmd> check to refresh remaining findings.

3. Unsafe Autofix Pass

Run only if findings remain and allow_unsafe_fixes=true.

  1. Run Ruff with --fix --unsafe-fixes using the same scope/options.
  2. Review resulting diff carefully, prioritizing behavior-sensitive edits.
  3. Run <ruff_cmd> format on the same scope.
  4. Re-run <ruff_cmd> check.

4. Manual Remediation Pass

For remaining findings:

  1. Fix directly in code when there is a clear, safe correction.
  2. Keep edits minimal and local.
  3. Run <ruff_cmd> format on the same scope.
  4. 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> check returns 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:

  1. Summarize blocked rules and affected files.
  2. Present valid options and trade-offs.
  3. 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."

github의 다른 스킬

console-rendering
github
Go에서 struct 태그 기반 콘솔 렌더링 시스템 사용 지침
official
acquire-codebase-knowledge
github
사용자가 기존 코드베이스에 대한 매핑, 문서화, 또는 온보딩을 명시적으로 요청할 때 이 스킬을 사용하세요. "이 코드베이스를 매핑해줘", "문서화해줘"와 같은 프롬프트에서 트리거됩니다.
official
acreadiness-assess
github
현재 리포
official
acreadiness-generate-instructions
github
AgentRC 명령어를 통해 맞춤형 AI 에이전트 지침 파일을 생성합니다. .github/copilot-instructions.md 파일을 생성합니다(기본값, VS Code의 Copilot에 권장됨).
official
acreadiness-policy
github
사용자가 AgentRC 정책을 선택, 작성 또는 적용할 수 있도록 지원합니다. 정책은 관련 없는 검사를 비활성화하고, 영향/수준을 재정의하며, 설정을 통해 준비 상태 점수를 사용자 지정합니다.
official
add-educational-comments
github
코드 파일에 교육용 주석을 추가하여 효과적인 학습 자료로 변환합니다. 설명의 깊이와 어조를 세 가지 설정 가능한 지식 수준(초급, 중급, 고급)에 맞게 조정합니다. 파일이 제공되지 않으면 자동으로 요청하며, 빠른 선택을 위해 번호 목록 매칭을 제공합니다. 교육용 주석만을 사용하여 파일을 최대 125%까지 확장합니다(엄격한 제한: 새 줄 400개, 1,000줄 초과 파일의 경우 300개). 파일 인코딩, 들여쓰기 스타일, 구문 정확성 등을 유지합니다.
official
adobe-illustrator-scripting
github
Adobe Illustrator 자동화 스크립트를 ExtendScript(JavaScript/JSX)로 작성, 디버깅 및 최적화합니다. 스크립트를 생성하거나 수정하여 조작할 때 사용합니다.
official
agent-governance
github
선언적 정책, 의도 분류, AI 에이전트 도구 접근 및 행동 제어를 위한 감사 추적. 구성 가능한 거버넌스 정책은 허용/차단된 도구, 콘텐츠 필터, 속도 제한, 승인 요구 사항을 정의하며, 코드가 아닌 구성으로 저장됨. 의미론적 의도 분류는 패턴 기반 신호를 사용하여 도구 실행 전에 위험한 프롬프트(데이터 유출, 권한 상승, 프롬프트 인젝션)를 탐지함. 도구 수준 거버넌스 데코레이터는 함수에서 정책을 적용함...
official