@pikaa-ai/pikaa 0.3.22 → 0.3.24

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 (191) hide show
  1. package/assets/brand/orbit-logo-option4-whale.jpg +0 -0
  2. package/assets/brand/orbit-logo.jpg +0 -0
  3. package/assets/brand/orbit-logo.png +0 -0
  4. package/assets/brand/orbit-logo.svg +3 -0
  5. package/dist/cli.js +448 -181
  6. package/dist/index.js +22 -2
  7. package/package.json +1 -2
  8. package/skills/adaptyv/SKILL.md +0 -240
  9. package/skills/aeon/SKILL.md +0 -402
  10. package/skills/analytical-method-validation/SKILL.md +0 -299
  11. package/skills/anndata/SKILL.md +0 -431
  12. package/skills/arbor/SKILL.md +0 -152
  13. package/skills/arboreto/SKILL.md +0 -267
  14. package/skills/astropy/SKILL.md +0 -353
  15. package/skills/autoskill/SKILL.md +0 -233
  16. package/skills/benchling-integration/SKILL.md +0 -229
  17. package/skills/bgpt-paper-search/SKILL.md +0 -75
  18. package/skills/bids/SKILL.md +0 -237
  19. package/skills/biopython/SKILL.md +0 -472
  20. package/skills/bioservices/SKILL.md +0 -399
  21. package/skills/bulk-rnaseq/SKILL.md +0 -198
  22. package/skills/cellxgene-census/SKILL.md +0 -283
  23. package/skills/cirq/SKILL.md +0 -370
  24. package/skills/citation-management/SKILL.md +0 -329
  25. package/skills/clinical-decision-support/SKILL.md +0 -238
  26. package/skills/clinical-decision-support/references/README.md +0 -62
  27. package/skills/clinical-reports/SKILL.md +0 -248
  28. package/skills/clinical-reports/references/README.md +0 -34
  29. package/skills/cobrapy/SKILL.md +0 -496
  30. package/skills/consciousness-council/SKILL.md +0 -151
  31. package/skills/dask/SKILL.md +0 -482
  32. package/skills/database-lookup/SKILL.md +0 -386
  33. package/skills/datamol/SKILL.md +0 -200
  34. package/skills/deepchem/SKILL.md +0 -244
  35. package/skills/deepspot-m/SKILL.md +0 -175
  36. package/skills/deeptools/SKILL.md +0 -412
  37. package/skills/depmap/SKILL.md +0 -301
  38. package/skills/dhdna-profiler/SKILL.md +0 -184
  39. package/skills/diffdock/SKILL.md +0 -488
  40. package/skills/dnanexus-integration/SKILL.md +0 -325
  41. package/skills/docx/SKILL.md +0 -99
  42. package/skills/esm/SKILL.md +0 -334
  43. package/skills/etetoolkit/SKILL.md +0 -327
  44. package/skills/exa-search/SKILL.md +0 -102
  45. package/skills/executing-plans/SKILL.md +0 -14
  46. package/skills/experimental-design/SKILL.md +0 -234
  47. package/skills/exploratory-data-analysis/SKILL.md +0 -280
  48. package/skills/flowio/SKILL.md +0 -310
  49. package/skills/fluidsim/SKILL.md +0 -279
  50. package/skills/frontend-design/SKILL.md +0 -100
  51. package/skills/generate-image/SKILL.md +0 -304
  52. package/skills/geniml/SKILL.md +0 -310
  53. package/skills/genomic-coordinates/SKILL.md +0 -189
  54. package/skills/genomic-intelligence/SKILL.md +0 -243
  55. package/skills/geomaster/README.md +0 -105
  56. package/skills/geomaster/SKILL.md +0 -366
  57. package/skills/geopandas/SKILL.md +0 -250
  58. package/skills/get-available-resources/SKILL.md +0 -260
  59. package/skills/gget/SKILL.md +0 -153
  60. package/skills/ginkgo-cloud-lab/SKILL.md +0 -106
  61. package/skills/glycoengineering/SKILL.md +0 -339
  62. package/skills/gtars/SKILL.md +0 -282
  63. package/skills/guardian-rails/SKILL.md +0 -54
  64. package/skills/histolab/SKILL.md +0 -243
  65. package/skills/hugging-science/SKILL.md +0 -132
  66. package/skills/hypogenic/SKILL.md +0 -290
  67. package/skills/hypothesis-generation/SKILL.md +0 -264
  68. package/skills/imaging-data-commons/SKILL.md +0 -496
  69. package/skills/infographics/SKILL.md +0 -315
  70. package/skills/iso-standards-readiness/SKILL.md +0 -352
  71. package/skills/lab-hardware-cad/SKILL.md +0 -372
  72. package/skills/labarchive-integration/SKILL.md +0 -216
  73. package/skills/lamindb/SKILL.md +0 -408
  74. package/skills/latchbio-integration/SKILL.md +0 -227
  75. package/skills/latex-posters/SKILL.md +0 -369
  76. package/skills/latex-posters/references/README.md +0 -439
  77. package/skills/liteparse/SKILL.md +0 -295
  78. package/skills/literature-review/SKILL.md +0 -263
  79. package/skills/markdown-mermaid-writing/SKILL.md +0 -322
  80. package/skills/market-research-reports/SKILL.md +0 -337
  81. package/skills/markitdown/SKILL.md +0 -264
  82. package/skills/matchms/SKILL.md +0 -276
  83. package/skills/matlab/SKILL.md +0 -274
  84. package/skills/matplotlib/SKILL.md +0 -378
  85. package/skills/medchem/SKILL.md +0 -321
  86. package/skills/modal/SKILL.md +0 -468
  87. package/skills/molecular-dynamics/SKILL.md +0 -458
  88. package/skills/molfeat/SKILL.md +0 -348
  89. package/skills/ncats-arax/SKILL.md +0 -178
  90. package/skills/networkx/SKILL.md +0 -440
  91. package/skills/neurokit2/SKILL.md +0 -323
  92. package/skills/neuropixels-analysis/SKILL.md +0 -412
  93. package/skills/nextflow/SKILL.md +0 -195
  94. package/skills/omero-integration/SKILL.md +0 -222
  95. package/skills/onekgpd/SKILL.md +0 -371
  96. package/skills/ontology-term-resolution/SKILL.md +0 -147
  97. package/skills/open-notebook/SKILL.md +0 -297
  98. package/skills/openpiv/SKILL.md +0 -469
  99. package/skills/opentrons-integration/SKILL.md +0 -322
  100. package/skills/optimize-for-gpu/SKILL.md +0 -176
  101. package/skills/owasp-top10/SKILL.md +0 -48
  102. package/skills/pacsomatic/LICENSE +0 -21
  103. package/skills/pacsomatic/SKILL.md +0 -150
  104. package/skills/paper-lookup/SKILL.md +0 -263
  105. package/skills/paperclip/SKILL.md +0 -413
  106. package/skills/paperzilla/SKILL.md +0 -159
  107. package/skills/parallel-web/SKILL.md +0 -128
  108. package/skills/pathml/SKILL.md +0 -222
  109. package/skills/pathogen-variant-surveillance/SKILL.md +0 -208
  110. package/skills/pathway-enrichment/SKILL.md +0 -194
  111. package/skills/pdf/SKILL.md +0 -322
  112. package/skills/peer-review/SKILL.md +0 -288
  113. package/skills/penetration-testing/SKILL.md +0 -31
  114. package/skills/pennylane/SKILL.md +0 -240
  115. package/skills/phylogenetics/SKILL.md +0 -409
  116. package/skills/pi-agent/SKILL.md +0 -83
  117. package/skills/pkpd-modeling/SKILL.md +0 -381
  118. package/skills/polars/SKILL.md +0 -393
  119. package/skills/polars-bio/SKILL.md +0 -379
  120. package/skills/ponytail/SKILL.md +0 -31
  121. package/skills/ponytail-audit/SKILL.md +0 -18
  122. package/skills/pptx/SKILL.md +0 -246
  123. package/skills/pptx-posters/SKILL.md +0 -258
  124. package/skills/primekg/SKILL.md +0 -99
  125. package/skills/protocolsio-integration/SKILL.md +0 -236
  126. package/skills/pufferlib/SKILL.md +0 -328
  127. package/skills/pydeseq2/SKILL.md +0 -369
  128. package/skills/pydicom/SKILL.md +0 -381
  129. package/skills/pyhealth/SKILL.md +0 -124
  130. package/skills/pylabrobot/SKILL.md +0 -216
  131. package/skills/pymatgen/SKILL.md +0 -404
  132. package/skills/pymc/SKILL.md +0 -310
  133. package/skills/pymoo/SKILL.md +0 -276
  134. package/skills/pyopenms/SKILL.md +0 -179
  135. package/skills/pysam/SKILL.md +0 -330
  136. package/skills/pytdc/SKILL.md +0 -297
  137. package/skills/pytorch-lightning/SKILL.md +0 -191
  138. package/skills/pyzotero/SKILL.md +0 -137
  139. package/skills/qiskit/SKILL.md +0 -259
  140. package/skills/qutip/SKILL.md +0 -317
  141. package/skills/rdkit/SKILL.md +0 -94
  142. package/skills/relsa-severity-assessment/SKILL.md +0 -354
  143. package/skills/research-grants/SKILL.md +0 -296
  144. package/skills/research-grants/references/README.md +0 -287
  145. package/skills/research-lookup/README.md +0 -106
  146. package/skills/research-lookup/SKILL.md +0 -338
  147. package/skills/rowan/SKILL.md +0 -398
  148. package/skills/scanpy/SKILL.md +0 -303
  149. package/skills/scholar-evaluation/SKILL.md +0 -296
  150. package/skills/scientific-brainstorming/SKILL.md +0 -282
  151. package/skills/scientific-critical-thinking/SKILL.md +0 -180
  152. package/skills/scientific-schematics/SKILL.md +0 -370
  153. package/skills/scientific-slides/SKILL.md +0 -379
  154. package/skills/scientific-visualization/SKILL.md +0 -285
  155. package/skills/scientific-writing/SKILL.md +0 -356
  156. package/skills/scikit-bio/SKILL.md +0 -470
  157. package/skills/scikit-learn/SKILL.md +0 -324
  158. package/skills/scikit-survival/SKILL.md +0 -313
  159. package/skills/scvelo/SKILL.md +0 -328
  160. package/skills/scvi-tools/SKILL.md +0 -201
  161. package/skills/seaborn/SKILL.md +0 -254
  162. package/skills/security-auditor/SKILL.md +0 -37
  163. package/skills/shap/SKILL.md +0 -282
  164. package/skills/simpy/SKILL.md +0 -283
  165. package/skills/stable-baselines3/SKILL.md +0 -325
  166. package/skills/statistical-analysis/SKILL.md +0 -446
  167. package/skills/statistical-power/SKILL.md +0 -200
  168. package/skills/statsmodels/SKILL.md +0 -238
  169. package/skills/sympy/SKILL.md +0 -354
  170. package/skills/systematic-debugging/SKILL.md +0 -35
  171. package/skills/tamarind/SKILL.md +0 -285
  172. package/skills/tdd/SKILL.md +0 -26
  173. package/skills/tiledbvcf/SKILL.md +0 -456
  174. package/skills/timesfm-forecasting/SKILL.md +0 -408
  175. package/skills/timesfm-forecasting/examples/global-temperature/README.md +0 -178
  176. package/skills/torch-geometric/SKILL.md +0 -458
  177. package/skills/torchdrug/SKILL.md +0 -241
  178. package/skills/transformers/SKILL.md +0 -195
  179. package/skills/treatment-plans/SKILL.md +0 -174
  180. package/skills/treatment-plans/references/README.md +0 -19
  181. package/skills/umap-learn/SKILL.md +0 -488
  182. package/skills/uncertainty-and-units/SKILL.md +0 -384
  183. package/skills/usfiscaldata/SKILL.md +0 -171
  184. package/skills/vaex/SKILL.md +0 -204
  185. package/skills/venue-templates/SKILL.md +0 -269
  186. package/skills/verification-before-completion/SKILL.md +0 -22
  187. package/skills/waypoint-bio/SKILL.md +0 -273
  188. package/skills/what-if-oracle/SKILL.md +0 -184
  189. package/skills/writing-plans/SKILL.md +0 -15
  190. package/skills/xlsx/SKILL.md +0 -110
  191. package/skills/zarr-python/SKILL.md +0 -241
@@ -1,322 +0,0 @@
1
- ---
2
- name: opentrons-integration
3
- description: Author, review, migrate, simulate, and troubleshoot official Opentrons Python Protocol API v2 protocols for Flex and OT-2 robots. Use for robot-specific liquid handling, deck and labware setup, pipettes, modules, runtime parameters, liquid classes, and Opentrons App analysis. Use pylabrobot instead when one workflow must support multiple robot vendors.
4
- license: MIT
5
- compatibility: Requires Python 3.10+ and uv for local simulation. Flex examples target opentrons 9.1.1 and API 2.29; the separate OT-2 line targets API 2.28 and uses opentrons 9.0.0 as its local compatibility simulator. Physical execution requires compatible hardware, current robot software, and the appropriate Opentrons App.
6
- allowed-tools: Read Write Edit Bash
7
- metadata:
8
- version: "2.0"
9
- skill-author: "K-Dense Inc."
10
- ---
11
-
12
- # Opentrons Integration
13
-
14
- ## Overview
15
-
16
- Create production-minded Python Protocol API v2 protocols for Opentrons Flex and
17
- OT-2. This skill covers protocol structure, hardware and deck configuration,
18
- liquid handling, runtime customization, module control, simulation, and safe
19
- deployment.
20
-
21
- The verified baseline as of **2026-07-23** is:
22
-
23
- - `opentrons==9.1.1` for reproducible Flex simulation.
24
- - `opentrons==9.0.0` for local OT-2 API 2.28 compatibility simulation.
25
- - Flex supports API levels 2.15 through 2.29 on current software.
26
- - OT-2 supports API levels 2.0 through 2.28 on current software.
27
- - API 2.29 is Flex-only at this baseline. Do not put `2.29` in an OT-2 protocol.
28
-
29
- Read `references/sources.md` for the upstream documentation used for this
30
- snapshot. Recheck the official versioning page before targeting newer robot
31
- software.
32
-
33
- ## Safety Boundary
34
-
35
- Opentrons protocols control physical equipment. Never treat successful Python
36
- syntax or local simulation as permission to run on a robot.
37
-
38
- Before live execution:
39
-
40
- 1. Simulate locally with the same pinned `opentrons` version used for authoring.
41
- 2. Import the protocol into the correct Opentrons App and require successful
42
- analysis.
43
- 3. Verify robot model, software, pipettes, mounts, modules, adapters, labware
44
- definitions, deck fixtures, tip count, source volumes, dead volumes, and
45
- destination capacity.
46
- 4. Review the run preview and deck map with the operator.
47
- 5. Perform a slow dry run with nonhazardous liquid when geometry, custom
48
- labware, partial tip pickup, or gripper moves are new.
49
- 6. Keep the emergency stop accessible and follow site-specific biosafety,
50
- chemical-safety, and contamination-control procedures.
51
-
52
- Simulation cannot verify physical calibration, liquid properties, meniscus
53
- behavior, labware manufacturing tolerances, cap or seal removal, tubing, or all
54
- possible collisions.
55
-
56
- ## Choose the Right Interface
57
-
58
- Use this skill for Python files imported into the Opentrons App and run through
59
- the Protocol API.
60
-
61
- - Use **Protocol Designer** for supported no-code workflows.
62
- - Use **PyLabRobot** for a hardware-agnostic workflow spanning vendors.
63
- - Treat the robot's HTTP API as a separate integration surface. If direct HTTP
64
- control is explicitly required, use the OpenAPI document served by the target
65
- robot and do not infer endpoints from Protocol API methods.
66
-
67
- ## Required Intake
68
-
69
- Do not write final protocol code until these facts are known:
70
-
71
- - Robot: Flex or OT-2, plus installed robot software.
72
- - Pipette model, volume range, channel count, and mount.
73
- - Modules and generations; Flex Gripper or Stacker availability.
74
- - Exact labware API load names and custom definition files, if any.
75
- - Deck fixtures: Flex trash bin, waste chute, staging slots, or Stackers.
76
- - Source volumes, destination volumes, dead volume, mixing needs, and liquid
77
- characteristics.
78
- - Tip policy: contamination boundaries, reuse policy, filters, partial pickup,
79
- and total tips.
80
- - Operator interventions, incubation timing, runtime parameters, and output
81
- files.
82
- - Acceptance criteria: tolerated volume error, required controls, and dry-run
83
- plan.
84
-
85
- If any physical configuration is uncertain, produce a parameterized draft and
86
- an explicit assumptions list rather than guessing.
87
-
88
- ## Install and Simulate
89
-
90
- Flex:
91
-
92
- ```bash
93
- uv run --with "opentrons==9.1.1" opentrons_simulate protocol.py
94
- ```
95
-
96
- OT-2 API 2.28:
97
-
98
- ```bash
99
- uv run --with "opentrons==9.0.0" opentrons_simulate protocol.py
100
- ```
101
-
102
- The 9.1.1 package intentionally rejects OT-2 protocols after the Flex/OT-2
103
- release-line split. Always complete OT-2 analysis in the current OT-2 App.
104
-
105
- For a dedicated Flex environment:
106
-
107
- ```bash
108
- uv venv --python 3.10
109
- uv pip install --python .venv/bin/python -r skills/opentrons-integration/requirements-flex.txt
110
- .venv/bin/opentrons_simulate protocol.py
111
- ```
112
-
113
- Use `requirements-ot2.txt` instead for an OT-2 compatibility environment. On
114
- Windows, invoke the executable from `.venv\Scripts\opentrons_simulate.exe`.
115
- Local simulation is for Python protocols; import Protocol Designer JSON files
116
- into the appropriate Opentrons App instead.
117
-
118
- ## Protocol Skeletons
119
-
120
- ### Flex, API 2.29
121
-
122
- For Flex, `requirements` is mandatory. Put `apiLevel` only in `requirements`,
123
- not in both `metadata` and `requirements`.
124
-
125
- ```python
126
- from opentrons import protocol_api
127
-
128
- metadata = {
129
- "protocolName": "Flex transfer",
130
- "author": "Your Name",
131
- "description": "Transfer buffer into a plate.",
132
- }
133
- requirements = {"robotType": "Flex", "apiLevel": "2.29"}
134
-
135
-
136
- def run(protocol: protocol_api.ProtocolContext) -> None:
137
- tips = protocol.load_labware(
138
- "opentrons_flex_96_tiprack_200ul", "D1"
139
- )
140
- reservoir = protocol.load_labware("nest_12_reservoir_15ml", "D2")
141
- plate = protocol.load_labware("nest_96_wellplate_200ul_flat", "C2")
142
- protocol.load_trash_bin("A3")
143
- pipette = protocol.load_instrument(
144
- "flex_1channel_1000", "left", tip_racks=[tips]
145
- )
146
-
147
- pipette.transfer(
148
- 100,
149
- reservoir["A1"],
150
- plate["A1"],
151
- new_tip="always",
152
- )
153
- ```
154
-
155
- ### OT-2, API 2.28
156
-
157
- For OT-2 API 2.15 and later, a `requirements` block is recommended. OT-2 has a
158
- fixed trash in slot 12; do not call `load_trash_bin()`.
159
-
160
- ```python
161
- from opentrons import protocol_api
162
-
163
- metadata = {
164
- "protocolName": "OT-2 transfer",
165
- "author": "Your Name",
166
- }
167
- requirements = {"robotType": "OT-2", "apiLevel": "2.28"}
168
-
169
-
170
- def run(protocol: protocol_api.ProtocolContext) -> None:
171
- tips = protocol.load_labware("opentrons_96_tiprack_300ul", "1")
172
- reservoir = protocol.load_labware("nest_12_reservoir_15ml", "2")
173
- plate = protocol.load_labware("nest_96_wellplate_200ul_flat", "3")
174
- pipette = protocol.load_instrument(
175
- "p300_single_gen2", "left", tip_racks=[tips]
176
- )
177
- pipette.transfer(100, reservoir["A1"], plate["A1"])
178
- ```
179
-
180
- Use the lowest API level that provides every required feature when a protocol
181
- must run across a mixed software fleet. Use the current maximum only when the
182
- workflow needs its behavior or capabilities.
183
-
184
- ## Authoring Workflow
185
-
186
- ### 1. Select robot and API level
187
-
188
- Check the maximum supported API in the App under the robot's advanced settings.
189
- Map every requested feature to its minimum API level using
190
- `references/api_reference.md`.
191
-
192
- Important gates:
193
-
194
- - 2.20: CSV runtime parameters, liquid presence detection, expanded partial
195
- nozzle layouts.
196
- - 2.21: Absorbance Plate Reader.
197
- - 2.22: current labware-level liquid loading methods.
198
- - 2.23: meniscus locations and labware lids.
199
- - 2.24: liquid classes and liquid-class complex commands.
200
- - 2.25: Flex Stacker and Flex 96-Channel 200 µL pipette.
201
- - 2.27: dynamic pipetting and concurrent module actions.
202
- - 2.28: 20 µL Flex tips, improved partial-tip return, and thermocycler ramp rate.
203
- - 2.29: step grouping; Flex only at the verified baseline.
204
-
205
- ### 2. Build the deck explicitly
206
-
207
- - Use exact load names from the official Labware Library.
208
- - Load Flex trash bins or the waste chute explicitly.
209
- - Account for module footprints, staging slots, Stacker shuttles, gripper paths,
210
- and tall-labware adjacency.
211
- - Load labware on adapters or module contexts in the documented order.
212
- - Never substitute a similarly named labware definition; geometry and offsets
213
- are part of the protocol's safety model.
214
-
215
- See `references/modules_and_deck.md`.
216
-
217
- ### 3. Select pipettes and tips
218
-
219
- Current load names are:
220
-
221
- - Flex: `flex_1channel_50`, `flex_1channel_1000`,
222
- `flex_8channel_50`, `flex_8channel_1000`,
223
- `flex_96channel_200`, `flex_96channel_1000`.
224
- - OT-2 GEN2: `p20_single_gen2`, `p20_multi_gen2`,
225
- `p300_single_gen2`, `p300_multi_gen2`, `p1000_single_gen2`.
226
-
227
- Check that every requested volume is within the configured pipette and tip
228
- range. A 100 nL operation is not an Opentrons pipetting task.
229
-
230
- ### 4. Choose a liquid-handling layer
231
-
232
- - Use `aspirate()`, `dispense()`, `mix()`, `air_gap()`, `blow_out()`, and
233
- `touch_tip()` for explicit control.
234
- - Use `transfer()`, `distribute()`, and `consolidate()` for standard movements.
235
- - On Flex, consider `transfer_with_liquid_class()`,
236
- `distribute_with_liquid_class()`, or `consolidate_with_liquid_class()` for
237
- Opentrons-verified aqueous, volatile, or viscous behavior.
238
- - Use dynamic start/end locations or `dynamic_mix()` only when API 2.27+ and the
239
- geometry has been reviewed.
240
-
241
- Model contamination boundaries before optimizing tips. Never reuse a tip across
242
- unrelated samples merely to reduce consumables. See
243
- `references/liquid_handling.md`.
244
-
245
- ### 5. Add setup information and runtime controls
246
-
247
- Use `define_liquid()` and labware-level `load_liquid()` or
248
- `load_liquid_by_well()` to improve setup visualization. Do not use deprecated
249
- `Well.load_liquid()` in new API 2.22+ protocols.
250
-
251
- Define operator-controlled values in `add_parameters()` and read them from
252
- `protocol.params`. Validate ranges and use defaults that produce a safe,
253
- meaningful simulation. CSV parameters have no default and only one CSV
254
- parameter can be selected per run.
255
-
256
- ### 6. Budget resources
257
-
258
- Before simulation, calculate:
259
-
260
- - Tips or tip sets required under every branch.
261
- - Source volume = delivered volume + mixing loss + disposal volume + dead
262
- volume + a justified reserve.
263
- - Maximum destination volume after every addition and mix.
264
- - Number of module, adapter, trash, and staging positions.
265
- - Incubation and module timing, including concurrent tasks.
266
-
267
- ### 7. Validate in layers
268
-
269
- 1. Compile: `python -m py_compile protocol.py`.
270
- 2. Simulate with the pinned package.
271
- 3. Inspect the run log for command count, tip changes, pauses, and unexpected
272
- locations.
273
- 4. Import into the appropriate App and require successful analysis.
274
- 5. Check protocol visualization, runtime parameter defaults, deck map, module
275
- setup, and labware offsets.
276
- 6. Perform an operator-reviewed dry run before first use.
277
-
278
- See `references/validation_and_operations.md`.
279
-
280
- ## Common Failure Modes
281
-
282
- - Using old names such as `p300_single_flex`; use current `flex_*` load names.
283
- - Declaring `apiLevel` in both `metadata` and `requirements`.
284
- - Using API 2.29 for OT-2.
285
- - Forgetting a Flex trash bin or waste chute.
286
- - Loading a Magnetic Module on Flex; use supported Flex magnetic hardware.
287
- - Calling `read(wavelengths=...)` on the plate reader; call `initialize()` first,
288
- then `read()`.
289
- - Using deprecated `Well.load_liquid()` instead of labware-level methods.
290
- - Assuming simulation verifies calibration, liquid height, or physical
291
- clearances.
292
- - Passing an unsafe well to a partial-nozzle pipette, which can place tips
293
- outside labware and cause a crash.
294
- - Using `new_tip="once"` across samples with incompatible contamination
295
- requirements.
296
-
297
- ## Bundled Templates
298
-
299
- | File | Purpose |
300
- | --- | --- |
301
- | `scripts/basic_protocol_template.py` | Minimal Flex 2.29 transfer with current names |
302
- | `scripts/ot2_basic_protocol_template.py` | Minimal OT-2 2.28 transfer |
303
- | `scripts/serial_dilution_template.py` | Full-plate 1:2 dilution with an 8-channel Flex pipette |
304
- | `scripts/pcr_setup_template.py` | Flex PCR setup and Thermocycler cycling |
305
- | `scripts/runtime_parameters_template.py` | Safe numeric and Boolean runtime parameters |
306
- | `scripts/absorbance_reader_template.py` | Correct Flex plate-reader initialization and read workflow |
307
-
308
- Templates are starting points, not validated assays. Replace volumes, labware,
309
- liquids, timing, and tip policies only after checking hardware compatibility and
310
- the wet-lab method.
311
-
312
- ## Reference Guide
313
-
314
- | Reference | Use it for |
315
- | --- | --- |
316
- | `references/api_reference.md` | Current load names, version gates, and high-value methods |
317
- | `references/protocol_authoring.md` | Requirements, labware, runtime parameters, and design workflow |
318
- | `references/liquid_handling.md` | Command selection, liquid classes, sensing, and partial tips |
319
- | `references/modules_and_deck.md` | Module compatibility, deck fixtures, gripper, and Stacker |
320
- | `references/validation_and_operations.md` | Simulation, App analysis, dry runs, and troubleshooting |
321
- | `references/migration-api-2-19-to-2-29.md` | Updating older protocols and this skill's former patterns |
322
- | `references/sources.md` | Official documentation and release sources |
@@ -1,176 +0,0 @@
1
- ---
2
- name: optimize-for-gpu
3
- description: GPU-accelerates scientific Python on NVIDIA hardware and verifies that the result is correct and faster. Use for CUDA/GPU optimization; CPU-bound NumPy, SciPy, pandas, scikit-learn, NetworkX, scikit-image, vector-search, image-processing, graph, simulation, or file-I/O workloads; CuPy, cuDF, cuML, cuGraph, cuVS, cuCIM, KvikIO, Warp, Newton, Numba-CUDA, or RAFT questions; and profiling, memory-transfer, kernel, or multi-GPU bottlenecks. Also use when large data-parallel Python code is slow and GPU acceleration is a plausible option, even if the user does not name CUDA.
4
- license: MIT
5
- compatibility: Requires an NVIDIA CUDA-capable GPU for GPU execution. RAPIDS 26.06 requires Python 3.11+ on Linux or WSL2 and matching CUDA 12 or 13 wheels. Package installation needs network access.
6
- metadata:
7
- version: "1.3"
8
- skill-author: K-Dense, Inc.
9
- ---
10
-
11
- # GPU Optimization for Python with NVIDIA
12
-
13
- Treat GPU acceleration as an evidence-driven optimization, not an automatic rewrite. Preserve the
14
- user's numerical and algorithmic contract, measure with representative data, and keep the GPU
15
- version only when synchronized end-to-end benchmarks show a useful improvement.
16
-
17
- ## When This Skill Applies
18
-
19
- - User wants to speed up numerical/scientific Python code
20
- - User is working with large arrays, matrices, or dataframes
21
- - User mentions CUDA, GPU, NVIDIA, or parallel computing
22
- - User has NumPy, pandas, SciPy, scikit-learn, NetworkX, or scipy.sparse.linalg code that processes large datasets
23
- - User needs low-level GPU primitives (sparse eigensolvers, device memory management, multi-GPU communication)
24
- - User is doing machine learning (training, inference, hyperparameter tuning, preprocessing)
25
- - User is doing graph analytics (centrality, community detection, shortest paths, PageRank, etc.)
26
- - User is doing vector search, nearest neighbor search, similarity search, or building a RAG pipeline
27
- - User has Faiss, Annoy, ScaNN, or sklearn NearestNeighbors code that could be GPU-accelerated
28
- - User wants GPU-accelerated interactive dashboards, cross-filtering, or exploratory data analysis on large datasets
29
- - User is doing geospatial analysis (point-in-polygon, spatial joins, trajectory analysis, distance calculations) with GeoPandas or shapely
30
- - User is doing image processing, computer vision, or medical imaging (filtering, segmentation, morphology, feature detection) with scikit-image or OpenCV
31
- - User is working with whole-slide images (WSI), digital pathology, microscopy, or remote sensing imagery
32
- - User is loading large binary data files into GPU memory (numpy.fromfile → cupy, or Python open() → GPU array)
33
- - User needs to read files from S3, HTTP, or WebHDFS directly into GPU memory
34
- - User mentions GPUDirect Storage (GDS) or wants to bypass CPU-memory staging for file IO
35
- - User is doing physics simulation (particles, cloth, fluids, rigid bodies) or differentiable simulation
36
- - User needs mesh operations (ray casting, closest-point queries, signed distance fields) or geometry processing on GPU
37
- - User is doing robotics (kinematics, dynamics, control) with transforms and quaternions
38
- - User has Python simulation loops that could be JIT-compiled to GPU kernels
39
- - User mentions NVIDIA Warp or wants differentiable GPU simulation integrated with PyTorch/JAX
40
- - User is doing simulations, signal processing, financial modeling, bioinformatics, physics, or any compute-intensive work
41
- - User wants to optimize existing code and GPU acceleration is the right answer
42
-
43
- ## Choose the Smallest Suitable Layer
44
-
45
- Prefer a maintained library implementation over a custom kernel:
46
-
47
- | Existing workload | Preferred path | Use for |
48
- | --- | --- | --- |
49
- | NumPy / SciPy | **CuPy** | arrays, sparse matrices, linear algebra, FFTs, signal processing |
50
- | pandas | **cudf.pandas**, then **cuDF** | accelerator mode first; native API for more control |
51
- | scikit-learn | **cuml.accel**, then **cuML** | accelerator mode first; native estimators as needed |
52
- | NetworkX | **nx-cugraph**, then **cuGraph** | backend dispatch first; native graph API at scale |
53
- | scikit-image | **cuCIM** | GPU image processing and whole-slide imaging |
54
- | Faiss / Annoy / k-NN | **cuVS** | exact and approximate vector search |
55
- | Raw or remote file I/O | **KvikIO** | GPU buffers and GPUDirect Storage |
56
- | Custom array kernels | **Numba-CUDA-MLIR** for new work; **Numba-CUDA** for existing code | explicit SIMT kernels and shared memory |
57
- | Spatial or differentiable kernels | **Warp** | geometry, simulation kernels, robotics, autodiff |
58
- | High-level physics simulation | **Newton** | maintained engine that succeeds the removed `warp.sim` module |
59
- | Low-level RAPIDS primitives | **RAFT** (`pylibraft`) | sparse eigensolvers, resources, multi-GPU building blocks |
60
-
61
- Do not move code out of PyTorch, JAX, TensorFlow, or another GPU-native framework merely to use
62
- one of these libraries. First remove CPU round trips and use the framework's compiler, profiler,
63
- mixed-precision, and batching facilities.
64
-
65
- Treat these as legacy-only:
66
-
67
- | Project | Status | Guidance |
68
- | --- | --- | --- |
69
- | **cuxfilter** | Final release 26.06 | Maintain existing dashboards only. For new work, combine cuDF with HoloViews/hvPlot/Datashader and serve with Panel, Dash, Streamlit, or Bokeh. |
70
- | **cuSpatial** | Archived at 25.04 | Use only in an isolated legacy environment. For new work, keep geometry in GeoPandas/Shapely and accelerate compatible tabular stages with cuDF. |
71
-
72
- Full per-library guidance, including when each is the *wrong* choice and how to combine
73
- them, is in [references/decision_framework.md](references/decision_framework.md).
74
- Install commands and CUDA version selection are in
75
- [references/installation.md](references/installation.md). Before/after conversions for
76
- every library are in
77
- [references/code_transformation_patterns.md](references/code_transformation_patterns.md).
78
-
79
- ## Optimization Workflow
80
-
81
- ### 1. Define the contract and baseline
82
-
83
- - Capture a representative input, expected output, and acceptable numerical tolerance.
84
- - Measure the current end-to-end path, including input, transfers, compute, and output.
85
- - Profile before changing code. Use CPU profilers for CPU code and identify whether the real limit
86
- is compute, memory bandwidth, allocation, transfer, synchronization, or storage.
87
- - Record hardware, package versions, dtypes, shapes, batch size, and warm-up policy with results.
88
-
89
- ### 2. Check suitability before porting
90
-
91
- GPU execution is promising when the hot path exposes substantial independent work, runs often
92
- enough to amortize initialization and transfer, and has a working set that fits available device
93
- memory with room for temporaries. Keep a CPU path when the workload is small, mostly sequential,
94
- dominated by unsupported operations, or requires frequent host-device round trips.
95
-
96
- Do not use fixed row-count thresholds as proof. Benchmark the user's actual shapes and hardware.
97
- For out-of-core data, estimate peak working memory and choose chunking, Dask, or a streaming design
98
- before allocating.
99
-
100
- ### 3. Try the least disruptive implementation
101
-
102
- 1. If the code already uses a GPU-native framework, optimize within that framework.
103
- 2. Try accelerator or backend modes (`cudf.pandas`, `cuml.accel`, `nx-cugraph`).
104
- 3. Move to a native GPU API only where accelerator coverage or performance is insufficient.
105
- 4. Write a custom kernel only when profiling shows an operation without a suitable library
106
- implementation.
107
-
108
- Read the relevant library reference before writing code; compatible names can still differ in
109
- defaults, dtypes, output types, and supported arguments.
110
-
111
- ### 4. Keep a coherent GPU data path
112
-
113
- - Transfer inputs once and keep intermediates device-resident.
114
- - Reuse allocations and prefer `out=` or in-place forms when semantics allow.
115
- - Batch small operations; fuse elementwise work when it removes intermediate arrays.
116
- - Use pinned host memory and non-default streams only after profiling shows transfer overlap matters.
117
- - Choose `float32`, mixed precision, or reduced-precision storage only when the contract permits it.
118
-
119
- ### 5. Validate semantics before speed
120
-
121
- - Compare CPU and GPU outputs on small deterministic fixtures and representative data.
122
- - Use explicit tolerances for floating-point results and test edge cases, NaNs, ordering, and dtypes.
123
- - For approximate nearest-neighbor indexes, report recall@k against exact search; do not compare an
124
- exact CPU algorithm with an approximate GPU algorithm as if they were equivalent.
125
- - Check accelerator warnings and logs for CPU fallback.
126
-
127
- ### 6. Benchmark GPU code correctly
128
-
129
- GPU work is asynchronous, so a CPU timer around an unsynchronized call measures enqueue time.
130
- Warm up context creation and JIT compilation, then use CUDA events or a library-aware timer:
131
-
132
- ```python
133
- from cupyx.profiler import benchmark
134
-
135
- print(benchmark(gpu_function, (arg1, arg2), n_warmup=10, n_repeat=100))
136
- ```
137
-
138
- Use `%gpu_timeit` in notebooks, Nsight Systems (`nsys`) for end-to-end timelines, and Nsight
139
- Compute (`ncu`) for kernel analysis. Report both synchronized kernel/region time and realistic
140
- end-to-end latency; include transfer and conversion costs when production pays them.
141
-
142
- ### 7. Keep, revise, or reject the port
143
-
144
- Retain the GPU path only when it passes correctness checks and improves the metric the user cares
145
- about on representative data. If it does not, explain whether the limiting factor is problem size,
146
- transfers, unsupported fallback, memory pressure, launch granularity, or the algorithm itself.
147
-
148
- ## Important Notes
149
-
150
- - Provide a CPU fallback when the application requires portability; otherwise fail early with a
151
- clear hardware and dependency error.
152
- - Test numerical correctness against CPU results (GPU floating point may differ slightly due to operation ordering)
153
- - GPU memory is limited — for datasets larger than GPU memory, consider chunking or using RAPIDS Dask for multi-GPU
154
- - Prefer the CUDA Array Interface or DLPack for supported zero-copy interchange, but verify device,
155
- dtype, contiguity, ownership, and stream semantics rather than assuming every conversion is free.
156
-
157
- ## Reference Files
158
-
159
- Before writing any GPU optimization code, read the relevant reference file(s):
160
-
161
- | File | When to Read |
162
- |------|-------------|
163
- | `references/cupy.md` | User has NumPy/SciPy code, or needs array operations on GPU |
164
- | `references/numba.md` | User has existing Numba-CUDA code or needs explicit SIMT kernels; note the migration path to Numba-CUDA-MLIR |
165
- | `references/cudf.md` | User has pandas code, or needs dataframe operations on GPU |
166
- | `references/cuml.md` | User has scikit-learn code, or needs ML training/inference/preprocessing on GPU |
167
- | `references/cugraph.md` | User has NetworkX code, or needs graph analytics on GPU |
168
- | `references/warp.md` | User needs GPU kernels for simulation, spatial computing, mesh/volume queries, differentiable programming, or robotics; use Newton for a high-level physics engine |
169
- | `references/kvikio.md` | User needs high-performance file IO to/from GPU, GPUDirect Storage, reading S3/HTTP to GPU, or Zarr on GPU |
170
- | `references/cuxfilter.md` | User maintains or explicitly requests cuxfilter (sunset — 26.06 is the final release) |
171
- | `references/cucim.md` | User has scikit-image code, or needs image processing, digital pathology, or WSI reading on GPU |
172
- | `references/cuvs.md` | User needs vector search, nearest neighbors, similarity search, or RAG retrieval on GPU |
173
- | `references/cuspatial.md` | User maintains or explicitly requests cuSpatial (archived — frozen at 25.04 and isolated from current RAPIDS) |
174
- | `references/raft.md` | User needs sparse eigensolvers, device memory management, or multi-GPU primitives |
175
-
176
- Read the specific reference before writing code — they contain detailed API patterns, optimization techniques, and pitfalls specific to each library.
@@ -1,48 +0,0 @@
1
- ---
2
- name: owasp-top10
3
- description: "OWASP Top 10 Web & API Security Checklist - Guidelines, code patterns, and automated remediation for modern web application vulnerabilities."
4
- risk: low
5
- source: built-in
6
- ---
7
-
8
- # OWASP Top 10 Security Checklist
9
-
10
- ## 1. Broken Access Control (A01)
11
- - **Check**: Are access control decisions enforced server-side on every request?
12
- - **Remedy**: Implement centralized authorization middleware and verify tenancy on every query.
13
-
14
- ## 2. Cryptographic Failures (A02)
15
- - **Check**: Are sensitive data in transit and at rest encrypted? Are deprecated algorithms (MD5, SHA1, DES) avoided?
16
- - **Remedy**: Use Argon2id/bcrypt for passwords, AES-GCM for encryption, and TLS 1.3 for transport.
17
-
18
- ## 3. Injection (A03)
19
- - **Check**: Are SQL, NoSQL, OS command, and LDAP queries parameterized?
20
- - **Remedy**: Never concatenate user input into database queries or shell execution strings.
21
-
22
- ## 4. Insecure Design (A04)
23
- - **Check**: Are threat modeling and defense-in-depth principles applied?
24
- - **Remedy**: Enforce least privilege, strict input boundaries, and rate limits.
25
-
26
- ## 5. Security Misconfiguration (A05)
27
- - **Check**: Are default passwords, unnecessary features, and debug error messages disabled in production?
28
- - **Remedy**: Disable detailed stack traces in production API responses and enforce strict CSP headers.
29
-
30
- ## 6. Vulnerable and Outdated Components (A06)
31
- - **Check**: Are dependencies monitored for known CVEs (`npm audit`, `bun audit`)?
32
- - **Remedy**: Regularly update dependencies and pin exact versions.
33
-
34
- ## 7. Identification and Authentication Failures (A07)
35
- - **Check**: Is multi-factor authentication supported? Are session identifiers secure?
36
- - **Remedy**: Implement exponential backoff for failed logins and enforce strong password policies.
37
-
38
- ## 8. Software and Data Integrity Failures (A08)
39
- - **Check**: Are plugins, libraries, and CDNs verified with integrity hashes?
40
- - **Remedy**: Enforce subresource integrity (SRI) and signed package downloads.
41
-
42
- ## 9. Security Logging and Monitoring Failures (A09)
43
- - **Check**: Are login attempts, access failures, and sensitive transactions logged?
44
- - **Remedy**: Centralize structured security logs without logging plaintext credentials or PII.
45
-
46
- ## 10. Server-Side Request Forgery - SSRF (A10)
47
- - **Check**: Do servers make HTTP requests to user-supplied URLs without validation?
48
- - **Remedy**: Whitelist permitted target domains and reject private/internal IP ranges.
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2026 Beifang Niu
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.