lint
SkillAI & modelsRun all linters (ruff, pyright) and fix issues in a loop until the codebase is clean.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the lint skill
What this skill tells your AI
The instructions your AI receives, as published by roryeckel/wyoming_openai in .agents/skills/lint/SKILL.md and read by ahel’s review.
Current State
- Branch: !
git branch --show-current - Dirty files: !
git diff --name-only
Run all project linters and resolve every issue. Loop until the codebase passes cleanly.
Python environment
Use the repository's selected or activated virtual environment for every linter invocation. Do
not assume a particular environment name or location. Resolve the interpreter from the active
environment (for example, with python -c "import sys; print(sys.executable)") and refer to it
below as <venv-python>.
Run Ruff and Pyright as modules through <venv-python> rather than using system-level commands.
Pass the same interpreter to Pyright with --pythonpath so its import resolution uses the
environment containing the project's dependencies. If no project environment is selected, stop
and report that linting requires the development environment to be activated or selected.
Linter pipeline
Run the linters in this order each iteration:
- Ruff auto-fix —
<venv-python> -m ruff check . --fix(safe, auto-fixable issues) - Ruff check —
<venv-python> -m ruff check .(remaining issues that need manual fixes) - Pyright —
<venv-python> -m pyright --pythonpath <venv-python>(type-checking)
Resolution loop
while linters report errors:
1. Run <venv-python> -m ruff check . --fix (let ruff auto-fix what it can)
2. Run <venv-python> -m ruff check .
- If errors remain, read the offending files and fix them
3. Run <venv-python> -m pyright --pythonpath <venv-python>
- If errors remain, read the offending files and fix them
4. If no errors in steps 2 and 3, break
Rules
- Max 5 iterations. If issues persist after 5 loops, stop and report the remaining errors to the user.
- Ruff first, pyright second. Ruff fixes (especially import sorting) can eliminate pyright false positives, so always run ruff before pyright.
- Use
ruff check . --fixbefore manual fixes. Never manually fix what ruff can auto-fix. - Minimal changes. Only touch lines the linters flag. Do not refactor, add docstrings, or "improve" surrounding code.
- Preserve behavior. Fixes must not change runtime behavior. If a fix requires a judgment call (e.g., an
Anytype that needs a real annotation), prefer the narrowest correct type. - Report clearly. After each iteration, briefly state which linter you ran and how many errors remain. When done, summarize what was fixed.
- If
$ARGUMENTScontains a file path or glob, pass it to both linters to scope the run (e.g.,<venv-python> -m ruff check $ARGUMENTSand<venv-python> -m pyright --pythonpath <venv-python> $ARGUMENTS).
Signals
- GitHub stars
- 210
- Forks
- 34
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
lint-roryeckel- Source
- github.com/roryeckel/wyoming_openai