mcpField
T
ty-skills

ty-skills

github.com/jiatastic开发10123 次安装40 周前更新
代码仓库

关于 ty-skills

这是一份使用 ty 检查 Python 类型、诊断错误、配置规则及从 mypy 或 pyright 迁移的技能指南,面向 Python 开发者,也涵盖进阶类型模式和编辑器设置。

主要功能

  1. 01介绍 ty 的安装与检查
  2. 02配置规则和严重级别
  3. 03讲解交叉类型及进阶模式
  4. 04指导从 mypy 或 pyright 迁移
  5. 05提供编辑器设置参考

适用场景

  1. 01为 Python 代码添加类型注解
  2. 02排查并修复 ty 诊断问题
  3. 03调整类型检查规则
  4. 04迁移现有 mypy 或 pyright 配置

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jiatastic/open-python-skills --skill ty-skills

安装后在 Claude Code 中输入/ty-skills确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
advanced_patterns.md
common_errors.md
migration_guide.md
ty_rules_reference.md
typing_cheatsheet.md
references/editor_setup/
cursor.md
neovim.md
vscode.md

详细介绍

ty-skills

使用 ty 掌握 Python 类型检查——ty 是由 Astral(uv 和 Ruff 的创建者)用 Rust 编写、速度极快的类型检查器。

何时使用此技能

  • 为 Python 代码添加类型注解
  • 修复 ty 报告的类型错误和诊断问题
  • 配置 ty 规则和严重级别
  • 从 mypy 或 pyright 迁移到 ty
  • 了解高级类型模式(交集类型、协议、泛型)
  • 在编辑器中设置 ty 语言服务器

快速入门

# 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

配置

通过 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"

规则快速参考

规则默认级别说明
possibly-unresolved-referenceerror变量可能未定义
invalid-argument-typeerror参数类型不匹配
incompatible-assignmenterror赋值的值不兼容
missing-argumenterror缺少必需参数
unsupported-operatorerror类型不支持此运算符
invalid-return-typeerror返回类型不匹配
division-by-zerowarn可能发生除零
unused-ignore-commentwarn不需要此抑制注释
redundant-castwarn类型转换没有效果
possibly-unbound-attributewarn属性可能不存在
index-out-of-boundswarn索引可能超出范围

交集类型(ty 独有)

ty 原生支持交集类型:

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()

抑制注释

# Suppress single rule
x: int = "hello"  # type: ignore[incompatible-assignment]

# Suppress multiple
y = risky()  # type: ignore[possibly-unresolved-reference, invalid-argument-type]

参考文档

如需详细信息,请参阅:

文档内容
references/ty_rules_reference.md所有规则及其示例和修复方法
references/typing_cheatsheet.mdPython typing 模块快速参考
references/advanced_patterns.md协议、泛型、类型守卫、变异性
references/migration_guide.md从 mypy/pyright 迁移到 ty
references/common_errors.md常见错误的解决方法及示例
references/editor_setup/VS Code、Cursor、Neovim 设置

资源

评论

支持 Markdown