Agent Skills: ty-skills

>

UncategorizedID: jiatastic/open-python-skills/ty-skills

Install this agent skill to your local

pnpm dlx add-skill https://github.com/jiatastic/open-python-skills/tree/HEAD/skills/ty-skills

Skill Files

Browse the full folder contents for ty-skills.

Download Skill

Loading file tree…

skills/ty-skills/SKILL.md

Skill Metadata

Name
ty-skills
Description
>

ty-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