Sağlam kod yapısı için modern Python tip ipuçlarını (type hints), Protocols ile yapısal tiplemeyi (structural typing) ve tip güvenliği desenlerini uygular.
- GitHub yıldızları
- 81
- Dosyalar
- 9
- Son commit
- 7 Kas 2026
- Lisans
- MIT
- İzin verilen araçlar
- 2
python-typing-ops skill ne işe yarar?
python-typing-ops bir agent skill'dir. Sağlam kod yapısı için modern Python tip ipuçlarını (type hints), Protocols ile yapısal tiplemeyi (structural typing) ve tip güvenliği desenlerini uygular.
Özet, skill'in SKILL.md dosyasından oluşturuldu.
python-typing-ops skilli hakkında
Bu SKILL, güvenli ve dökümante edilmiş kod tabanları inşa eden geliştiriciler için modern Python tip ipuçlarını ve yapısal tipleme desenlerini uygulamayı sağlar. Kod güvenilirliğini sağlamak amacıyla tip anotasyonları, generikler ve Protocols aracılığıyla yapısal tipleme uygulamak için kapsamlı bir araç seti sunar. Bir agent bu SKILL'i yüklediğinde; TypeVar, TypedDict ve Literal tipleri gibi gelişmiş özellikleri kullanarak kod üretebilir veya mevcut kodu refactor edebilir.
SKILL, union tipleri dahil olmak üzere Python 3.10+ sözdizimini ve Self ile TypeVarTuple gibi Python 3.11+ için özel desenleri destekler. Kod bütünlüğünü doğrulamak için mypy ve pyright gibi tip denetleyicilerinin yapılandırılmasına ve çalıştırılmasına yardımcı olur. Geliştiriciler bu desenleri kullanarak temel anotasyonların ötesine geçebilir; tip daraltma (type narrowing) için TypeGuards ve esnek arayüz tanımları için yapısal tipleme gibi karmaşık mantıkları uygulayabilirler. Bu durum, statik analiz yoluyla çalışma zamanı hatalarını azaltmayı hedefleyen herkes için bu aracı vazgeçilmez kılar.
Bir agent bununla neler yapabilir
- 1Yapısal tipleme uygulamaBelirli bir metoda sahip herhangi bir nesnenin bir fonksiyona aktarılmasına izin vermek için bir Protocol tanımlayın.
- 2Sabit anahtarlı sözlükler tanımlamaSözlük erişiminin belirli ve tip güvenli anahtarlar kullanmasını sağlamak için bir TypedDict oluşturun.
- 3Tip denetleyicileri ile kodu doğrulamaBir kaynak dizindeki tip hatalarını kontrol etmek için mypy veya pyright komutlarını çalıştırın.
Skill'in SKILL.md dosyasından yazılmıştır. Her kullanım durumu oradaki bir alıntı ile kontrol edilir.
python-typing-ops skill nasıl kurulur
Her komut, skill klasörünü istemcinin skills dizinine kopyalar. Yüklemek için istemciyi yeniden başlatın veya yeni bir oturum başlatın.python-typing-ops skill'ini Eklenti uygulamasına kur
/plugin marketplace add 0xDarkMatter/claude-mods /plugin install claude-mods@claude-mods
python-typing-ops skill'ini Claude Code uygulamasına kur
~/.claude/skills/python-typing-ops/SKILL.md
$ npx degit 0xDarkMatter/claude-mods/skills/python-typing-ops ~/.claude/skills/python-typing-opspython-typing-ops skill'ini Claude Code (project) uygulamasına kur
.claude/skills/python-typing-ops/SKILL.md
$ npx degit 0xDarkMatter/claude-mods/skills/python-typing-ops .claude/skills/python-typing-opspython-typing-ops skill'ini Codex uygulamasına kur
~/.agents/skills/python-typing-ops/SKILL.md
$ npx degit 0xDarkMatter/claude-mods/skills/python-typing-ops ~/.agents/skills/python-typing-opspython-typing-ops skill'ini Gemini CLI uygulamasına kur
~/.gemini/skills/python-typing-ops/SKILL.md
$ npx degit 0xDarkMatter/claude-mods/skills/python-typing-ops ~/.gemini/skills/python-typing-opspython-typing-ops skill'ini Claude.ai uygulamasına kur
npx degit 0xDarkMatter/claude-mods/skills/python-typing-ops python-typing-ops && zip -r python-typing-ops.zip python-typing-ops # claude.ai → Customize → Skills → + → Create skill → Upload a skill → python-typing-ops.zip
Otomatik kontroller
Çalıştırıldı 14 Kas 2026Tam rapor →Otomatik kontrollerimizi geçti. Bu bir güvenlik denetimi değil: bir ajanın çalıştırmasına izin vermeden önce betikleri okuyun. Kontroller nasıl çalışır
- Kaynak deposu bağlantılı ve erişilebilir0xdarkmatter/claude-mods/skills/python-typing-ops is public and reachablegithub.com/0xdarkmatter/claude-mods/tree/HEAD/skills/python- ↗Geçti
- Açık kaynak lisansı (OSI)MITspdx.org/licenses/MIT.html ↗Geçti
- Son bir yıl içinde commit veya sürüm mevcutLast commit 2026-11-07github.com/0xdarkmatter/claude-mods/commits ↗Geçti
- Betiklerde indir-çalıştır veya kimlik bilgisi hırsızlığı yok1 script read; no download-and-run, remote eval, base64 execution or credential uploadGeçti
- SKILL.md içinde gizli talimat yokNo override phrases, safeguard switches, credential requests or hidden charactersgithub.com/0xdarkmatter/claude-mods/blob/HEAD/skills/python- ↗Geçti
- Önceden izin verilen araçlar sınırlıPre-approved: Read, Writegithub.com/0xdarkmatter/claude-mods/blob/HEAD/skills/python- ↗Geçti
SKILL.md
GitHub'da görüntülePython Typing Patterns
Modern type hints for safe, documented Python code.
Basic Annotations
# Variables
name: str = "Alice"
count: int = 42
items: list[str] = ["a", "b"]
mapping: dict[str, int] = {"key": 1}
# Function signatures
def greet(name: str, times: int = 1) -> str:
return f"Hello, {name}!" * times
# None handling
def find(id: int) -> str | None:
return db.get(id) # May return None
Collections
from collections.abc import Sequence, Mapping, Iterable
# Use collection ABCs for flexibility
def process(items: Sequence[str]) -> list[str]:
"""Accepts list, tuple, or any sequence."""
return [item.upper() for item in items]
def lookup(data: Mapping[str, int], key: str) -> int:
"""Accepts dict or any mapping."""
return data.get(key, 0)
# Nested types
Matrix = list[list[float]]
Config = dict[str, str | int | bool]
Optional and Union
# Modern syntax (3.10+)
def find(id: int) -> User | None:
pass
def parse(value: str | int | float) -> str:
pass
# With default None
def fetch(url: str, timeout: float | None = None) -> bytes:
pass
TypedDict
from typing import TypedDict, Required, NotRequired
class UserDict(TypedDict):
id: int
name: str
email: str | None
class ConfigDict(TypedDict, total=False): # All optional
debug: bool
log_level: str
class APIResponse(TypedDict):
data: Required[list[dict]]
error: NotRequired[str]
def process_user(user: UserDict) -> str:
return user["name"] # Type-safe key access
Callable
from collections.abc import Callable
# Function type
Handler = Callable[[str, int], bool]
def register(callback: Callable[[str], None]) -> None:
pass
# With keyword args (use Protocol instead)
from typing import Protocol
class Processor(Protocol):
def __call__(self, data: str, *, verbose: bool = False) -> int:
...
Generics
from typing import TypeVar
T = TypeVar("T")
def first(items: list[T]) -> T | None:
return items[0] if items else None
# Bounded TypeVar
from typing import SupportsFloat
N = TypeVar("N", bound=SupportsFloat)
def average(values: list[N]) -> float:
return sum(float(v) for v in values) / len(values)
Protocol (Structural Typing)
from typing import Protocol
class Readable(Protocol):
def read(self, n: int = -1) -> bytes:
...
def load(source: Readable) -> dict:
"""Accepts any object with read() method."""
data = source.read()
return json.loads(data)
# Works with file, BytesIO, custom classes
load(open("data.json", "rb"))
load(io.BytesIO(b"{}"))
Type Guards
from typing import TypeGuard
def is_string_list(val: list[object]) -> TypeGuard[list[str]]:
return all(isinstance(x, str) for x in val)
def process(items: list[object]) -> None:
if is_string_list(items):
# items is now list[str]
print(", ".join(items))
Literal and Final
from typing import Literal, Final
Mode = Literal["read", "write", "append"]
def open_file(path: str, mode: Mode) -> None:
pass
# Constants
MAX_SIZE: Final = 1024
API_VERSION: Final[str] = "v2"
Quick Reference
| Type | Use Case |
|---|---|
X | None |
Optional value |
list[T] |
Homogeneous list |
dict[K, V] |
Dictionary |
Callable[[Args], Ret] |
Function type |
TypeVar("T") |
Generic parameter |
Protocol |
Structural typing |
TypedDict |
Dict with fixed keys |
Literal["a", "b"] |
Specific values only |
Final |
Cannot be reassigned |
Type Checker Commands
# mypy (run inside the project env)
uv run mypy src/ --strict
# pyright
uv run pyright src/
# In pyproject.toml
[tool.mypy]
strict = true
python_version = "3.11"
Emerging: ty — Astral's Rust-based type checker (same toolchain as uv +
ruff), dramatically faster than mypy. Still in preview (pre-1.0), so mypy or
pyright remain the production default — but worth watching, and easy to try:
uvx ty check. Adopt for new projects once it stabilizes.
Additional Resources
./references/generics-advanced.md- TypeVar, ParamSpec, TypeVarTuple./references/protocols-patterns.md- Structural typing, runtime protocols./references/type-narrowing.md- Guards, isinstance, assert./references/mypy-config.md- mypy/pyright configuration./references/runtime-validation.md- Pydantic v2, typeguard, beartype./references/overloads.md- @overload decorator patterns
Scripts
./scripts/check-types.sh- Run type checkers with common options
Assets
./assets/pyproject-typing.toml- Recommended mypy/pyright config
See Also
This is a foundation skill with no prerequisites.
Related Skills:
python-pytest-ops- Type-safe fixtures and mocking
Build on this skill:
python-async-ops- Async type annotationspython-fastapi-ops- Pydantic models and validationpython-database-ops- SQLAlchemy type annotations
Bu becerideki dosyalar
9python-typing-ops skill soruları
python-typing-ops skill'ini Claude Code uygulamasına nasıl kurarım?
npx degit 0xDarkMatter/claude-mods/skills/python-typing-ops ~/.claude/skills/python-typing-ops komutunu çalıştırın. Claude Code, skill'leri ~/.claude/skills (tüm projeler) veya .claude/skills (tek proje) konumundan yükler ve açıklaması görevle eşleştiğinde skill'i kullanır.
python-typing-ops skill'ini hangi istemciler kullanabilir?
Agent Skills biçimini okuyan her istemci: Claude Code, Codex, Gemini CLI ve claude.ai (ZIP olarak yükleyin). Skill içindeki betikler yalnızca istemcinin kod çalıştırmaya izin verdiği yerlerde çalışır.
Bu desenler için hangi Python sürümleri gereklidir?
Desenler Python 3.10+ sözdizimini (X | Y union sözdizimi gibi) kullanır; Self veya TypeVarTuple gibi bazı özel desenler ise Python 3.11+ gerektirir.
Projemde tip denetleyicilerini (type checkers) nasıl çalıştırabilirim?
uv aracılığıyla mypy veya pyright kullanabilirsiniz, örneğin: 'uv run mypy src/ --strict' veya 'uv run pyright src/'.
Fonksiyon tipleri için Callable ve Protocol arasındaki fark nedir?
Callable basit fonksiyon tipleri için kullanılırken, Protocol anahtar kelime argümanlarını (keyword arguments) belirtmeniz gerektiğinde kullanılır.