Automatically format, lint, and fix code issues on every edit.
Copy the install command and let the AI configure it · recommended for beginners
Please install the "plankton-code-quality" skill from askskill: 1. Download https://raw.githubusercontent.com/affaan-m/ECC/main/skills/plankton-code-quality/SKILL.md 2. Save it as ~/.claude/skills/plankton-code-quality/SKILL.md 3. Reload skills and tell me it's ready
Enable plankton-code-quality for my project so that every time I save a JavaScript or TypeScript file, it automatically formats the code, runs lint checks, and fixes issues that can be resolved automatically.
A configured hook workflow that automatically formats, checks, and fixes code after each file save.
Review my recently edited Python file. For issues that regular lint autofix cannot resolve, use Claude to suggest and apply safe fixes while preserving the existing behavior.
Updated code plus a summary of changes, resolving complex lint violations without changing business logic.
Design a write-time code quality workflow for our team repository using plankton-code-quality, including auto-formatting, static analysis, AI-assisted fixes, and clear failure messages.
A team-friendly quality gate configuration proposal and an explanation of the execution workflow.
Integration reference for Plankton (credit: @alxfazio), a write-time code quality enforcement system for Claude Code. Plankton runs formatters and linters on every file edit via PostToolUse hooks, then spawns Claude subprocesses to fix violations the agent didn't catch.
Every time Claude Code edits or writes a file, Plankton's multi_linter.sh PostToolUse hook runs:
Phase 1: Auto-Format (Silent)
├─ Runs formatters (ruff format, biome, shfmt, taplo, markdownlint)
├─ Fixes 40-50% of issues silently
└─ No output to main agent
Phase 2: Collect Violations (JSON)
├─ Runs linters and collects unfixable violations
├─ Returns structured JSON: {line, column, code, message, linter}
└─ Still no output to main agent
Phase 3: Delegate + Verify
├─ Spawns claude -p subprocess with violations JSON
├─ Routes to model tier based on violation complexity:
│ ├─ Haiku: formatting, imports, style (E/W/F codes) — 120s timeout
│ ├─ Sonnet: complexity, refactoring (C901, PLR codes) — 300s timeout
│ └─ Opus: type system, deep reasoning (unresolved-attribute) — 600s timeout
├─ Re-runs Phase 1+2 to verify fixes
└─ Exit 0 if clean, Exit 2 if violations remain (reported to main agent)
| Scenario | Agent sees | Hook exit |
|---|---|---|
| No violations | Nothing | 0 |
| All fixed by subprocess | Nothing | 0 |
| Violations remain after subprocess | [hook] N violation(s) remain | 2 |
| Advisory (duplicates, old tooling) | [hook:advisory] ... | 0 |
The main agent only sees issues the subprocess couldn't fix. Most quality problems are resolved transparently.
LLMs will modify .ruff.toml or biome.json to disable rules rather than fix code. Plankton blocks this with three layers:
protect_linter_configs.sh blocks edits to all linter configs before they happenstop_config_guardian.sh detects config changes via git diff at session end.ruff.toml, biome.json, .shellcheckrc, .yamllint, .hadolint.yaml, and moreA PreToolUse hook on Bash blocks legacy package managers:
pip, pip3, poetry, pipenv → Blocked (use uv)npm, yarn, pnpm → Blocked (use bun)npm audit, npm view, npm publishNote: Plankton requires manual installation from its repository. Review the code before installing.
# Install core dependencies
brew install jaq ruff uv
# Install Python linters
uv sync --all-extras
# Start Claude Code — hooks activate automatically
claude
No install command, no plugin config. The hooks in .claude/settings.json are picked up automatically when you run Claude Code in the Plankton directory.
To use Plankton hooks in your own project:
.claude/hooks/ directory to your project.claude/settings.json hook configuration.ruff.toml, biome.json, etc.)| Language | Required | Optional |
|---|---|---|
| Python | ruff, uv | ty (types), vulture (dead code), bandit (security) |
| TypeScript/JS | biome | oxlint, semgrep, knip (dead exports) |
| Shell | shellcheck, shfmt | — |
| YAML | yamllint | — |
| Markdown | markdownlint-cli2 | — |
…
Learn robust error-handling patterns across TypeScript, Python, and Go applications.
Manage carrier portfolios, negotiate freight rates, and evaluate carrier performance.
Design and implement robust F# unit, property, and integration tests
Apply test-driven development to Quarkus 3.x features, fixes, and refactors.
Generate images, videos, and audio with one unified AI media workflow.
Run a pre-release verification loop for Quarkus builds, tests, scans, and reviews.
Bootstrap agentic TypeScript coding for Claude Code with workflows and quality checks.
Understand your codebase in terminal and accelerate coding with natural language.
Run a structured code review before commit or release on local or PR branches.
Capture coding feedback and sync learned preferences into project memory files.
Helps Claude Code detect context drift, dedupe rereads, and analyze token usage.
Delegate code investigation, edits, and verification to Claude Code with background job management.