Releases: zhoushoujianwork/easyeda-agent
Release list
easyeda-agent v0.17.0
[0.17.0] - 2026-07-21
Added — PCB SVG 丝印导入 (issue #139)
pcb.silk.import_svg/pcb silk-import-svg:把 SVG(LOGO / 品牌标 / 图形)作为填充
丝印图元导入(eda.pcb_PrimitiveImage.create)——无需debug.exec_js的 typed 路径。新增
Go 侧 SVG 解析器internal/pcb/svgimport:解析 path(M/L/H/V/C/S/Q/T/A/Z)、polygon/
polyline/rect/circle/ellipse/line、嵌套transform、viewBox,曲线全部扁平化为线段,
输出 EDA 复杂多边形命令数组(轮廓 + even-odd 挖孔,LOGO 的孔洞如 "o" 中空自动镂空)。
Flag:--file/--svg、--x/--y(或--at)=图形左上角、--width/--height/--keep-aspect、
--layer(3 顶 / 4 底自动镜像)、--rotation/--mirror,以及--dry-run(CLI 侧,打印目标
bbox / 轮廓数 / 顶点数 / 最小特征 + 低于--min-line-width≈6mil 的 DFM 告警)。ceshi 真机验证:
顶/底丝印可建、孔洞镂空、旋转+镜像生效、扛过doc reload+pcb save(同 primitiveId/bbox)、
pcb check干净。关键判据:pcb_PrimitiveImage直接吃丝印层的复杂多边形,填充 LOGO 无需描边化
或光栅化(推翻初始范围风险)。填充规则为 even-odd,纯描边图形按填充处理。星火计划 LOGO 品牌素材
示例待授权确认(下载链接 + SHA-256,不再分发)。
One-line install/update:
curl -fsSL https://raw.githubusercontent.com/zhoushoujianwork/easyeda-agent/main/install.sh | sh
Installs/updates:
- easyeda CLI/daemon
- easyeda-agent skill for Codex (
/.codex/skills) and/or Claude Code (/.claude/skills) when detected - prints EasyEDA connector .eext import URL
Skill targets: set EASYEDA_INSTALL_SKILLS=codex,claude to force targets, none to skip, or EASYEDA_SKILL_PRESERVE=1 to keep local edits.
easyeda-agent v0.16.0
[0.16.0] - 2026-07-20
Added — 原理图放置方法论(一套自己的摆放方法)
- 块
schematic_layout模板:电路块 JSON 新增schematic_layout(role →{dx,dy,rotation}
相对坐标模板,y-UP、5 格对齐、须覆盖全部 role,schema +go test双校验)。sch block-apply
优先按模板落件(去耦贴电源脚一字排开/上拉靠引脚/晶振·FLASH 分列,信号流左入右出,人审一次
终身复用),无模板才退回网格;原点自动避碰(不显式--at时按已有器件真实 bbox 螺旋找空位)、
落后回读真实 bbox 把 overlap 写进 manifest。esp32s3r8_chip_minsys / led_indicator_gpio 首批带模板。 sch zones功能分区认领 +layout-lintzone-violation:S0 spec 的modules[].zone持久化,
sch layout-lint新增"认领件落在分区矩形外"的 WARN(与 PCB zones 独立)。sch zone-draw分区框可视化:把认领画成虚线区域框 + 区名文本(eda.sch_PrimitiveRectangle/Text),
与 zone-violation 同一几何,所见即所校验;--clear精确移除,不碰用户图形。sch align/sch distribute:按真实渲染 bbox 对齐(left/right/top/bottom/centerx/centery)/
等距摊开,默认 dry-run、--apply落地自检;补齐 design-flow S6 一直引用却不存在的命令。sch autolayout --engine official官方 autoLayout 兜底引擎:包装平台eda.sch_Document.autoLayout()
(@beta,3.2.148 起可用)。它对已连线页是破坏性的(移件不移线 → 断线、落 off-grid),故加安全管线:
已连线守卫(无--rewire拒绝)、跑后吸附 5 格、--rewire(跑前捕获网表 → autoLayout → 吸附 →
删断线 → 重连)、自检用sch check(查断线)不止layout-lint(查重叠)。定位:模板未命中页的兜底起点。
Added — 机制
--doc <uuid|name>全局 flag:根治 doc-switch racing。所有命令默认对"当前前台文档"操作而
doc switch异步,长命令(autoLayout ~2min)/跨命令时前台漂移会把编辑落到错误的页。--doc在
postAction咽喉点加守卫:变更动作(catalogMutates)落地前ensureActiveDoc切目标页并用实时
document.current确认(不看缓存 /health),确认不了拒绝而非编辑错页;导航动作豁免防递归。
真机验证:前台停 P2 时block-apply --doc P1稳稳落 P1、P2 不动。多页/长操作一律带--doc。
Fixed
- 原理图坐标系 y-UP 定音:双探针文本实测 3.2.148 画布为 y-UP(y 大=视觉上方),修正
zoneRect
的 top/bottom 映射(此前按 y-DOWN 写反,autolayout/zone-violation/zone-draw 上下翻转)、标题栏
keep-out 锚点(此前保护右上角,实际标题栏在右下)、sch align --mode top/bottom语义。
One-line install/update:
curl -fsSL https://raw.githubusercontent.com/zhoushoujianwork/easyeda-agent/main/install.sh | sh
Installs/updates:
- easyeda CLI/daemon
- easyeda-agent skill for Codex (
/.codex/skills) and/or Claude Code (/.claude/skills) when detected - prints EasyEDA connector .eext import URL
Skill targets: set EASYEDA_INSTALL_SKILLS=codex,claude to force targets, none to skip, or EASYEDA_SKILL_PRESERVE=1 to keep local edits.
easyeda-agent v0.14.1
[0.14.1] - 2026-07-19
Fixed
schematic.pin.set_no_connect真正生成非连接 X 标识(订正 0.5.14 的平台 no-op 误诊):
真机复现确认setState_NoConnected(...)只修改当前 pin 句柄的待提交状态,必须再
await pin.done()才会写回画布;此前 handler 漏掉done(),fresh readback 因而恢复
false,被误判成 EasyEDA Pro 3.2.x 平台限制。现在改走
sch_PrimitiveComponent.get(id) → component.getAllPins(),逐脚 setter +done(),再用
新器件实例回读验证。Pro 3.2.149 真机已确认绿色 X 出现、noConnected:true,且
sch check的 floating-pin 计数同步减少;--clear同路径持久化清除。
(#133 Bug 3 / #134, 感谢 @zhiqiangme 贡献)- skill 脚本 Windows 中文环境 GBK 解码崩溃(#133 Bug 4):bulk-connect /
bulk-place / sch / diff 四脚本的subprocess.run显式encoding='utf-8', errors='replace'——CLI 输出恒为 UTF-8,此前text=True在 Windows 中文环境
按系统 GBK 解码,器件描述含中文时UnicodeDecodeError崩溃。 - 文档:environment-setup.md 新增 PowerShell 5.1 吞 JSON 参数双引号的说明
与绕行(--%/ 反引号转义 / CSV 形式 / PowerShell 7+)(#133 Bug 5)。
One-line install/update:
curl -fsSL https://raw.githubusercontent.com/zhoushoujianwork/easyeda-agent/main/install.sh | sh
Installs/updates:
- easyeda CLI/daemon
- easyeda-agent skill for Codex (
/.codex/skills) and/or Claude Code (/.claude/skills) when detected - prints EasyEDA connector .eext import URL
Skill targets: set EASYEDA_INSTALL_SKILLS=codex,claude to force targets, none to skip, or EASYEDA_SKILL_PRESERVE=1 to keep local edits.
easyeda-agent v0.14.0
[0.14.0] - 2026-07-18
「真机可信化」版:一天内 16 个 issue 闭环的集中发布。三大主题:
① via/导入可信化——EPAD 内嵌热过孔的删除欺骗与赋网易失被彻底摸清(删不掉:
假成功+立即 getAll 也骗+reload 原 id 复活;赋网只活到 reload),pcb.route.delete
前置拒删、pcb.add_component 放置即键合、CLI 新增 pcb via-bond 幂等重键合 +
pcb check netless-via-in-pad 触发器;import-changes 十七天误诊破案——它从来
不是 no-op,是「确认导入信息」对话框没人点,现在 handler 自动点「应用修改」,
clear→reimport 往返打通。② 布线器硬否决——异网走线/slot 从代价升级为
hopFeasible 硬门(R2 两条真交叉短路的根治),mount-holes 反查既有铜皮。
③ 门禁与工具诚实化——power-not-poured 对 GND 内电层死锁解除(PlanePouredNets
状态互通)、--force 分级放行(零确认机械骨架要 --force-unsafe)、pcb clear
默认 verify 复合流程、高 pin 连接器不再抢 main、陶瓷贴片天线 keepout、
根级 easyeda health 别名。
Fixed
pcb.import_changes假 no-op 根因修复(#124,订正 #20 诊断):importChanges 一直
都能正确算出变更清单——它弹「确认导入信息」对话框等人点「应用修改」,API 返回 true 只
代表对话框弹出;headless 没人点,看起来就是静默 no-op(「不支持增量导入」是误诊)。
真机实证:点击后 20 件全部落板。handler 现在自动等待对话框并点「应用修改」
(confirm:false保留人工审查),且 importChanges 的 promise 不再串行 await
(实测某些状态下永不 resolve,会卡死连接器整个动作队列)——改为并发点击 + 12s 超时
兜底,以器件计数差(componentsBefore/After)为落板真值。pcb.route.delete假报成功修复(#120,真机订正):SDK 的delete()对封装内嵌
via(QFN EPAD 热过孔是 component 的一部分)返回true且立即 getAll 也显示已删,
但 save/reload 后从封装定义原 id 复活(ceshi 真机实证)——纯 readback 会被骗。handler
现在前置结构判定:via id 以某器件 primitiveId 为前缀 = 内嵌,直接拒删进
notDeletable[](附父器件 + 指引pcb via-bond),ok:false;其余照常删除并
readback 兜底(removed/count只统计真正消失的,不可归因的幸存者进notDeleted)。pcb.add_component内嵌 via 赋网(#118):封装内嵌的 EPAD 热过孔net="",
EPAD 永远焊不上 GND 平面且每颗报一条 same-footprint SMD Pad to Via。现在赋完
pad 网后,枚举落在本器件已赋网 pad 铜皮矩形内的无网 via,用
pcb_PrimitiveVia.modify(@beta)赋成该 pad 的网,并 readback 验证(#120 教训:
SDK 布尔不可信);结果新增embeddedVias {assigned, verified, failed}。
⚠️ 真机实证:该赋网不能活过 doc reload(平台每次都把内嵌 via 重物化为无网)——
CLI 侧配套pcb via-bond(exec_js 路线,旧连接器即可用)负责 reload 后重键合,
pcb check新规则 netless-via-in-pad 是触发器。
One-line install/update:
curl -fsSL https://raw.githubusercontent.com/zhoushoujianwork/easyeda-agent/main/install.sh | sh
Installs/updates:
- easyeda CLI/daemon
- easyeda-agent skill for Codex (
/.codex/skills) and/or Claude Code (/.claude/skills) when detected - prints EasyEDA connector .eext import URL
Skill targets: set EASYEDA_INSTALL_SKILLS=codex,claude to force targets, none to skip, or EASYEDA_SKILL_PRESERVE=1 to keep local edits.
easyeda-agent v0.13.0
[0.13.0] - 2026-07-16
「规范进代码」版:PCB 设计规范从「文档等 AI 自觉去读」变成机器强制——26 条
pcb check 规则的报错自带 [规范 §N] 章节引用、布完线必须过 post_route_checked
门才能进交付、电源线宽按公制阶梯自动给宽。配套补齐芯片级(ESP32-S3 裸片)选型与电路块,
并新增 pcb clear / pcb mount-holes 两条命令。
Added
pcb.page.clear— 一键整版清空 PCB(easyeda pcb clear),schematic.page.clear
的 PCB 对称版。一次删掉所有板级内容:器件 + 布线(轨/弧/过孔)+ 铺铜/填充 + keep-out/规则区域- 自由丝印(丝印层 3/4 的字符串及线/弧图形,不误删铜层文字或机械/装配图元)。
pcb.component.delete只删器件、布线/铺铜会静默残留;这个才是真正的清板重来。
默认保留锁定图元 + 板框(layer 11);--only components,routing,copper,regions,silk收窄、
--no-preserve-outline连板框删、--include-locked连锁定件删。--dry-run只统计不删。
复用rip_up的 copper-only 规则,布线永不误伤丝印/板框。无 undo,确认门控。
内部枚举→删除→再枚举循环到 0(上限 5 轮,返回rounds)——首轮枚举可能读到 stale
引擎态漏项(实测 153 轨清完仍剩 8),循环补清等价于用户手工再跑一遍;dry-run 不循环;
撞轮次上限仍有残留则追加 warning 提示 save+reload 再跑,绝不假报干净(#112)。
- 自由丝印(丝印层 3/4 的字符串及线/弧图形,不误删铜层文字或机械/装配图元)。
easyeda pcb mount-holes— 四角 M3 安装孔自动放置(#102):读板框 bbox 四角内缩放孔
(--dia默认 126mil=Ø3.2mm /--inset197mil≈5mm /--corners tl,tr,bl,br子集 /
--dry-run)。孔形态 = layer-12 多边形 fill(与pcb slot同原语,零新增 action);
keep-out = max(孔半径+40, 垫圈118mil),圆-矩形相交逐角查器件 bbox,冲突警告+跳过,
绝不压件;已有孔报exists(幂等重跑)。post_route_checked阶段门 —— 「布完必查」机械化(#97 续):workflow advance在
布线后自动跑pcb check,ERROR + power-not-poured + width-under-spec 三项清零才放行
丝印/交付;其余 WARN 报告不拦。13 个布线类 action 标InvalidatesStage→ 改线后门
自动重新关上。拒门时逐条打印 blocking finding(自带[规范 §N]引用)。easyeda pcb modify --center(#105):--x/--y解释为期望的 bbox 中心而非器件
锚点(锚点常偏中心,实测 ESP32 模组偏 135mil,旋转件更甚);pcb list --include-bbox
输出注入center字段。默认语义不变。pcb fill create --at x,y --size w,h别名(#109):消除--rect= 两角点的歧义。- audit 客户端归因 + 并发写 advisory(#108):Request 带
clientId
(<hostname>:<pid>[:EASYEDA_CLIENT_LABEL]),audit JSONL 每行可归因;不同会话 10 分钟内
写同一板 → 响应附concurrentWriter警告(不阻断,CLI 打 stderr)。 staleRiskadvisory —— 铁律 5 机械化:PCB mutation 后未doc reload就读/DRC →
daemon 在响应附警告(CLI stderr),pour-rebuild/reload 后自动解除。- 芯片级(ESP32-S3 裸片)物料链:
standard-parts.json补 6 类选型(#106,S3R8 裸片
C2913194 内封 8MB PSRAM / W25Q64 / APS6404L / 40MHz 晶振 / 2.4G 陶瓷天线 / π 匹配);
电路块库新增 2 个 draft 块block.esp32s3r8_chip_minsys+block.ant_2g4_ceramic_pi
(共 23 块:20 ready / 3 draft)。 pcb.components.list --include-pads返回焊盘真实铜皮width/height、
pcb.silk.list返回fontSize(0.12.1 起):clearance/DFM/避障从名义常量升级实测值。- PCB 设计规范手册(
skills/easyeda-agent/references/pcb-design-rules.md):13 章,
JLC 工艺 + IPC-2221;pcb check报错的[规范 §N]即指向此手册章节。 sch bridge-check规则类型化:wire-bridge(ERROR)/orphan-stub(WARN),
JSON 可按类型 gate,对齐pcb check强制力。
Changed
pcb check新增 5 条 DFM 规则(共 26 条),全部自带[规范 §N]引用:
silk-over-pad(§11.2 丝印压焊盘)、decap-too-far(§3.1 去耦电容离 IC >2.5mm)、
via-in-pad(§2.3 同网过孔打在焊盘上)、copper-near-edge(§5.1 铜距板边)、
fiducial-missing(§9 SMT 板缺 Mark 点,INFO)。旧的 11 类规则也补上了章节引用。- net-class 线宽阶梯改公制圆整(规范 §1.2):电源分档从 mil 碎值(10/15/20mil =
0.254/0.381/0.508mm)改为公制推荐值 branch 0.25mm / trunk 0.4mm / high-current 0.5mm
(9.84/15.75/19.69mil);signal 仍取板的 live 规则值。存量按旧阶梯布的板零追溯告警。 easyeda pcb power-pour:2 层板电源自动铺铜(power-planes的 2 层版)——GND 全板
pour + 各电源轨局部动态 pour(非 static fill,防异网短路)。- 删除类命令统一收 CSV 与 JSON 数组(#109):
pcb delete/pour-delete/
region delete/fill delete/track-delete/via-delete——pcb drc --json
的objs数组现在可直接粘贴。
Fixed
- clearance 判据改铜皮边缘距:track↔pad / via↔pad 原按径向 max(w,h)/2 判(USB-C 长条
焊盘旁的合法走线被误报 21 条);track↔via / track↔track 原按中心线距判并打印,导致
「runs 16.9mil — under the 6mil rule」自相矛盾文案,且两条 10mil 线中心距 8mil(铜皮
已重叠)竟放行 = 漏报短路。现全部按真实矩形/半宽算边缘距。 - route-short detour 段 fine-pitch 收窄改子段级(#107):原为整 hop 级,任一端点落在
密脚场就把整条多层绕行(含对侧层电源 trunk)连坐收窄到 6mil,载流严重不足。 - workflow 指纹 reload 后误报 placement drift(#100):坐标取整放粗到 1mil + 压平
-0.0、旋转折进 [0,360)、layer 数字与名称统一映射;顺带修掉asString读数字 layer 恒
空串导致翻面对指纹不可见的隐藏 bug。 place-constrained检测不到 slot 挖的 M3 孔(#104,holes 恒 0 → Tier-1 避让失明):
根因是解析pcb.fill.list的points字段,而连接器只在includeBBox里给几何。via-crosses-plane的「plane 无网」分支降为 INFO(#110):实证 PLANE 层 pour 在
doc reload后被装进负片存储、扩展 API 无任何读取路径(平台行为,非本项目 bug),
该分支在 reload 后必然假阳性 → 不再计入 warnings/拦--strict,message 指引以
pcb drcConnection=0 为准。pcb.silk_netnames碰撞检测从硬编码 50×50mil 改真实焊盘 extent。--dry-run预览不再被当成 mutation(#112):daemon 侧统一按 payload 的dryRun
标志把预览排除出Mutates判定 —— 之前只跑pcb clear --dry-run(不改板)也会 arm
staleRisk并触发 autosave;现在 staleRisk / autosave / concurrentWriter 三处一致。workflow advance门失败时非零退出(#113):post_route_checked 拒门(或门跑不起来)
时 exit≠0,脚本set -e/ CI 循环终于拦得住;与既有「阻塞在人工签核时非零」OR 合并。- 门与
power-planes不再自相矛盾(#114):power-planes判定「内层已被占用 → 该网
改走线」(routeAsTracks)的电源网记进 workflow state,post_route_checked 门豁免其
power-not-poured(仍打印并标注 exempt)。此前两个工具互相打架:去铺撞已有平面、
不铺过不了门。豁免跟着布局失效(placement_confirmed 及更早)而非布线。 bom export定位bom-enrich.py(#115):六级探测(--script→EASYEDA_SKILLS_DIR
→ 已安装 skill 目录(复用skill status同一份逻辑) → 可执行文件兄弟路径 → cwd →$PATH),
非仓库 cwd 下不再找不到;找不到时列出每一条探测过的路径。
One-line install/update:
curl -fsSL https://raw.githubusercontent.com/zhoushoujianwork/easyeda-agent/main/install.sh | sh
Installs/updates:
- easyeda CLI/daemon
- easyeda-agent skill for Codex (
/.codex/skills) and/or Claude Code (/.claude/skills) when detected - prints EasyEDA connector .eext import URL
Skill targets: set EASYEDA_INSTALL_SKILLS=codex,claude to force targets, none to skip, or EASYEDA_SKILL_PRESERVE=1 to keep local edits.
easyeda-agent v0.12.0
[0.12.0] - 2026-07-14
本版把项目工作流机械化(#97)、补上手焊可达门(#99)、让 place-constrained
网感知分组连接器,并修掉三处在 esp32Mini 端到端回归里暴露的工具张力(Type-C 突出板框、
beautify 圆角与 pcb check 的弧不感知)。
Added
- 项目 design-flow 状态机机械强制(#97):新增
easyeda workflow(init / status /
advance / confirm / reset)——6 段门(imported→placement_ready→placement_confirmed→
outline_confirmed→pre_route_passed→routing_authorized)。daemon 在/action层拦截
未授权布线(pcb.line.create/pcb.via.create/pcb.import_autoroute,fail-closed);
布局/朝向类 action 携带指纹,任何 mutation 自动失效下游确认并全链回退。 - 手焊铁路门(#99):
pcb layout-lint --gate增加手焊可达检查——每个器件至少一侧有
≥60mil 净通道(否则「四面被围」判 fail);配pcb stage set-assembly hand-solder
落盘的装配档(min-gap 40 / large-pad 60)。 pcb.line.list返回 copper 弧(arcs):与lines并列返回圆弧图元的端点,向后兼容
(旧 CLI 忽略新字段)。让 headless 检查能把「track 端接在弧端点」识别为已连,而非悬空。
Changed
place-constrained网感知分组:edge="user-facing"的连接器(USB / SD / 端子 / 排针)
分组到同一条共享边并沿边紧凑排布;共享边由网感知选(贴连接器电气搭档主芯片的那条边,
经共享 local 网,而非几何质心)——USB 贴 CH340 同侧,缩短差分对、少交叉(实测同种子 61→28 交叉)。
edge="any"(RF/模组)保持各自最近边。
Fixed
layout-lintoff-board 改按焊盘中心判:连接器身/courtyard 突出板框(Type-C mating 面、
卡座、螺钉端子)但焊盘全在框内属有意贴边,不再误判 off-board、不再卡死 confirm-layout
授权链;无焊盘件兜底 bbox(焊盘边到板框净空仍归 DRC)。pcb check弧感知(消除 beautify 圆角伪报):beautify把拐角圆化成 track→arc→track 后,
dangling-end与floating-track-island两个检测因不认弧而爆假阳性(实测一块板 dangling
0→130、island 0→10,而官方 DRC 报 0 断)。现dangling-end认「同层弧端点=track 端已连」、
floating-track-island用弧桥接 union(镜像过孔桥接)——实测两者双双归零。
One-line install/update:
curl -fsSL https://raw.githubusercontent.com/zhoushoujianwork/easyeda-agent/main/install.sh | sh
Installs/updates:
- easyeda CLI/daemon
- easyeda-agent skill for Codex (
/.codex/skills) and/or Claude Code (/.claude/skills) when detected - prints EasyEDA connector .eext import URL
Skill targets: set EASYEDA_INSTALL_SKILLS=codex,claude to force targets, none to skip, or EASYEDA_SKILL_PRESERVE=1 to keep local edits.
easyeda-agent v0.11.3
[0.11.3] - 2026-07-12
守护进程端口稳定性(补丁):
Fixed
- 多 daemon 抢端口根治:daemon 改为单一固定端口 49620(不再顺移到 49621…)。旧行为下
第二个daemon start会悄悄占下一个端口,而连接器扫整段 49620–49629 会在多个 daemon 间抖
(陈年make dev/air 实例的典型症状);旧 PID 文件兜底不可靠。新的ensurePortAvailable:
空闲→绑;被我方 daemon 占(/health探测确认)→自动替换(端口级,可靠);被别的
程序占→交互终端问[y/N]、headless(air/nohup 无 TTY)报清晰错误退出——绝不静默杀外部
进程。连接器侧不用改(仍扫 49620–49629,先命中 49620)。
One-line install/update:
curl -fsSL https://raw.githubusercontent.com/zhoushoujianwork/easyeda-agent/main/install.sh | sh
Installs/updates:
- easyeda CLI/daemon
- easyeda-agent skill for Codex (
/.codex/skills) and/or Claude Code (/.claude/skills) when detected - prints EasyEDA connector .eext import URL
Skill targets: set EASYEDA_INSTALL_SKILLS=codex,claude to force targets, none to skip, or EASYEDA_SKILL_PRESERVE=1 to keep local edits.
easyeda-agent v0.11.2
One-line install/update:
```
curl -fsSL https://raw.githubusercontent.com/zhoushoujianwork/easyeda-agent/main/install.sh | sh
```
Installs/updates:
- easyeda CLI/daemon
- easyeda-agent skill for Codex (
/.codex/skills) and/or Claude Code (/.claude/skills) when detected - prints EasyEDA connector .eext import URL
Skill targets: set `EASYEDA_INSTALL_SKILLS=codex,claude` to force targets, `none` to skip, or `EASYEDA_SKILL_PRESERVE=1` to keep local edits.
easyeda-agent v0.11.0
One-line install/update:
```
curl -fsSL https://raw.githubusercontent.com/zhoushoujianwork/easyeda-agent/main/install.sh | sh
```
Installs/updates:
- easyeda CLI/daemon
- easyeda-agent skill for Codex (
/.codex/skills) and/or Claude Code (/.claude/skills) when detected - prints EasyEDA connector .eext import URL
Skill targets: set `EASYEDA_INSTALL_SKILLS=codex,claude` to force targets, `none` to skip, or `EASYEDA_SKILL_PRESERVE=1` to keep local edits.
easyeda-agent v0.10.0
One-line install/update:
```
curl -fsSL https://raw.githubusercontent.com/zhoushoujianwork/easyeda-agent/main/install.sh | sh
```
Installs/updates:
- easyeda CLI/daemon
- easyeda-agent skill for Codex (
/.codex/skills) and/or Claude Code (/.claude/skills) when detected - prints EasyEDA connector .eext import URL
Skill targets: set `EASYEDA_INSTALL_SKILLS=codex,claude` to force targets, `none` to skip, or `EASYEDA_SKILL_PRESERVE=1` to keep local edits.