About ty-skills
A skill guide for using ty to check Python types, diagnose errors, configure rules, and migrate from mypy or pyright. It is for Python developers and also covers advanced typing patterns and editor setup.
Key features
- 01Explains ty installation and checking
- 02Configures rules and severity levels
- 03Covers intersection types and advanced patterns
- 04Guides migration from mypy or pyright
- 05Provides editor setup references
Use cases
- 01Adding type annotations to Python code
- 02Investigating and fixing ty diagnostics
- 03Adjusting type-checking rules
- 04Migrating an existing mypy or pyright setup
Install
Copy the command and run it in a terminal.
$
npx skills add https:/ / github.com/ jiatastic/ open-python-skills --skill ty-skillsAfter installing, type/ty-skillsin Claude Code to confirm it loaded.
Bundled files
References and scripts installed along with SKILL.md.
references/advanced_patterns.mdcommon_errors.mdmigration_guide.mdty_rules_reference.mdtyping_cheatsheet.mdreferences/editor_setup/cursor.mdneovim.mdvscode.mdDetails
From the project READMEty-skills
Master Python type checking with ty - the extremely fast type checker written in Rust by Astral (creators of uv and Ruff).
When to Use This Skill
- Adding type annotations to Python code
- Fixing type errors and diagnostics from ty
- Configuring ty rules and severity levels
- Migrating from mypy or pyright to ty
- Understanding advanced type patterns (intersection types, protocols, generics)
- Setting up ty language server in your editor
Quick Start
# Install
uv tool install ty
# or: pip install ty
# Check current directory
ty check
# Check specific files
ty check src/
# Full diagnostics
ty check --output-format full
Configuration
Configure via pyproject.toml:
[tool.ty.environment]
python-version = "3.12"
python = "./.venv"
python-platform = "linux"
root = ["./src"]
extra-paths = ["./typings"]
[tool.ty.rules]
# error: fail CI, warn: report, ignore: disable
possibly-unresolved-reference = "error"
invalid-argument-type = "error"
division-by-zero = "warn"
unused-ignore-comment = "warn"
[tool.ty.src]
include = ["src", "tests"]
exclude = ["src/migrations/"]
# Per-file overrides
[[tool.ty.overrides]]
include = ["tests/**"]
[tool.ty.overrides.rules]
possibly-unresolved-reference = "warn"
Rules Quick Reference
| Rule | Default | Description |
|---|---|---|
possibly-unresolved-reference | error | Variable might not be defined |
invalid-argument-type | error | Argument type mismatch |
incompatible-assignment | error | Assigned value incompatible |
missing-argument | error | Required argument missing |
unsupported-operator | error | Operator not supported for types |
invalid-return-type | error | Return type mismatch |
division-by-zero | warn | Potential division by zero |
unused-ignore-comment | warn | Suppression not needed |
redundant-cast | warn | Cast has no effect |
possibly-unbound-attribute | warn | Attribute might not exist |
index-out-of-bounds | warn | Index might be out of range |
Intersection Types (ty Exclusive)
ty has first-class intersection type support:
def output_as_json(obj: Serializable) -> str:
if isinstance(obj, Versioned):
reveal_type(obj) # reveals: Serializable & Versioned
return str({
"data": obj.serialize_json(), # From Serializable
"version": obj.version # From Versioned
})
return obj.serialize_json()
Suppression Comments
# Suppress single rule
x: int = "hello" # type: ignore[incompatible-assignment]
# Suppress multiple
y = risky() # type: ignore[possibly-unresolved-reference, invalid-argument-type]
Reference Documents
For detailed information, see:
| Document | Content |
|---|---|
references/ty_rules_reference.md | All rules with examples and fixes |
references/typing_cheatsheet.md | Python typing module quick reference |
references/advanced_patterns.md | Protocols, generics, type guards, variance |
references/migration_guide.md | mypy/pyright → ty migration |
references/common_errors.md | Error solutions with examples |
references/editor_setup/ | VS Code, Cursor, Neovim setup |
Resources
Comments
Markdown supported