Agent skill

Lint

by softspark in softspark/ai-toolkit

Runs linter+typechecker with auto-detected toolchain (ruff/mypy, eslint/tsc, phpstan, golangci-lint, clippy).

Apache-2.0Auto-check: notesDevelopment

Install Lint

skills CLI
$ npx skills add softspark/ai-toolkit --skill lint -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install softspark/ai-toolkit lint --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/softspark/ai-toolkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/app/skills/lint .claude/skills/lint && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
lint
GitHub stars
179
Token cost
~1.1k tokens
SKILL.md length
452 words
Files
2 (incl. scripts)
Skills in repo
112
Repo updated
First seen
Licence
Apache-2.0

At a glance

Runs linter+typechecker with auto-detected toolchain (ruff/mypy, eslint/tsc, phpstan, golangci-lint, clippy).

  • Tasks that involve Linting and formatting
  • SKILL.md covers Project context, Auto-Detection, Usage and Commands by Project Type, plus 9 more sections
  • Runs Python scripts from its folder; calls ruff, npx and mypy

What it does

Lint is an agent skill from softspark/ai-toolkit. Runs linter+typechecker with auto-detected toolchain (ruff/mypy, eslint/tsc, phpstan, golangci-lint, clippy). Triggers: lint, typecheck, static analysis.

Its SKILL.md is about 1.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including scripts (for example `scripts/detect-linters.py`).

It sits in Development, covering Linting and formatting. It works with Ruff and ESLint. The repository describes itself as: Professional-grade AI coding toolkit: 94 skills, 44 agents, multi-platform (Claude, Cursor, Windsurf, Copilot, Gemini, Cline, Roo Code, Aider, Augment, Antigravity, Codex CLI… The licence is Apache-2.0.

When your agent uses it

  • Tasks that involve Linting and formatting

Example prompts

  • “/lint”

Requirements

  • Python 3
  • Node.js
  • Docker
  • Pre-approved tools (allowed-tools): Bash, Read

What it can do on your machine

Read from SKILL.md and the folder at commit d64db2b. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Bash
    • Read

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • ruff
    • npx
    • mypy
    • docker
    • python3
    • cargo
    • dart

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npx and docker, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Lint loads about 1.1k tokens when it runs. Until then it costs about 40 tokens; SKILL.md has 452 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~40
When it runs · the whole SKILL.md, loaded when a task matches
~1.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Bash, Read

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from softspark/ai-toolkit at commit d64db2b, republished under its Apache-2.0 licence (© softspark). 452 words, ~1,103 tokens.

Download SKILL.mdSave it as .claude/skills/lint/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
lint
description
Runs linter+typechecker with auto-detected toolchain (ruff/mypy, eslint/tsc, phpstan, golangci-lint, clippy). Triggers: lint, typecheck, static analysis.
allowed-tools
Bash, Read
effort
low
disable-model-invocation
true
argument-hint
[path]

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 TypeLint CommandType Check
Pythonruff check .mypy .
TypeScript/Nodenpx eslint .npx tsc --noEmit
PHP./vendor/bin/phpstan analyse-
Gogolangci-lint run-
Rustcargo clippy-
Flutter/Dartdart 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

ErrorFix
Missing type hintsAdd type annotations
Unused importsRemove or use # noqa: F401
Line too longBreak line or disable for that line
Import orderLet 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
Show full SKILL.md (215 more words)Show less

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

© softspark, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (scripts) in app/skills/lint of softspark/ai-toolkit.

  • SKILL.md
  • scripts/detect-linters.py

Open the folder on GitHubat commit d64db2b

Compare with similar skills

Lint next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Lint compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Lint this skillsoftspark/ai-toolkit179—~1.1kAutomated safety check: NotesApache-2.0
Ha Code QualityFutureTense/keymaster349—~462Automated safety check: PassMIT
Cb Code QualityBlkLeg/CircuitBreaker201—~1.9kAutomated safety check: PassMIT
Same Results Less Codepproenca/dot-skills214—~3kAutomated safety check: PassMIT
Frappe Testing CicdImpertio-Studio/Frappe_Claude_Skill_Package187—~3.2kAutomated safety check: NotesMIT
Run Testsartcc/freelingo158—~976Automated safety check: PassAGPL-3.0

Similar skills

  • Ha Code Quality

    FutureTense/keymaster

    Standards and commands for linting, code formatting, typing validation (Ruff, MyPy, Codespell, ESLint, Pre-commit/Prek, Tox), and adherence to Home Assistant Python 3.14 standards in Keymaster.

    349 GitHub stars~462 tokensUpdated 6 days ago
    DevelopmentAuto-check passed
  • Cb Code Quality

    BlkLeg/CircuitBreaker

    Circuit Breaker code conventions and the quality gates that actually block a push — ruff, mypy, eslint, the pytest coverage ratchet, and the make verify tiers.

    201 GitHub stars~1.9k tokensUpdated 2 days ago
    DevelopmentAuto-check passed
  • Same Results Less Code

    pproenca/dot-skills

    Same behaviour in fewer, clearer lines — covers the judgment gaps that linters cannot catch (reinvention, wrong frame, hidden duplication, derived state, procedural rebuilds, speculative generality…

    214 GitHub stars~3k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed
  • Frappe Testing Cicd

    Impertio-Studio/Frappe_Claude_Skill_Package

    A skill your agent uses when setting up CI/CD pipelines for Frappe apps, configuring GitHub Actions test workflows, or adding linting and security scanning.

    187 GitHub stars~3.2k tokensUpdated 20 days ago
    DevOps & CloudAuto-check: notes
  • Run Tests

    artcc/freelingo

    A skill your agent uses when the user asks to run tests, ejecutar tests, lanzar tests, pytest, vitest, check types, typecheck, lint, or verify the codebase.

    158 GitHub stars~976 tokensUpdated today
    Testing & QAAuto-check passed
  • Kedro Babysit

    kedro-org/kedro

    Run Kedro's local lint / format / type-check / tests on changed files (uses the project's pre-commit hooks, ruff, mypy, pytest, lint-imports, detect-secrets, Make targets — in the right venv), or…

    11k GitHub stars~4k tokensUpdated yesterday
    DevelopmentAuto-check passed

More from softspark/ai-toolkit

All 112 skills in this repo
  • Prepare Test Env

    softspark/ai-toolkit

    Prepare or verify a project QA environment with source identity, readiness, browser access, evidence paths and owned cleanup.

    179 GitHub stars~1.8k tokensUpdated yesterday
    Auto-check: notes
  • A11y Validate

    softspark/ai-toolkit

    Accessibility validator: WCAG 2.1 AA, EN 301 549, EAA. An agent skill from softspark/ai-toolkit.

    179 GitHub stars~3.8k tokensUpdated yesterday
    Auto-check: notes
  • Analyze

    softspark/ai-toolkit

    Analyzes code quality, complexity, patterns across codebase.

    179 GitHub stars~1k tokensUpdated yesterday
    Auto-check passed
  • Autonomous Dev

    softspark/ai-toolkit

    Drives a brief, specification, issue or existing PR through implementation, review, tests and QA to a ready PR.

    179 GitHub stars~2.6k tokensUpdated yesterday
    Auto-check: notes
  • Brand Voice

    softspark/ai-toolkit

    Direct technical voice for docs, README, user-facing text. An agent skill from softspark/ai-toolkit.

    179 GitHub stars~2.1k tokensUpdated yesterday
    Auto-check passed
  • CI

    softspark/ai-toolkit

    Detect/generate/debug CI pipeline config (GitHub Actions, GitLab CI).

    179 GitHub stars~1.1k tokensUpdated yesterday
    Auto-check: notes

Works with

Categories

Questions about Lint

What does Lint do?

Runs linter+typechecker with auto-detected toolchain (ruff/mypy, eslint/tsc, phpstan, golangci-lint, clippy). Lint is an agent skill from softspark/ai-toolkit. Runs linter+typechecker with auto-detected toolchain (ruff/mypy, eslint/tsc, phpstan, golangci-lint, clippy).

When should I use Lint?

Lint fits situations like: tasks that involve Linting and formatting.

How do I install Lint in Claude Code?

Run `npx skills add softspark/ai-toolkit --skill lint -a claude-code`. Or copy the skill folder (app/skills/lint in softspark/ai-toolkit) into .claude/skills/lint in your project. Claude Code loads it when a task matches its description.

How do I install Lint in Codex?

Run `npx skills add softspark/ai-toolkit --skill lint -a codex`. Or copy the skill folder (app/skills/lint in softspark/ai-toolkit) into .agents/skills/lint in your project. Codex loads it when a task matches its description.

Can I use Lint in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add softspark/ai-toolkit --skill lint -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/lint, .gemini/skills/lint, .github/skills/lint and .opencode/skills/lint in your project.

What does Lint need to run?

Going by SKILL.md and its folder, Lint needs Python for the scripts in its folder and the command-line tools its instructions call (ruff, npx, mypy, docker, python3 and cargo). Our summary lists: Python 3; Node.js; Docker. Its frontmatter pre-approves these tools: Bash, Read.

Does Lint access the network?

SKILL.md contains no URLs. Its commands use npx and docker, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Lint safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Lint use?

Lint is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Lint use?

About 1.1k tokens (SKILL.md is roughly 4.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Lint?

Skills that share tags, products or a category with Lint: Ha Code Quality (FutureTense/keymaster, 349 stars), Cb Code Quality (BlkLeg/CircuitBreaker, 201 stars), Same Results Less Code (pproenca/dot-skills, 214 stars) and Frappe Testing Cicd (Impertio-Studio/Frappe_Claude_Skill_Package, 187 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Lint?

softspark (a GitHub user) maintains it in softspark/ai-toolkit, which has 179 GitHub stars. The repository holds 112 skills in this directory. The repository was last updated on October 7, 2026.

Source: softspark/ai-toolkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.