jetbrains/intellij-community · Archived

compare-python-typecheckers

Compare Python type inference with ty, pyrefly, and basedpyright.

First seen Jul 30, 2026

Installation

$ npx skills add jetbrains/intellij-community --skill compare-python-typecheckers

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Also in this package

Other skills from jetbrains/intellij-community · top by installs.

npx skills add jetbrains/intellij-community

Browse all from jetbrains/intellij-community

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

Stars 20.5K
License license
Default branch master
Status Archived

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 2,600 B
  • docs SUMMARY.md 100 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 1 installs

SKILL.md

<!-- Generated by community/.ai/render-guides.mjs; edit community/.agents/skills/compare-python-typecheckers/SKILL.md -->

Compare Python type checkers

When reasoning about how PyCharm should infer a type or whether something ought to be a type error, cross-checking against the real third-party checkers is the fastest way to gain insight — and to see where they disagree. This skill runs them all on a scratch file or snippet and collates the output into a single report.

Run it

${CLAUDESKILLDIR}/scripts/compare_typecheckers.py invokes each checker through uvx (fetched on demand — no install; the network is used on first run) and prints a Markdown report: a summary table (exit code / verdict / timing per tool) followed by each tool's raw output.

# Inline snippet:
uv run ${CLAUDE_SKILL_DIR}/scripts/compare_typecheckers.py -c 'def f(x: int) -> int:
    return x

f("a")'

# An existing file:
uv run ${CLAUDE_SKILL_DIR}/scripts/compare_typecheckers.py path/to/test.py

# A subset, written to a file:
uv run ${CLAUDE_SKILL_DIR}/scripts/compare_typecheckers.py test.py --tools ty,mypy -o /tmp/report.md

Flags: -c/--code (inline snippet), -t/--tools ty,mypy,… (subset), -o/--output (write to file), --timeout (per-checker seconds, default 180). The script exits 0 whenever it produced a report — findings live in the report, not the exit code.

Reading the result

  • The summary table shows each tool's exit code (0 = nothing flagged,

non-zero = the checker reported an issue or failed to run), a verdict, and time.

  • Output formats differ per tool, so read each section, not just the table:

- ty (Astral) and pyrefly (Meta) each have their own diagnostic style. - basedpyright is pyright-based and also emits extra diagnostics such as reportUnusedCallResult. - mypy and zuban share the same message format (zuban is mypy-compatible).

  • The checkers track their latest releases through uvx, so behaviour can shift

over time — record the date when capturing results in a YouTrack issue or test.

Manual one-offs

The exact per-tool invocations, if you want to run just one by hand (note basedpyright takes the file positionally — no check subcommand):

Tool Command
ty uvx ty check test.py
pyrefly uvx pyrefly check test.py
basedpyright uvx basedpyright test.py
mypy uvx mypy test.py
zuban uvx zuban check test.py