@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,100 @@
1
+ ---
2
+ name: pattern-layout-get-page-occupancy
3
+ metadata:
4
+ category: pattern-layout
5
+ service: PatternLayoutService
6
+ method: GetPageOccupancy
7
+ rpcKind: unary
8
+ description: >-
9
+ Bounding boxes of what is already on the page, for floorplanning / avoidance.
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: GetPageOccupancyRequestSchema
20
+ namespace: HqServicesV1PatternLayoutService
21
+ ---
22
+
23
+ # Get Page Occupancy
24
+
25
+ Bounding boxes of what is already on the page, for floorplanning / avoidance.
26
+
27
+ ## Overview
28
+
29
+ This skill provides access to the **`PatternLayoutService.GetPageOccupancy`** 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-get-page-occupancy` |
34
+ | Service | `PatternLayoutService` |
35
+ | Method | `GetPageOccupancy` |
36
+ | Transport | Unary (unary) |
37
+ | Domain | pattern-layout |
38
+ | Request type | `GetPageOccupancyRequest` |
39
+ | Response type | `GetPageOccupancyResponse` |
40
+
41
+ ## Parameters
42
+
43
+ | Name | Type | Required | Repeated | Description |
44
+ | --- | --- | --- | --- | --- |
45
+ | `context` | `ProjectContext` | no | no | — |
46
+ | `area` | `Box2i64` | no | no | Restrict the scan to this box; empty (all-zero) box = whole page. |
47
+ | `includeWires` | `boolean` | yes | no | Include wires / buses / graphics, not just parts and symbols. |
48
+
49
+ ## Response
50
+
51
+ Returns a `GetPageOccupancyResponse` message with the following fields:
52
+
53
+ | Name | Type | Repeated | Description |
54
+ | --- | --- | --- | --- |
55
+ | `pageBox` | `Box2i64` | no | — |
56
+ | `items` | `PageOccupancyItem[]` | yes | — |
57
+
58
+ ## Response Example
59
+
60
+ Representative response structure (field values are placeholders):
61
+
62
+ ```json
63
+ {
64
+ "pageBox": {},
65
+ "items": [
66
+ {}
67
+ ]
68
+ }
69
+ ```
70
+
71
+ ## Prerequisites
72
+
73
+ - [project-get-active-project](../../project/get-active-project/SKILL.md) — Discover the active project before building project-scoped context.
74
+
75
+ See also [skill-dependencies.md](../../references/skill-dependencies.md) for common workflows.
76
+
77
+ ## How to Use
78
+
79
+ 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.
80
+
81
+ ```typescript
82
+ import { getSkill, toJsonString } from "@huaqiu/hqeda";
83
+
84
+ const skill = getSkill("pattern-layout-get-page-occupancy");
85
+ const result = await skill.execute({ client }, {
86
+ context: "<ProjectContext via client.createProjectContext('my-project')>",
87
+ area: {},
88
+ includeWires: false,
89
+ });
90
+ console.log(toJsonString(result, { prettySpaces: 2 }));
91
+ ```
92
+
93
+ Serialize responses with `toJsonString()` — see [serialization.md](../../references/serialization.md).
94
+
95
+ ## Related Skills
96
+
97
+ - Other **pattern-layout** skills: [`pattern-layout/`](../)
98
+ - Full index: [All EDA skills](../../SKILL.md)
99
+ - Install: `npx skills add Huaqiu-Electronics/skills --path eda/pattern-layout/get-page-occupancy`
100
+
@@ -0,0 +1,97 @@
1
+ ---
2
+ name: pattern-layout-list-circuit-patterns
3
+ metadata:
4
+ category: pattern-layout
5
+ service: PatternLayoutService
6
+ method: ListCircuitPatterns
7
+ rpcKind: unary
8
+ description: >-
9
+ Self-describing catalog — keeps the skill docs from drifting away from the implementation. Call it before Apply to learn the roles/terminals/options.
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: ListCircuitPatternsRequestSchema
20
+ namespace: HqServicesV1PatternLayoutService
21
+ ---
22
+
23
+ # List Circuit Patterns
24
+
25
+ Self-describing catalog — keeps the skill docs from drifting away from the
26
+ implementation. Call it before Apply to learn the roles/terminals/options.
27
+
28
+ ## Overview
29
+
30
+ This skill provides access to the **`PatternLayoutService.ListCircuitPatterns`** RPC method on the Huaqiu EDA engine. It is part of the **pattern-layout** domain and executes against the `patternLayout` client.
31
+
32
+ | Property | Value |
33
+ | --- | --- |
34
+ | Skill ID | `pattern-layout-list-circuit-patterns` |
35
+ | Service | `PatternLayoutService` |
36
+ | Method | `ListCircuitPatterns` |
37
+ | Transport | Unary (unary) |
38
+ | Domain | pattern-layout |
39
+ | Request type | `ListCircuitPatternsRequest` |
40
+ | Response type | `ListCircuitPatternsResponse` |
41
+
42
+ ## Parameters
43
+
44
+ | Name | Type | Required | Repeated | Description |
45
+ | --- | --- | --- | --- | --- |
46
+ | `context` | `ProjectContext` | no | no | — |
47
+ | `pattern` | `CircuitPatternId` | yes | no | 0 / UNSPECIFIED = every pattern. |
48
+
49
+ ## Response
50
+
51
+ Returns a `ListCircuitPatternsResponse` message with the following fields:
52
+
53
+ | Name | Type | Repeated | Description |
54
+ | --- | --- | --- | --- |
55
+ | `patterns` | `CircuitPatternDescriptor[]` | yes | — |
56
+
57
+ ## Response Example
58
+
59
+ Representative response structure (field values are placeholders):
60
+
61
+ ```json
62
+ {
63
+ "patterns": [
64
+ {}
65
+ ]
66
+ }
67
+ ```
68
+
69
+ ## Prerequisites
70
+
71
+ - [project-get-active-project](../../project/get-active-project/SKILL.md) — Discover the active project before building project-scoped context.
72
+
73
+ See also [skill-dependencies.md](../../references/skill-dependencies.md) for common workflows.
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("pattern-layout-list-circuit-patterns");
83
+ const result = await skill.execute({ client }, {
84
+ context: "<ProjectContext via client.createProjectContext('my-project')>",
85
+ pattern: {},
86
+ });
87
+ console.log(toJsonString(result, { prettySpaces: 2 }));
88
+ ```
89
+
90
+ Serialize responses with `toJsonString()` — see [serialization.md](../../references/serialization.md).
91
+
92
+ ## Related Skills
93
+
94
+ - Other **pattern-layout** skills: [`pattern-layout/`](../)
95
+ - Full index: [All EDA skills](../../SKILL.md)
96
+ - Install: `npx skills add Huaqiu-Electronics/skills --path eda/pattern-layout/list-circuit-patterns`
97
+
@@ -0,0 +1,94 @@
1
+ ---
2
+ name: placement-list-part-libraries
3
+ metadata:
4
+ category: placement
5
+ service: ComponentPlaceService
6
+ method: ListPartLibraries
7
+ rpcKind: unary
8
+ description: >-
9
+ Fallback listing for local/builtin part libraries — agents prefer online part-search (searchParts → getEdaModels) first
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: ListPartLibrariesRequestSchema
20
+ namespace: HqServicesV1ComponentPlaceService
21
+ ---
22
+
23
+ # List Part Libraries
24
+
25
+ Fallback listing for local/builtin part libraries — agents prefer online part-search (searchParts → getEdaModels) first
26
+
27
+ ## Overview
28
+
29
+ This skill provides access to the **`ComponentPlaceService.ListPartLibraries`** 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-list-part-libraries` |
34
+ | Service | `ComponentPlaceService` |
35
+ | Method | `ListPartLibraries` |
36
+ | Transport | Unary (unary) |
37
+ | Domain | placement |
38
+ | Request type | `ListPartLibrariesRequest` |
39
+ | Response type | `ListPartLibrariesResponse` |
40
+
41
+ ## Parameters
42
+
43
+ | Name | Type | Required | Repeated | Description |
44
+ | --- | --- | --- | --- | --- |
45
+ | `context` | `ProjectContext` | no | no | — |
46
+
47
+ ## Response
48
+
49
+ Returns a `ListPartLibrariesResponse` message with the following fields:
50
+
51
+ | Name | Type | Repeated | Description |
52
+ | --- | --- | --- | --- |
53
+ | `libraries` | `PartLibraryInfo[]` | yes | — |
54
+
55
+ ## Response Example
56
+
57
+ Representative response structure (field values are placeholders):
58
+
59
+ ```json
60
+ {
61
+ "libraries": [
62
+ {}
63
+ ]
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("placement-list-part-libraries");
81
+ const result = await skill.execute({ client }, {
82
+ context: "<ProjectContext via client.createProjectContext('my-project')>",
83
+ });
84
+ console.log(toJsonString(result, { prettySpaces: 2 }));
85
+ ```
86
+
87
+ Serialize responses with `toJsonString()` — see [serialization.md](../../references/serialization.md).
88
+
89
+ ## Related Skills
90
+
91
+ - Other **placement** skills: [`placement/`](../)
92
+ - Full index: [All EDA skills](../../SKILL.md)
93
+ - Install: `npx skills add Huaqiu-Electronics/skills --path eda/placement/list-part-libraries`
94
+
@@ -0,0 +1,94 @@
1
+ ---
2
+ name: placement-list-symbol-libraries
3
+ metadata:
4
+ category: placement
5
+ service: ComponentPlaceService
6
+ method: ListSymbolLibraries
7
+ rpcKind: unary
8
+ description: >-
9
+ Agent path: list global/power/gnd, port, off-page symbols — call before PlaceSymbolFromLibrary
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: ListSymbolLibrariesRequestSchema
20
+ namespace: HqServicesV1ComponentPlaceService
21
+ ---
22
+
23
+ # List Symbol Libraries
24
+
25
+ Agent path: list global/power/gnd, port, off-page symbols — call before PlaceSymbolFromLibrary
26
+
27
+ ## Overview
28
+
29
+ This skill provides access to the **`ComponentPlaceService.ListSymbolLibraries`** 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-list-symbol-libraries` |
34
+ | Service | `ComponentPlaceService` |
35
+ | Method | `ListSymbolLibraries` |
36
+ | Transport | Unary (unary) |
37
+ | Domain | placement |
38
+ | Request type | `ListSymbolLibrariesRequest` |
39
+ | Response type | `ListSymbolLibrariesResponse` |
40
+
41
+ ## Parameters
42
+
43
+ | Name | Type | Required | Repeated | Description |
44
+ | --- | --- | --- | --- | --- |
45
+ | `context` | `ProjectContext` | no | no | — |
46
+
47
+ ## Response
48
+
49
+ Returns a `ListSymbolLibrariesResponse` message with the following fields:
50
+
51
+ | Name | Type | Repeated | Description |
52
+ | --- | --- | --- | --- |
53
+ | `libraries` | `SymbolLibraryInfo[]` | yes | — |
54
+
55
+ ## Response Example
56
+
57
+ Representative response structure (field values are placeholders):
58
+
59
+ ```json
60
+ {
61
+ "libraries": [
62
+ {}
63
+ ]
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("placement-list-symbol-libraries");
81
+ const result = await skill.execute({ client }, {
82
+ context: "<ProjectContext via client.createProjectContext('my-project')>",
83
+ });
84
+ console.log(toJsonString(result, { prettySpaces: 2 }));
85
+ ```
86
+
87
+ Serialize responses with `toJsonString()` — see [serialization.md](../../references/serialization.md).
88
+
89
+ ## Related Skills
90
+
91
+ - Other **placement** skills: [`placement/`](../)
92
+ - Full index: [All EDA skills](../../SKILL.md)
93
+ - Install: `npx skills add Huaqiu-Electronics/skills --path eda/placement/list-symbol-libraries`
94
+
@@ -0,0 +1,105 @@
1
+ ---
2
+ name: placement-place-kicad-symbol
3
+ metadata:
4
+ category: placement
5
+ service: ComponentPlaceService
6
+ method: PlaceKicadSymbol
7
+ rpcKind: unary
8
+ description: >-
9
+ Place R/C/Q/U from online KiCad symbol URL (SCH_PlaceKicadSymbolFromResource). Invoke after part-search getEdaModels returns symbol.uri; requires active schematic page and project context.
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: PlaceKicadSymbolRequestSchema
20
+ namespace: HqServicesV1ComponentPlaceService
21
+ ---
22
+
23
+ # Place Kicad Symbol
24
+
25
+ Place R/C/Q/U from online KiCad symbol URL (SCH_PlaceKicadSymbolFromResource). Invoke after part-search getEdaModels returns symbol.uri; requires active schematic page and project context.
26
+
27
+ ## Overview
28
+
29
+ This skill provides access to the **`ComponentPlaceService.PlaceKicadSymbol`** 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-kicad-symbol` |
34
+ | Service | `ComponentPlaceService` |
35
+ | Method | `PlaceKicadSymbol` |
36
+ | Transport | Unary (unary) |
37
+ | Domain | placement |
38
+ | Request type | `PlaceKicadSymbolRequest` |
39
+ | Response type | `ObjectPlaceResponse` |
40
+
41
+ ## Parameters
42
+
43
+ | Name | Type | Required | Repeated | Description |
44
+ | --- | --- | --- | --- | --- |
45
+ | `context` | `ProjectContext` | no | no | — |
46
+ | `component` | `ComponentResource` | no | no | — |
47
+ | `localPos` | `Vector2i64` | no | no | — |
48
+ | `sectionPlacements` | `SectionPlacement[]` | no | yes | — |
49
+
50
+ ## Response
51
+
52
+ Returns a `ObjectPlaceResponse` message with the following fields:
53
+
54
+ | Name | Type | Repeated | Description |
55
+ | --- | --- | --- | --- |
56
+ | `success` | `boolean` | no | — |
57
+ | `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. |
58
+ | `objectIds` | `bigint[]` | yes | All placed section object ids (PlaceKicadSymbol multi-section loop). |
59
+ | `sectionCount` | `number` | no | Number of sections in the package (GetSectionCount); set by PlaceKicadSymbol when available. |
60
+
61
+ ## Response Example
62
+
63
+ Representative response structure (field values are placeholders):
64
+
65
+ ```json
66
+ {
67
+ "success": false,
68
+ "objectId": "123456789",
69
+ "objectIds": [
70
+ "123456789"
71
+ ],
72
+ "sectionCount": 0
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("placement-place-kicad-symbol");
90
+ const result = await skill.execute({ client }, {
91
+ context: "<ProjectContext via client.createProjectContext('my-project')>",
92
+ component: {},
93
+ localPos: {"x":0,"y":0},
94
+ });
95
+ console.log(toJsonString(result, { prettySpaces: 2 }));
96
+ ```
97
+
98
+ Serialize responses with `toJsonString()` — see [serialization.md](../../references/serialization.md).
99
+
100
+ ## Related Skills
101
+
102
+ - Other **placement** skills: [`placement/`](../)
103
+ - Full index: [All EDA skills](../../SKILL.md)
104
+ - Install: `npx skills add Huaqiu-Electronics/skills --path eda/placement/place-kicad-symbol`
105
+
@@ -0,0 +1,106 @@
1
+ ---
2
+ name: placement-place-part-from-library
3
+ metadata:
4
+ category: placement
5
+ service: ComponentPlaceService
6
+ method: PlacePartFromLibrary
7
+ rpcKind: unary
8
+ description: >-
9
+ Place a part from local/builtin library (discrete, etc.). Invoke when online part-search has no match or user specifies a local libraryName/partName; requires active schematic page.
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: PlacePartFromLibraryRequestSchema
20
+ namespace: HqServicesV1ComponentPlaceService
21
+ ---
22
+
23
+ # Place Part From Library
24
+
25
+ Place a part from local/builtin library (discrete, etc.). Invoke when online part-search has no match or user specifies a local libraryName/partName; requires active schematic page.
26
+
27
+ ## Overview
28
+
29
+ This skill provides access to the **`ComponentPlaceService.PlacePartFromLibrary`** 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-part-from-library` |
34
+ | Service | `ComponentPlaceService` |
35
+ | Method | `PlacePartFromLibrary` |
36
+ | Transport | Unary (unary) |
37
+ | Domain | placement |
38
+ | Request type | `PlacePartFromLibraryRequest` |
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
+ | `partName` | `string` | yes | no | — |
49
+ | `libraryFilePath` | `string` | yes | no | — |
50
+
51
+ ## Response
52
+
53
+ Returns a `ObjectPlaceResponse` message with the following fields:
54
+
55
+ | Name | Type | Repeated | Description |
56
+ | --- | --- | --- | --- |
57
+ | `success` | `boolean` | no | — |
58
+ | `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. |
59
+ | `objectIds` | `bigint[]` | yes | All placed section object ids (PlaceKicadSymbol multi-section loop). |
60
+ | `sectionCount` | `number` | no | Number of sections in the package (GetSectionCount); set by PlaceKicadSymbol when available. |
61
+
62
+ ## Response Example
63
+
64
+ Representative response structure (field values are placeholders):
65
+
66
+ ```json
67
+ {
68
+ "success": false,
69
+ "objectId": "123456789",
70
+ "objectIds": [
71
+ "123456789"
72
+ ],
73
+ "sectionCount": 0
74
+ }
75
+ ```
76
+
77
+ ## Prerequisites
78
+
79
+ - [project-get-active-project](../../project/get-active-project/SKILL.md) — Discover the active project before building project-scoped context.
80
+
81
+ See also [skill-dependencies.md](../../references/skill-dependencies.md) for common workflows.
82
+
83
+ ## How to Use
84
+
85
+ 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.
86
+
87
+ ```typescript
88
+ import { getSkill, toJsonString } from "@huaqiu/hqeda";
89
+
90
+ const skill = getSkill("placement-place-part-from-library");
91
+ const result = await skill.execute({ client }, {
92
+ context: "<ProjectContext via client.createProjectContext('my-project')>",
93
+ localPos: {"x":0,"y":0},
94
+ libraryName: "Device",
95
+ });
96
+ console.log(toJsonString(result, { prettySpaces: 2 }));
97
+ ```
98
+
99
+ Serialize responses with `toJsonString()` — see [serialization.md](../../references/serialization.md).
100
+
101
+ ## Related Skills
102
+
103
+ - Other **placement** skills: [`placement/`](../)
104
+ - Full index: [All EDA skills](../../SKILL.md)
105
+ - Install: `npx skills add Huaqiu-Electronics/skills --path eda/placement/place-part-from-library`
106
+