@huaqiu/dsh-hqsch 0.4.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +43 -0
- package/cordis.patch.yml +13 -0
- package/lib/index.d.mts +98 -0
- package/lib/index.mjs +159 -0
- package/package.json +40 -0
- package/skills/hqsch-scenario-b/AGENTS.md +209 -0
- package/skills/hqsch-scenario-b/CLAUDE.md +209 -0
- package/skills/hqsch-scenario-b/INSTALL.md +140 -0
- package/skills/hqsch-scenario-b/SKILL.md +107 -0
- package/skills/hqsch-scenario-b/SYSTEM-PROMPT.md +209 -0
- package/skills/hqsch-scenario-b/docs/circuit-pattern-layout.md +304 -0
- package/skills/hqsch-scenario-b/docs/editing-a-circuit.md +167 -0
- package/skills/hqsch-scenario-b/docs/part-search.md +244 -0
- package/skills/hqsch-scenario-b/docs/placement-conventions.md +714 -0
- package/skills/hqsch-scenario-b/docs/property-conventions.md +225 -0
- package/skills/hqsch-scenario-b/docs/quickstart.md +99 -0
- package/skills/hqsch-scenario-b/docs/reading-a-circuit.md +317 -0
- package/skills/hqsch-scenario-b/docs/rpc/canvas-auto-connect-objects-by-id.md +98 -0
- package/skills/hqsch-scenario-b/docs/rpc/canvas-delete-objects-by-ids.md +94 -0
- package/skills/hqsch-scenario-b/docs/rpc/canvas-find-object-by-property.md +101 -0
- package/skills/hqsch-scenario-b/docs/rpc/canvas-list-wire-segments.md +94 -0
- package/skills/hqsch-scenario-b/docs/rpc/canvas-mirror-objects-by-ids.md +96 -0
- package/skills/hqsch-scenario-b/docs/rpc/canvas-rotate-objects-by-ids.md +94 -0
- package/skills/hqsch-scenario-b/docs/rpc/canvas-set-object-property.md +99 -0
- package/skills/hqsch-scenario-b/docs/rpc/canvas-zoom-all.md +92 -0
- package/skills/hqsch-scenario-b/docs/rpc/find-find-object.md +96 -0
- package/skills/hqsch-scenario-b/docs/rpc/kernel-get-snapshot.md +104 -0
- package/skills/hqsch-scenario-b/docs/rpc/netlist-get-active-page-net-list.md +87 -0
- package/skills/hqsch-scenario-b/docs/rpc/netlist-get-port-pairing.md +34 -0
- package/skills/hqsch-scenario-b/docs/rpc/obj-place-place-pin-stub-wire-and-net-alias.md +114 -0
- package/skills/hqsch-scenario-b/docs/rpc/pattern-layout-apply-circuit-pattern.md +125 -0
- package/skills/hqsch-scenario-b/docs/rpc/pattern-layout-get-page-occupancy.md +100 -0
- package/skills/hqsch-scenario-b/docs/rpc/pattern-layout-list-circuit-patterns.md +97 -0
- package/skills/hqsch-scenario-b/docs/rpc/placement-list-part-libraries.md +94 -0
- package/skills/hqsch-scenario-b/docs/rpc/placement-list-symbol-libraries.md +94 -0
- package/skills/hqsch-scenario-b/docs/rpc/placement-place-kicad-symbol.md +105 -0
- package/skills/hqsch-scenario-b/docs/rpc/placement-place-part-from-library.md +106 -0
- package/skills/hqsch-scenario-b/docs/rpc/placement-place-symbol-from-library.md +108 -0
- package/skills/hqsch-scenario-b/docs/rpc/project-get-active-project.md +96 -0
- package/skills/hqsch-scenario-b/docs/rpc/project-list-open-projects.md +99 -0
- package/skills/hqsch-scenario-b/docs/rpc-availability.md +97 -0
- package/skills/hqsch-scenario-b/docs/rpc-index/canvas.md +81 -0
- package/skills/hqsch-scenario-b/docs/rpc-index/find.md +36 -0
- package/skills/hqsch-scenario-b/docs/rpc-index/kernel.md +36 -0
- package/skills/hqsch-scenario-b/docs/rpc-index/netlist.md +38 -0
- package/skills/hqsch-scenario-b/docs/rpc-index/obj-place.md +76 -0
- package/skills/hqsch-scenario-b/docs/rpc-index/pattern-layout.md +38 -0
- package/skills/hqsch-scenario-b/docs/rpc-index/placement.md +48 -0
- package/skills/hqsch-scenario-b/docs/rpc-index/project.md +47 -0
- package/skills/hqsch-scenario-b/docs/serialization.md +60 -0
- package/skills/hqsch-scenario-b/docs/skill-dependencies.md +93 -0
- package/skills/hqsch-scenario-b/skill.json +13 -0
- package/skills/hqsch-scenario-b/template/package.json +16 -0
- package/skills/hqsch-scenario-b/template/scripts/edit-property-by-ref.ts +44 -0
- package/skills/hqsch-scenario-b/template/scripts/fix-designators.ts +52 -0
- package/skills/hqsch-scenario-b/template/scripts/hello.ts +46 -0
- package/skills/hqsch-scenario-b/template/scripts/read-circuit.ts +357 -0
- package/skills/hqsch-scenario-b/template/scripts/replace-part-by-ref.ts +44 -0
- package/skills/hqsch-scenario-b/template/scripts/rewire-pin-by-ref.ts +42 -0
- package/skills/hqsch-scenario-b/template/tsconfig.json +11 -0
- package/src/config.ts +25 -0
- package/src/index.ts +186 -0
- package/src/paths.ts +48 -0
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: placement-place-symbol-from-library
|
|
3
|
+
metadata:
|
|
4
|
+
category: placement
|
|
5
|
+
service: ComponentPlaceService
|
|
6
|
+
method: PlaceSymbolFromLibrary
|
|
7
|
+
rpcKind: unary
|
|
8
|
+
description: >-
|
|
9
|
+
Place GND/VCC/power, port, or off-page symbol from symbol libraries. Invoke for power symbols and connectivity markers — call ListSymbolLibraries first; do NOT use PlaceSymbol.
|
|
10
|
+
version: 0.1.0
|
|
11
|
+
vendor: Huaqiu Electronics
|
|
12
|
+
tags:
|
|
13
|
+
- eda
|
|
14
|
+
- huaqiu
|
|
15
|
+
- placement
|
|
16
|
+
entry: "@huaqiu/hqeda"
|
|
17
|
+
manifest: "@huaqiu/hqeda/skill.json"
|
|
18
|
+
inputSchema:
|
|
19
|
+
name: PlaceSymbolFromLibraryRequestSchema
|
|
20
|
+
namespace: HqServicesV1ComponentPlaceService
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Place Symbol From Library
|
|
24
|
+
|
|
25
|
+
Place GND/VCC/power, port, or off-page symbol from symbol libraries. Invoke for power symbols and connectivity markers — call ListSymbolLibraries first; do NOT use PlaceSymbol.
|
|
26
|
+
|
|
27
|
+
## Overview
|
|
28
|
+
|
|
29
|
+
This skill provides access to the **`ComponentPlaceService.PlaceSymbolFromLibrary`** RPC method on the Huaqiu EDA engine. It is part of the **placement** domain and executes against the `componentPlace` client.
|
|
30
|
+
|
|
31
|
+
| Property | Value |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| Skill ID | `placement-place-symbol-from-library` |
|
|
34
|
+
| Service | `ComponentPlaceService` |
|
|
35
|
+
| Method | `PlaceSymbolFromLibrary` |
|
|
36
|
+
| Transport | Unary (unary) |
|
|
37
|
+
| Domain | placement |
|
|
38
|
+
| Request type | `PlaceSymbolFromLibraryRequest` |
|
|
39
|
+
| Response type | `ObjectPlaceResponse` |
|
|
40
|
+
|
|
41
|
+
## Parameters
|
|
42
|
+
|
|
43
|
+
| Name | Type | Required | Repeated | Description |
|
|
44
|
+
| --- | --- | --- | --- | --- |
|
|
45
|
+
| `context` | `ProjectContext` | no | no | — |
|
|
46
|
+
| `localPos` | `Vector2i64` | no | no | — |
|
|
47
|
+
| `libraryName` | `string` | yes | no | — |
|
|
48
|
+
| `symbolName` | `string` | yes | no | Desired symbol / net name such as "VCC_5V" — matched approximately, but only among the symbols of the library resolved from library_name / library_file_path (never across libraries, so keep calling ListSymbolLibraries first to pick the library); exact, case-insensitive and separator-boundary hits outrank plain substring hits, so "VCC_5V" resolves to the library symbol "VCC" while "GND" never resolves to "VCC_5V". |
|
|
49
|
+
| `libraryFilePath` | `string` | yes | no | — |
|
|
50
|
+
| `kind` | `LibrarySymbolKind` | yes | no | — |
|
|
51
|
+
| `netName` | `string` | yes | no | Written to the "Name" user property of this placed instance only — the shared library / design cache definition keeps its original name; empty means "same as symbol_name", so passing symbol_name = "VCC_5V" alone places the "VCC" symbol labelled "VCC_5V". |
|
|
52
|
+
|
|
53
|
+
## Response
|
|
54
|
+
|
|
55
|
+
Returns a `ObjectPlaceResponse` message with the following fields:
|
|
56
|
+
|
|
57
|
+
| Name | Type | Repeated | Description |
|
|
58
|
+
| --- | --- | --- | --- |
|
|
59
|
+
| `success` | `boolean` | no | — |
|
|
60
|
+
| `objectId` | `bigint` | no | Canvas object id (objBase::m_nID). For part/symbol placement (PlacePart / PlacePartFromLibrary / PlaceKicadSymbol / PlaceSymbol / PlaceSymbolFromLibrary), this is the schem_part_enc container id — same as kernel snapshot symbol_instances[].canvas_object_id and pin_instances[].canvas_object_id. |
|
|
61
|
+
| `objectIds` | `bigint[]` | yes | All placed section object ids (PlaceKicadSymbol multi-section loop). |
|
|
62
|
+
| `sectionCount` | `number` | no | Number of sections in the package (GetSectionCount); set by PlaceKicadSymbol when available. |
|
|
63
|
+
|
|
64
|
+
## Response Example
|
|
65
|
+
|
|
66
|
+
Representative response structure (field values are placeholders):
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"success": false,
|
|
71
|
+
"objectId": "123456789",
|
|
72
|
+
"objectIds": [
|
|
73
|
+
"123456789"
|
|
74
|
+
],
|
|
75
|
+
"sectionCount": 0
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Prerequisites
|
|
80
|
+
|
|
81
|
+
- [project-get-active-project](../../project/get-active-project/SKILL.md) — Discover the active project before building project-scoped context.
|
|
82
|
+
|
|
83
|
+
See also [skill-dependencies.md](../../references/skill-dependencies.md) for common workflows.
|
|
84
|
+
|
|
85
|
+
## How to Use
|
|
86
|
+
|
|
87
|
+
Execute via the HQ EDA skill runtime with a connected `EditorClient`. See [quickstart.md](../../references/quickstart.md) for the full `listEditors` → `connect` → `getSkill` → `execute` chain.
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
import { getSkill, toJsonString } from "@huaqiu/hqeda";
|
|
91
|
+
|
|
92
|
+
const skill = getSkill("placement-place-symbol-from-library");
|
|
93
|
+
const result = await skill.execute({ client }, {
|
|
94
|
+
context: "<ProjectContext via client.createProjectContext('my-project')>",
|
|
95
|
+
localPos: {"x":0,"y":0},
|
|
96
|
+
libraryName: "Device",
|
|
97
|
+
});
|
|
98
|
+
console.log(toJsonString(result, { prettySpaces: 2 }));
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Serialize responses with `toJsonString()` — see [serialization.md](../../references/serialization.md).
|
|
102
|
+
|
|
103
|
+
## Related Skills
|
|
104
|
+
|
|
105
|
+
- Other **placement** skills: [`placement/`](../)
|
|
106
|
+
- Full index: [All EDA skills](../../SKILL.md)
|
|
107
|
+
- Install: `npx skills add Huaqiu-Electronics/skills --path eda/placement/place-symbol-from-library`
|
|
108
|
+
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-get-active-project
|
|
3
|
+
metadata:
|
|
4
|
+
category: project
|
|
5
|
+
service: ProjectService
|
|
6
|
+
method: GetActiveProject
|
|
7
|
+
rpcKind: unary
|
|
8
|
+
description: >-
|
|
9
|
+
Returns the project currently active in the editor UI.
|
|
10
|
+
version: 0.1.0
|
|
11
|
+
vendor: Huaqiu Electronics
|
|
12
|
+
tags:
|
|
13
|
+
- eda
|
|
14
|
+
- huaqiu
|
|
15
|
+
- project
|
|
16
|
+
entry: "@huaqiu/hqeda"
|
|
17
|
+
manifest: "@huaqiu/hqeda/skill.json"
|
|
18
|
+
inputSchema:
|
|
19
|
+
name: GetActiveProjectRequestSchema
|
|
20
|
+
namespace: HqServicesV1ProjectService
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# Get Active Project
|
|
24
|
+
|
|
25
|
+
Returns the project currently active in the editor UI.
|
|
26
|
+
|
|
27
|
+
## Overview
|
|
28
|
+
|
|
29
|
+
This skill provides access to the **`ProjectService.GetActiveProject`** RPC method on the Huaqiu EDA engine. It is part of the **project** domain and executes against the `project` client.
|
|
30
|
+
|
|
31
|
+
| Property | Value |
|
|
32
|
+
| --- | --- |
|
|
33
|
+
| Skill ID | `project-get-active-project` |
|
|
34
|
+
| Service | `ProjectService` |
|
|
35
|
+
| Method | `GetActiveProject` |
|
|
36
|
+
| Transport | Unary (unary) |
|
|
37
|
+
| Domain | project |
|
|
38
|
+
| Request type | `GetActiveProjectRequest` |
|
|
39
|
+
| Response type | `GetActiveProjectResponse` |
|
|
40
|
+
|
|
41
|
+
## Parameters
|
|
42
|
+
|
|
43
|
+
| Name | Type | Required | Repeated | Description |
|
|
44
|
+
| --- | --- | --- | --- | --- |
|
|
45
|
+
| `context` | `EditorContext` | no | no | — |
|
|
46
|
+
|
|
47
|
+
## Response
|
|
48
|
+
|
|
49
|
+
Returns a `GetActiveProjectResponse` message with the following fields:
|
|
50
|
+
|
|
51
|
+
| Name | Type | Repeated | Description |
|
|
52
|
+
| --- | --- | --- | --- |
|
|
53
|
+
| `project` | `ProjectMetadata` | no | — |
|
|
54
|
+
|
|
55
|
+
## Usage Examples
|
|
56
|
+
|
|
57
|
+
### getActiveProject returns the active project
|
|
58
|
+
|
|
59
|
+
```json
|
|
60
|
+
{
|
|
61
|
+
"context": "<ProjectContext via client.createProjectContext('my-project')>"
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
## Response Example
|
|
66
|
+
|
|
67
|
+
Representative response structure (field values are placeholders):
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"project": {}
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## How to Use
|
|
76
|
+
|
|
77
|
+
Execute via the HQ EDA skill runtime with a connected `EditorClient`. See [quickstart.md](../../references/quickstart.md) for the full `listEditors` → `connect` → `getSkill` → `execute` chain.
|
|
78
|
+
|
|
79
|
+
```typescript
|
|
80
|
+
import { getSkill, toJsonString } from "@huaqiu/hqeda";
|
|
81
|
+
|
|
82
|
+
const skill = getSkill("project-get-active-project");
|
|
83
|
+
const result = await skill.execute({ client }, {
|
|
84
|
+
context: "<ProjectContext via client.createProjectContext('my-project')>",
|
|
85
|
+
});
|
|
86
|
+
console.log(toJsonString(result, { prettySpaces: 2 }));
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Serialize responses with `toJsonString()` — see [serialization.md](../../references/serialization.md).
|
|
90
|
+
|
|
91
|
+
## Related Skills
|
|
92
|
+
|
|
93
|
+
- Other **project** skills: [`project/`](../)
|
|
94
|
+
- Full index: [All EDA skills](../../SKILL.md)
|
|
95
|
+
- Install: `npx skills add Huaqiu-Electronics/skills --path eda/project/get-active-project`
|
|
96
|
+
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-list-open-projects
|
|
3
|
+
metadata:
|
|
4
|
+
category: project
|
|
5
|
+
service: ProjectService
|
|
6
|
+
method: ListOpenProjects
|
|
7
|
+
rpcKind: unary
|
|
8
|
+
description: >-
|
|
9
|
+
Returns all projects currently opened in this HQ EDA process. Use response.projects[].name as project_name in subsequent RPCs.
|
|
10
|
+
version: 0.1.0
|
|
11
|
+
vendor: Huaqiu Electronics
|
|
12
|
+
tags:
|
|
13
|
+
- eda
|
|
14
|
+
- huaqiu
|
|
15
|
+
- project
|
|
16
|
+
entry: "@huaqiu/hqeda"
|
|
17
|
+
manifest: "@huaqiu/hqeda/skill.json"
|
|
18
|
+
inputSchema:
|
|
19
|
+
name: ListOpenProjectsRequestSchema
|
|
20
|
+
namespace: HqServicesV1ProjectService
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
# List Open Projects
|
|
24
|
+
|
|
25
|
+
Returns all projects currently opened in this HQ EDA process.
|
|
26
|
+
Use response.projects[].name as project_name in subsequent RPCs.
|
|
27
|
+
|
|
28
|
+
## Overview
|
|
29
|
+
|
|
30
|
+
This skill provides access to the **`ProjectService.ListOpenProjects`** RPC method on the Huaqiu EDA engine. It is part of the **project** domain and executes against the `project` client.
|
|
31
|
+
|
|
32
|
+
| Property | Value |
|
|
33
|
+
| --- | --- |
|
|
34
|
+
| Skill ID | `project-list-open-projects` |
|
|
35
|
+
| Service | `ProjectService` |
|
|
36
|
+
| Method | `ListOpenProjects` |
|
|
37
|
+
| Transport | Unary (unary) |
|
|
38
|
+
| Domain | project |
|
|
39
|
+
| Request type | `ListOpenProjectsRequest` |
|
|
40
|
+
| Response type | `ListOpenProjectsResponse` |
|
|
41
|
+
|
|
42
|
+
## Parameters
|
|
43
|
+
|
|
44
|
+
| Name | Type | Required | Repeated | Description |
|
|
45
|
+
| --- | --- | --- | --- | --- |
|
|
46
|
+
| `context` | `EditorContext` | no | no | — |
|
|
47
|
+
|
|
48
|
+
## Response
|
|
49
|
+
|
|
50
|
+
Returns a `ListOpenProjectsResponse` message with the following fields:
|
|
51
|
+
|
|
52
|
+
| Name | Type | Repeated | Description |
|
|
53
|
+
| --- | --- | --- | --- |
|
|
54
|
+
| `projects` | `ProjectMetadata[]` | yes | Use ProjectMetadata.name as project_name in AddPageToProject / ActivatePageInProject. |
|
|
55
|
+
|
|
56
|
+
## Usage Examples
|
|
57
|
+
|
|
58
|
+
### lists open projects via editor context
|
|
59
|
+
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"context": "<ProjectContext via client.createProjectContext('my-project')>"
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Response Example
|
|
67
|
+
|
|
68
|
+
Representative response structure (field values are placeholders):
|
|
69
|
+
|
|
70
|
+
```json
|
|
71
|
+
{
|
|
72
|
+
"projects": [
|
|
73
|
+
{}
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## How to Use
|
|
79
|
+
|
|
80
|
+
Execute via the HQ EDA skill runtime with a connected `EditorClient`. See [quickstart.md](../../references/quickstart.md) for the full `listEditors` → `connect` → `getSkill` → `execute` chain.
|
|
81
|
+
|
|
82
|
+
```typescript
|
|
83
|
+
import { getSkill, toJsonString } from "@huaqiu/hqeda";
|
|
84
|
+
|
|
85
|
+
const skill = getSkill("project-list-open-projects");
|
|
86
|
+
const result = await skill.execute({ client }, {
|
|
87
|
+
context: "<ProjectContext via client.createProjectContext('my-project')>",
|
|
88
|
+
});
|
|
89
|
+
console.log(toJsonString(result, { prettySpaces: 2 }));
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Serialize responses with `toJsonString()` — see [serialization.md](../../references/serialization.md).
|
|
93
|
+
|
|
94
|
+
## Related Skills
|
|
95
|
+
|
|
96
|
+
- Other **project** skills: [`project/`](../)
|
|
97
|
+
- Full index: [All EDA skills](../../SKILL.md)
|
|
98
|
+
- Install: `npx skills add Huaqiu-Electronics/skills --path eda/project/list-open-projects`
|
|
99
|
+
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
# RPC availability (scenario-b engine build)
|
|
2
|
+
|
|
3
|
+
Use this table instead of trial-and-error. **Do not build flows on unimplemented
|
|
4
|
+
or hollow APIs.** Comprehension toolbox = `kernel.GetSnapshot` + `netList.*`.
|
|
5
|
+
|
|
6
|
+
Measured against a live HQ EDA build used with this skill. Status can change
|
|
7
|
+
across builds; when in doubt, prefer the ban list below over optimistic use.
|
|
8
|
+
You do **not** need to call `GetCapabilities` on every task — keep this table
|
|
9
|
+
as the default map.
|
|
10
|
+
|
|
11
|
+
## Performance baselines (order-of-magnitude, not SLA)
|
|
12
|
+
|
|
13
|
+
| Operation | Typical range |
|
|
14
|
+
| --- | --- |
|
|
15
|
+
| `kernel.GetSnapshot` (whole project) | ~1.6–3.2 s |
|
|
16
|
+
| `netList.GetProjectNetList` | ~2.3–3.1 s (page netlist often ~20–30 ms) |
|
|
17
|
+
| Single `applyCircuitPattern` / host placement script | ~15–20 s (jitter OK; do not treat as a bug) |
|
|
18
|
+
|
|
19
|
+
Do not reverse-engineer “performance regression” from a single hang: some
|
|
20
|
+
unimplemented RPCs historically blocked for minutes before returning a clean
|
|
21
|
+
`unimplemented` in ~2 ms. Prefer this table over timeout guessing.
|
|
22
|
+
|
|
23
|
+
## Works — OK for flows
|
|
24
|
+
|
|
25
|
+
| Service | Method | Role |
|
|
26
|
+
| --- | --- | --- |
|
|
27
|
+
| `kernel` | `GetSnapshot` | **Primary** read-circuit / verify source (project-wide) |
|
|
28
|
+
| `netList` | `GetProjectNetList` / `GetActivePageNetList` / `GetSelectionNetList` | Netlist semantics; accessor is **`netList`** (capital L) |
|
|
29
|
+
| `canvasOps` / pattern host | `GetPageOccupancy` | Object registration poll after place |
|
|
30
|
+
| `canvasOps` | `ListWireSegments` | Wire stats — field is **`wires`**, not `wireSegments` |
|
|
31
|
+
| `canvasOps` | `GetObjectsJsonByIds` / `GetObjectJsonById` | Optional deep object JSON (advanced) |
|
|
32
|
+
| `find` | `FindObject` | Optional object query (advanced; not Flow B primary) |
|
|
33
|
+
| `project` | `ListOpenProjects` / `GetProject` / `GetActiveProject` | Project identity |
|
|
34
|
+
| `capability` | `GetCapabilities` | Optional probe; not required every task |
|
|
35
|
+
| placement / pattern / part-search RPCs | (see placement + pattern docs) | Draw path |
|
|
36
|
+
|
|
37
|
+
## Unimplemented — **forbid** as flow dependencies
|
|
38
|
+
|
|
39
|
+
These return `unimplemented` quickly (~2 ms) in current builds. Skill must not
|
|
40
|
+
wait on product to implement them for scenario-b:
|
|
41
|
+
|
|
42
|
+
| Service | Methods |
|
|
43
|
+
| --- | --- |
|
|
44
|
+
| `graph` | `GetConnectivity`, `QueryGraph` |
|
|
45
|
+
| `kernel` | `GetEntity` |
|
|
46
|
+
| `erc` | `RunChecks` |
|
|
47
|
+
| `selection` | `GetSelection`, `SetSelection`, `ClearSelection` |
|
|
48
|
+
| `export` | `ExportBOM`, `ExportTarget` |
|
|
49
|
+
| `runtime` | `Validate` / `ValidateCommands`, `ExecuteCommands` |
|
|
50
|
+
| `context` | `GetContext` |
|
|
51
|
+
| `transaction` | `Open` (and related) |
|
|
52
|
+
|
|
53
|
+
Read-circuit pin↔net joins use **snapshot three-table recipe** instead of a
|
|
54
|
+
real connectivity graph. That is intentional for this skill.
|
|
55
|
+
|
|
56
|
+
## Hollow / misleading — worse than unimplemented
|
|
57
|
+
|
|
58
|
+
| Service | Method | Behavior | What to do |
|
|
59
|
+
| --- | --- | --- | --- |
|
|
60
|
+
| `project` | `ListProjectTree` | Empty tree / `error:3` | Do not use for navigation |
|
|
61
|
+
| `find` | `FindNet` | Often **`success: false` with no error** | **Never** treat as “net missing”; use snapshot `nets` |
|
|
62
|
+
|
|
63
|
+
Engine-side improvement (optional, not a skill blocker): make `FindNet` return
|
|
64
|
+
explicit `unimplemented` instead of silent false. Until then, agents must
|
|
65
|
+
ignore it.
|
|
66
|
+
|
|
67
|
+
## Out of main path (ignore for scenario-b flows)
|
|
68
|
+
|
|
69
|
+
| Item | Why ignore |
|
|
70
|
+
| --- | --- |
|
|
71
|
+
| `import.ImportDesign` as a core step | Interface may respond, but depends on `*.kicad_pro` layout; not draw/read main path |
|
|
72
|
+
| Forcing `GetCapabilities` every task | Availability changes slowly; this doc + ban list is enough |
|
|
73
|
+
| Implementing selection / export / runtime / true `GetConnectivity` for skill | Product backlog; skill already bans them |
|
|
74
|
+
| Treating place-time jitter or `ECONNRESET` as skill defects | Retry; keep 15–20 s placement expectation |
|
|
75
|
+
|
|
76
|
+
## Naming pitfall
|
|
77
|
+
|
|
78
|
+
| Correct | Wrong | Effect |
|
|
79
|
+
| --- | --- | --- |
|
|
80
|
+
| `client.netList` | `client.netlist` | Entire service is `undefined` |
|
|
81
|
+
|
|
82
|
+
## Skill-side workarounds (until engine P2)
|
|
83
|
+
|
|
84
|
+
These engine gaps are **not blockers** for Flow B (read) or Flow C (local edit).
|
|
85
|
+
The skill documents the workaround; product may implement later.
|
|
86
|
+
|
|
87
|
+
| Gap | Current behavior | Skill workaround |
|
|
88
|
+
| --- | --- | --- |
|
|
89
|
+
| No authoritative connectivity graph | `graph.GetConnectivity` unimplemented | Snapshot three-table join + client BFS for series C/R/L/FB ([reading-a-circuit.md](./reading-a-circuit.md) § Series traversal) |
|
|
90
|
+
| Coupling vs decoupling cap | No `componentClass` / role | Heuristic: shunt cap with one leg on POWER/GROUND netClass → no series bridge |
|
|
91
|
+
| Per-pin wire ids for disconnect | Not exposed | Prefer `autoConnectObjectsById` or `placePinStubWireAndNetAlias`; avoid blind bulk wire delete ([editing-a-circuit.md](./editing-a-circuit.md)) |
|
|
92
|
+
| `FindNet` silent false | Misleading empty result | **Never use**; query `snapshot.nets` by name |
|
|
93
|
+
| `selection.*` | Unimplemented | Locate by designator / net via snapshot + `FindObjectByProperty` |
|
|
94
|
+
| Transaction / undo group | `transaction.Open` unimplemented | Each RPC `commitUndo: true`; accept multi-step undo |
|
|
95
|
+
|
|
96
|
+
When `GetConnectivity` returns typed edges (`sameNet`, `seriesPassive`, …), replace
|
|
97
|
+
the client BFS in `read-circuit.ts` — keep the same CLI flags (`TRACE=1`).
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: eda-canvas
|
|
3
|
+
metadata:
|
|
4
|
+
category: canvas
|
|
5
|
+
description: >-
|
|
6
|
+
Canvas operations for Huaqiu EDA. Invoke when selecting, moving, wiring, or editing objects on the active schematic page.
|
|
7
|
+
version: 0.1.0
|
|
8
|
+
vendor: Huaqiu Electronics
|
|
9
|
+
tags:
|
|
10
|
+
- eda
|
|
11
|
+
- huaqiu
|
|
12
|
+
- canvas
|
|
13
|
+
entry: "@huaqiu/hqeda"
|
|
14
|
+
manifest: "@huaqiu/hqeda/skill.json"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Canvas Skills
|
|
18
|
+
|
|
19
|
+
Canvas operations for Huaqiu EDA. Invoke when selecting, moving, wiring, or editing objects on the active schematic page.
|
|
20
|
+
|
|
21
|
+
## Available Capabilities
|
|
22
|
+
|
|
23
|
+
Total: **47** skills in the **canvas** domain.
|
|
24
|
+
|
|
25
|
+
| Skill | Description | Streaming |
|
|
26
|
+
| --- | --- | --- |
|
|
27
|
+
| [`align-objects`](align-objects/SKILL.md) | transform | no |
|
|
28
|
+
| [`align-objects-by-ids`](align-objects-by-ids/SKILL.md) | Align Objects By Ids via CanvasOpsService.AlignObjectsByIds | no |
|
|
29
|
+
| [`auto-connect-objects-by-id`](auto-connect-objects-by-id/SKILL.md) | Auto Connect Objects By Id via CanvasOpsService.AutoConnectObjectsById | no |
|
|
30
|
+
| [`can-paste`](can-paste/SKILL.md) | Can Paste via CanvasOpsService.CanPaste | no |
|
|
31
|
+
| [`clear-all-sel`](clear-all-sel/SKILL.md) | selection | no |
|
|
32
|
+
| [`copy-objects-by-ids`](copy-objects-by-ids/SKILL.md) | Copy Objects By Ids via CanvasOpsService.CopyObjectsByIds | no |
|
|
33
|
+
| [`copy-selected`](copy-selected/SKILL.md) | Copy Selected via CanvasOpsService.CopySelected | no |
|
|
34
|
+
| [`delete-object-by-id`](delete-object-by-id/SKILL.md) | Delete Object By Id via CanvasOpsService.DeleteObjectById | no |
|
|
35
|
+
| [`delete-objects-by-ids`](delete-objects-by-ids/SKILL.md) | Delete Objects By Ids via CanvasOpsService.DeleteObjectsByIds | no |
|
|
36
|
+
| [`delete-selected`](delete-selected/SKILL.md) | edit | no |
|
|
37
|
+
| [`distribute-objects`](distribute-objects/SKILL.md) | Distribute Objects via CanvasOpsService.DistributeObjects | no |
|
|
38
|
+
| [`distribute-objects-by-ids`](distribute-objects-by-ids/SKILL.md) | Distribute Objects By Ids via CanvasOpsService.DistributeObjectsByIds | no |
|
|
39
|
+
| [`find-object-by-property`](find-object-by-property/SKILL.md) | object property | no |
|
|
40
|
+
| [`get-align-type`](get-align-type/SKILL.md) | Get Align Type via CanvasOpsService.GetAlignType | no |
|
|
41
|
+
| [`get-object-json-by-id`](get-object-json-by-id/SKILL.md) | Get Object Json By Id via CanvasOpsService.GetObjectJsonById | no |
|
|
42
|
+
| [`get-object-property`](get-object-property/SKILL.md) | Get Object Property via CanvasOpsService.GetObjectProperty | no |
|
|
43
|
+
| [`get-objects-json-by-ids`](get-objects-json-by-ids/SKILL.md) | Get Objects Json By Ids via CanvasOpsService.GetObjectsJsonByIds | no |
|
|
44
|
+
| [`get-selected-object-json`](get-selected-object-json/SKILL.md) | Get Selected Object Json via CanvasOpsService.GetSelectedObjectJson | no |
|
|
45
|
+
| [`get-selected-objects-json`](get-selected-objects-json/SKILL.md) | Get Selected Objects Json via CanvasOpsService.GetSelectedObjectsJson | no |
|
|
46
|
+
| [`list-wire-segments`](list-wire-segments/SKILL.md) | List Wire Segments via CanvasOpsService.ListWireSegments | no |
|
|
47
|
+
| [`mirror-objects`](mirror-objects/SKILL.md) | mode: 1\|2\|3 required; 0=no-op | no |
|
|
48
|
+
| [`mirror-objects-by-ids`](mirror-objects-by-ids/SKILL.md) | mode: 1\|2\|3 required; 0=no-op | no |
|
|
49
|
+
| [`move-objects-by-ids`](move-objects-by-ids/SKILL.md) | Move Objects By Ids via CanvasOpsService.MoveObjectsByIds | no |
|
|
50
|
+
| [`move-selected-objs`](move-selected-objs/SKILL.md) | Move Selected Objs via CanvasOpsService.MoveSelectedObjs | no |
|
|
51
|
+
| [`on-canvas-escape`](on-canvas-escape/SKILL.md) | state | no |
|
|
52
|
+
| [`pan-canvas`](pan-canvas/SKILL.md) | viewport | no |
|
|
53
|
+
| [`paste-selected`](paste-selected/SKILL.md) | Paste Selected via CanvasOpsService.PasteSelected | no |
|
|
54
|
+
| [`redo`](redo/SKILL.md) | Redo via CanvasOpsService.Redo | no |
|
|
55
|
+
| [`rotate-objects`](rotate-objects/SKILL.md) | Rotate Objects via CanvasOpsService.RotateObjects | no |
|
|
56
|
+
| [`rotate-objects-by-ids`](rotate-objects-by-ids/SKILL.md) | Rotate Objects By Ids via CanvasOpsService.RotateObjectsByIds | no |
|
|
57
|
+
| [`screen-to-canvas-local`](screen-to-canvas-local/SKILL.md) | coordinate | no |
|
|
58
|
+
| [`select-all`](select-all/SKILL.md) | Select All via CanvasOpsService.SelectAll | no |
|
|
59
|
+
| [`select-object-at`](select-object-at/SKILL.md) | Select Object At via CanvasOpsService.SelectObjectAt | no |
|
|
60
|
+
| [`select-object-by-id`](select-object-by-id/SKILL.md) | Select Object By Id via CanvasOpsService.SelectObjectById | no |
|
|
61
|
+
| [`select-objects-by-ids`](select-objects-by-ids/SKILL.md) | Select Objects By Ids via CanvasOpsService.SelectObjectsByIds | no |
|
|
62
|
+
| [`set-align-type`](set-align-type/SKILL.md) | grid align | no |
|
|
63
|
+
| [`set-object-property`](set-object-property/SKILL.md) | Set Object Property via CanvasOpsService.SetObjectProperty | no |
|
|
64
|
+
| [`set-page-size`](set-page-size/SKILL.md) | page | no |
|
|
65
|
+
| [`set-page-size-rect`](set-page-size-rect/SKILL.md) | Set Page Size Rect via CanvasOpsService.SetPageSizeRect | no |
|
|
66
|
+
| [`undo`](undo/SKILL.md) | undo / redo (SCH_Undo / SCH_Redo on active canvas) | no |
|
|
67
|
+
| [`zoom-all`](zoom-all/SKILL.md) | Zoom All via CanvasOpsService.ZoomAll | no |
|
|
68
|
+
| [`zoom-area-by-double-box`](zoom-area-by-double-box/SKILL.md) | Zoom Area By Double Box via CanvasOpsService.ZoomAreaByDoubleBox | no |
|
|
69
|
+
| [`zoom-area-by-int-box`](zoom-area-by-int-box/SKILL.md) | Zoom Area By Int Box via CanvasOpsService.ZoomAreaByIntBox | no |
|
|
70
|
+
| [`zoom-area-by-points`](zoom-area-by-points/SKILL.md) | Zoom Area By Points via CanvasOpsService.ZoomAreaByPoints | no |
|
|
71
|
+
| [`zoom-in`](zoom-in/SKILL.md) | zoom | no |
|
|
72
|
+
| [`zoom-out`](zoom-out/SKILL.md) | Zoom Out via CanvasOpsService.ZoomOut | no |
|
|
73
|
+
| [`zoom-selected`](zoom-selected/SKILL.md) | Zoom Selected via CanvasOpsService.ZoomSelected | no |
|
|
74
|
+
|
|
75
|
+
## See Also
|
|
76
|
+
|
|
77
|
+
- [All EDA skills](../SKILL.md)
|
|
78
|
+
- [quickstart.md](../references/quickstart.md)
|
|
79
|
+
- [serialization.md](../references/serialization.md)
|
|
80
|
+
- [`@huaqiu/hqeda` npm package](https://www.npmjs.com/package/@huaqiu/hqeda) — shared runtime + capability registry
|
|
81
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: eda-find
|
|
3
|
+
metadata:
|
|
4
|
+
category: find
|
|
5
|
+
description: >-
|
|
6
|
+
Find operations for Huaqiu EDA. Use this skill when you need to work with find-related operations including find net, find object.
|
|
7
|
+
version: 0.1.0
|
|
8
|
+
vendor: Huaqiu Electronics
|
|
9
|
+
tags:
|
|
10
|
+
- eda
|
|
11
|
+
- huaqiu
|
|
12
|
+
- find
|
|
13
|
+
entry: "@huaqiu/hqeda"
|
|
14
|
+
manifest: "@huaqiu/hqeda/skill.json"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Find Skills
|
|
18
|
+
|
|
19
|
+
Find operations for Huaqiu EDA. Use this skill when you need to work with find-related operations including find net, find object.
|
|
20
|
+
|
|
21
|
+
## Available Capabilities
|
|
22
|
+
|
|
23
|
+
Total: **2** skills in the **find** domain.
|
|
24
|
+
|
|
25
|
+
| Skill | Description | Streaming |
|
|
26
|
+
| --- | --- | --- |
|
|
27
|
+
| [`find-net`](find-net/SKILL.md) | Find Net via FindService.FindNet | no |
|
|
28
|
+
| [`find-object`](find-object/SKILL.md) | Find Object via FindService.FindObject | no |
|
|
29
|
+
|
|
30
|
+
## See Also
|
|
31
|
+
|
|
32
|
+
- [All EDA skills](../SKILL.md)
|
|
33
|
+
- [quickstart.md](../references/quickstart.md)
|
|
34
|
+
- [serialization.md](../references/serialization.md)
|
|
35
|
+
- [`@huaqiu/hqeda` npm package](https://www.npmjs.com/package/@huaqiu/hqeda) — shared runtime + capability registry
|
|
36
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: eda-kernel
|
|
3
|
+
metadata:
|
|
4
|
+
category: kernel
|
|
5
|
+
description: >-
|
|
6
|
+
Kernel operations for Huaqiu EDA. Use this skill when you need to work with kernel-related operations including get entity, get snapshot.
|
|
7
|
+
version: 0.1.0
|
|
8
|
+
vendor: Huaqiu Electronics
|
|
9
|
+
tags:
|
|
10
|
+
- eda
|
|
11
|
+
- huaqiu
|
|
12
|
+
- kernel
|
|
13
|
+
entry: "@huaqiu/hqeda"
|
|
14
|
+
manifest: "@huaqiu/hqeda/skill.json"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Kernel Skills
|
|
18
|
+
|
|
19
|
+
Kernel operations for Huaqiu EDA. Use this skill when you need to work with kernel-related operations including get entity, get snapshot.
|
|
20
|
+
|
|
21
|
+
## Available Capabilities
|
|
22
|
+
|
|
23
|
+
Total: **2** skills in the **kernel** domain.
|
|
24
|
+
|
|
25
|
+
| Skill | Description | Streaming |
|
|
26
|
+
| --- | --- | --- |
|
|
27
|
+
| [`get-entity`](get-entity/SKILL.md) | Get Entity via KernelService.GetEntity | no |
|
|
28
|
+
| [`get-snapshot`](get-snapshot/SKILL.md) | Get Snapshot via KernelService.GetSnapshot | no |
|
|
29
|
+
|
|
30
|
+
## See Also
|
|
31
|
+
|
|
32
|
+
- [All EDA skills](../SKILL.md)
|
|
33
|
+
- [quickstart.md](../references/quickstart.md)
|
|
34
|
+
- [serialization.md](../references/serialization.md)
|
|
35
|
+
- [`@huaqiu/hqeda` npm package](https://www.npmjs.com/package/@huaqiu/hqeda) — shared runtime + capability registry
|
|
36
|
+
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: eda-netlist
|
|
3
|
+
metadata:
|
|
4
|
+
category: netlist
|
|
5
|
+
description: >-
|
|
6
|
+
Netlist operations for Huaqiu EDA. Invoke when reading net names or connectivity from the active or project scope.
|
|
7
|
+
version: 0.1.0
|
|
8
|
+
vendor: Huaqiu Electronics
|
|
9
|
+
tags:
|
|
10
|
+
- eda
|
|
11
|
+
- huaqiu
|
|
12
|
+
- netlist
|
|
13
|
+
entry: "@huaqiu/hqeda"
|
|
14
|
+
manifest: "@huaqiu/hqeda/skill.json"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Netlist Skills
|
|
18
|
+
|
|
19
|
+
Netlist operations for Huaqiu EDA. Invoke when reading net names or connectivity from the active or project scope.
|
|
20
|
+
|
|
21
|
+
## Available Capabilities
|
|
22
|
+
|
|
23
|
+
Total: **4** skills in the **netlist** domain.
|
|
24
|
+
|
|
25
|
+
| Skill | Description | Streaming |
|
|
26
|
+
| --- | --- | --- |
|
|
27
|
+
| [`get-active-page-net-list`](get-active-page-net-list/SKILL.md) | / Gets the netlist for the currently active schematic page (real-time canvas state). | no |
|
|
28
|
+
| [`get-port-pairing`](get-port-pairing/SKILL.md) | / Lists cross-page / cross-hierarchy Port and Off-page pairings on the same design net. | no |
|
|
29
|
+
| [`get-project-net-list`](get-project-net-list/SKILL.md) | / Gets the complete netlist for the current project. | no |
|
|
30
|
+
| [`get-selection-net-list`](get-selection-net-list/SKILL.md) | / Gets the netlist for the currently selected components. | no |
|
|
31
|
+
|
|
32
|
+
## See Also
|
|
33
|
+
|
|
34
|
+
- [All EDA skills](../SKILL.md)
|
|
35
|
+
- [quickstart.md](../references/quickstart.md)
|
|
36
|
+
- [serialization.md](../references/serialization.md)
|
|
37
|
+
- [`@huaqiu/hqeda` npm package](https://www.npmjs.com/package/@huaqiu/hqeda) — shared runtime + capability registry
|
|
38
|
+
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: eda-obj-place
|
|
3
|
+
metadata:
|
|
4
|
+
category: obj-place
|
|
5
|
+
description: >-
|
|
6
|
+
Obj Place operations for Huaqiu EDA. Use this skill when you need to work with obj-place-related operations including add bus segment, add ellipse, add ellipse arc.
|
|
7
|
+
version: 0.1.0
|
|
8
|
+
vendor: Huaqiu Electronics
|
|
9
|
+
tags:
|
|
10
|
+
- eda
|
|
11
|
+
- huaqiu
|
|
12
|
+
- obj-place
|
|
13
|
+
entry: "@huaqiu/hqeda"
|
|
14
|
+
manifest: "@huaqiu/hqeda/skill.json"
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Obj Place Skills
|
|
18
|
+
|
|
19
|
+
Obj Place operations for Huaqiu EDA. Use this skill when you need to work with obj-place-related operations including add bus segment, add ellipse, add ellipse arc.
|
|
20
|
+
|
|
21
|
+
## Available Capabilities
|
|
22
|
+
|
|
23
|
+
Total: **42** skills in the **obj-place** domain.
|
|
24
|
+
|
|
25
|
+
| Skill | Description | Streaming |
|
|
26
|
+
| --- | --- | --- |
|
|
27
|
+
| [`add-bus-segment`](add-bus-segment/SKILL.md) | Add Bus Segment via ObjPlaceService.AddBusSegment | no |
|
|
28
|
+
| [`add-ellipse`](add-ellipse/SKILL.md) | Add Ellipse via ObjPlaceService.AddEllipse | no |
|
|
29
|
+
| [`add-ellipse-arc`](add-ellipse-arc/SKILL.md) | Add Ellipse Arc via ObjPlaceService.AddEllipseArc | no |
|
|
30
|
+
| [`add-free-line-segment`](add-free-line-segment/SKILL.md) | Add Free Line Segment via ObjPlaceService.AddFreeLineSegment | no |
|
|
31
|
+
| [`add-line`](add-line/SKILL.md) | Add Line via ObjPlaceService.AddLine | no |
|
|
32
|
+
| [`add-rect`](add-rect/SKILL.md) | Add Rect via ObjPlaceService.AddRect | no |
|
|
33
|
+
| [`add-wire-segment`](add-wire-segment/SKILL.md) | Add Wire Segment via ObjPlaceService.AddWireSegment | no |
|
|
34
|
+
| [`cancel-bus-draw`](cancel-bus-draw/SKILL.md) | Cancel Bus Draw via ObjPlaceService.CancelBusDraw | no |
|
|
35
|
+
| [`cancel-ellipse-arc-draw`](cancel-ellipse-arc-draw/SKILL.md) | Cancel Ellipse Arc Draw via ObjPlaceService.CancelEllipseArcDraw | no |
|
|
36
|
+
| [`cancel-ellipse-draw`](cancel-ellipse-draw/SKILL.md) | Cancel Ellipse Draw via ObjPlaceService.CancelEllipseDraw | no |
|
|
37
|
+
| [`cancel-free-line-draw`](cancel-free-line-draw/SKILL.md) | Cancel Free Line Draw via ObjPlaceService.CancelFreeLineDraw | no |
|
|
38
|
+
| [`cancel-line-draw`](cancel-line-draw/SKILL.md) | Cancel Line Draw via ObjPlaceService.CancelLineDraw | no |
|
|
39
|
+
| [`cancel-rect-draw`](cancel-rect-draw/SKILL.md) | Cancel Rect Draw via ObjPlaceService.CancelRectDraw | no |
|
|
40
|
+
| [`cancel-wire-draw`](cancel-wire-draw/SKILL.md) | Cancel Wire Draw via ObjPlaceService.CancelWireDraw | no |
|
|
41
|
+
| [`handle-bus-draw-click`](handle-bus-draw-click/SKILL.md) | bus | no |
|
|
42
|
+
| [`handle-ellipse-arc-draw-click`](handle-ellipse-arc-draw-click/SKILL.md) | Handle Ellipse Arc Draw Click via ObjPlaceService.HandleEllipseArcDrawClick | no |
|
|
43
|
+
| [`handle-ellipse-draw-click`](handle-ellipse-draw-click/SKILL.md) | Handle Ellipse Draw Click via ObjPlaceService.HandleEllipseDrawClick | no |
|
|
44
|
+
| [`handle-free-line-draw-click`](handle-free-line-draw-click/SKILL.md) | Handle Free Line Draw Click via ObjPlaceService.HandleFreeLineDrawClick | no |
|
|
45
|
+
| [`handle-image-draw-click`](handle-image-draw-click/SKILL.md) | Handle Image Draw Click via ObjPlaceService.HandleImageDrawClick | no |
|
|
46
|
+
| [`handle-line-draw-click`](handle-line-draw-click/SKILL.md) | Handle Line Draw Click via ObjPlaceService.HandleLineDrawClick | no |
|
|
47
|
+
| [`handle-net-alias-draw-click`](handle-net-alias-draw-click/SKILL.md) | Handle Net Alias Draw Click via ObjPlaceService.HandleNetAliasDrawClick | no |
|
|
48
|
+
| [`handle-rect-draw-click`](handle-rect-draw-click/SKILL.md) | Handle Rect Draw Click via ObjPlaceService.HandleRectDrawClick | no |
|
|
49
|
+
| [`handle-table-draw-click`](handle-table-draw-click/SKILL.md) | Handle Table Draw Click via ObjPlaceService.HandleTableDrawClick | no |
|
|
50
|
+
| [`handle-text-draw-click`](handle-text-draw-click/SKILL.md) | Handle Text Draw Click via ObjPlaceService.HandleTextDrawClick | no |
|
|
51
|
+
| [`handle-wire-draw-click`](handle-wire-draw-click/SKILL.md) | wire | no |
|
|
52
|
+
| [`place-bus`](place-bus/SKILL.md) | Place Bus via ObjPlaceService.PlaceBus | no |
|
|
53
|
+
| [`place-ellipse`](place-ellipse/SKILL.md) | ellipse | no |
|
|
54
|
+
| [`place-ellipse-arc`](place-ellipse-arc/SKILL.md) | ellipse arc | no |
|
|
55
|
+
| [`place-ellipse-arc-at`](place-ellipse-arc-at/SKILL.md) | Place Ellipse Arc At via ObjPlaceService.PlaceEllipseArcAt | no |
|
|
56
|
+
| [`place-ellipse-arc-from-virtual`](place-ellipse-arc-from-virtual/SKILL.md) | Place Ellipse Arc From Virtual via ObjPlaceService.PlaceEllipseArcFromVirtual | no |
|
|
57
|
+
| [`place-free-line`](place-free-line/SKILL.md) | free line | no |
|
|
58
|
+
| [`place-image`](place-image/SKILL.md) | image | no |
|
|
59
|
+
| [`place-line`](place-line/SKILL.md) | line | no |
|
|
60
|
+
| [`place-net-alias`](place-net-alias/SKILL.md) | net alias | no |
|
|
61
|
+
| [`place-net-alias-at`](place-net-alias-at/SKILL.md) | Place net label on wire/bus at local_pos. Invoke when naming nets (3V3, GND, PROBE_NET); requires wi | no |
|
|
62
|
+
| [`place-pin-stub-wire-and-net-alias`](place-pin-stub-wire-and-net-alias/SKILL.md) | Pin stub wire + net alias: detect existing wire, extend stub with collision avoidance, place alias; | no |
|
|
63
|
+
| [`place-rect`](place-rect/SKILL.md) | rect | no |
|
|
64
|
+
| [`place-table`](place-table/SKILL.md) | table | no |
|
|
65
|
+
| [`place-table-from-virtual`](place-table-from-virtual/SKILL.md) | Place Table From Virtual via ObjPlaceService.PlaceTableFromVirtual | no |
|
|
66
|
+
| [`place-text`](place-text/SKILL.md) | text | no |
|
|
67
|
+
| [`place-text-from-virtual`](place-text-from-virtual/SKILL.md) | Place Text From Virtual via ObjPlaceService.PlaceTextFromVirtual | no |
|
|
68
|
+
| [`place-wire`](place-wire/SKILL.md) | Place Wire via ObjPlaceService.PlaceWire | no |
|
|
69
|
+
|
|
70
|
+
## See Also
|
|
71
|
+
|
|
72
|
+
- [All EDA skills](../SKILL.md)
|
|
73
|
+
- [quickstart.md](../references/quickstart.md)
|
|
74
|
+
- [serialization.md](../references/serialization.md)
|
|
75
|
+
- [`@huaqiu/hqeda` npm package](https://www.npmjs.com/package/@huaqiu/hqeda) — shared runtime + capability registry
|
|
76
|
+
|