Detect linters and formatters configured in the project across Python, JS/TS, Rust, and Go. Used internally by /project-setup.
From project-setupnpx claudepluginhub anthropics/claude-plugins-community --plugin project-setupThis skill uses the workspace's default tool permissions.
Guides browser automation with Playwright, Puppeteer, Selenium for e2e testing and scraping. Teaches reliable selectors, auto-waits, isolation to fix flaky tests.
Provides checklists to review code for functionality, quality, security, performance, tests, and maintainability. Use for PRs, audits, team standards, and developer training.
Enforces A/B test setup with gates for hypothesis locking, metrics definition, sample size calculation, assumptions checks, and execution readiness before implementation.
Find all configured linters and formatters, and determine the canonical lint command.
Read .pre-commit-config.yaml if it exists. Parse repos[].hooks[].id to identify linters:
If pre-commit is configured, the canonical lint command is pre-commit run --all-files.
Check pyproject.toml for tool sections:
[tool.ruff] or [tool.ruff.lint] → ruff[tool.black] → black[tool.mypy] → mypy[tool.isort] → isort[tool.pylint] → pylint[tool.flake8] → flake8 (via flake8-pyproject)Check standalone config files: .flake8, mypy.ini, .pylintrc, ruff.toml, .style.yapf
Check setup.cfg for [flake8], [mypy], [isort] sections.
package.json → scripts.lint, scripts.format; devDependencies for eslint, prettier, biome.eslintrc, .eslintrc.json, .eslintrc.js, .eslintrc.yml, eslint.config.js, eslint.config.mjs.prettierrc, .prettierrc.json, .prettierrc.js, prettier.config.jsbiome.json, biome.jsoncrustfmt.toml or .rustfmt.toml → rustfmt.clippy.toml or clippy.toml → clippyCargo.toml implies cargo fmt and cargo clippy are available.golangci.yml, .golangci.yaml, .golangci.toml → golangci-lintgo.mod implies gofmt / go vet are availableRead Makefile and check for targets named lint, format, fmt, check, style.
Determine the single best lint command in this priority order:
pre-commit run --all-files (if .pre-commit-config.yaml exists)make lint (if Makefile has lint target)npm run lint / pnpm lint / yarn lint (if package.json has scripts.lint)ruff check . && ruff format --check . (if ruff is the sole Python linter)cargo clippy (Rust)golangci-lint run (Go)Return:
permissions.allow entries (e.g. Bash(pre-commit run *), Bash(ruff *))## Linting section content