@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.
Files changed (64) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +43 -0
  3. package/cordis.patch.yml +13 -0
  4. package/lib/index.d.mts +98 -0
  5. package/lib/index.mjs +159 -0
  6. package/package.json +40 -0
  7. package/skills/hqsch-scenario-b/AGENTS.md +209 -0
  8. package/skills/hqsch-scenario-b/CLAUDE.md +209 -0
  9. package/skills/hqsch-scenario-b/INSTALL.md +140 -0
  10. package/skills/hqsch-scenario-b/SKILL.md +107 -0
  11. package/skills/hqsch-scenario-b/SYSTEM-PROMPT.md +209 -0
  12. package/skills/hqsch-scenario-b/docs/circuit-pattern-layout.md +304 -0
  13. package/skills/hqsch-scenario-b/docs/editing-a-circuit.md +167 -0
  14. package/skills/hqsch-scenario-b/docs/part-search.md +244 -0
  15. package/skills/hqsch-scenario-b/docs/placement-conventions.md +714 -0
  16. package/skills/hqsch-scenario-b/docs/property-conventions.md +225 -0
  17. package/skills/hqsch-scenario-b/docs/quickstart.md +99 -0
  18. package/skills/hqsch-scenario-b/docs/reading-a-circuit.md +317 -0
  19. package/skills/hqsch-scenario-b/docs/rpc/canvas-auto-connect-objects-by-id.md +98 -0
  20. package/skills/hqsch-scenario-b/docs/rpc/canvas-delete-objects-by-ids.md +94 -0
  21. package/skills/hqsch-scenario-b/docs/rpc/canvas-find-object-by-property.md +101 -0
  22. package/skills/hqsch-scenario-b/docs/rpc/canvas-list-wire-segments.md +94 -0
  23. package/skills/hqsch-scenario-b/docs/rpc/canvas-mirror-objects-by-ids.md +96 -0
  24. package/skills/hqsch-scenario-b/docs/rpc/canvas-rotate-objects-by-ids.md +94 -0
  25. package/skills/hqsch-scenario-b/docs/rpc/canvas-set-object-property.md +99 -0
  26. package/skills/hqsch-scenario-b/docs/rpc/canvas-zoom-all.md +92 -0
  27. package/skills/hqsch-scenario-b/docs/rpc/find-find-object.md +96 -0
  28. package/skills/hqsch-scenario-b/docs/rpc/kernel-get-snapshot.md +104 -0
  29. package/skills/hqsch-scenario-b/docs/rpc/netlist-get-active-page-net-list.md +87 -0
  30. package/skills/hqsch-scenario-b/docs/rpc/netlist-get-port-pairing.md +34 -0
  31. package/skills/hqsch-scenario-b/docs/rpc/obj-place-place-pin-stub-wire-and-net-alias.md +114 -0
  32. package/skills/hqsch-scenario-b/docs/rpc/pattern-layout-apply-circuit-pattern.md +125 -0
  33. package/skills/hqsch-scenario-b/docs/rpc/pattern-layout-get-page-occupancy.md +100 -0
  34. package/skills/hqsch-scenario-b/docs/rpc/pattern-layout-list-circuit-patterns.md +97 -0
  35. package/skills/hqsch-scenario-b/docs/rpc/placement-list-part-libraries.md +94 -0
  36. package/skills/hqsch-scenario-b/docs/rpc/placement-list-symbol-libraries.md +94 -0
  37. package/skills/hqsch-scenario-b/docs/rpc/placement-place-kicad-symbol.md +105 -0
  38. package/skills/hqsch-scenario-b/docs/rpc/placement-place-part-from-library.md +106 -0
  39. package/skills/hqsch-scenario-b/docs/rpc/placement-place-symbol-from-library.md +108 -0
  40. package/skills/hqsch-scenario-b/docs/rpc/project-get-active-project.md +96 -0
  41. package/skills/hqsch-scenario-b/docs/rpc/project-list-open-projects.md +99 -0
  42. package/skills/hqsch-scenario-b/docs/rpc-availability.md +97 -0
  43. package/skills/hqsch-scenario-b/docs/rpc-index/canvas.md +81 -0
  44. package/skills/hqsch-scenario-b/docs/rpc-index/find.md +36 -0
  45. package/skills/hqsch-scenario-b/docs/rpc-index/kernel.md +36 -0
  46. package/skills/hqsch-scenario-b/docs/rpc-index/netlist.md +38 -0
  47. package/skills/hqsch-scenario-b/docs/rpc-index/obj-place.md +76 -0
  48. package/skills/hqsch-scenario-b/docs/rpc-index/pattern-layout.md +38 -0
  49. package/skills/hqsch-scenario-b/docs/rpc-index/placement.md +48 -0
  50. package/skills/hqsch-scenario-b/docs/rpc-index/project.md +47 -0
  51. package/skills/hqsch-scenario-b/docs/serialization.md +60 -0
  52. package/skills/hqsch-scenario-b/docs/skill-dependencies.md +93 -0
  53. package/skills/hqsch-scenario-b/skill.json +13 -0
  54. package/skills/hqsch-scenario-b/template/package.json +16 -0
  55. package/skills/hqsch-scenario-b/template/scripts/edit-property-by-ref.ts +44 -0
  56. package/skills/hqsch-scenario-b/template/scripts/fix-designators.ts +52 -0
  57. package/skills/hqsch-scenario-b/template/scripts/hello.ts +46 -0
  58. package/skills/hqsch-scenario-b/template/scripts/read-circuit.ts +357 -0
  59. package/skills/hqsch-scenario-b/template/scripts/replace-part-by-ref.ts +44 -0
  60. package/skills/hqsch-scenario-b/template/scripts/rewire-pin-by-ref.ts +42 -0
  61. package/skills/hqsch-scenario-b/template/tsconfig.json +11 -0
  62. package/src/config.ts +25 -0
  63. package/src/index.ts +186 -0
  64. package/src/paths.ts +48 -0
@@ -0,0 +1,92 @@
1
+ ---
2
+ name: canvas-zoom-all
3
+ metadata:
4
+ category: canvas
5
+ service: CanvasOpsService
6
+ method: ZoomAll
7
+ rpcKind: unary
8
+ description: >-
9
+ Zoom All via CanvasOpsService.ZoomAll
10
+ version: 0.1.0
11
+ vendor: Huaqiu Electronics
12
+ tags:
13
+ - eda
14
+ - huaqiu
15
+ - canvas
16
+ entry: "@huaqiu/hqeda"
17
+ manifest: "@huaqiu/hqeda/skill.json"
18
+ inputSchema:
19
+ name: CanvasContextRequestSchema
20
+ namespace: HqServicesV1CanvasOpsService
21
+ ---
22
+
23
+ # Zoom All
24
+
25
+ Zoom All via CanvasOpsService.ZoomAll
26
+
27
+ ## Overview
28
+
29
+ This skill provides access to the **`CanvasOpsService.ZoomAll`** RPC method on the Huaqiu EDA engine. It is part of the **canvas** domain and executes against the `canvasOps` client.
30
+
31
+ | Property | Value |
32
+ | --- | --- |
33
+ | Skill ID | `canvas-zoom-all` |
34
+ | Service | `CanvasOpsService` |
35
+ | Method | `ZoomAll` |
36
+ | Transport | Unary (unary) |
37
+ | Domain | canvas |
38
+ | Request type | `CanvasContextRequest` |
39
+ | Response type | `SuccessResponse` |
40
+
41
+ ## Parameters
42
+
43
+ | Name | Type | Required | Repeated | Description |
44
+ | --- | --- | --- | --- | --- |
45
+ | `context` | `ProjectContext` | no | no | — |
46
+
47
+ ## Response
48
+
49
+ Returns a `SuccessResponse` message with the following fields:
50
+
51
+ | Name | Type | Repeated | Description |
52
+ | --- | --- | --- | --- |
53
+ | `success` | `boolean` | no | — |
54
+
55
+ ## Response Example
56
+
57
+ Representative response structure (field values are placeholders):
58
+
59
+ ```json
60
+ {
61
+ "success": false
62
+ }
63
+ ```
64
+
65
+ ## Prerequisites
66
+
67
+ - [project-get-active-project](../../project/get-active-project/SKILL.md) — Discover the active project before building project-scoped context.
68
+
69
+ See also [skill-dependencies.md](../../references/skill-dependencies.md) for common workflows.
70
+
71
+ ## How to Use
72
+
73
+ 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.
74
+
75
+ ```typescript
76
+ import { getSkill, toJsonString } from "@huaqiu/hqeda";
77
+
78
+ const skill = getSkill("canvas-zoom-all");
79
+ const result = await skill.execute({ client }, {
80
+ context: "<ProjectContext via client.createProjectContext('my-project')>",
81
+ });
82
+ console.log(toJsonString(result, { prettySpaces: 2 }));
83
+ ```
84
+
85
+ Serialize responses with `toJsonString()` — see [serialization.md](../../references/serialization.md).
86
+
87
+ ## Related Skills
88
+
89
+ - Other **canvas** skills: [`canvas/`](../)
90
+ - Full index: [All EDA skills](../../SKILL.md)
91
+ - Install: `npx skills add Huaqiu-Electronics/skills --path eda/canvas/zoom-all`
92
+
@@ -0,0 +1,96 @@
1
+ ---
2
+ name: find-find-object
3
+ metadata:
4
+ category: find
5
+ service: FindService
6
+ method: FindObject
7
+ rpcKind: unary
8
+ description: >-
9
+ Find Object via FindService.FindObject
10
+ version: 0.1.0
11
+ vendor: Huaqiu Electronics
12
+ tags:
13
+ - eda
14
+ - huaqiu
15
+ - find
16
+ entry: "@huaqiu/hqeda"
17
+ manifest: "@huaqiu/hqeda/skill.json"
18
+ inputSchema:
19
+ name: FindObjectRequestSchema
20
+ namespace: HqServicesV1FindService
21
+ ---
22
+
23
+ # Find Object
24
+
25
+ Find Object via FindService.FindObject
26
+
27
+ ## Overview
28
+
29
+ This skill provides access to the **`FindService.FindObject`** RPC method on the Huaqiu EDA engine. It is part of the **find** domain and executes against the `find` client.
30
+
31
+ | Property | Value |
32
+ | --- | --- |
33
+ | Skill ID | `find-find-object` |
34
+ | Service | `FindService` |
35
+ | Method | `FindObject` |
36
+ | Transport | Unary (unary) |
37
+ | Domain | find |
38
+ | Request type | `FindObjectRequest` |
39
+ | Response type | `FindObjectResponse` |
40
+
41
+ ## Parameters
42
+
43
+ | Name | Type | Required | Repeated | Description |
44
+ | --- | --- | --- | --- | --- |
45
+ | `context` | `EditorContext` | no | no | — |
46
+ | `findOptionUrl` | `string` | yes | no | — |
47
+ | `showDock` | `boolean` | yes | no | — |
48
+
49
+ ## Response
50
+
51
+ Returns a `FindObjectResponse` message with the following fields:
52
+
53
+ | Name | Type | Repeated | Description |
54
+ | --- | --- | --- | --- |
55
+ | `success` | `boolean` | no | — |
56
+
57
+ ## Response Example
58
+
59
+ Representative response structure (field values are placeholders):
60
+
61
+ ```json
62
+ {
63
+ "success": false
64
+ }
65
+ ```
66
+
67
+ ## Prerequisites
68
+
69
+ - [project-get-active-project](../../project/get-active-project/SKILL.md) — Discover the active project before building project-scoped context.
70
+
71
+ See also [skill-dependencies.md](../../references/skill-dependencies.md) for common workflows.
72
+
73
+ ## How to Use
74
+
75
+ 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.
76
+
77
+ ```typescript
78
+ import { getSkill, toJsonString } from "@huaqiu/hqeda";
79
+
80
+ const skill = getSkill("find-find-object");
81
+ const result = await skill.execute({ client }, {
82
+ context: "<ProjectContext via client.createProjectContext('my-project')>",
83
+ findOptionUrl: "example",
84
+ showDock: false,
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 **find** skills: [`find/`](../)
94
+ - Full index: [All EDA skills](../../SKILL.md)
95
+ - Install: `npx skills add Huaqiu-Electronics/skills --path eda/find/find-object`
96
+
@@ -0,0 +1,104 @@
1
+ ---
2
+ name: kernel-get-snapshot
3
+ metadata:
4
+ category: kernel
5
+ service: KernelService
6
+ method: GetSnapshot
7
+ rpcKind: unary
8
+ description: >-
9
+ Get Snapshot via KernelService.GetSnapshot
10
+ version: 0.1.0
11
+ vendor: Huaqiu Electronics
12
+ tags:
13
+ - eda
14
+ - huaqiu
15
+ - kernel
16
+ entry: "@huaqiu/hqeda"
17
+ manifest: "@huaqiu/hqeda/skill.json"
18
+ inputSchema:
19
+ name: GetSnapshotRequestSchema
20
+ namespace: HqServicesV1KernelService
21
+ ---
22
+
23
+ # Get Snapshot
24
+
25
+ Get Snapshot via KernelService.GetSnapshot
26
+
27
+ ## Overview
28
+
29
+ This skill provides access to the **`KernelService.GetSnapshot`** RPC method on the Huaqiu EDA engine. It is part of the **kernel** domain and executes against the `kernel` client.
30
+
31
+ | Property | Value |
32
+ | --- | --- |
33
+ | Skill ID | `kernel-get-snapshot` |
34
+ | Service | `KernelService` |
35
+ | Method | `GetSnapshot` |
36
+ | Transport | Unary (unary) |
37
+ | Domain | kernel |
38
+ | Request type | `GetSnapshotRequest` |
39
+ | Response type | `GetSnapshotResponse` |
40
+
41
+ ## Parameters
42
+
43
+ | Name | Type | Required | Repeated | Description |
44
+ | --- | --- | --- | --- | --- |
45
+ | `context` | `ProjectContext` | no | no | — |
46
+ | `atRevision` | `bigint` | yes | no | — |
47
+
48
+ ## Response
49
+
50
+ Returns a `GetSnapshotResponse` message with the following fields:
51
+
52
+ | Name | Type | Repeated | Description |
53
+ | --- | --- | --- | --- |
54
+ | `snapshot` | `KernelSnapshot` | no | — |
55
+
56
+ ## Usage Examples
57
+
58
+ ### get kernel snapshot for a discovered project
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
+ "snapshot": {}
73
+ }
74
+ ```
75
+
76
+ ## Prerequisites
77
+
78
+ - [project-get-active-project](../../project/get-active-project/SKILL.md) — Discover the active project before building project-scoped context.
79
+
80
+ See also [skill-dependencies.md](../../references/skill-dependencies.md) for common workflows.
81
+
82
+ ## How to Use
83
+
84
+ 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.
85
+
86
+ ```typescript
87
+ import { getSkill, toJsonString } from "@huaqiu/hqeda";
88
+
89
+ const skill = getSkill("kernel-get-snapshot");
90
+ const result = await skill.execute({ client }, {
91
+ context: "<ProjectContext via client.createProjectContext('my-project')>",
92
+ atRevision: "0",
93
+ });
94
+ console.log(toJsonString(result, { prettySpaces: 2 }));
95
+ ```
96
+
97
+ Serialize responses with `toJsonString()` — see [serialization.md](../../references/serialization.md).
98
+
99
+ ## Related Skills
100
+
101
+ - Other **kernel** skills: [`kernel/`](../)
102
+ - Full index: [All EDA skills](../../SKILL.md)
103
+ - Install: `npx skills add Huaqiu-Electronics/skills --path eda/kernel/get-snapshot`
104
+
@@ -0,0 +1,87 @@
1
+ ---
2
+ name: netlist-get-active-page-net-list
3
+ metadata:
4
+ category: netlist
5
+ service: NetListService
6
+ method: GetActivePageNetList
7
+ rpcKind: unary
8
+ description: >-
9
+ / Gets the netlist for the currently active schematic page (real-time canvas state).
10
+ version: 0.1.0
11
+ vendor: Huaqiu Electronics
12
+ tags:
13
+ - eda
14
+ - huaqiu
15
+ - netlist
16
+ entry: "@huaqiu/hqeda"
17
+ manifest: "@huaqiu/hqeda/skill.json"
18
+ inputSchema:
19
+ name: EmptySchema
20
+ namespace: ProtobufWkt
21
+ ---
22
+
23
+ # Get Active Page Net List
24
+
25
+ / Gets the netlist for the currently active schematic page (real-time canvas state).
26
+
27
+ ## Overview
28
+
29
+ This skill provides access to the **`NetListService.GetActivePageNetList`** RPC method on the Huaqiu EDA engine. It is part of the **netlist** domain and executes against the `netList` client.
30
+
31
+ | Property | Value |
32
+ | --- | --- |
33
+ | Skill ID | `netlist-get-active-page-net-list` |
34
+ | Service | `NetListService` |
35
+ | Method | `GetActivePageNetList` |
36
+ | Transport | Unary (unary) |
37
+ | Domain | netlist |
38
+ | Request type | `Empty` |
39
+ | Response type | `GetNetListResponse` |
40
+
41
+ ## Response
42
+
43
+ Returns a `GetNetListResponse` message with the following fields:
44
+
45
+ | Name | Type | Repeated | Description |
46
+ | --- | --- | --- | --- |
47
+ | `result` | `{
48
+ /**
49
+ * / Schematic netlist data.
50
+ *
51
+ * @generated from field: hq.ir.schematic.v1.SchematicNetlist netlist = 1;
52
+ */
53
+ value: SchematicNetlist;
54
+ case: "netlist";
55
+ }` | no | — |
56
+
57
+ ## Response Example
58
+
59
+ Representative response structure (field values are placeholders):
60
+
61
+ ```json
62
+ {
63
+ "result": {}
64
+ }
65
+ ```
66
+
67
+ ## How to Use
68
+
69
+ 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.
70
+
71
+ ```typescript
72
+ import { getSkill, toJsonString } from "@huaqiu/hqeda";
73
+
74
+ const skill = getSkill("netlist-get-active-page-net-list");
75
+ const result = await skill.execute({ client }, {
76
+ });
77
+ console.log(toJsonString(result, { prettySpaces: 2 }));
78
+ ```
79
+
80
+ Serialize responses with `toJsonString()` — see [serialization.md](../../references/serialization.md).
81
+
82
+ ## Related Skills
83
+
84
+ - Other **netlist** skills: [`netlist/`](../)
85
+ - Full index: [All EDA skills](../../SKILL.md)
86
+ - Install: `npx skills add Huaqiu-Electronics/skills --path eda/netlist/get-active-page-net-list`
87
+
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: netlist-get-port-pairing
3
+ metadata:
4
+ category: netlist
5
+ service: NetListService
6
+ method: GetPortPairing
7
+ ---
8
+
9
+ # netList.GetPortPairing
10
+
11
+ Returns every cross-page / cross-occurrence Port and Off-page pairing that
12
+ `VxPstxnetNew::ReadFromDesign` has already merged onto the same design net.
13
+
14
+ ## Why
15
+
16
+ `GetProjectNetList` only exposes pin↔net. Agents cannot see that `/TYPE-C`
17
+ `USB_D+` and `/ESP32-C3FH4` `GPIO18` are the same net without guessing.
18
+ This RPC exposes the pairing and the merge rule.
19
+
20
+ ## Call
21
+
22
+ ```typescript
23
+ const res = await client.netList.getPortPairing({});
24
+ ```
25
+
26
+ ## Rules (from net connectivity + ReadFromDesign)
27
+
28
+ | Rule | Source | When |
29
+ | --- | --- | --- |
30
+ | `BY_NAME` | MergePageNet | Same Off-page / Port name within schematic folder |
31
+ | `BY_HIERARCHY` | ConnectBlockPinAndPort | Parent block pin = `occPath_portName`; parent wires can join different child port names |
32
+ | `BY_GLOBAL` | MergeDesignNet | Design-wide Power / Global name intersection |
33
+
34
+ There is **no byGuid** rule.
@@ -0,0 +1,114 @@
1
+ ---
2
+ name: obj-place-place-pin-stub-wire-and-net-alias
3
+ metadata:
4
+ category: obj-place
5
+ service: ObjPlaceService
6
+ method: PlacePinStubWireAndNetAlias
7
+ rpcKind: unary
8
+ description: >-
9
+ Pin stub wire + net alias: detect existing wire, extend stub with collision avoidance, place alias; single undo step.
10
+ version: 0.1.0
11
+ vendor: Huaqiu Electronics
12
+ tags:
13
+ - eda
14
+ - huaqiu
15
+ - obj-place
16
+ entry: "@huaqiu/hqeda"
17
+ manifest: "@huaqiu/hqeda/skill.json"
18
+ inputSchema:
19
+ name: PlacePinStubWireAndNetAliasRequestSchema
20
+ namespace: HqServicesV1ObjPlaceService
21
+ ---
22
+
23
+ # Place Pin Stub Wire And Net Alias
24
+
25
+ Pin stub wire + net alias: detect existing wire, extend stub with collision avoidance, place alias; single undo step.
26
+
27
+ ## Overview
28
+
29
+ This skill provides access to the **`ObjPlaceService.PlacePinStubWireAndNetAlias`** RPC method on the Huaqiu EDA engine. It is part of the **obj-place** domain and executes against the `objPlace` client.
30
+
31
+ | Property | Value |
32
+ | --- | --- |
33
+ | Skill ID | `obj-place-place-pin-stub-wire-and-net-alias` |
34
+ | Service | `ObjPlaceService` |
35
+ | Method | `PlacePinStubWireAndNetAlias` |
36
+ | Transport | Unary (unary) |
37
+ | Domain | obj-place |
38
+ | Request type | `PlacePinStubWireAndNetAliasRequest` |
39
+ | Response type | `PlacePinStubWireAndNetAliasResponse` |
40
+
41
+ ## Parameters
42
+
43
+ | Name | Type | Required | Repeated | Description |
44
+ | --- | --- | --- | --- | --- |
45
+ | `context` | `ProjectContext` | no | no | — |
46
+ | `objectId` | `bigint` | yes | no | part/symbol canvas id |
47
+ | `pinNum` | `number` | yes | no | pin_num or pin_name (one required) |
48
+ | `pinName` | `string` | yes | no | — |
49
+ | `netName` | `string` | yes | no | — |
50
+ | `snapToGrid` | `boolean` | yes | no | default true |
51
+ | `initialStubLength` | `bigint` | yes | no | default 30 |
52
+ | `stubExtendStep` | `bigint` | yes | no | default 10 |
53
+ | `maxStubLength` | `bigint` | yes | no | default 300 |
54
+
55
+ ## Response
56
+
57
+ Returns a `PlacePinStubWireAndNetAliasResponse` message with the following fields:
58
+
59
+ | Name | Type | Repeated | Description |
60
+ | --- | --- | --- | --- |
61
+ | `success` | `boolean` | no | — |
62
+ | `message` | `string` | no | — |
63
+ | `wireObjectId` | `bigint` | no | 0 = no new stub |
64
+ | `netAliasObjectId` | `bigint` | no | — |
65
+ | `aliasPos` | `Vector2i64` | no | external display, Y down |
66
+ | `stubLengthUsed` | `bigint` | no | actual stub length (ext) |
67
+ | `usedExistingWire` | `boolean` | no | — |
68
+
69
+ ## Response Example
70
+
71
+ Representative response structure (field values are placeholders):
72
+
73
+ ```json
74
+ {
75
+ "success": false,
76
+ "message": "example",
77
+ "wireObjectId": "123456789",
78
+ "netAliasObjectId": "123456789",
79
+ "aliasPos": {},
80
+ "stubLengthUsed": "0",
81
+ "usedExistingWire": false
82
+ }
83
+ ```
84
+
85
+ ## Prerequisites
86
+
87
+ - [project-get-active-project](../../project/get-active-project/SKILL.md) — Discover the active project before building project-scoped context.
88
+
89
+ See also [skill-dependencies.md](../../references/skill-dependencies.md) for common workflows.
90
+
91
+ ## How to Use
92
+
93
+ 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.
94
+
95
+ ```typescript
96
+ import { getSkill, toJsonString } from "@huaqiu/hqeda";
97
+
98
+ const skill = getSkill("obj-place-place-pin-stub-wire-and-net-alias");
99
+ const result = await skill.execute({ client }, {
100
+ context: "<ProjectContext via client.createProjectContext('my-project')>",
101
+ objectId: "123456789",
102
+ pinNum: 0,
103
+ });
104
+ console.log(toJsonString(result, { prettySpaces: 2 }));
105
+ ```
106
+
107
+ Serialize responses with `toJsonString()` — see [serialization.md](../../references/serialization.md).
108
+
109
+ ## Related Skills
110
+
111
+ - Other **obj-place** skills: [`obj-place/`](../)
112
+ - Full index: [All EDA skills](../../SKILL.md)
113
+ - Install: `npx skills add Huaqiu-Electronics/skills --path eda/obj-place/place-pin-stub-wire-and-net-alias`
114
+
@@ -0,0 +1,125 @@
1
+ ---
2
+ name: pattern-layout-apply-circuit-pattern
3
+ metadata:
4
+ category: pattern-layout
5
+ service: PatternLayoutService
6
+ method: ApplyCircuitPattern
7
+ rpcKind: unary
8
+ description: >-
9
+ Lay out and wire one circuit pattern. plan_only = true is the dry-run.
10
+ version: 0.1.0
11
+ vendor: Huaqiu Electronics
12
+ tags:
13
+ - eda
14
+ - huaqiu
15
+ - pattern-layout
16
+ entry: "@huaqiu/hqeda"
17
+ manifest: "@huaqiu/hqeda/skill.json"
18
+ inputSchema:
19
+ name: ApplyCircuitPatternRequestSchema
20
+ namespace: HqServicesV1PatternLayoutService
21
+ ---
22
+
23
+ # Apply Circuit Pattern
24
+
25
+ Lay out and wire one circuit pattern. plan_only = true is the dry-run.
26
+
27
+ ## Overview
28
+
29
+ This skill provides access to the **`PatternLayoutService.ApplyCircuitPattern`** RPC method on the Huaqiu EDA engine. It is part of the **pattern-layout** domain and executes against the `patternLayout` client.
30
+
31
+ | Property | Value |
32
+ | --- | --- |
33
+ | Skill ID | `pattern-layout-apply-circuit-pattern` |
34
+ | Service | `PatternLayoutService` |
35
+ | Method | `ApplyCircuitPattern` |
36
+ | Transport | Unary (unary) |
37
+ | Domain | pattern-layout |
38
+ | Request type | `ApplyCircuitPatternRequest` |
39
+ | Response type | `ApplyCircuitPatternResponse` |
40
+
41
+ ## Parameters
42
+
43
+ | Name | Type | Required | Repeated | Description |
44
+ | --- | --- | --- | --- | --- |
45
+ | `context` | `ProjectContext` | no | no | — |
46
+ | `pattern` | `CircuitPatternId` | yes | no | — |
47
+ | `roles` | `PatternRoleBinding[]` | no | yes | — |
48
+ | `anchor` | `Vector2i64` | no | no | External display coordinate; the exact meaning per pattern is documented in
49
+ CircuitPatternDescriptor.anchor_semantics. |
50
+ | `orientation` | `PatternOrientation` | yes | no | — |
51
+ | `routeMode` | `PatternRouteMode` | yes | no | — |
52
+ | `powerMode` | `PatternPowerMode` | yes | no | — |
53
+ | `options` | `{ [key: string]: string }` | yes | no | Pattern-specific knobs; legal keys come from CircuitPatternDescriptor.options. |
54
+ | `planOnly` | `boolean` | yes | no | Dry-run: compute the plan and the conflicts, touch nothing. |
55
+ | `ignoreAreaConflict` | `boolean` | yes | no | — |
56
+
57
+ ## Response
58
+
59
+ Returns a `ApplyCircuitPatternResponse` message with the following fields:
60
+
61
+ | Name | Type | Repeated | Description |
62
+ | --- | --- | --- | --- |
63
+ | `status` | `PatternStatus` | no | — |
64
+ | `message` | `string` | no | — |
65
+ | `placements` | `PatternObjectPlacement[]` | yes | — |
66
+ | `connections` | `PatternConnectionResult[]` | yes | — |
67
+ | `createdObjectIds` | `bigint[]` | yes | Newly created wires / power symbols / net aliases. |
68
+ | `occupiedBox` | `Box2i64` | no | Final footprint including wires and power symbols (external coordinates).
69
+ Callers should book-keep this and avoid the area for later placements. |
70
+ | `conflictingObjectIds` | `bigint[]` | yes | Objects intersecting occupied_box; use them to pick another anchor. |
71
+
72
+ ## Response Example
73
+
74
+ Representative response structure (field values are placeholders):
75
+
76
+ ```json
77
+ {
78
+ "status": {},
79
+ "message": "example",
80
+ "placements": [
81
+ {}
82
+ ],
83
+ "connections": [
84
+ {}
85
+ ],
86
+ "createdObjectIds": [
87
+ "123456789"
88
+ ],
89
+ "occupiedBox": {},
90
+ "conflictingObjectIds": [
91
+ "123456789"
92
+ ]
93
+ }
94
+ ```
95
+
96
+ ## Prerequisites
97
+
98
+ - [project-get-active-project](../../project/get-active-project/SKILL.md) — Discover the active project before building project-scoped context.
99
+
100
+ See also [skill-dependencies.md](../../references/skill-dependencies.md) for common workflows.
101
+
102
+ ## How to Use
103
+
104
+ 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.
105
+
106
+ ```typescript
107
+ import { getSkill, toJsonString } from "@huaqiu/hqeda";
108
+
109
+ const skill = getSkill("pattern-layout-apply-circuit-pattern");
110
+ const result = await skill.execute({ client }, {
111
+ context: "<ProjectContext via client.createProjectContext('my-project')>",
112
+ pattern: {},
113
+ roles: [{}],
114
+ });
115
+ console.log(toJsonString(result, { prettySpaces: 2 }));
116
+ ```
117
+
118
+ Serialize responses with `toJsonString()` — see [serialization.md](../../references/serialization.md).
119
+
120
+ ## Related Skills
121
+
122
+ - Other **pattern-layout** skills: [`pattern-layout/`](../)
123
+ - Full index: [All EDA skills](../../SKILL.md)
124
+ - Install: `npx skills add Huaqiu-Electronics/skills --path eda/pattern-layout/apply-circuit-pattern`
125
+