atopile compiler'ın `.ato` dosyalarından TypeGraph'ları nasıl derlediğini ve bağladığını (ANTLR front-end → AST → TypeGraph → Linker → DeferredExecutor), temel değişmezlikleri ve test giriş noktalarını açıklar. Compiler pipeline, grammar, AST visitor'ları veya type resolution'ı değiştirirken kullanın.
cd ~/.claude/skills
git clone https://github.com/atopile/atopile.git atopile mkdir -p ~/.claude/skills/compiler
curl -fsSL https://raw.githubusercontent.com/atopile/atopile/HEAD/.claude/skills/compiler/SKILL.md \
-o ~/.claude/skills/compiler/SKILL.md Derleyici, .ato kaynaklarından bağlantılı, bağımsız bir TypeGraph oluşturur. Export/üretim yapıtları daha sonra derleme adımları/exporterler tarafından işlenir; derleyicinin görevi ayrıştırma + typegraph oluşturma + bağlantılamadır.
Şunlarla başlayın:
src/atopile/compiler/README.md (aşama özeti + örnek kullanım)src/atopile/compiler/parser/README.md (ANTLR çıktısını yeniden oluşturma)Tek bir .ato dosyasını bağlantılı bir TypeGraph'a derleyin (ve entrypoint'ini örnekleyin):
import faebryk.core.faebrykpy as fbrk
import faebryk.core.graph as graph
import faebryk.core.node as fabll
from atopile.compiler.build import Linker, StdlibRegistry, build_file
from atopile.compiler.deferred_executor import DeferredExecutor
from atopile.config import config
g = graph.GraphView.create()
tg = fbrk.TypeGraph.create(g=g)
stdlib = StdlibRegistry(tg)
linker = Linker(config, stdlib, tg)
result = build_file(g=g, tg=tg, import_path="app.ato", path="path/to/app.ato")
linker.link_imports(g=g, state=result.state)
DeferredExecutor(g=g, tg=tg, state=result.state, visitor=result.visitor).execute()
app_type = result.state.type_roots["ENTRYPOINT"]
app_root = tg.instantiate_node(type_node=app_type, attributes={})
app = fabll.Node.bind_instance(app_root)
src/atopile/compiler/build.py (build_file, build_source, Linker, StdlibRegistry, aşama yardımcıları)src/atopile/compiler/parse.py (ANTLR parse + error listener → UserSyntaxError)src/atopile/compiler/antlr_visitor.py (ANTLR CST → kaynak bilgili internal AST graph)src/atopile/compiler/ast_visitor.py (AST → TypeGraph "ön" oluşturma)src/atopile/compiler/gentypegraph.py (typegraph oluşturma araçları + import refs)src/atopile/compiler/deferred_executor.py (terminal aşama: inheritance/retypes/for-loops)src/atopile/compiler/parser/ (AtoLexer.g4, AtoParser.g4, oluşturulan Python)src/atopile/cli/build.py): Projeyi derlemek için derleyiciyi çağırır.src/atopile/lsp/lsp_server.py): Doküman başına graphlar oluşturur ve tamamlama/hover için son başarılı sonucu tutar..ato dosyasını ANTLR parse tree'sine ayrıştırır; syntax hataları UserSyntaxError'e dönüştürülür.ANTLRVisitor ANTLR çıktısını internal AST node'larına dönüştürür (kaynak bilgili FabLL node'ları).Linker importları çözer, inheritance sıralamasını yürütür, retypeleri uygular ve bağımsız bir derleme birimini hazırlar.DeferredExecutor.execute() çözülmüş türler gerektiren işlemleri çalıştırır (inheritance, retypes, for-loops).src/atopile/compiler/parser/AtoLexer.g4 / AtoParser.g4 düzenleyinsrc/atopile/compiler/parser/README.md)src/atopile/compiler/antlr_visitor.pysrc/atopile/compiler/ast_visitor.py / gentypegraph.pysrc/atopile/compiler/build.py / src/atopile/compiler/deferred_executor.pyato dev test --llm test/compiler -qato dev test --llm test/compiler/test_linker.py -qato dev test --llm test/test_end_to_end.py -qDslRichException/UserException yükseltin.(g, tg) kabul eder; uzun süren işlemlerde GraphView'i yok edin (LSP bunu yapar).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.