home / skills / dmitriiweb / extract-emails / format-lint-assistant
This skill runs formatting, linting, and mypy checks in order, fixes issues, and manages missing stubs to keep code healthy.
npx playbooks add skill dmitriiweb/extract-emails --skill format-lint-assistantReview the files below or copy the command above to add this skill to your agents.
---
name: format-lint-assistant
description: Run the project's formatter, linters, and mypy checks in the required order, fixing issues and managing any needed stub dependencies via uv.
---
# Format and Lint Assistant
## Quick start
- Run `make format` before linting to apply project formatting.
- Run `make lint`; fix linter errors first, rerun `make lint`, then address any remaining mypy issues.
- If mypy needs missing stubs/libs, add them with `uv add --dev <package>` so they land in `pyproject.toml`; never use mypy's install-missing-libraries command.
- Keep rerunning `make lint` until it passes cleanly; share any unresolved issues.
- See `references/linting_rules.md` for the exact workflow.
## Workflow
1) **Prepare and format**
- Review the scope of files to format/lint.
- Run `make format` to apply formatting before linting.
2) **Lint and iterate**
- Run `make lint`.
- If linters fail, fix those issues first and rerun `make lint` to confirm the lint portion is clean.
- After lint fixes, address mypy errors reported by the same command, then rerun `make lint` to verify.
3) **Manage dependencies**
- When mypy reports missing libraries or type stubs, add the needed package with `uv add --dev <package>` so it updates the dev dependencies in `pyproject.toml`.
- Do **not** use mypy's automatic install-missing-libraries flag.
4) **Validate and report**
- Run `make lint` once more after all fixes to ensure a clean result.
- Summarize what was run, what was fixed, and call out any remaining issues.
This skill runs the project's formatter, linters, and mypy checks in the required sequence, applying fixes and managing any missing stub dependencies using uv. It enforces a repeatable workflow that ensures formatting is applied before linting, linter issues are resolved first, and type-checking dependencies are added to dev dependencies correctly. The skill produces a concise validation report describing what was run and what remains to fix.
The skill first identifies the file scope and runs the formatter (make format) to normalize code style. It then runs the lint pipeline (make lint), prompting fixes for linter errors and re-running until the lint stage is clean. After linters pass, it surfaces mypy errors and guides adding missing stubs via uv add --dev <package>, avoiding mypy's install-missing-libraries. Finally, it reruns the full lint command and summarizes results and any unresolved items.
What if mypy reports a missing stub?
Add the correct package with uv add --dev <package> so the stub is tracked in pyproject.toml; do not rely on mypy's automated installer.
How many times should I run make lint?
Iterate: run make lint, fix linter errors, rerun until linters pass, then fix mypy errors and run make lint again to validate everything is clean.