@huaqiu/hqeda 0.1.1

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/SKILL.md ADDED
@@ -0,0 +1,279 @@
1
+ ---
2
+ name: hqeda
3
+ description: Official Huaqiu EDA Skill Package providing executable SDK capabilities, ERC diagnostics, BOM analysis, and human-authored review playbooks.
4
+ version: 0.1.0
5
+ vendor: Huaqiu Electronics
6
+ author: Huaqiu AI Platform Team
7
+ tags:
8
+ - eda
9
+ - kicad
10
+ - electronics
11
+ - erc
12
+ - bom
13
+ - pcb
14
+ entry: ./dist/index.js
15
+ manifest: ./skill.json
16
+ ---
17
+
18
+ # Huaqiu EDA Skill (`@huaqiu/hqeda`)
19
+
20
+ Welcome to the official **Huaqiu EDA Skill Package**. This package equips LLM
21
+ agents with deterministic capabilities to interact with Huaqiu EDA engines,
22
+ parse schematics, execute ERC checks, query BOMs, and apply hardware
23
+ engineering review playbooks.
24
+
25
+ ## Operational Capabilities
26
+
27
+ <!-- BEGIN GENERATED CAPABILITIES -->
28
+ <!-- This section is regenerated by `pnpm capability:generate`. -->
29
+ <!-- Hand-edits here will be lost on the next run. -->
30
+
31
+ Total capabilities: **110** across **18** domains.
32
+
33
+ ### ai (`ai`)
34
+
35
+ | Skill ID | Method | Description | Streaming |
36
+ | --- | --- | --- | --- |
37
+ | `ai-execute-prompt` | `AIService.ExecutePrompt` | Execute Prompt via AIService.ExecutePrompt | no |
38
+
39
+ ### bom (`bom`)
40
+
41
+ | Skill ID | Method | Description | Streaming |
42
+ | --- | --- | --- | --- |
43
+ | `bom-get-bom` | `EdaBomService.GetBom` | Get full BOM snapshot from current schematic state | no |
44
+
45
+ ### canvas (`canvas`)
46
+
47
+ | Skill ID | Method | Description | Streaming |
48
+ | --- | --- | --- | --- |
49
+ | `canvas-align-objects` | `CanvasOpsService.AlignObjects` | transform | no |
50
+ | `canvas-can-paste` | `CanvasOpsService.CanPaste` | Can Paste via CanvasOpsService.CanPaste | no |
51
+ | `canvas-clear-all-sel` | `CanvasOpsService.ClearAllSel` | selection | no |
52
+ | `canvas-copy-selected` | `CanvasOpsService.CopySelected` | Copy Selected via CanvasOpsService.CopySelected | no |
53
+ | `canvas-delete-selected` | `CanvasOpsService.DeleteSelected` | edit | no |
54
+ | `canvas-distribute-objects` | `CanvasOpsService.DistributeObjects` | Distribute Objects via CanvasOpsService.DistributeObjects | no |
55
+ | `canvas-get-align-type` | `CanvasOpsService.GetAlignType` | Get Align Type via CanvasOpsService.GetAlignType | no |
56
+ | `canvas-get-selected-object-json` | `CanvasOpsService.GetSelectedObjectJson` | Get Selected Object Json via CanvasOpsService.GetSelectedObjectJson | no |
57
+ | `canvas-get-selected-objects-json` | `CanvasOpsService.GetSelectedObjectsJson` | Get Selected Objects Json via CanvasOpsService.GetSelectedObjectsJson | no |
58
+ | `canvas-mirror-objects` | `CanvasOpsService.MirrorObjects` | Mirror Objects via CanvasOpsService.MirrorObjects | no |
59
+ | `canvas-move-selected-objs` | `CanvasOpsService.MoveSelectedObjs` | Move Selected Objs via CanvasOpsService.MoveSelectedObjs | no |
60
+ | `canvas-on-canvas-escape` | `CanvasOpsService.OnCanvasEscape` | state | no |
61
+ | `canvas-pan-canvas` | `CanvasOpsService.PanCanvas` | viewport | no |
62
+ | `canvas-paste-selected` | `CanvasOpsService.PasteSelected` | Paste Selected via CanvasOpsService.PasteSelected | no |
63
+ | `canvas-rotate-objects` | `CanvasOpsService.RotateObjects` | Rotate Objects via CanvasOpsService.RotateObjects | no |
64
+ | `canvas-screen-to-canvas-local` | `CanvasOpsService.ScreenToCanvasLocal` | coordinate | no |
65
+ | `canvas-select-all` | `CanvasOpsService.SelectAll` | Select All via CanvasOpsService.SelectAll | no |
66
+ | `canvas-select-object-at` | `CanvasOpsService.SelectObjectAt` | Select Object At via CanvasOpsService.SelectObjectAt | no |
67
+ | `canvas-set-align-type` | `CanvasOpsService.SetAlignType` | grid align | no |
68
+ | `canvas-set-page-size` | `CanvasOpsService.SetPageSize` | page | no |
69
+ | `canvas-set-page-size-rect` | `CanvasOpsService.SetPageSizeRect` | Set Page Size Rect via CanvasOpsService.SetPageSizeRect | no |
70
+ | `canvas-zoom-all` | `CanvasOpsService.ZoomAll` | Zoom All via CanvasOpsService.ZoomAll | no |
71
+ | `canvas-zoom-area-by-double-box` | `CanvasOpsService.ZoomAreaByDoubleBox` | Zoom Area By Double Box via CanvasOpsService.ZoomAreaByDoubleBox | no |
72
+ | `canvas-zoom-area-by-int-box` | `CanvasOpsService.ZoomAreaByIntBox` | Zoom Area By Int Box via CanvasOpsService.ZoomAreaByIntBox | no |
73
+ | `canvas-zoom-area-by-points` | `CanvasOpsService.ZoomAreaByPoints` | Zoom Area By Points via CanvasOpsService.ZoomAreaByPoints | no |
74
+ | `canvas-zoom-in` | `CanvasOpsService.ZoomIn` | zoom | no |
75
+ | `canvas-zoom-out` | `CanvasOpsService.ZoomOut` | Zoom Out via CanvasOpsService.ZoomOut | no |
76
+ | `canvas-zoom-selected` | `CanvasOpsService.ZoomSelected` | Zoom Selected via CanvasOpsService.ZoomSelected | no |
77
+
78
+ ### capability (`capability`)
79
+
80
+ | Skill ID | Method | Description | Streaming |
81
+ | --- | --- | --- | --- |
82
+ | `capability-get-capabilities` | `CapabilityService.GetCapabilities` | Get Capabilities via CapabilityService.GetCapabilities | no |
83
+
84
+ ### context (`context`)
85
+
86
+ | Skill ID | Method | Description | Streaming |
87
+ | --- | --- | --- | --- |
88
+ | `context-get-context` | `ContextService.GetContext` | Get Context via ContextService.GetContext | no |
89
+
90
+ ### discovery (`discovery`)
91
+
92
+ | Skill ID | Method | Description | Streaming |
93
+ | --- | --- | --- | --- |
94
+ | `discovery-get-server-info` | `DiscoveryService.GetServerInfo` | Get Server Info via DiscoveryService.GetServerInfo | no |
95
+
96
+ ### erc (`erc`)
97
+
98
+ | Skill ID | Method | Description | Streaming |
99
+ | --- | --- | --- | --- |
100
+ | `erc-clear-all-findings` | `ERCService.ClearAllFindings` | Clear All Findings via ERCService.ClearAllFindings | no |
101
+ | `erc-clear-findings` | `ERCService.ClearFindings` | Clear Findings via ERCService.ClearFindings | no |
102
+ | `erc-run-checks` | `ERCService.RunChecks` | Run erc check with the eda's built-in engine | no |
103
+ | `erc-set-erc-report-webview-visibility` | `ERCService.SetErcReportWebviewVisibility` | ONLY controls report webview visibility | no |
104
+ | `erc-set-report-webview-state` | `ERCService.SetReportWebviewState` | Set Report Webview State via ERCService.SetReportWebviewState | no |
105
+ | `erc-show-findings` | `ERCService.ShowFindings` | Canvas interaction (row click → highlight in EDA view) | no |
106
+
107
+ ### event (`event`)
108
+
109
+ | Skill ID | Method | Description | Streaming |
110
+ | --- | --- | --- | --- |
111
+ | `event-subscribe` | `EventService.Subscribe` | Subscribe via EventService.Subscribe | yes |
112
+
113
+ ### export (`export`)
114
+
115
+ | Skill ID | Method | Description | Streaming |
116
+ | --- | --- | --- | --- |
117
+ | `export-export-bom` | `ExportService.ExportBOM` | Export Bom via ExportService.ExportBOM | no |
118
+ | `export-export-target` | `ExportService.ExportTarget` | Export Target via ExportService.ExportTarget | no |
119
+
120
+ ### graph (`graph`)
121
+
122
+ | Skill ID | Method | Description | Streaming |
123
+ | --- | --- | --- | --- |
124
+ | `graph-get-connectivity` | `GraphService.GetConnectivity` | Get Connectivity via GraphService.GetConnectivity | no |
125
+ | `graph-query-graph` | `GraphService.QueryGraph` | Query Graph via GraphService.QueryGraph | no |
126
+
127
+ ### import (`import`)
128
+
129
+ | Skill ID | Method | Description | Streaming |
130
+ | --- | --- | --- | --- |
131
+ | `import-import-design` | `ImportService.ImportDesign` | Import a design from an external EDA system | no |
132
+
133
+ ### kernel (`kernel`)
134
+
135
+ | Skill ID | Method | Description | Streaming |
136
+ | --- | --- | --- | --- |
137
+ | `kernel-get-entity` | `KernelService.GetEntity` | Get Entity via KernelService.GetEntity | no |
138
+ | `kernel-get-snapshot` | `KernelService.GetSnapshot` | Get Snapshot via KernelService.GetSnapshot | no |
139
+
140
+ ### obj-place (`obj-place`)
141
+
142
+ | Skill ID | Method | Description | Streaming |
143
+ | --- | --- | --- | --- |
144
+ | `obj-place-add-bus-segment` | `ObjPlaceService.AddBusSegment` | Add Bus Segment via ObjPlaceService.AddBusSegment | no |
145
+ | `obj-place-add-ellipse` | `ObjPlaceService.AddEllipse` | Add Ellipse via ObjPlaceService.AddEllipse | no |
146
+ | `obj-place-add-free-line-segment` | `ObjPlaceService.AddFreeLineSegment` | Add Free Line Segment via ObjPlaceService.AddFreeLineSegment | no |
147
+ | `obj-place-add-line` | `ObjPlaceService.AddLine` | Add Line via ObjPlaceService.AddLine | no |
148
+ | `obj-place-add-rect` | `ObjPlaceService.AddRect` | Add Rect via ObjPlaceService.AddRect | no |
149
+ | `obj-place-add-wire-segment` | `ObjPlaceService.AddWireSegment` | Add Wire Segment via ObjPlaceService.AddWireSegment | no |
150
+ | `obj-place-cancel-bus-draw` | `ObjPlaceService.CancelBusDraw` | Cancel Bus Draw via ObjPlaceService.CancelBusDraw | no |
151
+ | `obj-place-cancel-ellipse-arc-draw` | `ObjPlaceService.CancelEllipseArcDraw` | Cancel Ellipse Arc Draw via ObjPlaceService.CancelEllipseArcDraw | no |
152
+ | `obj-place-cancel-ellipse-draw` | `ObjPlaceService.CancelEllipseDraw` | Cancel Ellipse Draw via ObjPlaceService.CancelEllipseDraw | no |
153
+ | `obj-place-cancel-free-line-draw` | `ObjPlaceService.CancelFreeLineDraw` | Cancel Free Line Draw via ObjPlaceService.CancelFreeLineDraw | no |
154
+ | `obj-place-cancel-line-draw` | `ObjPlaceService.CancelLineDraw` | Cancel Line Draw via ObjPlaceService.CancelLineDraw | no |
155
+ | `obj-place-cancel-rect-draw` | `ObjPlaceService.CancelRectDraw` | Cancel Rect Draw via ObjPlaceService.CancelRectDraw | no |
156
+ | `obj-place-cancel-wire-draw` | `ObjPlaceService.CancelWireDraw` | Cancel Wire Draw via ObjPlaceService.CancelWireDraw | no |
157
+ | `obj-place-handle-bus-draw-click` | `ObjPlaceService.HandleBusDrawClick` | bus | no |
158
+ | `obj-place-handle-ellipse-arc-draw-click` | `ObjPlaceService.HandleEllipseArcDrawClick` | Handle Ellipse Arc Draw Click via ObjPlaceService.HandleEllipseArcDrawClick | no |
159
+ | `obj-place-handle-ellipse-draw-click` | `ObjPlaceService.HandleEllipseDrawClick` | Handle Ellipse Draw Click via ObjPlaceService.HandleEllipseDrawClick | no |
160
+ | `obj-place-handle-free-line-draw-click` | `ObjPlaceService.HandleFreeLineDrawClick` | Handle Free Line Draw Click via ObjPlaceService.HandleFreeLineDrawClick | no |
161
+ | `obj-place-handle-image-draw-click` | `ObjPlaceService.HandleImageDrawClick` | Handle Image Draw Click via ObjPlaceService.HandleImageDrawClick | no |
162
+ | `obj-place-handle-line-draw-click` | `ObjPlaceService.HandleLineDrawClick` | Handle Line Draw Click via ObjPlaceService.HandleLineDrawClick | no |
163
+ | `obj-place-handle-net-alias-draw-click` | `ObjPlaceService.HandleNetAliasDrawClick` | Handle Net Alias Draw Click via ObjPlaceService.HandleNetAliasDrawClick | no |
164
+ | `obj-place-handle-rect-draw-click` | `ObjPlaceService.HandleRectDrawClick` | Handle Rect Draw Click via ObjPlaceService.HandleRectDrawClick | no |
165
+ | `obj-place-handle-table-draw-click` | `ObjPlaceService.HandleTableDrawClick` | Handle Table Draw Click via ObjPlaceService.HandleTableDrawClick | no |
166
+ | `obj-place-handle-text-draw-click` | `ObjPlaceService.HandleTextDrawClick` | Handle Text Draw Click via ObjPlaceService.HandleTextDrawClick | no |
167
+ | `obj-place-handle-wire-draw-click` | `ObjPlaceService.HandleWireDrawClick` | wire | no |
168
+ | `obj-place-place-bus` | `ObjPlaceService.PlaceBus` | Place Bus via ObjPlaceService.PlaceBus | no |
169
+ | `obj-place-place-ellipse` | `ObjPlaceService.PlaceEllipse` | ellipse | no |
170
+ | `obj-place-place-ellipse-arc` | `ObjPlaceService.PlaceEllipseArc` | ellipse arc | no |
171
+ | `obj-place-place-ellipse-arc-from-virtual` | `ObjPlaceService.PlaceEllipseArcFromVirtual` | Place Ellipse Arc From Virtual via ObjPlaceService.PlaceEllipseArcFromVirtual | no |
172
+ | `obj-place-place-free-line` | `ObjPlaceService.PlaceFreeLine` | free line | no |
173
+ | `obj-place-place-image` | `ObjPlaceService.PlaceImage` | image | no |
174
+ | `obj-place-place-line` | `ObjPlaceService.PlaceLine` | line | no |
175
+ | `obj-place-place-net-alias` | `ObjPlaceService.PlaceNetAlias` | net alias | no |
176
+ | `obj-place-place-rect` | `ObjPlaceService.PlaceRect` | rect | no |
177
+ | `obj-place-place-table` | `ObjPlaceService.PlaceTable` | table | no |
178
+ | `obj-place-place-table-from-virtual` | `ObjPlaceService.PlaceTableFromVirtual` | Place Table From Virtual via ObjPlaceService.PlaceTableFromVirtual | no |
179
+ | `obj-place-place-text` | `ObjPlaceService.PlaceText` | text | no |
180
+ | `obj-place-place-text-from-virtual` | `ObjPlaceService.PlaceTextFromVirtual` | Place Text From Virtual via ObjPlaceService.PlaceTextFromVirtual | no |
181
+ | `obj-place-place-wire` | `ObjPlaceService.PlaceWire` | Place Wire via ObjPlaceService.PlaceWire | no |
182
+
183
+ ### placement (`placement`)
184
+
185
+ | Skill ID | Method | Description | Streaming |
186
+ | --- | --- | --- | --- |
187
+ | `placement-cancel-block-draw` | `ComponentPlaceService.CancelBlockDraw` | Cancel Block Draw via ComponentPlaceService.CancelBlockDraw | no |
188
+ | `placement-clear-net-alias-attach-obj` | `ComponentPlaceService.ClearNetAliasAttachObj` | Clear Net Alias Attach Obj via ComponentPlaceService.ClearNetAliasAttachObj | no |
189
+ | `placement-handle-block-draw-click` | `ComponentPlaceService.HandleBlockDrawClick` | Handle Block Draw Click via ComponentPlaceService.HandleBlockDrawClick | no |
190
+ | `placement-handle-part-draw-click` | `ComponentPlaceService.HandlePartDrawClick` | Handle Part Draw Click via ComponentPlaceService.HandlePartDrawClick | no |
191
+ | `placement-handle-symbol-draw-click` | `ComponentPlaceService.HandleSymbolDrawClick` | Handle Symbol Draw Click via ComponentPlaceService.HandleSymbolDrawClick | no |
192
+ | `placement-place-block` | `ComponentPlaceService.PlaceBlock` | block | no |
193
+ | `placement-place-part` | `ComponentPlaceService.PlacePart` | part | no |
194
+ | `placement-place-symbol` | `ComponentPlaceService.PlaceSymbol` | symbol | no |
195
+ | `placement-set-net-alias-attach-obj` | `ComponentPlaceService.SetNetAliasAttachObj` | net alias attach | no |
196
+
197
+ ### project (`project`)
198
+
199
+ | Skill ID | Method | Description | Streaming |
200
+ | --- | --- | --- | --- |
201
+ | `project-close-project` | `ProjectService.CloseProject` | Closes an opened project. | no |
202
+ | `project-get-active-project` | `ProjectService.GetActiveProject` | Returns the project currently active in the editor UI. | no |
203
+ | `project-get-project` | `ProjectService.GetProject` | Returns one opened project. | no |
204
+ | `project-list-open-projects` | `ProjectService.ListOpenProjects` | Returns all projects currently opened in this HQ EDA process. | no |
205
+ | `project-open-project` | `ProjectService.OpenProject` | Opens a project into the current HQ EDA editor process. | no |
206
+ | `project-save-project` | `ProjectService.SaveProject` | Persists an opened project. | no |
207
+
208
+ ### runtime (`runtime`)
209
+
210
+ | Skill ID | Method | Description | Streaming |
211
+ | --- | --- | --- | --- |
212
+ | `runtime-execute-commands` | `RuntimeService.ExecuteCommands` | Execute Commands via RuntimeService.ExecuteCommands | no |
213
+ | `runtime-validate-commands` | `RuntimeService.ValidateCommands` | Validate Commands via RuntimeService.ValidateCommands | no |
214
+
215
+ ### selection (`selection`)
216
+
217
+ | Skill ID | Method | Description | Streaming |
218
+ | --- | --- | --- | --- |
219
+ | `selection-clear-selection` | `SelectionService.ClearSelection` | Clear Selection via SelectionService.ClearSelection | no |
220
+ | `selection-get-selection` | `SelectionService.GetSelection` | Get Selection via SelectionService.GetSelection | no |
221
+ | `selection-set-selection` | `SelectionService.SetSelection` | Set Selection via SelectionService.SetSelection | no |
222
+
223
+ ### transaction (`transaction`)
224
+
225
+ | Skill ID | Method | Description | Streaming |
226
+ | --- | --- | --- | --- |
227
+ | `transaction-commit` | `TransactionService.Commit` | Commit via TransactionService.Commit | no |
228
+ | `transaction-open` | `TransactionService.Open` | Open via TransactionService.Open | no |
229
+ | `transaction-redo` | `TransactionService.Redo` | Redo via TransactionService.Redo | no |
230
+ | `transaction-rollback` | `TransactionService.Rollback` | Rollback via TransactionService.Rollback | no |
231
+ | `transaction-undo` | `TransactionService.Undo` | Undo via TransactionService.Undo | no |
232
+
233
+ <!-- END GENERATED CAPABILITIES -->
234
+
235
+ The following capabilities are machine-generated from the Connect-ES SDK
236
+ surface and backed by verified integration tests. The full catalog is
237
+ rendered automatically by `pnpm capability:generate` — do not hand-edit the
238
+ table below; it is regenerated on every build.
239
+
240
+ ## Engineering Playbooks
241
+
242
+ Human-authored engineering review playbooks guide agent reasoning during
243
+ complex multi-step tasks. Each playbook declares the capabilities it needs
244
+ and points to a guidance document plus a structured checklist.
245
+
246
+ 1. **BOM Review Playbook:** `playbooks/bom-review.json` — verifies component
247
+ availability, footprint consistency, lifecycle risks, and assembly variants.
248
+ 2. **Schematic Review Playbook:** `playbooks/schematic-review.json` — checks
249
+ net connectivity, power-rail integrity, and ERC compliance.
250
+ 3. **ERC Review Playbook:** `playbooks/erc-review.json` — orchestrates ERC
251
+ runs, classifies findings by severity, and drives resolution workflows.
252
+ 4. **Manufacturing Readiness Playbook:** `playbooks/manufacturing-review.json`
253
+ — gates production release on DFM, DRC, and BOM freeze criteria.
254
+
255
+ ## Execution Guidelines for Agents
256
+
257
+ When handling hardware design queries:
258
+
259
+ 1. First, query the relevant **Playbook** (e.g. `guides/bom-review.md`) to
260
+ understand domain heuristics and required data.
261
+ 2. Invoke operational capabilities strictly adhering to their generated JSON
262
+ schemas — every capability id in `generated/capability-registry.json` maps
263
+ to a typed `defineSkill(...)` wrapper.
264
+ 3. Group findings by severity (`CRITICAL`, `WARNING`, `INFO`) and reference
265
+ component designators explicitly (e.g. `R1`, `C15`) in every report.
266
+ 4. Never fabricate capability ids — only use ids present in
267
+ `generated/capability-registry.json`. The playbook validator
268
+ (`pnpm capability:validate`) enforces this contract at build time.
269
+
270
+ ## Layout
271
+
272
+ | Path | Owner | Notes |
273
+ | --- | --- | --- |
274
+ | `generated/` | Capability Generator | Full overwrite on `pnpm capability:generate`. |
275
+ | `SKILL.md` | Human + Generator | YAML frontmatter preserved; capabilities section regenerated. |
276
+ | `skill.json` | Human + Generator | Selective merge — `capabilities[]` updated, metadata preserved. |
277
+ | `playbooks/` | Domain Engineers | Strictly preserved. |
278
+ | `guides/` | Domain Engineers | Strictly preserved. |
279
+ | `prompts/` | AI Systems Team | Strictly preserved. |
@@ -0,0 +1,44 @@
1
+ import { EditorClient } from '@huaqiu/huaqiu-client';
2
+ import { DescMessage } from '@bufbuild/protobuf';
3
+
4
+ /**
5
+ * Execution context handed to every skill. The runtime is responsible for
6
+ * constructing the EditorClient and injecting it here.
7
+ */
8
+ interface SkillContext {
9
+ /** Underlying Connect-ES client used to invoke RPCs. */
10
+ client: EditorClient;
11
+ }
12
+ /** A single generated skill (one per Connect RPC method). */
13
+ interface SkillDefinition<I = unknown, O = unknown> {
14
+ /** Stable skill id (e.g. `bom-get-bom`). */
15
+ id: string;
16
+ /** Human-readable title (e.g. `Get BOM`). */
17
+ title: string;
18
+ /** Short description, extracted from the proto JSDoc when available. */
19
+ description: string;
20
+ /** Domain grouping (e.g. `bom`, `erc`, `project`). */
21
+ domain: string;
22
+ /** Connect service name (e.g. `ERCService`). */
23
+ service: string;
24
+ /** RPC method name (proto-style, e.g. `RunChecks`). */
25
+ method: string;
26
+ /** Whether the RPC uses streaming transport. */
27
+ isStreaming: boolean;
28
+ /** Request message descriptor (the generated `*Schema` const). */
29
+ inputSchema: DescMessage;
30
+ /** Execute the underlying RPC. */
31
+ execute: (ctx: SkillContext, input: I) => Promise<O>;
32
+ }
33
+
34
+ /**
35
+ * Registry of all generated skills, keyed by skill id.
36
+ * Use this for programmatic discovery (e.g. agents listing capabilities).
37
+ */
38
+ declare const SKILLS: Record<string, SkillDefinition>;
39
+ /** List every generated skill in stable id order. */
40
+ declare function listSkills(): SkillDefinition[];
41
+ /** Look up a skill by id. */
42
+ declare function getSkill(id: string): SkillDefinition | undefined;
43
+
44
+ export { SKILLS, type SkillContext, type SkillDefinition, getSkill, listSkills };