DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

@aryacode/dsh-engineering

Engineering

AryaCode 工程套件:为 Studio 5000 L5X、FactoryTalk View ME、MotionWorks IEC 和 FactoryTalk Optix 提供统一安装入口,每个产品占一行,并附带梯形图和显示界面预览。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add @aryacode/dsh-engineering@0.87.0
README兼容性版本

兼容性与来源证明

Engineering 以 @aryacode/dsh-engineering 发布,当前版本为 0.87.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/11/5

版本

0.87.0stable
2026/11/5
0.86.0stable
2026/11/4
0.85.3stable
2026/11/2
查看其余 130 个版本收起版本
0.85.2stable
2026/11/2
0.85.1stable
2026/11/2
0.85.0stable
2026/11/2
0.84.0stable
2026/11/2
0.83.0stable
2026/11/2
0.82.0stable
2026/11/2
0.81.0stable
2026/11/2
0.80.0stable
2026/11/2
0.79.0stable
2026/11/2
0.78.1stable
2026/11/2
0.78.0stable
2026/11/2
0.77.0stable
2026/11/2
0.76.0stable
2026/11/2
0.75.0stable
2026/11/2
0.74.0stable
2026/11/1
0.73.0stable
2026/10/31
0.72.1stable
2026/10/31
0.72.0stable
2026/10/31

相关插件

正在加载相关插件…

最新版
0.87.0
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
13.6 MB
文件数
743
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 0
周下载
19,318
查看源码 ↗项目主页 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
0.71.0stable
2026/10/30
0.70.0stable
2026/10/30
0.69.0stable
2026/10/29
0.68.0stable
2026/10/29
0.67.0stable
2026/10/29
0.66.0stable
2026/10/29
0.65.0stable
2026/10/29
0.64.0stable
2026/10/29
0.63.0stable
2026/10/29
0.62.0stable
2026/10/29
0.61.0stable
2026/10/29
0.60.0stable
2026/10/29
0.59.0stable
2026/10/29
0.58.0stable
2026/10/29
0.57.0stable
2026/10/29
0.56.0stable
2026/10/29
0.55.0stable
2026/10/29
0.54.0stable
2026/10/29
0.53.0stable
2026/10/29
0.52.0stable
2026/10/29
0.51.0stable
2026/10/29
0.50.0stable
2026/10/29
0.49.0stable
2026/10/29
0.48.0stable
2026/10/29
0.46.0stable
2026/10/29
0.45.0stable
2026/10/29
0.44.0stable
2026/10/29
0.43.0stable
2026/10/29
0.42.0stable
2026/10/29
0.41.0stable
2026/10/29
0.40.0stable
2026/10/29
0.39.0stable
2026/10/29
0.38.0stable
2026/10/29
0.37.0stable
2026/10/29
0.36.0stable
2026/10/29
0.35.0stable
2026/10/29
0.34.0stable
2026/10/29
0.33.0stable
2026/10/29
0.32.0stable
2026/10/29
0.31.0stable
2026/10/29
0.30.0stable
2026/10/29
0.29.0stable
2026/10/29
0.28.0stable
2026/10/29
0.27.0stable
2026/10/29
0.26.0stable
2026/10/29
0.25.1stable
2026/10/29
0.25.0stable
2026/10/29
0.24.0stable
2026/10/29
0.23.0stable
2026/10/29
0.22.2stable
2026/10/29
0.22.1stable
2026/10/29
0.22.0stable
2026/10/29
0.21.0stable
2026/10/28
0.20.2stable
2026/10/28
0.20.1stable
2026/10/28
0.20.0stable
2026/10/28
0.19.2stable
2026/10/28
0.19.1stable
2026/10/28
0.19.0stable
2026/10/28
0.18.4stable
2026/10/28
0.18.3stable
2026/10/28
0.18.2stable
2026/10/28
0.18.1stable
2026/10/28
0.18.0stable
2026/10/28
0.17.2stable
2026/10/28
0.17.1stable
2026/10/28
0.17.0stable
2026/10/28
0.16.1stable
2026/10/28
0.16.0stable
2026/10/28
0.15.0stable
2026/10/28
0.14.1stable
2026/10/28
0.14.0stable
2026/10/28
0.13.1stable
2026/10/28
0.13.0stable
2026/10/28
0.12.1stable
2026/10/28
0.12.0stable
2026/10/28
0.11.1stable
2026/10/28
0.11.0stable
2026/10/28
0.10.9stable
2026/10/28
0.10.8stable
2026/10/27
0.10.7stable
2026/10/27
0.10.6stable
2026/10/27
0.10.5stable
2026/10/27
0.10.4stable
2026/10/27
0.10.3stable
2026/10/27
0.10.2stable
2026/10/27
0.10.1stable
2026/10/27
0.10.0stable
2026/10/27
0.9.3stable
2026/10/27
0.9.2stable
2026/10/27
0.9.1stable
2026/10/27
0.9.0stable
2026/10/27
0.8.4stable
2026/10/27
0.8.3stable
2026/10/27
0.8.2stable
2026/10/27
0.8.1stable
2026/10/27
0.8.0stable
2026/10/27
0.7.0stable
2026/10/27
0.6.0stable
2026/10/27
0.5.0stable
2026/10/27
0.4.22stable
2026/10/27
0.4.21stable
2026/10/27
0.4.20stable
2026/10/27
0.4.7stable
2026/10/25
0.4.6stable
2026/10/25
0.4.5stable
2026/10/25
0.4.4stable
2026/10/25
0.4.3stable
2026/10/25
0.4.2stable
2026/10/25
0.4.1stable
2026/10/25
0.4.0stable
2026/10/25
0.3.0stable
2026/10/25

相关插件

继续浏览 developer-tools 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Sdk Minimal@deepseek-ai/dsh-sdk-minimal独立的最小 SDK 配置包:JSON-RPC、一个 DeepSeek 适配器、持久化 Shell 和 JSONL 会话Sdk App@deepseek-ai/dsh-sdk-appdsh SDK 配置包:基于 dsh-base 提供 stdio JSON-RPC 服务和进程生命周期管理Experimental Inspector@deepseek-ai/dsh-experimental-inspector用于 Host 调试和 Client Runtime 检查的实验性跨 realm CDP hub

README

AryaCode Engineering

One bundle for automation-engineering work in AryaCode. Studio 5000 L5X, FactoryTalk View ME, MotionWorks IEC, FactoryTalk Optix and ECAD electrical prints sit behind a single install, one row per surface. A row is the switch: disable it and that plugin unloads, so its tool schemas leave the request.

@aryacode/dsh-engineering · 159 tools · 9 rows · 5 products · MIT

New here? Start with Getting started — what each row needs, the loop every product follows, and the first prompt to paste per product.

Harness compatibility

Verified on AryaCode 0.2.2-alpha.2 (build 0.2.2-alpha.2.AryaCode.0.1.0) on 2026-10-28: 0.22.2 installed from npm into a clean packaged profile, loaded with no import or activation error, and the market reported the bundle live with diagnostics.findings empty. The 0.20.x line is what the 0.2.1-rc.3 builds shipped and is still published, so either host version can install a matching release.

The package declares no dsh.engines.dsh range today, so the market cannot state a requirement for it: with a readable manifest the card says "Host requirement undeclared", and when the manifest lookup fails it says "Host requirement unknown". Declaring ^0.2.2-alpha.2 || ^0.2.1-rc.3 is the next metadata change; it only takes effect in a release, because the market reads the published manifest.


Why a bundle

A general assistant pays for every tool schema on every request. An automation engineer needs deep surfaces — reading a 3 MB L5X, comparing two projects, staging ladder edits, talking to a controller — but only one or two of them at a time.

This bundle splits those surfaces into one row per product. The expensive surfaces are switches inside the row. Every product except ECAD ships on by default so a fresh install can use it; ECAD is a new, large surface and ships listed but off. Switch off what a read-only or low-context profile does not need:

Product rowConfig optionDefaultWhat turning it on adds
l5xeditingonthe 17 staged-draft schemas
l5xstudioonthe Logix Designer SDK and supervised controller schemas
l5xliveonthe EtherNet/IP read, batch, discovery, clock and trend schemas
l5xallowWritesonthe two approval-gated writes (tag, wall clock)
ftviewedit, studioonstaged ME edits and the Studio handoff
mwieditonthe seven MotionWorks edit schemas
optixallowWrites, allowDestructive, allowInvoke, preview, ocrExecutableonStudio authoring, destructive ops, method invocation, emulator preview and OCR when Tesseract is set
ecadwritesoffstaged drawing drafts that write a new DXF/DWG beside the source (the row itself also ships off)

The default-on surface is a budgeted quantity: components.json records the tools and the characters of model-visible schema a fresh install may mount, and a component that would exceed either ceiling ships switched off until the ceiling is raised with its measurement. The component contract owns the budget.

The previews are independent of the tools — switching a product off does not remove any of the three viewers (ladder, ME display, ECAD drawing). All three mount from one row (viewers), because a package registers exactly one browser bundle.

What it supports

ProductToolsDefaultNeeds
Studio 5000 L5X54all onNode for offline reads; Studio 5000 + Logix Designer SDK for SDK work; a controller for live
FactoryTalk View ME47all onNode for an export folder; FactoryTalk View Studio ME for discovery and the handoff
MotionWorks IEC24all onMotionWorks IEC 3 Pro installed; verified against 1.19
FactoryTalk Optix9 (3 need preview)all onOptix Studio installed; Tesseract for OCR
ECAD electrical prints16offnone; reads DXF prints (DWG through the embedded converter, no external app); writes stay off until enabled
Engineering resources2all onnone; a profile needs an L5X or FactoryTalk View project open
SLC 500 and PLC-5 to Logix migration7all onnone; reads an RSLogix 500 .RSS/.ACH or RSLogix 5 .RSP project hidden when that product is installed, otherwise the .SLC export, plus the .L5K a migration wizard writes

Tool groups, by product:

  • L5X — 13 read (open_project … document_project), 17 staged edits (draft_*, compose_rung, compose_batch), 6 Logix Designer SDK, 7 supervised controller, 7 live EtherNet/IP (2 reads, 2 identity/discovery, 1 batch read, 2 approval-gated writes), 3 preview and 1 diagram
  • L5X chat composition — l5x_compose_logic needs no project and writes no file: named patterns or raw NeutralText go in, paste_text plus the tag declarations come out, ready to paste into a Studio 5000 ladder routine. Parallel branches use [path1,path2]; the ladder syntax and instruction mnemonics are validated, while tag existence/types and Studio compilation are reported as unverified.
  • FactoryTalk View — 22 read (including ftview_document), 22 staged edits, 3 Studio handoff
  • MotionWorks IEC — 7 session, 7 saved-project reads, 3 verify, 7 direct edits
  • Optix — 9 tools, linked to the factorytalk-optix guidance; optix_netlogic reads the pinned NetLogic cheat-sheet snapshot, and the bridge tools need Studio
  • Migration — 7 tools and the legacy-to-logix-migration skill: slc_read opens an .RSS/.ACH (RSLogix 500) or .RSP (RSLogix 5) hidden through its 32-bit automation server and returns program files, rung text, symbols and data files without a window; migration_assess reads an .SLC, .RSS/.ACH/.RSP or .L5K file and states what it is; l5k_lint reports the import blockers in the .L5K with line numbers; migration_compare scores an .RSS against the converted .L5X by routine, rung, symbol and data file; migration_resolve turns every PCE marker and unknown ? operand the wizard left into a proposed Logix answer, marked answerable or needing review; migration_report writes the report a person signs off from — a formatted Word document or Markdown carrying the pre- and post-correction census, the corrections rung by rung and the open items that need their decision; migration_plan keeps the intake decisions, stage evidence and exceptions in .migration/plan.json
  • Engineering resources — 2 tools and the engineering-standards skill: engineering_reference reads the local 41-page corpus (IEC 61131-3, Rockwell, SLC/PLC-5 migration, Yaskawa, HMI, Optix, craft) and engineering_profile infers the open project's own naming, idioms and HMI palette, with evidence and a confidence level
  • — 10 read ( … ), 4 staged drafts (, ) and 2 deliverables (, ), plus the skill: the engine parses DXF (and DWG through the embedded converter), infers the print set's profile from the title blocks and ACADE , reads title blocks, an index sheet, cross-reference candidates and checks, renders layouts as SVG, and writes an edited drawing as a NEW file whose write is verified against the staged change

Switches

A row is a plugin. Disabling it in the profile (or on the Plugins page) unmounts that product and its tool schemas stop being sent. Each product's optional surfaces are config on the same row, so the cheap decision — is this product on at all — takes one switch, and the fine decision lives one level down:

RowMountsConfig options (default)
l5xoffline reads, checks, comparison and the rockwell-l5x guidance; optionally drafts, SDK, live (reads, batch, discovery, clock) and supervised writesediting (on), studio (on), live (on), allowWrites (on)
ftviewFactoryTalk View ME read, guidance and edits; optionally the Studio handoffedit (on), studio (on)
mwiMotionWorks IEC session, reads, verify, guidance and the editsworkspace (empty), edit (on)
ecadECAD drawing reads, review, cross-reference, checks, render/compare, staged drafts and the review/backup deliverables, with the ecad-drafting skill; the row ships off, and writes are a second switchwrites (off), maxFiles (2000), maxFileBytes (64 MiB), maxEntities (200000)
viewersladder, ME display and ECAD drawing previews—
engineering-presetnone — the preset's own settings, read from the rowon
engineering-resourcesthe engineering corpus, the house-style profile and the engineering-standards skill; no project of its ownreference (on)
migrationlegacy SLC 500 / PLC-5 assessment, the .L5K linter, the conversion-marker resolver and the signed migration report, with the legacy-to-logix-migration skillassess (on), lint (on), compare (on), resolve (on), report (on), plan (on)
optixFactoryTalk Optix Studio authoring and the NetLogic readerbridgeUrls (8768), bridgeToken (empty), allowWrites (on), allowDestructive (on), allowInvoke (on), preview (on), allowPreviewInput (on), cdpUrl, , (empty), (), (empty), (on)

A row can also be inserted disabled when a component ships off by default: the row is still listed, and one switch enables it. ECAD is the one row in this release that ships off; every other row ships on.

Why the row list collapsed. The Plugins page lists a bundle's rows flat and skips cordis:group containers (plugin-manager/src/index.ts: "Group rows are containers … their children carry the switches"), so a group switch is a shell feature, not a bundle one. Five product rows and three support rows with config is what a bundle can do on its own — no harness change to carry across DSH upgrades.

No capability policy. Earlier releases also carried a per-skill tool filter (policyOnly / toolPolicy) that gated tools by skill state. That filter is an AryaAI harness feature and is not part of this product line — @deepseek-ai/dsh-tool-skill here has no such config. Rows are the switch. Do not re-add a patch entry that targets another bundle's row: composition fails when the row is absent, and that is what made 0.4.0 and 0.4.1 uninstallable.

The reference in docs/reference/tools.md is generated from the registered definitions, and pnpm test fails when the committed reference drifts.

Status

Where each surface actually stands, based on what has been exercised.

Working and verified

  • L5X offline reads, references, usage, checks and comparison against revision 19+ projects
  • Staged L5X editing — fifteen draft_* tools, the instruction catalog, compose_rung, validation and one new file on apply
  • Logix Designer SDK: a real ACD exported to a 3.0 MB L5X against SDK v37
  • Supervised controller access — upload, mode change and download behind per-call approval, with downloads accepting only a verification id produced by a passed build
  • Live EtherNet/IP: polling, one-request batch reads of up to 64 tags, controller identity and clock, LAN discovery, and a bounded trend
  • Supervised live writes: write_live_tag and write_controller_clock need the row's allowWrites switch and per-call human approval, and report the value the controller reads back
  • FactoryTalk View ME: export reads, structural checks, comparison, display and tag edits, display and object authoring, vendor-schema validation, the vendor export path and object-level import verification; commissioned on a real Studio export (18 displays, 361 tags, no parse errors) and a real application export (13 displays, 19 files, 74 applications listed)
  • MotionWorks IEC: verified live against 3 Pro 1.19 — direct open with a verified pre-edit backup under .motionworks/attached, attach-without-reload to a project the IDE already has open, start, worksheet, close, saved-project reads, compile diagnostics, code replacement, declaration add, POU create/delete, block insertion and a POU package export/delete/import round trip
  • Ladder viewer and FactoryTalk View display preview
  • ECAD electrical prints: the engine parses all 34 sheets of a real print set into 83,936 primitives with zero unsupported and zero truncated layouts, reads title blocks, the 80-row index sheet, a 0.95-confidence profile from the ACADE WD_M attributes, 74 cross-reference candidates and 97 findings; all 34 sheets write → re-read → rebuild with zero model difference, and the sixteen tools are exercised through a fake Host composition (sandbox-policy writes, source untouched, explicit failure envelopes). The right-panel viewer and the DWG converter landed in the same batch.
  • ECAD DWG: the embedded acadrust 0.6.8 converter (WASM, 6.4 MB) converted 33/33 real DWGs in 1.17 s total with zero reader warnings, preserving each drawing's version (16 AC1027, 17 AC1032); DXF→DWG→DXF and DWG→DXF→DWG→DXF round trips were 0/0/0 on the measured sheets (one sheet showed only an anonymous-block rename), and the panel service opened a real DWG (title block 004), applied a redline to a new AC1027 DWG with verification.ok and dwgRoundTrip 0/0/0, leaving the source untouched. The DWG and DXF sets are different title-block issues, so equivalence is reported as measured (~90 % shared geometry) rather than as equality.

On by default — every tool surface except ECAD mounts on a fresh install; ECAD is listed and off until enabled, and its writes are off even then. Switch one off from the row's Configure page in Plugins (l5x editing/Studio/live/allowWrites, mwi edit, optix authoring/preview, ecad writes) when the profile is read-only or the request budget is tight. Tool schemas are sent on every request, so the lean profile is the one that turns them off.

Known limits — stated in the bundle, not hidden:

  • Live reads, SDK builds and live writes cannot establish that online logic matches the export; every result says so in coverage
  • FBD/SFC semantics are not exercised
  • FactoryTalk View import and runtime creation are Studio steps: the bundle exports through the vendor engine, authors and schema-validates the displays, writes the BatchImport manifest, and verifies the import object by object afterwards; it does not import or build a .mer
  • The vendor export does not include the HMI tag CSV, so tag bindings cannot be checked from a fresh export unless that database is exported separately
  • Optix is linked to a skill now: the factorytalk-optix guidance plus the NetLogic reader; the bridge tools still follow the optix row config and the Studio bridge
  • The generated tool reference covers the 149 tools built from this repository (133 default-on plus 16 ECAD tools that ship off); the 9 vendored Optix tools are not generated from source here, so their descriptions live only in their own definitions and in the README. The context budget's character ceiling covers the 133 default-on generated definitions only — the tool-count ceiling covers every default-on tool including Optix
  • ECAD support is measured, not assumed: cross-reference rows are candidates with a confidence, unsupported entities are reported per written file, the pinned writer does not carry ATTRIB vertical justification, and geometry beyond the planar drawing assumption (OCS/extrusion normals, thickness, non-uniform block scaling) is reported as approximate. DWG conversion is measured on the print set: every one of the 33 DWGs was opened, redlined, written to a new DWG and re-verified (33/33), with four sheets reporting linetype-metadata normalisation only. The CAD workspace covers the common edit/annotation surface with the limits named in the panel: line/polyline/circle/arc/ellipse grips stage their setters, while generic geometry and dimension grips still wait on engine setters; trim/extend are LINE against LINE; offset is LINE/CIRCLE/ARC; intersection snap covers straight segments only; entity colour is ACI 1–255 (ByLayer/ByBlock stay on the layer); mirror keeps text readable; only top-level entities edit in place; layer-table changes appear in the layer panel after apply/reopen; print uses the current view through the browser print dialog; PNG export rasterises the SVG through a browser canvas. The DWG converter now uses a fresh wasm instance per conversion with one transient-trap retry, and the test command runs one spec file per child process, because a reused allocator could abort after a long session. Proxy objects, ACIS bodies and xrefs remain unmeasured and are reported through the converter's diagnostics; a DWG write renumbers anonymous blocks, so verification compares geometry and text, not byte identity; DWG→DXF output is about 5× the shipped DXF because the shipped set is an exploded, block-purged export. No drawing is called a faithful round-trip without that evidence

Not in this repository — mechanical CAD mounts (SolidWorks, Inventor) remain an independent plugin; electrical drawings (DXF, and DWG through the embedded converter) are in this bundle.

Milestones

VersionWhat landed
0.8.0FactoryTalk View authoring: export through the vendor engine, author displays and objects in a schema-validated tree, stage a BatchImport handoff, and verify the import object by object
0.7.0Ladder generation that cannot emit invalid NeutralText: an instruction catalog, a pattern/tree composer that resolves and type-checks every operand, rung comments read and written, and a documentation bundle (document_project) with the Studio tags-and-comments CSV
0.5.0Commissioned on real files: FactoryTalk View reads genuine Studio exports (<gfx> displays, comma CSVs, UTF-16) instead of reporting zero; L5X alias resolution cuts 315 false "unresolved reference" findings to 16 on a 1279-tag project; add_tag no longer demands a value; a locked ACD exports from a copy
0.4.17MotionWorks edits the real project again: the pre-edit backup is written where the bridge and engine verify it, an already-open project is attached instead of reloaded, and mw_get returns the body hash the edit takes
0.4.15Every tool surface ships on by default; the row Configure pages switch them off
0.4.4One row per product: five rows, optional surfaces moved into each row's config
0.4.0Both previews fold into the bundle's own client face — one package, one browser bundle, 16 rows
0.4.6Full EtherNet/IP surface: batch reads, discovery, controller clock, and approval-gated tag and clock writes; 84 tools
0.3.0FactoryTalk Optix becomes a bundle component; 79 tools total
0.2.0MotionWorks IEC ports into the bundle — 24 tools over the COM bridge and saved-model engine, verified live; edit off by default
0.1.2Harness filesystem contract fixed across L5X and FactoryTalk View; every L5X tool linked to its capability by name; generated tool reference, examples and architecture docs

Install

Install Engineering from the market (Plugins → Arya Plugin Market → Engineering → Install or Update), then open a chat. The bundle carries its components (vendor/), its own browser face (both previews) and the rows; installing a component on its own gives you tools without the rows that switch them.

Manual install, for a profile managed by hand:

# in the AryaCode profile
pnpm add @aryacode/dsh-engineering
// profile package.json
"dsh": { "profile": { "bundles": ["@aryacode/dsh-engineering"] } }

Then, in the application, the Engineering card lists each row as a component. Per-row enable state lives in the profile, so disabling a row survives the next update.

First session after install: open the workspace folder that holds your export or project, then ask in plain language — "open Line.L5X and run the checks", "list the FactoryTalk View ME applications", "find the MotionWorks projects here". The agent picks the product's skill and tools; Getting started has the exact prompts and the boundaries.

For development, clone this repository, pnpm install, and link it into a profile bundle list; the development home mounts the same rows.

How it composes

The bundle adds one loader layer after the Web app: it inserts its own rows and never touches a row another bundle owns.

flowchart TB
  Profile["Profile bundle list"] --> Bundle["@aryacode/dsh-engineering"]
  Bundle -->|insert| L5X["l5x (on) — read + guidance + drafts / SDK / live"]
  Bundle -->|insert| FTV["ftview (on) — read, edits, Studio handoff"]
  Bundle -->|insert| MWI["mwi (on) — session, read, verify, edit"]
  Bundle -->|insert| ECAD["ecad (off) — DXF/DWG reads, review, drafts"]
  Bundle -->|insert| Viewers["viewers (on) — ladder, ME display and ECAD drawing previews"]
  Bundle -->|insert| Optix["optix (on)"]

Row ids are stable. Profiles and patches address these ids, so per-row enable state survives upgrades even when the implementation behind a row is replaced.

Row idPackage entryConfig options
l5xdsh-engineering-l5xediting on · studio on · live on · allowWrites on
ftviewdsh-engineering-ftviewedit on · studio on
mwidsh-engineering-mwiedit on
ecad@aryacode/dsh-engineering/ecad (sixteen drawing tools + the ecad-drafting skill)writes off · maxFiles 2000 · maxFileBytes 64 MiB · maxEntities 200000
viewers@aryacode/dsh-engineering (its own client face: ladder, ME display and ECAD drawing previews)—
optix@aryacode/dsh-engineering/optix (wraps the prebuilt @aryacode/dsh-tool-ft-optix)allowWrites on · allowDestructive on · allowInvoke on · preview on · netlogic on

Safety

  • Read-only by default. Reading, checks, comparison and the viewers never change a controller.
  • Edits write new files. draft_apply writes one new L5X beside the source and refuses to overwrite; ftview_apply writes a new export folder and leaves the source untouched. MotionWorks edits write the real workspace project, after one complete backup under <workspace>/backups/motionworks/, and verify unrelated saved and native state.
  • Drawing edits write new files. ecad_draft_apply and the panel's Edit mode write one new DXF (or DWG) beside the source and refuse to overwrite; the row's writes switch must be on first, review never writes, and a read-only session refuses. Drawing bytes are published through a policy-checked writer because the host filesystem service is text-only: the destination must stay inside the writable workspace, and the create guard is kept.
  • One backup tree. Every product backs up into <workspace>/backups/<product>/<subject>/<UTC stamp>/ with a backup-manifest.json naming each copied file and its SHA-256, so "back up this project" means the same place in every skill. MotionWorks takes its backup on open; L5X, FactoryTalk View and Optix take one on request and before an in-place change. <workspace>/_backups and <workspace>/backups/<project>/… are older layouts and are never written.
  • Controller changes need a human. Upload, mode change and download require per-call approval and a session policy that permits asking. The tools refuse before contacting a controller when approval is unavailable, and a download accepts only a verification id produced by a passed build.
  • Live writes take two keys. write_live_tag and write_controller_clock need the row's allowWrites switch and approval for that exact write; the tag is validated against the export first and the result is the value the controller reads back (WRITE_NOT_VERIFIED if it differs).
  • No hidden vendor execution. The FactoryTalk View Studio handoff returns a manual import plan; it does not run a vendor utility.
  • Coverage is stated. Every result names what it cannot establish, including whether online logic matches the export.

Requirements

SurfaceNeeds
L5X read, references, checks, draftsNode only; reads .L5X revision 19 or later
L5X Studio SDKStudio 5000 with the Logix Designer SDK service, FactoryTalk Linx, .NET
L5X controllerReachable controller, FactoryTalk Linx, a matching uploaded ACD
L5X liveA reachable controller over EtherNet/IP; no Studio, Linx or ACD
FactoryTalk View read, edit, authorNode only; a FactoryTalk View ME export folder, plus an installed Gfx-ME*.xsd for schema validation
FactoryTalk View exportFactoryTalk View ME Studio installed on the host (the export server runs without an open window)
FactoryTalk View StudioFactoryTalk View Studio ME for discovery and the manual import
MotionWorks IECMotionWorks IEC 3 Pro; the 32-bit COM bridge and the Python saved-model engine
ECAD read, review, draftsNode only; DXF drawings (DWG through the embedded converter, no external app); the row and its writes switch must be enabled before drafting
OptixFactoryTalk Optix Studio

Documentation

DocumentOwns
Documentation mapEvery page by task and by surface, with the figures and the records in one place
Getting startedThe first session: what each row needs, the shared loop, and a paste-ready prompt per product
Capabilities, shownFigures per surface, the exact call behind each one, and what a picture cannot prove
Arya Automation EngineerThe agent preset this bundle ships: the five-step contract, the engineering-tuned compaction, the ledger, and what a preset cannot make true
Engineering resourcesThe 41-page standards corpus, its rule IDs, the generated index, and the house-style profile
SLC 500 and PLC-5 to Logix migrationThe legacy assessment, the .L5K lint rules, the workflow and its limits
Workflow handbook (PDF)The whole surface as a printable handbook with the four workflow diagrams; editable DOCX and HTML beside it
Tool referenceEvery tool, parameter and description (generated)
Components

Development

pnpm install
pnpm build:client  # build both client faces from source, then lib/client.js
pnpm test          # patch, docs, tool-reference, manifest and client-face checks
pnpm e2e:ladder    # render the built ladder face in headless Chrome and assert on the DOM
pnpm e2e:routines  # the same judgement for every routine of one export
pnpm e2e:actions   # click and key through the pane and assert it answers
pnpm e2e:instructions  # one rung per catalogued instruction, rendered and judged
pnpm docs:tools    # regenerate the tool reference from the registered definitions
pnpm docs:check    # fail if the committed reference has drifted
python scripts/gen-diagrams.py   # regenerate docs/diagrams/*.svg and *.png
python scripts/gen-handbook.py   # rebuild the PDF, DOCX and HTML handbook from those figures

The diagrams and the handbook are generated, not hand-drawn: layout lives in scripts/gen-diagrams.py and the prose in scripts/gen-handbook.py, so a changed workflow is one edit and one regeneration. Both need Pillow; the handbook also needs python-docx and reportlab.

Tests run through tsx so they can read the TypeScript tool factories. A registered tool that no skill governs fails the suite — the policy is a test, not a convention.

Licence

MIT. See LICENSE.

ECAD
ecad_capabilities
ecad_compare
ecad_draft_*
ecad_verify
ecad_document
ecad_backup
ecad-drafting
WD_M
previewUrl
ocrExecutable
ocrLanguage
eng
ocrTessdataDirectory
netlogic
  • ECAD drawing preview: the committed face artifact was rendered in headless Chrome against a real corpus sheet — fit, pan, zoom, selection, layer hide, light and dark, zh and en, narrow panes, and the error, empty, truncated and DWG states — with zero console errors. The Dev AryaCode pass then opened a real DWG in the app's right panel: DWG badge, 213 entities, layer list, title-block fields and conversion provenance, with no client error.
  • ECAD CAD workspace: with the row's writes switch on, the drawing pane is a CAD-style editor. Selection is a set with Shift-add and Ctrl-toggle; left-drag on empty sheet draws an AutoCAD marquee — left→right is a blue window (fully enclosed), right→left a green crossing (anything touched); middle-drag, right-drag and Space+left-drag pan, the wheel zooms at the cursor, and a right-click menu carries Select all, Zoom extents/window, Pan, Move, Copy, Erase, Properties, Ask, Print and Export SVG. Selection shows grips (line endpoints, polyline vertices, circle radii, arc sweeps, ellipse axes, insertions) with live setter previews; object snaps cover endpoint, midpoint, centre, nearest, intersection and grid with F3/F7/F8 for osnap, grid and ortho; undo/redo over staged edits, Delete, Ctrl+A, Escape and a status line with world coordinates and selection count. The tool palette stages real engine operations with live previews and numeric entry: line, polyline, rectangle, circle, arc, revision cloud, leader, text and block insert; move, copy, rotate, scale, mirror, offset, trim, extend and erase. Properties edit text, block attribute values, layer and entity ACI colour (bulk layer/colour for a multi-selection); layers support visibility, current layer, lock and staged create/rename/color. Sheet actions keep apply as a new verified file (never overwrite), plus written-view toggle, print, SVG/PNG export, layout tabs, zoom extents and a one-click Expand drawing whole-window mode (Escape returns it to the sidebar). With writes off the same selection/navigation and print/export stay; every write control disappears. Verified by 38 new client tests and a 24-shot headless interaction harness (right-drag pan, marquee, multi-select, context menu, grips/setter previews, intersection snap, layer/colour staging, apply with verification 4/4, print, read-only, 10k-primitive sheet), inside a 398-test bundle suite.
  • ECAD conversation intelligence: every ecad_* tool renders as a themed card instead of the generic row — open (DXF/DWG badge, conversion warnings, coverage, title block), scan, checks (severity counts and findings), cross-reference (candidate confidence), render (layout and SVG path) and draft_apply (verified badge, output path, counters, DWG round-trip split, “Open written drawing”) are specialised, the rest use labelled field cards; errors print code/message/fix and malformed payloads never invent counts. A dock chip above the composer reports the workspace's drawing/DWG count, profile state and writes state, hiding itself when there is nothing to report.
  • What a component is, the capability classes, the manifest fields, and the checklist for adding one
    ExamplesEnd-to-end sessions per product
    Any FTView applicationWhat is generic, what varies per application, and the import/verify loop
    Cross-referencing HMI against PLCJoin an export's tags to a Studio 5000 L5X: device addresses, display usage, logic usage, one-sided tags
    Optix NetLogicThe pinned NetLogic cheat-sheet snapshot: what it covers, its risk flags, and how one page is read
    Standards checksEvery PLC and HMI rule a review reports, its severity, the corpus rule behind it and what a clean result does not prove
    ArchitectureComposition, row model, configuration, client faces, packaging
    L5X portL5X port decisions and measurements
    ECAD portECAD engine measurements, the DWG converter decision and the Typert panel service
    FTView portFactoryTalk View port decisions
    MotionWorks IEC portMWI migration design, phases and inventory
    PackagingHow the bundle is packed and pinned
    RetirementWhat "gone" means for a retired plugin
    ChangelogReleased and unreleased changes