Jlceda Plugin Builder
/install extension-dev-skill
JLCEDA Plugin Builder
Build extension plugins for EasyEDA Pro. Provides a complete API query workflow, code generation standards, and debugging toolchain.
Core Principles
- Never guess APIs — Check the Skill's
index.d.tsfirst; if not found = does not exist - Verify class existence before use — Search class name with
grepSearch; no results = do not use - Verify API mount path — The class where a method is defined ≠ the property it's mounted on under
eda - Verify return type methods — Different methods on the same class may return completely different interface types
- Browser APIs are forbidden in the main process — Cannot use
localStorage,window,document; allowed inside iframe - Document type values — SCH=1, PCB=3, FOOTPRINT=4 (PCB is not 2)
When to Use
Applicable:
- Creating or modifying EasyEDA Pro extension plugins
- Querying API method signatures in
@jlceda/pro-api-types - Configuring
extension.json, locales i18n files, or build processes - Automating plugin import/debugging via
eext-dev-mcpMCP tools
Not applicable:
- General TypeScript/JavaScript questions unrelated to EasyEDA Pro
- Non-EasyEDA Pro EDA tools
- Workspace has no
extension.jsonand user did not request initialization
API Query Workflow (Four Steps)
API type definition location: the index.d.ts file bundled with this Skill (sourced from @jlceda/pro-api-types). Always search in this file; do not look in node_modules.
Step 1: Find the Correct Class
grepSearch "SCH_PrimitiveComponent" # Schematic component class
grepSearch "PCB_PrimitiveVia" # PCB via class
Step 2: Verify the Class Is Mounted on the eda Object
grepSearch "sch_PrimitiveComponent:" # Note the colon
grepSearch "dmt_SelectControl:" # Verify mount path
Step 3: Find the Method and Confirm Its Signature
grepSearch "getCurrentDocumentInfo"
Then use readFile to read the full signature and confirm parameter types and return type.
Step 4: Verify the Return Interface Has the Required Methods
# Search the returned interface type to confirm it has the needed methods
grepSearch "ISCH_PrimitiveComponent$1" # Interfaces with $1 suffix usually have more methods
No search results = does not exist. Do not use!
Execution Workflow
- Plan — Understand requirements, confirm target editor (home/sch/pcb) and core functionality
- Init — If workspace is not initialized, run project initialization; otherwise skip
- Query — Dynamically query required APIs (four-step method); every API must be verified
- Validate — Verify all type signatures are complete with no guesswork; if uncertain, return to Query
- Confirm — Present implementation plan to user (API list, dependencies, data flow, file changes); wait for confirmation in Supervised mode. In Autopilot mode, skip this step for straightforward changes; only pause for complex or destructive operations
- Execute — Generate code; each API call corresponds to a verified signature, wrapped in
try/catch - Check — Check runtime environment constraints; confirm no forbidden operations; if violations found, return to Execute to fix
API Verification Checklist (Required Before Using Any API)
-
grepSearchfound the method name; confirmed return type -
readFileread the full signature; confirmed all parameter types and counts - Confirmed
eda.xxx_YYYclass exists in theclass EDAproperty list - Confirmed API is mounted on the correct module
- Verified the returned interface type also has the required methods
- If using
getAllPrimitiveId, must use a concrete type (not an abstract class) - Document type checks use the correct
documentTypevalues
Runtime Environment Constraints
| Requirement | ❌ Forbidden | ✅ Recommended |
|---|---|---|
| Get user input | - | eda.sys_Dialog.showInputDialog() |
| User selection | - | eda.sys_Dialog.showSelectDialog() |
| Show message | alert() |
eda.sys_Dialog.showInformationMessage() |
| Confirm action | confirm() |
eda.sys_Dialog.showConfirmationMessage() |
| Toast notification | DOM manipulation | eda.sys_Message.showToastMessage() |
| Store data | localStorage (main process) |
eda.sys_Storage.setExtensionUserConfig(key, value) |
| Custom UI | Manipulate host DOM | eda.sys_IFrame.openIFrame() |
| Show HTML | showInformationMessage(html) |
Must use iframe |
| Open link | window.open() |
eda.sys_Window.open() |
| Browser hardware API | Use in main process | Available in iframe (navigator.serial, etc.) |
| IFrame data passing | (window as any).__xxx = data (main process and iframe window are isolated); window.parent.eda |
✅ Option A (recommended): Store with eda.sys_Storage.setExtensionUserConfig(key, value), read in iframe with getExtensionUserConfig(key); ✅ Option B: Call eda API directly from iframe (both main process and iframe can access the eda object; just use eda directly) |
Project Initialization
When extension.json does not exist in the workspace:
git clone https://github.com/easyeda/pro-api-sdk.git \x3Cproject-name>
cd \x3Cproject-name>
npm install
npm run compile
Failure Strategies
- API does not exist: Stop immediately, inform the user
- Signature uncertain: Stop generation, return to query step
- Workspace not initialized: Prompt user to initialize first
- Forbidden DOM API used: Automatically replace with
eda.sys_*alternatives - Menu ID conflict: Automatically add prefix to differentiate (e.g.,
my-plugin-home,my-plugin-sch)
References
- Complete API module list, enum definitions →
resources/api-reference.md - Common pitfalls and lessons learned →
resources/experience.md - MCP tool documentation → "MCP Tools" section in
resources/api-reference.md
- Make sure OpenClaw is installed (local or Docker)
- Run the install command in chat:
/install extension-dev-skill - After installation, invoke the skill by name or use
/extension-dev-skill - Provide required inputs per the skill's parameter spec and get structured output
What is Jlceda Plugin Builder?
AI Skill for building EasyEDA Pro extension plugins. Used when users need to create, modify, or debug JLCEDA/EasyEDA Pro plugins, including generating plugin... It is an AI Agent Skill for Claude Code / OpenClaw, with 136 downloads so far.
How do I install Jlceda Plugin Builder?
Run "/install extension-dev-skill" in the OpenClaw or Claude Code chat to install it in one step — no extra setup required.
Is Jlceda Plugin Builder free?
Yes, Jlceda Plugin Builder is completely free, licensed under MIT-0. You can download, install and use it at no cost.
Which platforms does Jlceda Plugin Builder support?
Jlceda Plugin Builder is cross-platform and runs anywhere OpenClaw / Claude Code is available (cross-platform).
Who created Jlceda Plugin Builder?
It is built and maintained by JasonYANG17 (@jasonyang170); the current version is v0.1.0.