Skills Plugins MCP Prompt Model 博客 我的中心

sexp

How the Zig S-expression engine and typed KiCad models work, how they are exposed to Python (pyzig_sexp), and the invariants around parsing, formatting, and freeing. Use when working with KiCad file parsing, S-expression generation, or layout sync.

DeepseekModel 官方收录技能 质量 优秀 · 90 v1.0.0

获取

https://deepseekmodel.com/api/download.php?id=atopile-atopile-claude-skills-sexp-skill-md&format=skill
下载 .skill 标准格式,含 system_prompt 与 model_config,导入任意 Agent 框架即可使用
.skill 文件中 system_prompt 字段的实际内容。
name sexp description How the Zig S-expression engine and typed KiCad models work, how they are exposed to Python (pyzig_sexp), and the invariants around parsing, formatting, and freeing. Use when working with KiCad file parsing, S-expression generation, or layout sync. Sexp Module The sexp subsystem provides: a fast S-expression tokenizer/parser/pretty-printer in Zig, and typed Zig models for KiCad formats (PCB, footprint, netlist, symbol, schematic, fp_lib_table), exposed to Python via the pyzig_sexp extension module. Source-of-truth docs and code: src/faebryk/core/zig/README.md (high-level overview) src/faebryk/core/zig/src/sexp/* (tokenizer/AST/structure) src/faebryk/core/zig/src/python/sexp/sexp_py.zig (Python API + critical memory rules) Quick Start from pathlib import Path from faebryk.libs.kicad.fileformats import kicad pcb = kicad.loads(kicad.pcb.PcbFile, Path( "board.kicad_pcb" )) _text = kicad.dumps(pcb) Relevant Files Zig core: src/faebryk/core/zig/src/sexp/tokenizer.zig (tokenization + line/column tracking) src/faebryk/core/zig/src/sexp/ast.zig (SExp tree + KiCad pretty formatting) src/faebryk/core/zig/src/sexp/structure.zig (decode/encode + error context) src/faebryk/core/zig/src/sexp/kicad/* (typed KiCad models) Python extension entrypoint: src/faebryk/core/zig/src/python/sexp/init.zig (exports PyInit_pyzig_sexp ) src/faebryk/core/zig/src/python/sexp/sexp_py.zig (module + type binding generation) Generated Python stubs (what users “see”): src/faebryk/core/zig/gen/sexp/*.pyi Convenience wrapper used throughout the codebase: src/faebryk/libs/kicad/fileformats.py (namespaces modules + caching + loads/dumps ) Dependants (Call Sites) src/faebryk/libs/kicad/fileformats.py (primary integration layer) KiCad exporters and layout sync: src/faebryk/exporters/pcb/kicad/* src/faebryk/exporters/pcb/layout/layout_sync.py KiCad plugin workflow: src/atopile/kicad_plugin/* How to Work With / Develop / Test Core Concepts Two-level model : raw SExp parsing/formatting ( tokenizer.zig , ast.zig ) typed KiCad decoding/encoding ( structure.zig + sexp/kicad/*.zig ) Python API shape : the extension exposes per-format modules (e.g. pcb , netlist ) with: module-level loads(data: str) -> File module-level dumps(file: File) -> str File.free(...) for releasing Zig-owned allocations Convenience wrapper : faebryk.libs.kicad.fileformats.kicad wraps these modules and provides kicad.loads(...) / kicad.dumps(...) . Development Workflow Modify Zig: parsing/formatting: src/faebryk/core/zig/src/sexp/* Python exposure: src/faebryk/core/zig/src/python/sexp/sexp_py.zig Rebuild: ato dev compile (imports faebryk.core.zig ) If you changed the API: verify stubs under src/faebryk/core/zig/gen/sexp/*.pyi update accordingly adjust src/faebryk/libs/kicad/fileformats.py if needed Testing Best practical test is round-trip: load a known .kicad_pcb / .kicad_sch , dump it, and ensure KiCad accepts it (formatting-sensitive). Zig unit tests (where present): zig test src/faebryk/core/zig/src/sexp/ast.zig zig test src/faebryk/core/zig/src/sexp/structure.zig Best Practices Prefer faebryk.libs.kicad.fileformats.kicad unless you explicitly need the raw module API. Be mindful of shared-object caching in kicad.loads(...) : path-based loads are cached and returned by reference (mutations are shared). Memory & Lifetime Invariants (critical) The Python bindings duplicate the input S-expression string into a persistent allocator because parsed structs contain pointers into the input buffer. Implications: Repeated loads(...) of large files can grow memory if you never call free(...) on the returned *File . The convenience wrapper currently caches loaded objects by path; do not free(...) cached objects unless you also invalidate the cache.
Agent 识别该技能的关键词,点击任意一个即可复制。

该技能未提供触发词。

下载的 .skill 包内含以下字段。
字段 说明
format格式标识(skill/v1)
skill_id技能唯一 ID
name技能名称
version版本号
description技能描述
category所属分类(数组)
trigger_words触发词列表
tags标签列表
source来源标识
source_url来源链接(本页地址)
exported_at导出时间(每次下载生成)
system_prompt系统提示词正文
model_config模型参数:provider / model / temperature / max_tokens / top_p
examples示例
install_guide各平台导入说明(Coze / Dify / Claude / 自定义框架)
同一份技能可按不同平台格式导出。
.skill 标准格式,含 system_prompt 与 model_config,导入任意 Agent 框架即可使用 下载
.skillpro 增强格式,额外含脚本 / 工具 / 依赖 / 钩子占位 下载
.json 纯 JSON 导出,只含 system_prompt 与模型参数 下载
Coze 带 frontmatter 的 Markdown,Coze 平台导入用 下载
Dify Dify DSL,创建应用后直接导入 下载

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。