Skip to main content

aislop for Python

Catch the slop AI coding agents leave in your code.

PyPI version npm downloads PyPI downloads Homebrew tap GitHub stars CI aislop score License: MIT Python 3.9+ Discord

The patterns Claude Code, Cursor, Codex, and OpenCode leave behind: narrative comments above self-explanatory code, swallowed exceptions, hidden fallbacks, as any casts, hallucinated imports, duplicated helpers, dead code, todo stubs, oversized functions. Tests pass. Lint passes. The code rots anyway.

aislop catches them. 50+ rules across 10 language targets (TypeScript, JavaScript, Expo / React Native, Python, Go, Rust, Ruby, PHP, C#, C/C++). Scores every change 0–100. Sub-second. Deterministic — no LLM in the runtime path, same code in, same score out. MIT-licensed, free CLI.

This package is the Python-tooling distribution of aislop. The CLI is identical across every channel. Prefer npm or Homebrew? See other ways to install.

Install

Use pipx for a global, isolated, Python-managed CLI install:

pipx install aislop

Then scan any project:

aislop scan

pipx keeps aislop in its own virtual environment, so it never collides with your project dependencies. Plain pip install --user aislop also works if you prefer.

First run

From the root of a repo:

aislop scan

You get a single 0–100 score and a list of findings. Common next steps:

aislop fix                   # auto-fix safe issues
aislop fix -f                # aggressive fixes (deps, unused files)
aislop ci                    # CI-friendly JSON output and exit code
aislop hook install --claude # install a per-edit agent hook
aislop rules                 # see every rule
aislop doctor                # check local tool availability

What gets installed

This package exposes two commands:

The launcher pins aislop@<this package version> on npm and tags anonymous telemetry with AISLOP_INSTALL_CHANNEL=pip or pipx so Python installs are counted separately from raw npx traffic. Opt out with AISLOP_NO_TELEMETRY=1 or DO_NOT_TRACK=1.

Requirements

  • Python 3.9+
  • pipx (or pip)
  • Node.js available on PATHaislop runs Node-based engines under the hood

On macOS:

brew install pipx node
pipx ensurepath

On Debian/Ubuntu:

sudo apt install pipx
pipx ensurepath
# install Node.js from https://nodejs.org or your distro's nodesource setup

Run aislop doctor to confirm every engine can run on your machine.

C# and C/C++ receive built-in text and complexity checks. Optional project-aware tools are documented in the main installation guide.

Hand off to your agent

When auto-fix can't solve an issue, pass the remaining findings to your coding agent with full context:

aislop fix --claude          # Claude Code
aislop fix --codex           # Codex CLI
aislop fix --cursor          # Cursor (copies to clipboard)
aislop fix --gemini          # Gemini CLI
aislop fix --prompt          # print an agent-agnostic prompt

Install a hook so feedback flows back after every edit:

aislop hook install --claude # Claude Code
aislop hook install          # pick agents interactively

MCP server

Expose aislop as MCP tools (aislop_scan, aislop_fix, aislop_why, aislop_baseline) for Claude Desktop, Cursor, or Codex:

{
  "mcpServers": {
    "aislop": {
      "command": "aislop-mcp"
    }
  }
}

CI

aislop scan --staged              # staged files before commit
aislop ci                         # JSON output, exits 1 if score < threshold
aislop scan --sarif > aislop.sarif # SARIF 2.1.0 for GitHub code scanning

Set a minimum score in .aislop/config.yml:

ci:
  failBelow: 70

More: CI/CD docs.

Configure

Tune rules, severities, and excluded paths in .aislop/config.yml:

exclude:
  - "**/*_test.py"
  - src/generated
rules:
  ai-slop/narrative-comment: warning   # error | warning | off

Run aislop init to scaffold one. Full reference: configuration docs.

Upgrade

Upgrade the Python package:

pipx upgrade aislop

Check whether a newer release is available:

aislop upgrade

Examples

aislop scan --changes         # only changed files from HEAD
aislop scan --staged          # staged files before commit
aislop scan --sarif > aislop.sarif  # SARIF for GitHub code scanning
aislop badge                  # generate a public score badge

Troubleshooting

aislop: command not found after install — run pipx ensurepath and reopen your shell so the pipx bin directory is on PATH.

Node.js not foundaislop needs Node on PATH. Install it (brew install node, or from nodejs.org) and re-run aislop doctor.

Command already exists — if another install (npm or Homebrew) already owns aislop, pick one source. To replace it with the pipx copy: pipx install --force aislop.

Other ways to install

The same CLI is also available on npm, Yarn, Bun, and Homebrew:

pipx install aislop                  # Python (this package)
npm install -g aislop                # npm
yarn dlx aislop scan                 # Yarn (no install)
bun add -g aislop                    # Bun
brew install scanaislop/tap/aislop   # Homebrew

See the Homebrew tap and the main project README for the npm-family options.

For teams

scanaislop is the hosted platform for teams: PR gates with score thresholds, an org → team → project standards hierarchy, dashboards, and agent attribution. Same engines, same scores. The CLI is MIT-licensed and free.

Links

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

aislop-0.16.0.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

aislop-0.16.0-py3-none-any.whl (6.5 kB view details)

Uploaded Python 3

File details

Details for the file aislop-0.16.0.tar.gz.

File metadata

  • Download URL: aislop-0.16.0.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for aislop-0.16.0.tar.gz
Algorithm Hash digest
SHA256 ab54f16f12e8688c5f0bd2e23330d9295aa51403564f1a5d5ef44d144af53fd2
MD5 6cf018fb8ffcfe024675debd9d9a8850
BLAKE2b-256 33452e6409b551aff664d6003b90d054d6ebe003001202ab88b5d27f29bfa2da

See more details on using hashes here.

File details

Details for the file aislop-0.16.0-py3-none-any.whl.

File metadata

  • Download URL: aislop-0.16.0-py3-none-any.whl
  • Upload date:
  • Size: 6.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for aislop-0.16.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d205727bda0f3594e1db6f6c0fa879d7908fdf8a1e7aaa9371595032126bea23
MD5 87fb84536abacca24b04b6b5f7a1c935
BLAKE2b-256 eb6f139be9d6e3a3faf0213db94d7eea09e117780f4b3d4aba10a05a2823db01

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.16.0 This release

2 files

0.15.0

2 files

0.14.1

2 files

0.14.0

2 files

0.13.1

2 files

0.13.0

2 files

0.12.1

2 files

0.12.0

2 files

0.11.0

2 files

0.10.2.1

2 files

0.10.2

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page