Runs linter+typechecker with auto-detected toolchain (ruff/mypy, eslint/tsc, phpstan, golangci-lint, clippy). Triggers: lint, typecheck, static analysis.
Scanned 9/12/2026
Install to Claude Code
npx -y skills add aibot88/sec_skill_store --skill softspark-ai-toolkit-app-skills-lint --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Softspark Ai Toolkit App Skills Lint?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/aibot88-softspark-ai-toolkit-app-skills-lint)More formats (shields.io, HTML) on the badges page.
---
name: lint
description: "Runs linter+typechecker with auto-detected toolchain (ruff/mypy, eslint/tsc, phpstan, golangci-lint, clippy). Triggers: lint, typecheck, static analysis."
effort: low
disable-model-invocation: true
argument-hint: "[path]"
allowed-tools: Bash, Read
---
# Lint Runner
$ARGUMENTS
Run linting and type checking based on detected project type.
## Project context
- Project files: !`ls pyproject.toml package.json composer.json pubspec.yaml go.mod 2>/dev/null`
## Auto-Detection
Run the bundled script to detect available linters:
```bash
python3 ${CLAUDE_SKILL_DIR}/scripts/detect-linters.py .
```
## Usage
```
/lint [path]
```
## Commands by Project Type
| Project Type | Lint Command | Type Check |
|--------------|--------------|------------|
| **Python** | `ruff check .` | `mypy .` |
| **TypeScript/Node** | `npx eslint .` | `npx tsc --noEmit` |
| **PHP** | `./vendor/bin/phpstan analyse` | - |
| **Go** | `golangci-lint run` | - |
| **Rust** | `cargo clippy` | - |
| **Flutter/Dart** | `dart analyze` | - |
## Python Projects
```bash
# Linting
ruff check .
# Type checking
mypy .
# Auto-fix
ruff check --fix .
ruff format .
```
## TypeScript/Node Projects
```bash
# Linting
npx eslint .
# Type checking
npx tsc --noEmit
# Auto-fix
npx eslint --fix .
```
## PHP Projects
```bash
# Static analysis
./vendor/bin/phpstan analyse
# Code style
./vendor/bin/phpcs
./vendor/bin/phpcbf # auto-fix
```
## Docker Execution (if applicable)
```bash
# Generic pattern - replace {container} with your app container
docker exec {container} make lint
docker exec {container} make typecheck
```
## Quality Gates
- Linting: 0 errors
- Type checking: 0 errors (for new code)
## Common Issues
| Error | Fix |
|-------|-----|
| Missing type hints | Add type annotations |
| Unused imports | Remove or use `# noqa: F401` |
| Line too long | Break line or disable for that line |
| Import order | Let linter fix with `--fix` |
## Rules
- **MUST** auto-detect the linter from project config (`pyproject.toml`, `package.json`, `.eslintrc.*`, `composer.json`, `go.mod`, `Cargo.toml`, `pubspec.yaml`) — do not assume
- **MUST** show the diff before applying any `--fix` run; the user owns the decision to accept auto-fixes
- **NEVER** suppress lint errors with blanket `# noqa` or `eslint-disable-next-line` without naming the specific rule and a reason
- **NEVER** run the formatter (ruff format, prettier, dprint) inside a lint pass unless the project has that wired explicitly — formatting and linting are separate concerns
- **CRITICAL**: report the error count **before and after** any auto-fix — delta visibility is what makes the run trustworthy
- **MANDATORY**: respect the project's lint config (`.ruff.toml`, `eslint.config.js`, `phpstan.neon`) — overriding project rules on the fly produces arguments during code review
## Gotchas
- `ruff check .` and `ruff format .` are **separate** commands in modern ruff (>0.1.0). Running only `ruff check` misses formatting drift; some repos expect both as part of "lint".
- `mypy` without `--strict` has a permissive default: missing annotations count as `Any`, so the type checker silently accepts untyped functions. Check whether the project pins `strict = true` in `pyproject.toml` before declaring "0 type errors".
- `eslint` follows `eslint.config.js` (flat config, ESLint 9+) OR `.eslintrc.*` (legacy). Mixing produces mysterious "no rules applied" errors. Check ESLint version first (`npx eslint --version`).
- `phpstan` levels (0-10) silently affect which rules apply. A repo at level 5 has different expectations than level 9; report the level alongside the error count.
- `golangci-lint` composes many linters; disabling one at the project level may still show its warnings if invoked with `--enable-all` flag. Check `.golangci.yml` before treating a warning as a new regression.
- Dart analyze reports on **all** files including generated `*.g.dart`. Some projects expect generated files to be excluded via `analysis_options.yaml`; without it, lint noise dominates real issues.
## When NOT to Use
- To **fix** the errors — use `/fix` after this skill surfaces them
- To run tests — use `/test`
- For code review of logic and design — use `/review`
- For security-specific static analysis (SAST) — use `/cve-scan` or `/security-patterns`
- For project-specific rule authoring — edit the linter's config directly
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!