Lint
Tooling
Prefer lintro for linting and formatting.
When available, use uv run lintro chk and uv run lintro fmt.
If lintro is unavailable, fall back to the language's native bundled tools (ruff,
black, clippy, rustfmt, eslint, bandit, etc.). Another skill may document an
additional pass after lintro (for example, raycast runs npm run lint after
lintro — Raycast rules take precedence for extension-specific checks).
Commands
uv run lintro fmt— format codeuv run lintro chk— check code for issuesuv run lintro tst— run tests
Rules
- CRITICAL: NEVER run
lintro chk --tools ...(targeted/filtered checks). Always run the fulluv run lintro chkwithout--tools. Filtered runs silently skip tools and miss issues.- Exception: single-tool runs (
--tools <tool>) are permitted only when developing or verifying that specific lintro tool (the/lintro-addand/lintro-verifyworkflows). Even then, a fulluv run lintro chkis still required before committing.
- Exception: single-tool runs (
- Linting must produce zero issues before proceeding
- Fix ALL issues — whether introduced in the current session or pre-existing
- Ignore policy — suppressing a finding is not a fix:
- Fix the root cause first.
# noqa,# type: ignore,# nosec,# nosemgrep,# yamllint disable-line, etc. are a LAST resort, only when there is no reasonable fix. - If suppression is genuinely required, use the narrowest possible
ignore — specific rule code, single line — WITH an inline justification
comment (
# nosec B603 - fixed argv list, no shell). Unjustified ignores are rejected. - Blanket or file-level ignores (whole-file disables, config-wide
excludes) require a documented exception (e.g. in
CONTRIBUTING.md).
- Fix the root cause first.
Usage
When asked to lint or format code:
- Run
uv run lintro fmtFIRST to auto-fix formatting issues across the ENTIRE codebase (when lintro is available) - Run
uv run lintro chkto check for remaining issues (when lintro is available) - If lintro is unavailable, use native tooling for the language and still aim for zero issues
- Manually fix any issues found — do not leave issues unfixed
- Re-run the check command to verify all fixes
- Only as a last resort, add ignore comments WITH justification