Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/YunosukeYoshino/ImageScraper --skill ty-pro명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | ty-pro |
| description | Python型安全性をtyで強化。型アノテーション追加、型エラー修正、境界バリデーション実装時に使用。 |
tyを使ったPython型チェックと型安全なコード設計。
型エラー修正進捗:
- [ ] Step 1: ty check実行でエラー特定
- [ ] Step 2: エラー分類(真の問題 vs 抑制候補)
- [ ] Step 3: 修正実装
- [ ] Step 4: ty check再実行で確認
Step 1: エラー特定
uv run ty check src/
Step 2: エラー分類
# ty: ignore[rule]で抑制Step 3-4: 修正→確認のループ
uv run ty check src/ # 型チェック
uv run ty check path/to/file.py # 単一ファイル
isinstance、TypeGuardで絞り込み# ✅ 推奨: ルール指定
result = func() # ty: ignore[invalid-assignment]
# ✅ 複数ルール
value = data["key"] # ty: ignore[possibly-unbound, invalid-assignment]
# ⚠️ 最終手段: 全抑制(サードパーティ起因のみ)
result = untyped_lib.call() # type: ignore
from typing import no_type_check
@no_type_check
def legacy_code():
# この関数内は型チェックされない
pass
# ❌ Anyを漏らす
def process(data: Any) -> Any: ...
# ✅ 境界で受けて即変換
def process(data: object) -> Result:
validated = parse_input(data) # object → 精密型
return handle(validated)
# ✅ 理由付きcast
# SDK returns untyped but we know it's always int
count = cast(int, sdk.get_count())
from typing import TypedDict
class UserInput(TypedDict):
name: str
age: int
def validate_user(data: object) -> UserInput:
if not isinstance(data, dict):
raise ValueError("Expected dict")
if "name" not in data or "age" not in data:
raise ValueError("Missing required fields")
return {"name": str(data["name"]), "age": int(data["age"])}
from typing import TypeGuard
def is_string_list(val: object) -> TypeGuard[list[str]]:
return isinstance(val, list) and all(isinstance(x, str) for x in val)
| 機能 | 用途 |
|---|---|
Protocol | 構造的型付け(インターフェース) |
TypedDict | JSON/dict契約 |
Literal | 判別ユニオン |
NewType | ドメインID(UserId等) |
Self | Fluent API |
TypeGuard | カスタムナローイング |
# ty: ignore を理由なく追加# type: ignoreをファイル先頭に)[tool.ty.rules]
# エラーレベル調整
index-out-of-bounds = "warn"
unused-ignore-comment = "error" # 不要な抑制を検出
ty.toml(プロジェクト)pyproject.toml の [tool.ty]