Zig↔Python binding katmanının (pyzig) nasıl çalıştığını, import sırasında derleme, wrapper oluşturma desenleri, ownership kuralları ve yeni exported API'lerin nereye ekleneceğini açıklar. Zig-Python bağlantıları eklerken, native extension'ları değiştirirken veya C-API etkileşimlerini debug ederken kullanın.
cd ~/.claude/skills
git clone https://github.com/atopile/atopile.git atopile mkdir -p ~/.claude/skills/pyzig
curl -fsSL https://raw.githubusercontent.com/atopile/atopile/HEAD/.claude/skills/pyzig/SKILL.md \
-o ~/.claude/skills/pyzig/SKILL.md pyzig, Faebryk'in native modüllerinin (graph, sexp, faebryk typegraph, …) kullanmış olduğu Zig↔Python birlikte çalışabilirlik katmanıdır.
Ayırt edilmesi gereken üç ayrı katman vardır:
src/faebryk/core/zig/__init__.py (build-on-import + .pyi syncing)src/faebryk/core/zig/build.zig (pyzig.so + pyzig_sexp.so inşa eder, stub'lar üretir)src/faebryk/core/zig/src/pyzig/* (wrapper generation + minimal C-API surface)ato dev compile
python -c "import faebryk.core.zig; import faebryk.core.graph"
src/faebryk/core/zig/__init__.py (ZIG_NORECOMPILE, ZIG_RELEASEMODE, lock, stub syncing)src/faebryk/core/zig/build.zig (extensions'ı inşa eder + .pyi generator'ı çalıştırır)src/faebryk/core/zig/src/pyzig/pybindings.zig (minimal CPython C-API declarations)src/faebryk/core/zig/src/pyzig/pyzig.zig (wrapper generation helpers)src/faebryk/core/zig/src/pyzig/type_registry.zig (global type-object registry)src/faebryk/core/zig/src/pyzig/pyi.zig (stub generation helpers)src/faebryk/core/zig/src/python/graph/graph_py.zigsrc/faebryk/core/zig/src/python/sexp/sexp_py.zigsrc/faebryk/core/zig/src/python/graph/*src/faebryk/core/zig/src/python/sexp/*src/faebryk/core/zig/src/python/faebryk/* (ve diğerleri)wrap_in_python(...) / wrap_in_python_simple(...) aracılığıyla Python heap type'larına dönüşür.PyTypeObject'lerin yeniden oluşturulmasını engeller (type_registry).__init__ yok: birçok "reference" type'ı kullanıcı tarafından inşa edilmesi amaçlanmamıştır; pyzig sıklıkla bir exception raise eden init kurar.__zig_address__() içerir.src/faebryk/core/zig/src/pyzig/*src/faebryk/core/zig/src/python/**ato dev compile (faebryk.core.zig'i import eder; editable installs compile-on-import yapar)ZIG_RELEASEMODE=ReleaseFast|ReleaseSafe|Debug ayarlayınsrc/faebryk/core/zig/gen/**'nin güncellendiğinden emin olun (bu src/faebryk/core/zig/__init__.py tarafından yönlendirilir)python -m faebryk.core.graph (GraphView allocation/cleanup stress)ato dev test --llm test/core/solver (graph'i ve birçok alt sistem aracılığıyla binding'leri yoğun kullanır).destroy() vs tp_dealloc çağırıp .deinit()).free(...) path'i expose edin ve belgelendirin.tp_dealloc çağıran deinit..pyi surface'ini doğru tutun; birçok çağrıcı, navigation için type'lara güvenir.src/faebryk/core/zig/__init__.py şunlardan sorumludur:
ZIG_NORECOMPILE=1 olmadığı sürece)pyzig.so ve pyzig_sexp.so'yu src/faebryk/core/zig/zig-out/lib/'ten yüklemek.pyi dosyalarını src/faebryk/core/zig/gen/**'ye kopyalama + formatting (black + ruff)Herhangi bir yaratıcı çalışmaya başlamadan önce bunu mutlaka kullanın - feature oluştururken, component inşa ederken, functionality eklerken veya davranış değiştirirken. Kullanıcı niyetini, gereksinimleri ve tasarımı implementation öncesinde araştırır.
Uygulama tamamlandığında, tüm testler geçtiğinde ve çalışmanızı nasıl entegre edeceğinize karar vermeniz gerektiğinde kullanın - merge, PR veya cleanup seçeneklerini sunarak geliştirme sürecinin tamamlanmasını rehberlik eder.
Kod incelemesi geri bildirimi alırken, önerileri uygulamadan önce kullanın; özellikle geri bildirim belirsiz veya teknik olarak şüpheli görünüyorsa - performatif anlaşmadan veya körü körüne uygulamadan ziyade teknik titizlik ve doğrulama gerekir.
Görevleri tamamlarken, büyük özellikleri hayata geçirirken veya merge etmeden önce çalışmanın gereksinimleri karşıladığını doğrulamak için kullanın.
Yeni bir feature üzerinde çalışmaya başlarken veya implementasyon planını yürütmeden önce kullanın - native araçlar veya git worktree fallback aracılığıyla izole edilmiş bir workspace sağlar.
Herhangi bir konuşma başlatırken kullanın - skill'lerin nasıl bulunacağını ve kullanılacağını belirler, clarification soruları da dahil olmak üzere HERHANGİ bir yanıt vermeden önce skill invocation gerektirir.