@pikaa-ai/pikaa 0.2.4 → 0.3.0

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 (2430) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +153 -104
  3. package/assets/frames/blocks/frame_1.txt +17 -0
  4. package/assets/frames/blocks/frame_10.txt +17 -0
  5. package/assets/frames/blocks/frame_11.txt +17 -0
  6. package/assets/frames/blocks/frame_12.txt +17 -0
  7. package/assets/frames/blocks/frame_13.txt +17 -0
  8. package/assets/frames/blocks/frame_14.txt +17 -0
  9. package/assets/frames/blocks/frame_15.txt +17 -0
  10. package/assets/frames/blocks/frame_16.txt +17 -0
  11. package/assets/frames/blocks/frame_17.txt +17 -0
  12. package/assets/frames/blocks/frame_18.txt +17 -0
  13. package/assets/frames/blocks/frame_19.txt +17 -0
  14. package/assets/frames/blocks/frame_2.txt +17 -0
  15. package/assets/frames/blocks/frame_20.txt +17 -0
  16. package/assets/frames/blocks/frame_21.txt +17 -0
  17. package/assets/frames/blocks/frame_22.txt +17 -0
  18. package/assets/frames/blocks/frame_23.txt +17 -0
  19. package/assets/frames/blocks/frame_24.txt +17 -0
  20. package/assets/frames/blocks/frame_25.txt +17 -0
  21. package/assets/frames/blocks/frame_26.txt +17 -0
  22. package/assets/frames/blocks/frame_27.txt +17 -0
  23. package/assets/frames/blocks/frame_28.txt +17 -0
  24. package/assets/frames/blocks/frame_29.txt +17 -0
  25. package/assets/frames/blocks/frame_3.txt +17 -0
  26. package/assets/frames/blocks/frame_30.txt +17 -0
  27. package/assets/frames/blocks/frame_31.txt +17 -0
  28. package/assets/frames/blocks/frame_32.txt +17 -0
  29. package/assets/frames/blocks/frame_33.txt +17 -0
  30. package/assets/frames/blocks/frame_34.txt +17 -0
  31. package/assets/frames/blocks/frame_35.txt +17 -0
  32. package/assets/frames/blocks/frame_36.txt +17 -0
  33. package/assets/frames/blocks/frame_4.txt +17 -0
  34. package/assets/frames/blocks/frame_5.txt +17 -0
  35. package/assets/frames/blocks/frame_6.txt +17 -0
  36. package/assets/frames/blocks/frame_7.txt +17 -0
  37. package/assets/frames/blocks/frame_8.txt +17 -0
  38. package/assets/frames/blocks/frame_9.txt +17 -0
  39. package/assets/frames/default/frame_1.txt +17 -0
  40. package/assets/frames/default/frame_10.txt +17 -0
  41. package/assets/frames/default/frame_11.txt +17 -0
  42. package/assets/frames/default/frame_12.txt +17 -0
  43. package/assets/frames/default/frame_13.txt +17 -0
  44. package/assets/frames/default/frame_14.txt +17 -0
  45. package/assets/frames/default/frame_15.txt +17 -0
  46. package/assets/frames/default/frame_16.txt +17 -0
  47. package/assets/frames/default/frame_17.txt +17 -0
  48. package/assets/frames/default/frame_18.txt +17 -0
  49. package/assets/frames/default/frame_19.txt +17 -0
  50. package/assets/frames/default/frame_2.txt +17 -0
  51. package/assets/frames/default/frame_20.txt +17 -0
  52. package/assets/frames/default/frame_21.txt +17 -0
  53. package/assets/frames/default/frame_22.txt +17 -0
  54. package/assets/frames/default/frame_23.txt +17 -0
  55. package/assets/frames/default/frame_24.txt +17 -0
  56. package/assets/frames/default/frame_25.txt +17 -0
  57. package/assets/frames/default/frame_26.txt +17 -0
  58. package/assets/frames/default/frame_27.txt +17 -0
  59. package/assets/frames/default/frame_28.txt +17 -0
  60. package/assets/frames/default/frame_29.txt +17 -0
  61. package/assets/frames/default/frame_3.txt +17 -0
  62. package/assets/frames/default/frame_30.txt +17 -0
  63. package/assets/frames/default/frame_31.txt +17 -0
  64. package/assets/frames/default/frame_32.txt +17 -0
  65. package/assets/frames/default/frame_33.txt +17 -0
  66. package/assets/frames/default/frame_34.txt +17 -0
  67. package/assets/frames/default/frame_35.txt +17 -0
  68. package/assets/frames/default/frame_36.txt +17 -0
  69. package/assets/frames/default/frame_4.txt +17 -0
  70. package/assets/frames/default/frame_5.txt +17 -0
  71. package/assets/frames/default/frame_6.txt +17 -0
  72. package/assets/frames/default/frame_7.txt +17 -0
  73. package/assets/frames/default/frame_8.txt +17 -0
  74. package/assets/frames/default/frame_9.txt +17 -0
  75. package/assets/frames/dots/frame_1.txt +17 -0
  76. package/assets/frames/dots/frame_10.txt +17 -0
  77. package/assets/frames/dots/frame_11.txt +17 -0
  78. package/assets/frames/dots/frame_12.txt +17 -0
  79. package/assets/frames/dots/frame_13.txt +17 -0
  80. package/assets/frames/dots/frame_14.txt +17 -0
  81. package/assets/frames/dots/frame_15.txt +17 -0
  82. package/assets/frames/dots/frame_16.txt +17 -0
  83. package/assets/frames/dots/frame_17.txt +17 -0
  84. package/assets/frames/dots/frame_18.txt +17 -0
  85. package/assets/frames/dots/frame_19.txt +17 -0
  86. package/assets/frames/dots/frame_2.txt +17 -0
  87. package/assets/frames/dots/frame_20.txt +17 -0
  88. package/assets/frames/dots/frame_21.txt +17 -0
  89. package/assets/frames/dots/frame_22.txt +17 -0
  90. package/assets/frames/dots/frame_23.txt +17 -0
  91. package/assets/frames/dots/frame_24.txt +17 -0
  92. package/assets/frames/dots/frame_25.txt +17 -0
  93. package/assets/frames/dots/frame_26.txt +17 -0
  94. package/assets/frames/dots/frame_27.txt +17 -0
  95. package/assets/frames/dots/frame_28.txt +17 -0
  96. package/assets/frames/dots/frame_29.txt +17 -0
  97. package/assets/frames/dots/frame_3.txt +17 -0
  98. package/assets/frames/dots/frame_30.txt +17 -0
  99. package/assets/frames/dots/frame_31.txt +17 -0
  100. package/assets/frames/dots/frame_32.txt +17 -0
  101. package/assets/frames/dots/frame_33.txt +17 -0
  102. package/assets/frames/dots/frame_34.txt +17 -0
  103. package/assets/frames/dots/frame_35.txt +17 -0
  104. package/assets/frames/dots/frame_36.txt +17 -0
  105. package/assets/frames/dots/frame_4.txt +17 -0
  106. package/assets/frames/dots/frame_5.txt +17 -0
  107. package/assets/frames/dots/frame_6.txt +17 -0
  108. package/assets/frames/dots/frame_7.txt +17 -0
  109. package/assets/frames/dots/frame_8.txt +17 -0
  110. package/assets/frames/dots/frame_9.txt +17 -0
  111. package/assets/frames/groupy/frame_1.txt +17 -0
  112. package/assets/frames/groupy/frame_10.txt +17 -0
  113. package/assets/frames/groupy/frame_11.txt +17 -0
  114. package/assets/frames/groupy/frame_12.txt +17 -0
  115. package/assets/frames/groupy/frame_13.txt +17 -0
  116. package/assets/frames/groupy/frame_14.txt +17 -0
  117. package/assets/frames/groupy/frame_15.txt +17 -0
  118. package/assets/frames/groupy/frame_16.txt +17 -0
  119. package/assets/frames/groupy/frame_17.txt +17 -0
  120. package/assets/frames/groupy/frame_18.txt +17 -0
  121. package/assets/frames/groupy/frame_19.txt +17 -0
  122. package/assets/frames/groupy/frame_2.txt +17 -0
  123. package/assets/frames/groupy/frame_20.txt +17 -0
  124. package/assets/frames/groupy/frame_21.txt +17 -0
  125. package/assets/frames/groupy/frame_22.txt +17 -0
  126. package/assets/frames/groupy/frame_23.txt +17 -0
  127. package/assets/frames/groupy/frame_24.txt +17 -0
  128. package/assets/frames/groupy/frame_25.txt +17 -0
  129. package/assets/frames/groupy/frame_26.txt +17 -0
  130. package/assets/frames/groupy/frame_27.txt +17 -0
  131. package/assets/frames/groupy/frame_28.txt +17 -0
  132. package/assets/frames/groupy/frame_29.txt +17 -0
  133. package/assets/frames/groupy/frame_3.txt +17 -0
  134. package/assets/frames/groupy/frame_30.txt +17 -0
  135. package/assets/frames/groupy/frame_31.txt +17 -0
  136. package/assets/frames/groupy/frame_32.txt +17 -0
  137. package/assets/frames/groupy/frame_33.txt +17 -0
  138. package/assets/frames/groupy/frame_34.txt +17 -0
  139. package/assets/frames/groupy/frame_35.txt +17 -0
  140. package/assets/frames/groupy/frame_36.txt +17 -0
  141. package/assets/frames/groupy/frame_4.txt +17 -0
  142. package/assets/frames/groupy/frame_5.txt +17 -0
  143. package/assets/frames/groupy/frame_6.txt +17 -0
  144. package/assets/frames/groupy/frame_7.txt +17 -0
  145. package/assets/frames/groupy/frame_8.txt +17 -0
  146. package/assets/frames/groupy/frame_9.txt +17 -0
  147. package/assets/frames/hash/frame_1.txt +17 -0
  148. package/assets/frames/hash/frame_10.txt +17 -0
  149. package/assets/frames/hash/frame_11.txt +17 -0
  150. package/assets/frames/hash/frame_12.txt +17 -0
  151. package/assets/frames/hash/frame_13.txt +17 -0
  152. package/assets/frames/hash/frame_14.txt +17 -0
  153. package/assets/frames/hash/frame_15.txt +17 -0
  154. package/assets/frames/hash/frame_16.txt +17 -0
  155. package/assets/frames/hash/frame_17.txt +17 -0
  156. package/assets/frames/hash/frame_18.txt +17 -0
  157. package/assets/frames/hash/frame_19.txt +17 -0
  158. package/assets/frames/hash/frame_2.txt +17 -0
  159. package/assets/frames/hash/frame_20.txt +17 -0
  160. package/assets/frames/hash/frame_21.txt +17 -0
  161. package/assets/frames/hash/frame_22.txt +17 -0
  162. package/assets/frames/hash/frame_23.txt +17 -0
  163. package/assets/frames/hash/frame_24.txt +17 -0
  164. package/assets/frames/hash/frame_25.txt +17 -0
  165. package/assets/frames/hash/frame_26.txt +17 -0
  166. package/assets/frames/hash/frame_27.txt +17 -0
  167. package/assets/frames/hash/frame_28.txt +17 -0
  168. package/assets/frames/hash/frame_29.txt +17 -0
  169. package/assets/frames/hash/frame_3.txt +17 -0
  170. package/assets/frames/hash/frame_30.txt +17 -0
  171. package/assets/frames/hash/frame_31.txt +17 -0
  172. package/assets/frames/hash/frame_32.txt +17 -0
  173. package/assets/frames/hash/frame_33.txt +17 -0
  174. package/assets/frames/hash/frame_34.txt +17 -0
  175. package/assets/frames/hash/frame_35.txt +17 -0
  176. package/assets/frames/hash/frame_36.txt +17 -0
  177. package/assets/frames/hash/frame_4.txt +17 -0
  178. package/assets/frames/hash/frame_5.txt +17 -0
  179. package/assets/frames/hash/frame_6.txt +17 -0
  180. package/assets/frames/hash/frame_7.txt +17 -0
  181. package/assets/frames/hash/frame_8.txt +17 -0
  182. package/assets/frames/hash/frame_9.txt +17 -0
  183. package/assets/frames/hbars/frame_1.txt +17 -0
  184. package/assets/frames/hbars/frame_10.txt +17 -0
  185. package/assets/frames/hbars/frame_11.txt +17 -0
  186. package/assets/frames/hbars/frame_12.txt +17 -0
  187. package/assets/frames/hbars/frame_13.txt +17 -0
  188. package/assets/frames/hbars/frame_14.txt +17 -0
  189. package/assets/frames/hbars/frame_15.txt +17 -0
  190. package/assets/frames/hbars/frame_16.txt +17 -0
  191. package/assets/frames/hbars/frame_17.txt +17 -0
  192. package/assets/frames/hbars/frame_18.txt +17 -0
  193. package/assets/frames/hbars/frame_19.txt +17 -0
  194. package/assets/frames/hbars/frame_2.txt +17 -0
  195. package/assets/frames/hbars/frame_20.txt +17 -0
  196. package/assets/frames/hbars/frame_21.txt +17 -0
  197. package/assets/frames/hbars/frame_22.txt +17 -0
  198. package/assets/frames/hbars/frame_23.txt +17 -0
  199. package/assets/frames/hbars/frame_24.txt +17 -0
  200. package/assets/frames/hbars/frame_25.txt +17 -0
  201. package/assets/frames/hbars/frame_26.txt +17 -0
  202. package/assets/frames/hbars/frame_27.txt +17 -0
  203. package/assets/frames/hbars/frame_28.txt +17 -0
  204. package/assets/frames/hbars/frame_29.txt +17 -0
  205. package/assets/frames/hbars/frame_3.txt +17 -0
  206. package/assets/frames/hbars/frame_30.txt +17 -0
  207. package/assets/frames/hbars/frame_31.txt +17 -0
  208. package/assets/frames/hbars/frame_32.txt +17 -0
  209. package/assets/frames/hbars/frame_33.txt +17 -0
  210. package/assets/frames/hbars/frame_34.txt +17 -0
  211. package/assets/frames/hbars/frame_35.txt +17 -0
  212. package/assets/frames/hbars/frame_36.txt +17 -0
  213. package/assets/frames/hbars/frame_4.txt +17 -0
  214. package/assets/frames/hbars/frame_5.txt +17 -0
  215. package/assets/frames/hbars/frame_6.txt +17 -0
  216. package/assets/frames/hbars/frame_7.txt +17 -0
  217. package/assets/frames/hbars/frame_8.txt +17 -0
  218. package/assets/frames/hbars/frame_9.txt +17 -0
  219. package/assets/frames/mesosfer/frame_1.txt +17 -0
  220. package/assets/frames/mesosfer/frame_10.txt +17 -0
  221. package/assets/frames/mesosfer/frame_11.txt +17 -0
  222. package/assets/frames/mesosfer/frame_12.txt +17 -0
  223. package/assets/frames/mesosfer/frame_13.txt +17 -0
  224. package/assets/frames/mesosfer/frame_14.txt +17 -0
  225. package/assets/frames/mesosfer/frame_15.txt +17 -0
  226. package/assets/frames/mesosfer/frame_16.txt +17 -0
  227. package/assets/frames/mesosfer/frame_17.txt +17 -0
  228. package/assets/frames/mesosfer/frame_18.txt +17 -0
  229. package/assets/frames/mesosfer/frame_19.txt +17 -0
  230. package/assets/frames/mesosfer/frame_2.txt +17 -0
  231. package/assets/frames/mesosfer/frame_20.txt +17 -0
  232. package/assets/frames/mesosfer/frame_21.txt +17 -0
  233. package/assets/frames/mesosfer/frame_22.txt +17 -0
  234. package/assets/frames/mesosfer/frame_23.txt +17 -0
  235. package/assets/frames/mesosfer/frame_24.txt +17 -0
  236. package/assets/frames/mesosfer/frame_25.txt +17 -0
  237. package/assets/frames/mesosfer/frame_26.txt +17 -0
  238. package/assets/frames/mesosfer/frame_27.txt +17 -0
  239. package/assets/frames/mesosfer/frame_28.txt +17 -0
  240. package/assets/frames/mesosfer/frame_29.txt +17 -0
  241. package/assets/frames/mesosfer/frame_3.txt +17 -0
  242. package/assets/frames/mesosfer/frame_30.txt +17 -0
  243. package/assets/frames/mesosfer/frame_31.txt +17 -0
  244. package/assets/frames/mesosfer/frame_32.txt +17 -0
  245. package/assets/frames/mesosfer/frame_33.txt +17 -0
  246. package/assets/frames/mesosfer/frame_34.txt +17 -0
  247. package/assets/frames/mesosfer/frame_35.txt +17 -0
  248. package/assets/frames/mesosfer/frame_36.txt +17 -0
  249. package/assets/frames/mesosfer/frame_4.txt +17 -0
  250. package/assets/frames/mesosfer/frame_5.txt +17 -0
  251. package/assets/frames/mesosfer/frame_6.txt +17 -0
  252. package/assets/frames/mesosfer/frame_7.txt +17 -0
  253. package/assets/frames/mesosfer/frame_8.txt +17 -0
  254. package/assets/frames/mesosfer/frame_9.txt +17 -0
  255. package/assets/frames/shapes/frame_1.txt +17 -0
  256. package/assets/frames/shapes/frame_10.txt +17 -0
  257. package/assets/frames/shapes/frame_11.txt +17 -0
  258. package/assets/frames/shapes/frame_12.txt +17 -0
  259. package/assets/frames/shapes/frame_13.txt +17 -0
  260. package/assets/frames/shapes/frame_14.txt +17 -0
  261. package/assets/frames/shapes/frame_15.txt +17 -0
  262. package/assets/frames/shapes/frame_16.txt +17 -0
  263. package/assets/frames/shapes/frame_17.txt +17 -0
  264. package/assets/frames/shapes/frame_18.txt +17 -0
  265. package/assets/frames/shapes/frame_19.txt +17 -0
  266. package/assets/frames/shapes/frame_2.txt +17 -0
  267. package/assets/frames/shapes/frame_20.txt +17 -0
  268. package/assets/frames/shapes/frame_21.txt +17 -0
  269. package/assets/frames/shapes/frame_22.txt +17 -0
  270. package/assets/frames/shapes/frame_23.txt +17 -0
  271. package/assets/frames/shapes/frame_24.txt +17 -0
  272. package/assets/frames/shapes/frame_25.txt +17 -0
  273. package/assets/frames/shapes/frame_26.txt +17 -0
  274. package/assets/frames/shapes/frame_27.txt +17 -0
  275. package/assets/frames/shapes/frame_28.txt +17 -0
  276. package/assets/frames/shapes/frame_29.txt +17 -0
  277. package/assets/frames/shapes/frame_3.txt +17 -0
  278. package/assets/frames/shapes/frame_30.txt +17 -0
  279. package/assets/frames/shapes/frame_31.txt +17 -0
  280. package/assets/frames/shapes/frame_32.txt +17 -0
  281. package/assets/frames/shapes/frame_33.txt +17 -0
  282. package/assets/frames/shapes/frame_34.txt +17 -0
  283. package/assets/frames/shapes/frame_35.txt +17 -0
  284. package/assets/frames/shapes/frame_36.txt +17 -0
  285. package/assets/frames/shapes/frame_4.txt +17 -0
  286. package/assets/frames/shapes/frame_5.txt +17 -0
  287. package/assets/frames/shapes/frame_6.txt +17 -0
  288. package/assets/frames/shapes/frame_7.txt +17 -0
  289. package/assets/frames/shapes/frame_8.txt +17 -0
  290. package/assets/frames/shapes/frame_9.txt +17 -0
  291. package/assets/frames/slug/frame_1.txt +17 -0
  292. package/assets/frames/slug/frame_10.txt +17 -0
  293. package/assets/frames/slug/frame_11.txt +17 -0
  294. package/assets/frames/slug/frame_12.txt +17 -0
  295. package/assets/frames/slug/frame_13.txt +17 -0
  296. package/assets/frames/slug/frame_14.txt +17 -0
  297. package/assets/frames/slug/frame_15.txt +17 -0
  298. package/assets/frames/slug/frame_16.txt +17 -0
  299. package/assets/frames/slug/frame_17.txt +17 -0
  300. package/assets/frames/slug/frame_18.txt +17 -0
  301. package/assets/frames/slug/frame_19.txt +17 -0
  302. package/assets/frames/slug/frame_2.txt +17 -0
  303. package/assets/frames/slug/frame_20.txt +17 -0
  304. package/assets/frames/slug/frame_21.txt +17 -0
  305. package/assets/frames/slug/frame_22.txt +17 -0
  306. package/assets/frames/slug/frame_23.txt +17 -0
  307. package/assets/frames/slug/frame_24.txt +17 -0
  308. package/assets/frames/slug/frame_25.txt +17 -0
  309. package/assets/frames/slug/frame_26.txt +17 -0
  310. package/assets/frames/slug/frame_27.txt +17 -0
  311. package/assets/frames/slug/frame_28.txt +17 -0
  312. package/assets/frames/slug/frame_29.txt +17 -0
  313. package/assets/frames/slug/frame_3.txt +17 -0
  314. package/assets/frames/slug/frame_30.txt +17 -0
  315. package/assets/frames/slug/frame_31.txt +17 -0
  316. package/assets/frames/slug/frame_32.txt +17 -0
  317. package/assets/frames/slug/frame_33.txt +17 -0
  318. package/assets/frames/slug/frame_34.txt +17 -0
  319. package/assets/frames/slug/frame_35.txt +17 -0
  320. package/assets/frames/slug/frame_36.txt +17 -0
  321. package/assets/frames/slug/frame_4.txt +17 -0
  322. package/assets/frames/slug/frame_5.txt +17 -0
  323. package/assets/frames/slug/frame_6.txt +17 -0
  324. package/assets/frames/slug/frame_7.txt +17 -0
  325. package/assets/frames/slug/frame_8.txt +17 -0
  326. package/assets/frames/slug/frame_9.txt +17 -0
  327. package/assets/frames/vbars/frame_1.txt +17 -0
  328. package/assets/frames/vbars/frame_10.txt +17 -0
  329. package/assets/frames/vbars/frame_11.txt +17 -0
  330. package/assets/frames/vbars/frame_12.txt +17 -0
  331. package/assets/frames/vbars/frame_13.txt +17 -0
  332. package/assets/frames/vbars/frame_14.txt +17 -0
  333. package/assets/frames/vbars/frame_15.txt +17 -0
  334. package/assets/frames/vbars/frame_16.txt +17 -0
  335. package/assets/frames/vbars/frame_17.txt +17 -0
  336. package/assets/frames/vbars/frame_18.txt +17 -0
  337. package/assets/frames/vbars/frame_19.txt +17 -0
  338. package/assets/frames/vbars/frame_2.txt +17 -0
  339. package/assets/frames/vbars/frame_20.txt +17 -0
  340. package/assets/frames/vbars/frame_21.txt +17 -0
  341. package/assets/frames/vbars/frame_22.txt +17 -0
  342. package/assets/frames/vbars/frame_23.txt +17 -0
  343. package/assets/frames/vbars/frame_24.txt +17 -0
  344. package/assets/frames/vbars/frame_25.txt +17 -0
  345. package/assets/frames/vbars/frame_26.txt +17 -0
  346. package/assets/frames/vbars/frame_27.txt +17 -0
  347. package/assets/frames/vbars/frame_28.txt +17 -0
  348. package/assets/frames/vbars/frame_29.txt +17 -0
  349. package/assets/frames/vbars/frame_3.txt +17 -0
  350. package/assets/frames/vbars/frame_30.txt +17 -0
  351. package/assets/frames/vbars/frame_31.txt +17 -0
  352. package/assets/frames/vbars/frame_32.txt +17 -0
  353. package/assets/frames/vbars/frame_33.txt +17 -0
  354. package/assets/frames/vbars/frame_34.txt +17 -0
  355. package/assets/frames/vbars/frame_35.txt +17 -0
  356. package/assets/frames/vbars/frame_36.txt +17 -0
  357. package/assets/frames/vbars/frame_4.txt +17 -0
  358. package/assets/frames/vbars/frame_5.txt +17 -0
  359. package/assets/frames/vbars/frame_6.txt +17 -0
  360. package/assets/frames/vbars/frame_7.txt +17 -0
  361. package/assets/frames/vbars/frame_8.txt +17 -0
  362. package/assets/frames/vbars/frame_9.txt +17 -0
  363. package/bin/pikaa.js +1 -0
  364. package/dist/cli.js +3565 -825
  365. package/dist/index.js +6897 -445
  366. package/package.json +6 -1
  367. package/skills/adaptyv/SKILL.md +240 -0
  368. package/skills/adaptyv/references/api-endpoints.md +690 -0
  369. package/skills/aeon/SKILL.md +402 -0
  370. package/skills/aeon/references/anomaly_detection.md +154 -0
  371. package/skills/aeon/references/classification.md +144 -0
  372. package/skills/aeon/references/clustering.md +123 -0
  373. package/skills/aeon/references/datasets_benchmarking.md +392 -0
  374. package/skills/aeon/references/distances.md +256 -0
  375. package/skills/aeon/references/forecasting.md +109 -0
  376. package/skills/aeon/references/networks.md +289 -0
  377. package/skills/aeon/references/regression.md +118 -0
  378. package/skills/aeon/references/segmentation.md +163 -0
  379. package/skills/aeon/references/similarity_search.md +187 -0
  380. package/skills/aeon/references/transformations.md +246 -0
  381. package/skills/analytical-method-validation/SKILL.md +299 -0
  382. package/skills/analytical-method-validation/assets/validation-protocol-template.md +106 -0
  383. package/skills/analytical-method-validation/assets/validation-report-template.md +116 -0
  384. package/skills/analytical-method-validation/references/compendial-and-clsi.md +96 -0
  385. package/skills/analytical-method-validation/references/framework-selection.md +87 -0
  386. package/skills/analytical-method-validation/references/ich-m10-bioanalytical.md +123 -0
  387. package/skills/analytical-method-validation/references/ich-q2r2.md +229 -0
  388. package/skills/analytical-method-validation/references/source-ledger.md +125 -0
  389. package/skills/analytical-method-validation/references/statistics.md +209 -0
  390. package/skills/analytical-method-validation/scripts/_catalog.py +499 -0
  391. package/skills/analytical-method-validation/scripts/_common.py +955 -0
  392. package/skills/analytical-method-validation/scripts/check_accuracy_precision.py +328 -0
  393. package/skills/analytical-method-validation/scripts/check_bioanalytical_run.py +293 -0
  394. package/skills/analytical-method-validation/scripts/check_detection_limits.py +310 -0
  395. package/skills/analytical-method-validation/scripts/check_response.py +243 -0
  396. package/skills/analytical-method-validation/scripts/compare_methods.py +215 -0
  397. package/skills/analytical-method-validation/scripts/plan_validation.py +381 -0
  398. package/skills/anndata/SKILL.md +431 -0
  399. package/skills/anndata/references/best_practices.md +532 -0
  400. package/skills/anndata/references/concatenation.md +399 -0
  401. package/skills/anndata/references/data_structure.md +314 -0
  402. package/skills/anndata/references/io_operations.md +466 -0
  403. package/skills/anndata/references/manipulation.md +516 -0
  404. package/skills/arbor/SKILL.md +152 -0
  405. package/skills/arbor/references/arbor-upstream.md +91 -0
  406. package/skills/arbor/references/executor-brief.md +68 -0
  407. package/skills/arbor/references/htr-methodology.md +177 -0
  408. package/skills/arbor/references/report-template.md +39 -0
  409. package/skills/arbor/scripts/tree.py +564 -0
  410. package/skills/arboreto/SKILL.md +267 -0
  411. package/skills/arboreto/references/algorithms.md +152 -0
  412. package/skills/arboreto/references/basic_inference.md +181 -0
  413. package/skills/arboreto/references/distributed_computing.md +242 -0
  414. package/skills/arboreto/scripts/basic_grn_inference.py +107 -0
  415. package/skills/astropy/SKILL.md +353 -0
  416. package/skills/astropy/references/coordinates.md +280 -0
  417. package/skills/astropy/references/cosmology.md +309 -0
  418. package/skills/astropy/references/fits.md +398 -0
  419. package/skills/astropy/references/tables.md +495 -0
  420. package/skills/astropy/references/time.md +412 -0
  421. package/skills/astropy/references/units.md +178 -0
  422. package/skills/astropy/references/wcs_and_other_modules.md +377 -0
  423. package/skills/autoskill/SKILL.md +233 -0
  424. package/skills/autoskill/config.yaml +53 -0
  425. package/skills/autoskill/references/https-proxy.md +62 -0
  426. package/skills/autoskill/references/screenpipe-config.yaml +61 -0
  427. package/skills/autoskill/scripts/autoskill.py +35 -0
  428. package/skills/autoskill/scripts/backends.py +116 -0
  429. package/skills/autoskill/scripts/cluster.py +54 -0
  430. package/skills/autoskill/scripts/doctor.py +108 -0
  431. package/skills/autoskill/scripts/fetch_window.py +33 -0
  432. package/skills/autoskill/scripts/match_skills.py +46 -0
  433. package/skills/autoskill/scripts/promote.py +58 -0
  434. package/skills/autoskill/scripts/redact.py +40 -0
  435. package/skills/autoskill/scripts/run.py +194 -0
  436. package/skills/autoskill/scripts/synthesize.py +72 -0
  437. package/skills/benchling-integration/SKILL.md +229 -0
  438. package/skills/benchling-integration/references/api_endpoints.md +883 -0
  439. package/skills/benchling-integration/references/authentication.md +390 -0
  440. package/skills/benchling-integration/references/core_capabilities.md +355 -0
  441. package/skills/benchling-integration/references/eventbridge.md +255 -0
  442. package/skills/benchling-integration/references/sdk_reference.md +772 -0
  443. package/skills/bgpt-paper-search/SKILL.md +75 -0
  444. package/skills/bids/SKILL.md +237 -0
  445. package/skills/bids/references/beps.yml +637 -0
  446. package/skills/bids/references/bids_schema.json +21015 -0
  447. package/skills/bids/references/bids_specification.md +165 -0
  448. package/skills/bids/references/conversion_tools.md +475 -0
  449. package/skills/bids/references/core_workflows.md +552 -0
  450. package/skills/bids/references/metadata_fields.md +365 -0
  451. package/skills/bids/scripts/update_schema.py +89 -0
  452. package/skills/biopython/SKILL.md +472 -0
  453. package/skills/biopython/references/advanced.md +580 -0
  454. package/skills/biopython/references/alignment.md +377 -0
  455. package/skills/biopython/references/blast.md +463 -0
  456. package/skills/biopython/references/databases.md +492 -0
  457. package/skills/biopython/references/phylogenetics.md +566 -0
  458. package/skills/biopython/references/sequence_io.md +289 -0
  459. package/skills/biopython/references/structure.md +564 -0
  460. package/skills/bioservices/SKILL.md +399 -0
  461. package/skills/bioservices/references/identifier_mapping.md +685 -0
  462. package/skills/bioservices/references/services_reference.md +638 -0
  463. package/skills/bioservices/references/workflow_patterns.md +813 -0
  464. package/skills/bioservices/scripts/batch_id_converter.py +347 -0
  465. package/skills/bioservices/scripts/compound_cross_reference.py +387 -0
  466. package/skills/bioservices/scripts/pathway_analysis.py +309 -0
  467. package/skills/bioservices/scripts/protein_analysis_workflow.py +441 -0
  468. package/skills/bulk-rnaseq/SKILL.md +198 -0
  469. package/skills/bulk-rnaseq/references/counts-and-handoff.md +91 -0
  470. package/skills/bulk-rnaseq/references/design-and-qc.md +68 -0
  471. package/skills/bulk-rnaseq/references/upstream-manual.md +128 -0
  472. package/skills/bulk-rnaseq/references/upstream-nfcore.md +108 -0
  473. package/skills/bulk-rnaseq/scripts/build_counts_matrix.py +203 -0
  474. package/skills/bulk-rnaseq/scripts/validate_samplesheet.py +206 -0
  475. package/skills/cellxgene-census/SKILL.md +283 -0
  476. package/skills/cellxgene-census/references/census_schema.md +218 -0
  477. package/skills/cellxgene-census/references/common_patterns.md +368 -0
  478. package/skills/cellxgene-census/references/core_workflow_patterns.md +297 -0
  479. package/skills/cirq/SKILL.md +370 -0
  480. package/skills/cirq/references/building.md +307 -0
  481. package/skills/cirq/references/experiments.md +572 -0
  482. package/skills/cirq/references/hardware.md +527 -0
  483. package/skills/cirq/references/noise.md +514 -0
  484. package/skills/cirq/references/simulation.md +353 -0
  485. package/skills/cirq/references/transformation.md +416 -0
  486. package/skills/citation-management/SKILL.md +329 -0
  487. package/skills/citation-management/assets/bibtex_template.bib +264 -0
  488. package/skills/citation-management/assets/citation_checklist.md +386 -0
  489. package/skills/citation-management/references/best_practices.md +91 -0
  490. package/skills/citation-management/references/bibtex_formatting.md +908 -0
  491. package/skills/citation-management/references/citation_validation.md +835 -0
  492. package/skills/citation-management/references/core_workflow.md +569 -0
  493. package/skills/citation-management/references/example_workflows.md +126 -0
  494. package/skills/citation-management/references/google_scholar_search.md +732 -0
  495. package/skills/citation-management/references/metadata_extraction.md +870 -0
  496. package/skills/citation-management/references/pubmed_search.md +839 -0
  497. package/skills/citation-management/references/script_reference.md +250 -0
  498. package/skills/citation-management/references/search_strategies.md +110 -0
  499. package/skills/citation-management/scripts/_common.py +331 -0
  500. package/skills/citation-management/scripts/doi_to_bibtex.py +204 -0
  501. package/skills/citation-management/scripts/extract_metadata.py +690 -0
  502. package/skills/citation-management/scripts/format_bibtex.py +356 -0
  503. package/skills/citation-management/scripts/search_google_scholar.py +268 -0
  504. package/skills/citation-management/scripts/search_openalex.py +297 -0
  505. package/skills/citation-management/scripts/search_pubmed.py +419 -0
  506. package/skills/citation-management/scripts/validate_citations.py +688 -0
  507. package/skills/clinical-decision-support/SKILL.md +238 -0
  508. package/skills/clinical-decision-support/assets/aggregate_cohort_table_template.json +114 -0
  509. package/skills/clinical-decision-support/assets/aggregate_model_evaluation_template.json +115 -0
  510. package/skills/clinical-decision-support/assets/artifact_intended_use_template.json +81 -0
  511. package/skills/clinical-decision-support/assets/decision_logic_traceability_template.json +108 -0
  512. package/skills/clinical-decision-support/assets/deidentification_checklist_template.json +176 -0
  513. package/skills/clinical-decision-support/assets/evidence_profile_template.json +139 -0
  514. package/skills/clinical-decision-support/assets/survival_analysis_plan_template.json +134 -0
  515. package/skills/clinical-decision-support/references/README.md +62 -0
  516. package/skills/clinical-decision-support/references/cohort_evaluation.md +142 -0
  517. package/skills/clinical-decision-support/references/decision_logic_traceability.md +146 -0
  518. package/skills/clinical-decision-support/references/evidence_profiles.md +153 -0
  519. package/skills/clinical-decision-support/references/model_biomarker_evaluation.md +152 -0
  520. package/skills/clinical-decision-support/references/privacy_and_disclosure.md +144 -0
  521. package/skills/clinical-decision-support/references/regulatory_and_governance.md +104 -0
  522. package/skills/clinical-decision-support/references/safety_and_scope.md +103 -0
  523. package/skills/clinical-decision-support/references/security_validation.md +60 -0
  524. package/skills/clinical-decision-support/references/sources.md +119 -0
  525. package/skills/clinical-decision-support/references/study_reporting.md +134 -0
  526. package/skills/clinical-decision-support/references/survival_analysis.md +156 -0
  527. package/skills/clinical-decision-support/scripts/_common.py +223 -0
  528. package/skills/clinical-decision-support/scripts/cohort_table_generator.py +288 -0
  529. package/skills/clinical-decision-support/scripts/decision_logic_traceability.py +313 -0
  530. package/skills/clinical-decision-support/scripts/deidentification_checklist.py +260 -0
  531. package/skills/clinical-decision-support/scripts/evidence_profile_check.py +259 -0
  532. package/skills/clinical-decision-support/scripts/model_biomarker_evaluation.py +345 -0
  533. package/skills/clinical-decision-support/scripts/survival_plan_validator.py +294 -0
  534. package/skills/clinical-decision-support/scripts/validate_cds_artifact.py +269 -0
  535. package/skills/clinical-reports/SKILL.md +248 -0
  536. package/skills/clinical-reports/assets/adverse_event_aggregate_input_template.csv +1 -0
  537. package/skills/clinical-reports/assets/case_report_template.json +43 -0
  538. package/skills/clinical-reports/assets/clinical_trial_csr_template.json +51 -0
  539. package/skills/clinical-reports/assets/clinical_trial_results_template.json +66 -0
  540. package/skills/clinical-reports/assets/clinical_trial_safety_aggregate_template.json +49 -0
  541. package/skills/clinical-reports/assets/consistency_manifest_template.json +15 -0
  542. package/skills/clinical-reports/assets/deidentification_process_checklist.json +56 -0
  543. package/skills/clinical-reports/assets/lab_report_template.json +36 -0
  544. package/skills/clinical-reports/assets/pathology_report_template.json +36 -0
  545. package/skills/clinical-reports/assets/provenance_manifest_template.json +17 -0
  546. package/skills/clinical-reports/assets/quality_review_checklist.json +34 -0
  547. package/skills/clinical-reports/assets/radiology_report_template.json +34 -0
  548. package/skills/clinical-reports/assets/research_summary_template.json +36 -0
  549. package/skills/clinical-reports/assets/terminology_manifest_template.json +11 -0
  550. package/skills/clinical-reports/assets/trial_protocol_reporting_checklist.json +70 -0
  551. package/skills/clinical-reports/references/README.md +34 -0
  552. package/skills/clinical-reports/references/case_report_guidelines.md +72 -0
  553. package/skills/clinical-reports/references/clinical_trial_reporting.md +97 -0
  554. package/skills/clinical-reports/references/data_presentation.md +92 -0
  555. package/skills/clinical-reports/references/diagnostic_reports_standards.md +76 -0
  556. package/skills/clinical-reports/references/medical_terminology.md +84 -0
  557. package/skills/clinical-reports/references/privacy_and_deidentification.md +84 -0
  558. package/skills/clinical-reports/references/professional_review.md +78 -0
  559. package/skills/clinical-reports/references/report_type_routing.md +57 -0
  560. package/skills/clinical-reports/references/safety_reporting.md +109 -0
  561. package/skills/clinical-reports/references/sources.md +75 -0
  562. package/skills/clinical-reports/scripts/_common.py +263 -0
  563. package/skills/clinical-reports/scripts/check_deidentification.py +298 -0
  564. package/skills/clinical-reports/scripts/consistency_checker.py +390 -0
  565. package/skills/clinical-reports/scripts/format_adverse_events.py +455 -0
  566. package/skills/clinical-reports/scripts/generate_report_template.py +115 -0
  567. package/skills/clinical-reports/scripts/provenance_validator.py +263 -0
  568. package/skills/clinical-reports/scripts/terminology_validator.py +277 -0
  569. package/skills/clinical-reports/scripts/validate_case_report.py +278 -0
  570. package/skills/clinical-reports/scripts/validate_trial_report.py +534 -0
  571. package/skills/cobrapy/SKILL.md +496 -0
  572. package/skills/cobrapy/references/api_quick_reference.md +665 -0
  573. package/skills/cobrapy/references/workflows.md +600 -0
  574. package/skills/consciousness-council/SKILL.md +151 -0
  575. package/skills/consciousness-council/references/advanced-configurations.md +96 -0
  576. package/skills/dask/SKILL.md +482 -0
  577. package/skills/dask/references/arrays.md +495 -0
  578. package/skills/dask/references/bags.md +468 -0
  579. package/skills/dask/references/best-practices.md +277 -0
  580. package/skills/dask/references/dataframes.md +370 -0
  581. package/skills/dask/references/futures.md +541 -0
  582. package/skills/dask/references/schedulers.md +517 -0
  583. package/skills/database-lookup/SKILL.md +386 -0
  584. package/skills/database-lookup/references/addgene.md +38 -0
  585. package/skills/database-lookup/references/alphafold.md +52 -0
  586. package/skills/database-lookup/references/alphavantage.md +261 -0
  587. package/skills/database-lookup/references/bea.md +409 -0
  588. package/skills/database-lookup/references/bindingdb.md +85 -0
  589. package/skills/database-lookup/references/biogrid.md +110 -0
  590. package/skills/database-lookup/references/bls.md +235 -0
  591. package/skills/database-lookup/references/brenda.md +71 -0
  592. package/skills/database-lookup/references/cbioportal.md +206 -0
  593. package/skills/database-lookup/references/census.md +251 -0
  594. package/skills/database-lookup/references/chebi.md +103 -0
  595. package/skills/database-lookup/references/chembl.md +80 -0
  596. package/skills/database-lookup/references/clinicaltrials.md +86 -0
  597. package/skills/database-lookup/references/clinpgx.md +64 -0
  598. package/skills/database-lookup/references/clinvar.md +91 -0
  599. package/skills/database-lookup/references/cod.md +121 -0
  600. package/skills/database-lookup/references/cosmic.md +59 -0
  601. package/skills/database-lookup/references/dailymed.md +65 -0
  602. package/skills/database-lookup/references/database_selection_guide.md +166 -0
  603. package/skills/database-lookup/references/datacommons.md +237 -0
  604. package/skills/database-lookup/references/dbsnp.md +143 -0
  605. package/skills/database-lookup/references/disgenet.md +52 -0
  606. package/skills/database-lookup/references/drugbank.md +54 -0
  607. package/skills/database-lookup/references/ecb.md +191 -0
  608. package/skills/database-lookup/references/emdb.md +37 -0
  609. package/skills/database-lookup/references/ena.md +372 -0
  610. package/skills/database-lookup/references/encode.md +47 -0
  611. package/skills/database-lookup/references/ensembl.md +539 -0
  612. package/skills/database-lookup/references/epa.md +232 -0
  613. package/skills/database-lookup/references/eurostat.md +237 -0
  614. package/skills/database-lookup/references/fda.md +64 -0
  615. package/skills/database-lookup/references/federal-reserve.md +216 -0
  616. package/skills/database-lookup/references/fred.md +297 -0
  617. package/skills/database-lookup/references/gene-ontology.md +147 -0
  618. package/skills/database-lookup/references/geo.md +130 -0
  619. package/skills/database-lookup/references/gnomad.md +93 -0
  620. package/skills/database-lookup/references/gtex.md +136 -0
  621. package/skills/database-lookup/references/gwas-catalog.md +46 -0
  622. package/skills/database-lookup/references/hca.md +35 -0
  623. package/skills/database-lookup/references/hpo.md +48 -0
  624. package/skills/database-lookup/references/human-protein-atlas.md +57 -0
  625. package/skills/database-lookup/references/interpro.md +120 -0
  626. package/skills/database-lookup/references/jaspar.md +50 -0
  627. package/skills/database-lookup/references/kegg.md +78 -0
  628. package/skills/database-lookup/references/lincs-l1000.md +68 -0
  629. package/skills/database-lookup/references/materials-project.md +123 -0
  630. package/skills/database-lookup/references/metabolomics-workbench.md +98 -0
  631. package/skills/database-lookup/references/monarch.md +46 -0
  632. package/skills/database-lookup/references/mousemine.md +40 -0
  633. package/skills/database-lookup/references/nasa-exoplanet-archive.md +112 -0
  634. package/skills/database-lookup/references/nasa.md +121 -0
  635. package/skills/database-lookup/references/ncbi-gene.md +64 -0
  636. package/skills/database-lookup/references/ncbi-protein.md +104 -0
  637. package/skills/database-lookup/references/ncbi-taxonomy.md +121 -0
  638. package/skills/database-lookup/references/nist.md +105 -0
  639. package/skills/database-lookup/references/noaa.md +199 -0
  640. package/skills/database-lookup/references/omim.md +114 -0
  641. package/skills/database-lookup/references/opentargets.md +459 -0
  642. package/skills/database-lookup/references/openweathermap.md +255 -0
  643. package/skills/database-lookup/references/pdb.md +121 -0
  644. package/skills/database-lookup/references/pride.md +74 -0
  645. package/skills/database-lookup/references/pubchem.md +145 -0
  646. package/skills/database-lookup/references/quickgo.md +45 -0
  647. package/skills/database-lookup/references/reactome.md +140 -0
  648. package/skills/database-lookup/references/retrieval-contract.md +123 -0
  649. package/skills/database-lookup/references/rummageo.md +32 -0
  650. package/skills/database-lookup/references/sdss.md +130 -0
  651. package/skills/database-lookup/references/sec-edgar.md +315 -0
  652. package/skills/database-lookup/references/simbad.md +405 -0
  653. package/skills/database-lookup/references/sra.md +149 -0
  654. package/skills/database-lookup/references/string.md +283 -0
  655. package/skills/database-lookup/references/tcga-gdc.md +58 -0
  656. package/skills/database-lookup/references/treasury.md +215 -0
  657. package/skills/database-lookup/references/ucsc-genome.md +135 -0
  658. package/skills/database-lookup/references/uniprot.md +283 -0
  659. package/skills/database-lookup/references/usgs.md +260 -0
  660. package/skills/database-lookup/references/uspto.md +130 -0
  661. package/skills/database-lookup/references/who.md +283 -0
  662. package/skills/database-lookup/references/worldbank.md +239 -0
  663. package/skills/database-lookup/references/zinc.md +202 -0
  664. package/skills/datamol/SKILL.md +200 -0
  665. package/skills/datamol/references/conformers_module.md +131 -0
  666. package/skills/datamol/references/core_api.md +136 -0
  667. package/skills/datamol/references/core_workflows.md +451 -0
  668. package/skills/datamol/references/descriptors_viz.md +195 -0
  669. package/skills/datamol/references/fragments_scaffolds.md +174 -0
  670. package/skills/datamol/references/io_module.md +112 -0
  671. package/skills/datamol/references/reactions_data.md +218 -0
  672. package/skills/datamol/references/workflow_patterns.md +104 -0
  673. package/skills/deepchem/SKILL.md +244 -0
  674. package/skills/deepchem/references/api_reference.md +305 -0
  675. package/skills/deepchem/references/core_capabilities.md +276 -0
  676. package/skills/deepchem/references/typical_workflows.md +109 -0
  677. package/skills/deepchem/references/workflows.md +491 -0
  678. package/skills/deepchem/scripts/graph_neural_network.py +350 -0
  679. package/skills/deepchem/scripts/predict_solubility.py +223 -0
  680. package/skills/deepchem/scripts/transfer_learning.py +443 -0
  681. package/skills/deepspot-m/SKILL.md +175 -0
  682. package/skills/deepspot-m/references/api.md +186 -0
  683. package/skills/deepspot-m/references/whole_slide.md +174 -0
  684. package/skills/deeptools/SKILL.md +412 -0
  685. package/skills/deeptools/assets/quick_reference.md +65 -0
  686. package/skills/deeptools/references/core_workflows.md +134 -0
  687. package/skills/deeptools/references/effective_genome_sizes.md +118 -0
  688. package/skills/deeptools/references/normalization_methods.md +424 -0
  689. package/skills/deeptools/references/tools_reference.md +569 -0
  690. package/skills/deeptools/references/workflows.md +476 -0
  691. package/skills/deeptools/scripts/validate_files.py +195 -0
  692. package/skills/deeptools/scripts/workflow_generator.py +520 -0
  693. package/skills/depmap/SKILL.md +301 -0
  694. package/skills/depmap/references/dependency_analysis.md +178 -0
  695. package/skills/dhdna-profiler/SKILL.md +184 -0
  696. package/skills/dhdna-profiler/references/advanced-profiling.md +72 -0
  697. package/skills/diffdock/SKILL.md +488 -0
  698. package/skills/diffdock/assets/batch_template.csv +4 -0
  699. package/skills/diffdock/assets/custom_inference_config.yaml +94 -0
  700. package/skills/diffdock/references/confidence_and_limitations.md +182 -0
  701. package/skills/diffdock/references/parameters_reference.md +173 -0
  702. package/skills/diffdock/references/workflows_examples.md +401 -0
  703. package/skills/diffdock/scripts/analyze_results.py +346 -0
  704. package/skills/diffdock/scripts/prepare_batch_csv.py +257 -0
  705. package/skills/diffdock/scripts/setup_check.py +283 -0
  706. package/skills/dnanexus-integration/SKILL.md +325 -0
  707. package/skills/dnanexus-integration/references/app-development.md +371 -0
  708. package/skills/dnanexus-integration/references/authentication.md +226 -0
  709. package/skills/dnanexus-integration/references/configuration.md +444 -0
  710. package/skills/dnanexus-integration/references/data-operations.md +474 -0
  711. package/skills/dnanexus-integration/references/job-execution.md +482 -0
  712. package/skills/dnanexus-integration/references/operations-and-troubleshooting.md +506 -0
  713. package/skills/dnanexus-integration/references/python-sdk.md +548 -0
  714. package/skills/dnanexus-integration/references/sources.md +168 -0
  715. package/skills/dnanexus-integration/references/workflow-languages.md +292 -0
  716. package/skills/dnanexus-integration/scripts/inspect_dxpy.py +366 -0
  717. package/skills/dnanexus-integration/scripts/validate_dxapp.py +796 -0
  718. package/skills/docx/LICENSE.txt +30 -0
  719. package/skills/docx/SKILL.md +99 -0
  720. package/skills/docx/scripts/__init__.py +1 -0
  721. package/skills/docx/scripts/accept_changes.py +135 -0
  722. package/skills/docx/scripts/comment.py +368 -0
  723. package/skills/docx/scripts/merge_runs.py +310 -0
  724. package/skills/docx/scripts/office/helpers/__init__.py +111 -0
  725. package/skills/docx/scripts/office/helpers/pptx_chart.py +170 -0
  726. package/skills/docx/scripts/office/helpers/pptx_slide.py +60 -0
  727. package/skills/docx/scripts/office/helpers/pptx_theme.py +114 -0
  728. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  729. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  730. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  731. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  732. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  733. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  734. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  735. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  736. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  737. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  738. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  739. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  740. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  741. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  742. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  743. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  744. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  745. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  746. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  747. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  748. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  749. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  750. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  751. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  752. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  753. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  754. package/skills/docx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  755. package/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  756. package/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  757. package/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  758. package/skills/docx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  759. package/skills/docx/scripts/office/schemas/mce/mc.xsd +75 -0
  760. package/skills/docx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  761. package/skills/docx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  762. package/skills/docx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  763. package/skills/docx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  764. package/skills/docx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  765. package/skills/docx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  766. package/skills/docx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  767. package/skills/docx/scripts/office/soffice.py +232 -0
  768. package/skills/docx/scripts/office/validate.py +173 -0
  769. package/skills/docx/scripts/office/validators/__init__.py +15 -0
  770. package/skills/docx/scripts/office/validators/base.py +875 -0
  771. package/skills/docx/scripts/office/validators/docx.py +466 -0
  772. package/skills/docx/scripts/office/validators/pptx.py +441 -0
  773. package/skills/docx/scripts/office/validators/redlining.py +299 -0
  774. package/skills/docx/scripts/templates/comments.xml +3 -0
  775. package/skills/docx/scripts/templates/commentsExtended.xml +3 -0
  776. package/skills/docx/scripts/templates/commentsExtensible.xml +3 -0
  777. package/skills/docx/scripts/templates/commentsIds.xml +3 -0
  778. package/skills/docx/scripts/templates/people.xml +3 -0
  779. package/skills/esm/SKILL.md +334 -0
  780. package/skills/esm/references/biohub-platform.md +111 -0
  781. package/skills/esm/references/esm-c-api.md +609 -0
  782. package/skills/esm/references/esm3-api.md +462 -0
  783. package/skills/esm/references/forge-api.md +675 -0
  784. package/skills/esm/references/workflows.md +685 -0
  785. package/skills/etetoolkit/SKILL.md +327 -0
  786. package/skills/etetoolkit/references/api_reference.md +546 -0
  787. package/skills/etetoolkit/references/migration-ete3-to-ete4.md +579 -0
  788. package/skills/etetoolkit/references/taxonomy.md +362 -0
  789. package/skills/etetoolkit/references/visualization.md +516 -0
  790. package/skills/etetoolkit/references/workflows.md +537 -0
  791. package/skills/etetoolkit/scripts/quick_visualize.py +455 -0
  792. package/skills/etetoolkit/scripts/tree_operations.py +446 -0
  793. package/skills/exa-search/SKILL.md +102 -0
  794. package/skills/exa-search/references/web-extract.md +53 -0
  795. package/skills/exa-search/references/web-search.md +119 -0
  796. package/skills/exa-search/scripts/exa_extract.py +117 -0
  797. package/skills/exa-search/scripts/exa_search.py +179 -0
  798. package/skills/executing-plans/SKILL.md +14 -0
  799. package/skills/experimental-design/SKILL.md +234 -0
  800. package/skills/experimental-design/references/design_types.md +129 -0
  801. package/skills/experimental-design/references/factorial_and_doe.md +130 -0
  802. package/skills/experimental-design/references/randomization_and_blocking.md +116 -0
  803. package/skills/experimental-design/references/sequential_and_adaptive.md +97 -0
  804. package/skills/experimental-design/scripts/doe_designs.py +183 -0
  805. package/skills/experimental-design/scripts/randomization.py +171 -0
  806. package/skills/exploratory-data-analysis/SKILL.md +280 -0
  807. package/skills/exploratory-data-analysis/assets/report_template.md +202 -0
  808. package/skills/exploratory-data-analysis/references/bioinformatics_genomics_formats.md +192 -0
  809. package/skills/exploratory-data-analysis/references/chemistry_molecular_formats.md +183 -0
  810. package/skills/exploratory-data-analysis/references/general_scientific_formats.md +259 -0
  811. package/skills/exploratory-data-analysis/references/microscopy_imaging_formats.md +189 -0
  812. package/skills/exploratory-data-analysis/references/proteomics_metabolomics_formats.md +217 -0
  813. package/skills/exploratory-data-analysis/references/spectroscopy_analytical_formats.md +191 -0
  814. package/skills/exploratory-data-analysis/scripts/__init__.py +1 -0
  815. package/skills/exploratory-data-analysis/scripts/_capabilities.py +576 -0
  816. package/skills/exploratory-data-analysis/scripts/_common.py +460 -0
  817. package/skills/exploratory-data-analysis/scripts/_structured.py +391 -0
  818. package/skills/exploratory-data-analysis/scripts/_tabular.py +905 -0
  819. package/skills/exploratory-data-analysis/scripts/capability_manifest.py +184 -0
  820. package/skills/exploratory-data-analysis/scripts/distribution_sensitivity.py +117 -0
  821. package/skills/exploratory-data-analysis/scripts/eda_analyzer.py +345 -0
  822. package/skills/exploratory-data-analysis/scripts/image_inspector.py +214 -0
  823. package/skills/exploratory-data-analysis/scripts/missingness_leakage_audit.py +130 -0
  824. package/skills/exploratory-data-analysis/scripts/report_scaffold.py +143 -0
  825. package/skills/exploratory-data-analysis/scripts/sequence_inspector.py +255 -0
  826. package/skills/exploratory-data-analysis/scripts/tabular_profile.py +109 -0
  827. package/skills/flowio/SKILL.md +310 -0
  828. package/skills/flowio/references/api_reference.md +355 -0
  829. package/skills/flowio/references/fcs_semantics.md +315 -0
  830. package/skills/flowio/references/sources.md +89 -0
  831. package/skills/flowio/references/troubleshooting.md +399 -0
  832. package/skills/flowio/references/workflows.md +368 -0
  833. package/skills/flowio/scripts/inspect_fcs.py +439 -0
  834. package/skills/fluidsim/SKILL.md +279 -0
  835. package/skills/fluidsim/references/advanced_features.md +347 -0
  836. package/skills/fluidsim/references/installation.md +263 -0
  837. package/skills/fluidsim/references/output_analysis.md +314 -0
  838. package/skills/fluidsim/references/parameters.md +322 -0
  839. package/skills/fluidsim/references/simulation_workflow.md +329 -0
  840. package/skills/fluidsim/references/solvers.md +191 -0
  841. package/skills/fluidsim/scripts/__init__.py +1 -0
  842. package/skills/fluidsim/scripts/_common.py +491 -0
  843. package/skills/fluidsim/scripts/_schema.py +872 -0
  844. package/skills/fluidsim/scripts/budget_summary.py +396 -0
  845. package/skills/fluidsim/scripts/grid_resource_estimator.py +286 -0
  846. package/skills/fluidsim/scripts/output_inventory.py +353 -0
  847. package/skills/fluidsim/scripts/restart_compatibility.py +424 -0
  848. package/skills/fluidsim/scripts/simulation_dry_run.py +246 -0
  849. package/skills/fluidsim/scripts/solver_config_validator.py +70 -0
  850. package/skills/frontend-design/SKILL.md +99 -0
  851. package/skills/generate-image/SKILL.md +304 -0
  852. package/skills/generate-image/references/models.md +173 -0
  853. package/skills/generate-image/scripts/generate_image.py +752 -0
  854. package/skills/geniml/SKILL.md +310 -0
  855. package/skills/geniml/references/bedspace.md +267 -0
  856. package/skills/geniml/references/consensus_peaks.md +334 -0
  857. package/skills/geniml/references/region2vec.md +289 -0
  858. package/skills/geniml/references/scembed.md +307 -0
  859. package/skills/geniml/references/utilities.md +385 -0
  860. package/skills/geniml/scripts/__init__.py +1 -0
  861. package/skills/geniml/scripts/_common.py +399 -0
  862. package/skills/geniml/scripts/bed_validator.py +363 -0
  863. package/skills/geniml/scripts/consensus_plan.py +416 -0
  864. package/skills/geniml/scripts/corpus_auditor.py +304 -0
  865. package/skills/geniml/scripts/embedding_plan.py +476 -0
  866. package/skills/geniml/scripts/model_artifact_inspector.py +358 -0
  867. package/skills/geniml/scripts/tokenizer_compatibility.py +321 -0
  868. package/skills/genomic-coordinates/SKILL.md +189 -0
  869. package/skills/genomic-coordinates/references/format-conventions.md +205 -0
  870. package/skills/genomic-coordinates/references/reference-builds.md +154 -0
  871. package/skills/genomic-coordinates/references/transcript-coordinates.md +141 -0
  872. package/skills/genomic-coordinates/references/variant-representation.md +155 -0
  873. package/skills/genomic-coordinates/scripts/_common.py +335 -0
  874. package/skills/genomic-coordinates/scripts/audit_intervals.py +511 -0
  875. package/skills/genomic-coordinates/scripts/check_contigs.py +382 -0
  876. package/skills/genomic-coordinates/scripts/convert_coords.py +180 -0
  877. package/skills/genomic-coordinates/scripts/normalize_variant.py +290 -0
  878. package/skills/genomic-intelligence/SKILL.md +243 -0
  879. package/skills/genomic-intelligence/references/api-and-auth.md +45 -0
  880. package/skills/genomic-intelligence/references/mcp.md +94 -0
  881. package/skills/genomic-intelligence/references/sequence-acquisition.md +52 -0
  882. package/skills/genomic-intelligence/references/tasks.md +75 -0
  883. package/skills/geomaster/README.md +105 -0
  884. package/skills/geomaster/SKILL.md +366 -0
  885. package/skills/geomaster/references/advanced-gis.md +376 -0
  886. package/skills/geomaster/references/big-data.md +363 -0
  887. package/skills/geomaster/references/code-examples.md +531 -0
  888. package/skills/geomaster/references/coordinate-systems.md +364 -0
  889. package/skills/geomaster/references/core-libraries.md +273 -0
  890. package/skills/geomaster/references/data-sources.md +330 -0
  891. package/skills/geomaster/references/gis-software.md +369 -0
  892. package/skills/geomaster/references/industry-applications.md +420 -0
  893. package/skills/geomaster/references/machine-learning.md +462 -0
  894. package/skills/geomaster/references/programming-languages.md +456 -0
  895. package/skills/geomaster/references/remote-sensing.md +370 -0
  896. package/skills/geomaster/references/scientific-domains.md +416 -0
  897. package/skills/geomaster/references/specialized-topics.md +428 -0
  898. package/skills/geomaster/references/troubleshooting.md +439 -0
  899. package/skills/geopandas/SKILL.md +250 -0
  900. package/skills/geopandas/references/crs-management.md +231 -0
  901. package/skills/geopandas/references/data-io.md +323 -0
  902. package/skills/geopandas/references/data-structures.md +207 -0
  903. package/skills/geopandas/references/geometric-operations.md +262 -0
  904. package/skills/geopandas/references/spatial-analysis.md +294 -0
  905. package/skills/geopandas/references/visualization.md +230 -0
  906. package/skills/geopandas/scripts/_common.py +605 -0
  907. package/skills/geopandas/scripts/crs_reprojection_plan.py +210 -0
  908. package/skills/geopandas/scripts/export_plan.py +305 -0
  909. package/skills/geopandas/scripts/geometry_validity_report.py +227 -0
  910. package/skills/geopandas/scripts/sensitive_coordinates_checklist.py +230 -0
  911. package/skills/geopandas/scripts/spatial_join_audit.py +368 -0
  912. package/skills/geopandas/scripts/vector_inventory.py +140 -0
  913. package/skills/get-available-resources/SKILL.md +260 -0
  914. package/skills/get-available-resources/references/resource_semantics.md +206 -0
  915. package/skills/get-available-resources/references/snapshot_schema.md +172 -0
  916. package/skills/get-available-resources/references/sources.md +124 -0
  917. package/skills/get-available-resources/scripts/_common.py +190 -0
  918. package/skills/get-available-resources/scripts/accelerator_diagnostics.py +151 -0
  919. package/skills/get-available-resources/scripts/detect_resources.py +1767 -0
  920. package/skills/get-available-resources/scripts/plan_workload.py +311 -0
  921. package/skills/get-available-resources/scripts/snapshot_tools.py +486 -0
  922. package/skills/gget/SKILL.md +153 -0
  923. package/skills/gget/references/common_workflows.md +120 -0
  924. package/skills/gget/references/database_info.md +336 -0
  925. package/skills/gget/references/module_catalog.md +733 -0
  926. package/skills/gget/references/module_reference.md +526 -0
  927. package/skills/gget/references/workflows.md +815 -0
  928. package/skills/gget/scripts/batch_sequence_analysis.py +192 -0
  929. package/skills/gget/scripts/enrichment_pipeline.py +235 -0
  930. package/skills/gget/scripts/gene_analysis.py +175 -0
  931. package/skills/ginkgo-cloud-lab/SKILL.md +106 -0
  932. package/skills/ginkgo-cloud-lab/references/cell-free-protein-expression-hibit.md +53 -0
  933. package/skills/ginkgo-cloud-lab/references/cell-free-protein-expression-optimization.md +85 -0
  934. package/skills/ginkgo-cloud-lab/references/cell-free-protein-expression-validation.md +71 -0
  935. package/skills/ginkgo-cloud-lab/references/cfps-expression-purification-quantification.md +60 -0
  936. package/skills/ginkgo-cloud-lab/references/cfps-strep-purification-thermal-shift.md +63 -0
  937. package/skills/ginkgo-cloud-lab/references/cfps-strep-tag-purification-a280.md +55 -0
  938. package/skills/ginkgo-cloud-lab/references/echo-ms-cfps-detection.md +49 -0
  939. package/skills/ginkgo-cloud-lab/references/echo-ms-method-onboarding.md +56 -0
  940. package/skills/ginkgo-cloud-lab/references/ecoli-expression-purification-quantification.md +49 -0
  941. package/skills/ginkgo-cloud-lab/references/ecoli-minibinder-expression-histag-a280.md +62 -0
  942. package/skills/ginkgo-cloud-lab/references/ecoli-protein-expression-hibit.md +44 -0
  943. package/skills/ginkgo-cloud-lab/references/ecoli-protein-expression-histag-a280.md +47 -0
  944. package/skills/ginkgo-cloud-lab/references/fluorescent-pixel-art-generation.md +73 -0
  945. package/skills/ginkgo-cloud-lab/references/ivt-rna-synthesis-qpcr.md +67 -0
  946. package/skills/ginkgo-cloud-lab/references/minibinder-strep-tag-a280.md +58 -0
  947. package/skills/ginkgo-cloud-lab/references/pichia-protein-expression-labchip.md +43 -0
  948. package/skills/ginkgo-cloud-lab/references/spr-target-onboarding.md +58 -0
  949. package/skills/glycoengineering/SKILL.md +339 -0
  950. package/skills/glycoengineering/references/glycan_databases.md +165 -0
  951. package/skills/gtars/SKILL.md +282 -0
  952. package/skills/gtars/references/cli.md +334 -0
  953. package/skills/gtars/references/coverage.md +224 -0
  954. package/skills/gtars/references/overlap.md +220 -0
  955. package/skills/gtars/references/python-api.md +280 -0
  956. package/skills/gtars/references/refget.md +318 -0
  957. package/skills/gtars/references/tokenizers.md +256 -0
  958. package/skills/gtars/scripts/__init__.py +1 -0
  959. package/skills/gtars/scripts/_common.py +461 -0
  960. package/skills/gtars/scripts/artifact_inspector.py +328 -0
  961. package/skills/gtars/scripts/bed_validator.py +183 -0
  962. package/skills/gtars/scripts/coverage_preflight.py +256 -0
  963. package/skills/gtars/scripts/execution_plan.py +365 -0
  964. package/skills/gtars/scripts/refget_digest_plan.py +311 -0
  965. package/skills/gtars/scripts/tokenizer_manifest.py +238 -0
  966. package/skills/histolab/SKILL.md +243 -0
  967. package/skills/histolab/references/core_capabilities.md +305 -0
  968. package/skills/histolab/references/filters_preprocessing.md +537 -0
  969. package/skills/histolab/references/slide_management.md +184 -0
  970. package/skills/histolab/references/tile_extraction.md +421 -0
  971. package/skills/histolab/references/tissue_masks.md +251 -0
  972. package/skills/histolab/references/typical_workflows.md +196 -0
  973. package/skills/histolab/references/visualization.md +548 -0
  974. package/skills/hugging-science/SKILL.md +132 -0
  975. package/skills/hugging-science/references/flagship-resources.md +81 -0
  976. package/skills/hugging-science/references/topics-and-slugs.md +82 -0
  977. package/skills/hugging-science/references/using-datasets.md +107 -0
  978. package/skills/hugging-science/references/using-models.md +122 -0
  979. package/skills/hugging-science/references/using-spaces.md +119 -0
  980. package/skills/hugging-science/scripts/fetch_catalog.py +358 -0
  981. package/skills/hypogenic/SKILL.md +290 -0
  982. package/skills/hypogenic/assets/dataset_manifest.example.json +30 -0
  983. package/skills/hypogenic/assets/result.example.json +18 -0
  984. package/skills/hypogenic/assets/run_config.example.json +46 -0
  985. package/skills/hypogenic/assets/task_config.example.yaml +38 -0
  986. package/skills/hypogenic/references/configuration.md +136 -0
  987. package/skills/hypogenic/references/datasets.md +146 -0
  988. package/skills/hypogenic/references/evaluation.md +155 -0
  989. package/skills/hypogenic/references/security.md +167 -0
  990. package/skills/hypogenic/references/sources.md +113 -0
  991. package/skills/hypogenic/references/upstream.md +188 -0
  992. package/skills/hypogenic/scripts/__init__.py +1 -0
  993. package/skills/hypogenic/scripts/_common.py +1312 -0
  994. package/skills/hypogenic/scripts/audit_dataset.py +410 -0
  995. package/skills/hypogenic/scripts/evaluate_local.py +250 -0
  996. package/skills/hypogenic/scripts/inspect_outputs.py +166 -0
  997. package/skills/hypogenic/scripts/plan_run.py +247 -0
  998. package/skills/hypogenic/scripts/validate_config.py +192 -0
  999. package/skills/hypothesis-generation/SKILL.md +264 -0
  1000. package/skills/hypothesis-generation/assets/evidence_ledger_template.csv +2 -0
  1001. package/skills/hypothesis-generation/assets/falsification_controls_template.json +116 -0
  1002. package/skills/hypothesis-generation/assets/hypothesis_record_template.json +331 -0
  1003. package/skills/hypothesis-generation/assets/operationalization_template.json +56 -0
  1004. package/skills/hypothesis-generation/assets/prediction_rival_matrix_template.csv +3 -0
  1005. package/skills/hypothesis-generation/assets/preregistration_scaffold_template.md +137 -0
  1006. package/skills/hypothesis-generation/assets/search_boundary_template.json +23 -0
  1007. package/skills/hypothesis-generation/assets/source_ledger.csv +37 -0
  1008. package/skills/hypothesis-generation/references/causal_inference_and_claims.md +190 -0
  1009. package/skills/hypothesis-generation/references/concepts_and_workflow.md +173 -0
  1010. package/skills/hypothesis-generation/references/ethics_safety_and_ai.md +216 -0
  1011. package/skills/hypothesis-generation/references/experimental_design_patterns.md +301 -0
  1012. package/skills/hypothesis-generation/references/hypothesis_quality_criteria.md +203 -0
  1013. package/skills/hypothesis-generation/references/literature_search_strategies.md +208 -0
  1014. package/skills/hypothesis-generation/references/preregistration_and_open_science.md +205 -0
  1015. package/skills/hypothesis-generation/references/security_validation.md +74 -0
  1016. package/skills/hypothesis-generation/references/source_ledger.md +116 -0
  1017. package/skills/hypothesis-generation/references/tool_reference.md +246 -0
  1018. package/skills/hypothesis-generation/scripts/_common.py +412 -0
  1019. package/skills/hypothesis-generation/scripts/audit_evidence_ledger.py +337 -0
  1020. package/skills/hypothesis-generation/scripts/check_falsification_controls.py +455 -0
  1021. package/skills/hypothesis-generation/scripts/check_operationalization.py +237 -0
  1022. package/skills/hypothesis-generation/scripts/generate_preregistration_scaffold.py +384 -0
  1023. package/skills/hypothesis-generation/scripts/lint_causal_claims.py +189 -0
  1024. package/skills/hypothesis-generation/scripts/validate_hypothesis_schema.py +1078 -0
  1025. package/skills/hypothesis-generation/scripts/validate_prediction_matrix.py +286 -0
  1026. package/skills/imaging-data-commons/SKILL.md +496 -0
  1027. package/skills/imaging-data-commons/references/bigquery_guide.md +858 -0
  1028. package/skills/imaging-data-commons/references/cli_guide.md +287 -0
  1029. package/skills/imaging-data-commons/references/clinical_data_guide.md +328 -0
  1030. package/skills/imaging-data-commons/references/cloud_storage_guide.md +333 -0
  1031. package/skills/imaging-data-commons/references/dicomweb_guide.md +399 -0
  1032. package/skills/imaging-data-commons/references/digital_pathology_guide.md +403 -0
  1033. package/skills/imaging-data-commons/references/index_tables_guide.md +203 -0
  1034. package/skills/imaging-data-commons/references/licensing_and_citation.md +230 -0
  1035. package/skills/imaging-data-commons/references/mcp_guide.md +181 -0
  1036. package/skills/imaging-data-commons/references/parquet_access_guide.md +200 -0
  1037. package/skills/imaging-data-commons/references/rest_api_guide.md +612 -0
  1038. package/skills/imaging-data-commons/references/sql_patterns.md +462 -0
  1039. package/skills/imaging-data-commons/references/use_cases.md +277 -0
  1040. package/skills/imaging-data-commons/scripts/check_version.py +132 -0
  1041. package/skills/infographics/SKILL.md +315 -0
  1042. package/skills/infographics/references/color_palettes.md +496 -0
  1043. package/skills/infographics/references/design_principles.md +636 -0
  1044. package/skills/infographics/references/infographic_type_catalog.md +158 -0
  1045. package/skills/infographics/references/infographic_types.md +907 -0
  1046. package/skills/infographics/references/iterative_refinement.md +119 -0
  1047. package/skills/infographics/scripts/generate_infographic.py +291 -0
  1048. package/skills/infographics/scripts/generate_infographic_ai.py +1446 -0
  1049. package/skills/iso-standards-readiness/SKILL.md +352 -0
  1050. package/skills/iso-standards-readiness/assets/templates/capa-record-template.json +99 -0
  1051. package/skills/iso-standards-readiness/assets/templates/document-register-template.json +75 -0
  1052. package/skills/iso-standards-readiness/assets/templates/evidence-manifest-template.json +65 -0
  1053. package/skills/iso-standards-readiness/assets/templates/laboratory-scope-intake-template.json +111 -0
  1054. package/skills/iso-standards-readiness/assets/templates/medical-laboratory-scope-intake-template.json +111 -0
  1055. package/skills/iso-standards-readiness/assets/templates/procedures/CAPA-procedure-template.md +148 -0
  1056. package/skills/iso-standards-readiness/assets/templates/procedures/document-control-procedure-template.md +132 -0
  1057. package/skills/iso-standards-readiness/assets/templates/qmsr-transition-template.json +181 -0
  1058. package/skills/iso-standards-readiness/assets/templates/quality-manual-template.md +182 -0
  1059. package/skills/iso-standards-readiness/assets/templates/scope-intake-template.json +109 -0
  1060. package/skills/iso-standards-readiness/assets/templates/supplier-controls-template.json +119 -0
  1061. package/skills/iso-standards-readiness/assets/templates/traceability-matrix-template.json +154 -0
  1062. package/skills/iso-standards-readiness/references/assurance-lanes.md +116 -0
  1063. package/skills/iso-standards-readiness/references/evidence-architecture.md +282 -0
  1064. package/skills/iso-standards-readiness/references/gap-analysis-checklist.md +346 -0
  1065. package/skills/iso-standards-readiness/references/iso-13485.md +236 -0
  1066. package/skills/iso-standards-readiness/references/iso-14971.md +172 -0
  1067. package/skills/iso-standards-readiness/references/iso-15189.md +219 -0
  1068. package/skills/iso-standards-readiness/references/iso-17025.md +208 -0
  1069. package/skills/iso-standards-readiness/references/quality-manual-guide.md +282 -0
  1070. package/skills/iso-standards-readiness/references/source-ledger.md +357 -0
  1071. package/skills/iso-standards-readiness/scripts/_catalog.py +248 -0
  1072. package/skills/iso-standards-readiness/scripts/_common.py +558 -0
  1073. package/skills/iso-standards-readiness/scripts/audit_document_records.py +148 -0
  1074. package/skills/iso-standards-readiness/scripts/check_capa.py +240 -0
  1075. package/skills/iso-standards-readiness/scripts/check_qmsr_transition.py +164 -0
  1076. package/skills/iso-standards-readiness/scripts/check_supplier_controls.py +166 -0
  1077. package/skills/iso-standards-readiness/scripts/check_traceability.py +171 -0
  1078. package/skills/iso-standards-readiness/scripts/gap_analyzer.py +167 -0
  1079. package/skills/iso-standards-readiness/scripts/validate_evidence_manifest.py +246 -0
  1080. package/skills/iso-standards-readiness/scripts/validate_scope_intake.py +209 -0
  1081. package/skills/lab-hardware-cad/SKILL.md +372 -0
  1082. package/skills/lab-hardware-cad/assets/standards.json +198 -0
  1083. package/skills/lab-hardware-cad/references/behavior-rigs.md +136 -0
  1084. package/skills/lab-hardware-cad/references/build123d-patterns.md +363 -0
  1085. package/skills/lab-hardware-cad/references/fabrication-limits.md +156 -0
  1086. package/skills/lab-hardware-cad/references/labware-adapters.md +190 -0
  1087. package/skills/lab-hardware-cad/references/microfluidics.md +157 -0
  1088. package/skills/lab-hardware-cad/references/optomechanics.md +148 -0
  1089. package/skills/lab-hardware-cad/references/validation.md +132 -0
  1090. package/skills/lab-hardware-cad/scripts/_common.py +650 -0
  1091. package/skills/lab-hardware-cad/scripts/check.py +645 -0
  1092. package/skills/lab-hardware-cad/scripts/gen.py +264 -0
  1093. package/skills/lab-hardware-cad/scripts/snapshot.py +278 -0
  1094. package/skills/labarchive-integration/SKILL.md +216 -0
  1095. package/skills/labarchive-integration/references/api_reference.md +250 -0
  1096. package/skills/labarchive-integration/references/authentication_guide.md +191 -0
  1097. package/skills/labarchive-integration/references/integrations.md +162 -0
  1098. package/skills/labarchive-integration/references/sources.md +213 -0
  1099. package/skills/labarchive-integration/scripts/entry_operations.py +381 -0
  1100. package/skills/labarchive-integration/scripts/notebook_operations.py +451 -0
  1101. package/skills/labarchive-integration/scripts/setup_config.py +258 -0
  1102. package/skills/lamindb/SKILL.md +408 -0
  1103. package/skills/lamindb/references/annotation-validation.md +510 -0
  1104. package/skills/lamindb/references/core-concepts.md +383 -0
  1105. package/skills/lamindb/references/data-management.md +432 -0
  1106. package/skills/lamindb/references/integrations.md +663 -0
  1107. package/skills/lamindb/references/ontologies.md +498 -0
  1108. package/skills/lamindb/references/setup-deployment.md +755 -0
  1109. package/skills/latchbio-integration/SKILL.md +227 -0
  1110. package/skills/latchbio-integration/references/data-management.md +257 -0
  1111. package/skills/latchbio-integration/references/latch-mcp.md +158 -0
  1112. package/skills/latchbio-integration/references/nextflow-snakemake.md +258 -0
  1113. package/skills/latchbio-integration/references/operations-and-debugging.md +320 -0
  1114. package/skills/latchbio-integration/references/registry.md +275 -0
  1115. package/skills/latchbio-integration/references/resource-configuration.md +274 -0
  1116. package/skills/latchbio-integration/references/ui-and-automation.md +355 -0
  1117. package/skills/latchbio-integration/references/verified-workflows.md +226 -0
  1118. package/skills/latchbio-integration/references/workflow-creation.md +275 -0
  1119. package/skills/latchbio-integration/scripts/inspect_latch_sdk.py +290 -0
  1120. package/skills/latex-posters/SKILL.md +369 -0
  1121. package/skills/latex-posters/assets/baposter_template.tex +257 -0
  1122. package/skills/latex-posters/assets/beamerposter_template.tex +244 -0
  1123. package/skills/latex-posters/assets/poster_quality_checklist.md +358 -0
  1124. package/skills/latex-posters/assets/tikzposter_template.tex +251 -0
  1125. package/skills/latex-posters/references/README.md +439 -0
  1126. package/skills/latex-posters/references/ai_graphics_for_posters.md +524 -0
  1127. package/skills/latex-posters/references/compilation_and_quality_control.md +467 -0
  1128. package/skills/latex-posters/references/latex_poster_packages.md +745 -0
  1129. package/skills/latex-posters/references/latex_poster_reference.md +241 -0
  1130. package/skills/latex-posters/references/poster_content_guide.md +748 -0
  1131. package/skills/latex-posters/references/poster_design_principles.md +806 -0
  1132. package/skills/latex-posters/references/poster_layout_design.md +900 -0
  1133. package/skills/latex-posters/references/poster_patterns_and_presentation.md +81 -0
  1134. package/skills/latex-posters/scripts/generate_schematic.py +198 -0
  1135. package/skills/latex-posters/scripts/generate_schematic_ai.py +950 -0
  1136. package/skills/latex-posters/scripts/review_poster.sh +214 -0
  1137. package/skills/liteparse/SKILL.md +295 -0
  1138. package/skills/liteparse/references/api_reference.md +169 -0
  1139. package/skills/liteparse/references/choosing_a_parser.md +70 -0
  1140. package/skills/liteparse/references/cli_reference.md +118 -0
  1141. package/skills/liteparse/references/ocr_and_formats.md +143 -0
  1142. package/skills/liteparse/references/output_formats.md +146 -0
  1143. package/skills/liteparse/scripts/batch_parse_dir.py +163 -0
  1144. package/skills/literature-review/SKILL.md +263 -0
  1145. package/skills/literature-review/assets/review_template.md +412 -0
  1146. package/skills/literature-review/references/citation_styles.md +166 -0
  1147. package/skills/literature-review/references/core_workflow.md +260 -0
  1148. package/skills/literature-review/references/database_strategies.md +455 -0
  1149. package/skills/literature-review/references/example_workflow.md +68 -0
  1150. package/skills/literature-review/references/search_and_citation.md +157 -0
  1151. package/skills/literature-review/scripts/generate_pdf.py +176 -0
  1152. package/skills/literature-review/scripts/generate_schematic.py +198 -0
  1153. package/skills/literature-review/scripts/generate_schematic_ai.py +950 -0
  1154. package/skills/literature-review/scripts/search_databases.py +303 -0
  1155. package/skills/literature-review/scripts/verify_citations.py +222 -0
  1156. package/skills/markdown-mermaid-writing/SKILL.md +322 -0
  1157. package/skills/markdown-mermaid-writing/assets/examples/example-research-report.md +221 -0
  1158. package/skills/markdown-mermaid-writing/references/diagrams/architecture.md +108 -0
  1159. package/skills/markdown-mermaid-writing/references/diagrams/block.md +177 -0
  1160. package/skills/markdown-mermaid-writing/references/diagrams/c4.md +136 -0
  1161. package/skills/markdown-mermaid-writing/references/diagrams/class.md +246 -0
  1162. package/skills/markdown-mermaid-writing/references/diagrams/complex_examples.md +384 -0
  1163. package/skills/markdown-mermaid-writing/references/diagrams/er.md +222 -0
  1164. package/skills/markdown-mermaid-writing/references/diagrams/flowchart.md +177 -0
  1165. package/skills/markdown-mermaid-writing/references/diagrams/gantt.md +138 -0
  1166. package/skills/markdown-mermaid-writing/references/diagrams/git_graph.md +74 -0
  1167. package/skills/markdown-mermaid-writing/references/diagrams/kanban.md +107 -0
  1168. package/skills/markdown-mermaid-writing/references/diagrams/mindmap.md +74 -0
  1169. package/skills/markdown-mermaid-writing/references/diagrams/packet.md +55 -0
  1170. package/skills/markdown-mermaid-writing/references/diagrams/pie.md +52 -0
  1171. package/skills/markdown-mermaid-writing/references/diagrams/quadrant.md +66 -0
  1172. package/skills/markdown-mermaid-writing/references/diagrams/radar.md +59 -0
  1173. package/skills/markdown-mermaid-writing/references/diagrams/requirement.md +88 -0
  1174. package/skills/markdown-mermaid-writing/references/diagrams/sankey.md +71 -0
  1175. package/skills/markdown-mermaid-writing/references/diagrams/sequence.md +174 -0
  1176. package/skills/markdown-mermaid-writing/references/diagrams/state.md +150 -0
  1177. package/skills/markdown-mermaid-writing/references/diagrams/timeline.md +96 -0
  1178. package/skills/markdown-mermaid-writing/references/diagrams/treemap.md +66 -0
  1179. package/skills/markdown-mermaid-writing/references/diagrams/user_journey.md +108 -0
  1180. package/skills/markdown-mermaid-writing/references/diagrams/xy_chart.md +53 -0
  1181. package/skills/markdown-mermaid-writing/references/diagrams/zenuml.md +71 -0
  1182. package/skills/markdown-mermaid-writing/references/markdown_style_guide.md +733 -0
  1183. package/skills/markdown-mermaid-writing/references/mermaid_style_guide.md +458 -0
  1184. package/skills/markdown-mermaid-writing/templates/decision_record.md +211 -0
  1185. package/skills/markdown-mermaid-writing/templates/how_to_guide.md +275 -0
  1186. package/skills/markdown-mermaid-writing/templates/issue.md +303 -0
  1187. package/skills/markdown-mermaid-writing/templates/kanban.md +223 -0
  1188. package/skills/markdown-mermaid-writing/templates/presentation.md +312 -0
  1189. package/skills/markdown-mermaid-writing/templates/project_documentation.md +412 -0
  1190. package/skills/markdown-mermaid-writing/templates/pull_request.md +319 -0
  1191. package/skills/markdown-mermaid-writing/templates/research_paper.md +304 -0
  1192. package/skills/markdown-mermaid-writing/templates/status_report.md +185 -0
  1193. package/skills/market-research-reports/SKILL.md +337 -0
  1194. package/skills/market-research-reports/assets/FORMATTING_GUIDE.md +149 -0
  1195. package/skills/market-research-reports/assets/claims_ledger_template.csv +4 -0
  1196. package/skills/market-research-reports/assets/competitor_feature_matrix_template.csv +5 -0
  1197. package/skills/market-research-reports/assets/consistency_check_template.csv +3 -0
  1198. package/skills/market-research-reports/assets/forecast_sensitivity_template.json +90 -0
  1199. package/skills/market-research-reports/assets/market_report_template.tex +279 -0
  1200. package/skills/market-research-reports/assets/market_research.sty +241 -0
  1201. package/skills/market-research-reports/assets/market_sizing_scenarios_template.json +129 -0
  1202. package/skills/market-research-reports/assets/report_manifest_template.json +27 -0
  1203. package/skills/market-research-reports/assets/source_ledger_template.csv +4 -0
  1204. package/skills/market-research-reports/references/data_analysis_patterns.md +290 -0
  1205. package/skills/market-research-reports/references/evidence_model.md +148 -0
  1206. package/skills/market-research-reports/references/methods_and_ethics.md +162 -0
  1207. package/skills/market-research-reports/references/official_data_sources.md +196 -0
  1208. package/skills/market-research-reports/references/report_structure_guide.md +283 -0
  1209. package/skills/market-research-reports/references/sources.md +73 -0
  1210. package/skills/market-research-reports/references/visual_generation_guide.md +158 -0
  1211. package/skills/market-research-reports/scripts/_common.py +312 -0
  1212. package/skills/market-research-reports/scripts/audit_claim_citations.py +326 -0
  1213. package/skills/market-research-reports/scripts/calculate_market_sizing.py +389 -0
  1214. package/skills/market-research-reports/scripts/check_unit_consistency.py +217 -0
  1215. package/skills/market-research-reports/scripts/forecast_sensitivity.py +326 -0
  1216. package/skills/market-research-reports/scripts/generate_report_scaffold.py +444 -0
  1217. package/skills/market-research-reports/scripts/validate_competitor_matrix.py +223 -0
  1218. package/skills/market-research-reports/scripts/validate_evidence_ledger.py +291 -0
  1219. package/skills/markitdown/SKILL.md +264 -0
  1220. package/skills/markitdown/references/api_reference.md +418 -0
  1221. package/skills/markitdown/references/cloud_and_ocr.md +320 -0
  1222. package/skills/markitdown/references/file_formats.md +281 -0
  1223. package/skills/markitdown/references/mcp_and_plugins.md +243 -0
  1224. package/skills/markitdown/references/migration.md +356 -0
  1225. package/skills/markitdown/references/security.md +246 -0
  1226. package/skills/markitdown/references/workflows.md +309 -0
  1227. package/skills/markitdown/scripts/batch_convert.py +354 -0
  1228. package/skills/markitdown/scripts/convert_literature.py +405 -0
  1229. package/skills/markitdown/scripts/inspect_installation.py +162 -0
  1230. package/skills/matchms/SKILL.md +276 -0
  1231. package/skills/matchms/references/filtering.md +299 -0
  1232. package/skills/matchms/references/importing_exporting.md +323 -0
  1233. package/skills/matchms/references/migration.md +387 -0
  1234. package/skills/matchms/references/similarity.md +413 -0
  1235. package/skills/matchms/references/sources.md +113 -0
  1236. package/skills/matchms/references/workflows.md +451 -0
  1237. package/skills/matchms/scripts/library_search.py +593 -0
  1238. package/skills/matlab/SKILL.md +274 -0
  1239. package/skills/matlab/assets/project_manifest_template.json +33 -0
  1240. package/skills/matlab/assets/python_compatibility_r2026a.json +27 -0
  1241. package/skills/matlab/assets/reproducibility_manifest_template.json +32 -0
  1242. package/skills/matlab/references/data-import-export.md +221 -0
  1243. package/skills/matlab/references/executing-scripts.md +213 -0
  1244. package/skills/matlab/references/graphics-visualization.md +181 -0
  1245. package/skills/matlab/references/mathematics.md +208 -0
  1246. package/skills/matlab/references/matrices-arrays.md +228 -0
  1247. package/skills/matlab/references/octave-compatibility.md +212 -0
  1248. package/skills/matlab/references/programming.md +225 -0
  1249. package/skills/matlab/references/python-integration.md +248 -0
  1250. package/skills/matlab/scripts/_common.py +263 -0
  1251. package/skills/matlab/scripts/generate_function_scaffold.py +165 -0
  1252. package/skills/matlab/scripts/inventory_mat_file.py +351 -0
  1253. package/skills/matlab/scripts/plan_batch_command.py +257 -0
  1254. package/skills/matlab/scripts/plan_python_compatibility.py +176 -0
  1255. package/skills/matlab/scripts/reproducibility_report.py +233 -0
  1256. package/skills/matlab/scripts/scan_m_code.py +433 -0
  1257. package/skills/matlab/scripts/validate_project_manifest.py +348 -0
  1258. package/skills/matplotlib/SKILL.md +378 -0
  1259. package/skills/matplotlib/references/api_reference.md +409 -0
  1260. package/skills/matplotlib/references/common_issues.md +562 -0
  1261. package/skills/matplotlib/references/plot_types.md +469 -0
  1262. package/skills/matplotlib/references/styling_guide.md +600 -0
  1263. package/skills/matplotlib/scripts/plot_template.py +406 -0
  1264. package/skills/matplotlib/scripts/style_configurator.py +412 -0
  1265. package/skills/medchem/SKILL.md +321 -0
  1266. package/skills/medchem/references/api_guide.md +331 -0
  1267. package/skills/medchem/references/rules_catalog.md +328 -0
  1268. package/skills/medchem/scripts/filter_molecules.py +302 -0
  1269. package/skills/modal/SKILL.md +468 -0
  1270. package/skills/modal/references/api_reference.md +225 -0
  1271. package/skills/modal/references/examples.md +276 -0
  1272. package/skills/modal/references/functions.md +260 -0
  1273. package/skills/modal/references/getting-started.md +171 -0
  1274. package/skills/modal/references/gpu.md +177 -0
  1275. package/skills/modal/references/images.md +266 -0
  1276. package/skills/modal/references/resources.md +117 -0
  1277. package/skills/modal/references/scaling.md +173 -0
  1278. package/skills/modal/references/scheduled-jobs.md +147 -0
  1279. package/skills/modal/references/secrets.md +119 -0
  1280. package/skills/modal/references/volumes.md +247 -0
  1281. package/skills/modal/references/web-endpoints.md +259 -0
  1282. package/skills/molecular-dynamics/SKILL.md +458 -0
  1283. package/skills/molecular-dynamics/references/mdanalysis_analysis.md +208 -0
  1284. package/skills/molfeat/SKILL.md +348 -0
  1285. package/skills/molfeat/references/api_reference.md +429 -0
  1286. package/skills/molfeat/references/available_featurizers.md +335 -0
  1287. package/skills/molfeat/references/choosing_a_featurizer.md +192 -0
  1288. package/skills/molfeat/references/examples.md +720 -0
  1289. package/skills/ncats-arax/SKILL.md +178 -0
  1290. package/skills/ncats-arax/references/output-schema.md +186 -0
  1291. package/skills/ncats-arax/references/query-contract.md +140 -0
  1292. package/skills/ncats-arax/scripts/arax_client.py +2087 -0
  1293. package/skills/networkx/SKILL.md +440 -0
  1294. package/skills/networkx/references/algorithms.md +384 -0
  1295. package/skills/networkx/references/generators.md +385 -0
  1296. package/skills/networkx/references/graph-basics.md +284 -0
  1297. package/skills/networkx/references/io.md +457 -0
  1298. package/skills/networkx/references/visualization.md +531 -0
  1299. package/skills/neurokit2/SKILL.md +323 -0
  1300. package/skills/neurokit2/references/bio_module.md +244 -0
  1301. package/skills/neurokit2/references/complexity.md +212 -0
  1302. package/skills/neurokit2/references/ecg_cardiac.md +193 -0
  1303. package/skills/neurokit2/references/eda.md +185 -0
  1304. package/skills/neurokit2/references/eeg.md +204 -0
  1305. package/skills/neurokit2/references/emg.md +157 -0
  1306. package/skills/neurokit2/references/eog.md +154 -0
  1307. package/skills/neurokit2/references/epochs_events.md +199 -0
  1308. package/skills/neurokit2/references/hrv.md +205 -0
  1309. package/skills/neurokit2/references/ppg.md +191 -0
  1310. package/skills/neurokit2/references/rsp.md +212 -0
  1311. package/skills/neurokit2/references/signal_processing.md +160 -0
  1312. package/skills/neurokit2/scripts/_common.py +567 -0
  1313. package/skills/neurokit2/scripts/ecg_hrv_pipeline.py +303 -0
  1314. package/skills/neurokit2/scripts/eda_pipeline.py +288 -0
  1315. package/skills/neurokit2/scripts/generate_synthetic.py +221 -0
  1316. package/skills/neurokit2/scripts/inspect_signal.py +362 -0
  1317. package/skills/neurokit2/scripts/plan_epochs.py +281 -0
  1318. package/skills/neurokit2/scripts/validate_multimodal.py +350 -0
  1319. package/skills/neuropixels-analysis/SKILL.md +412 -0
  1320. package/skills/neuropixels-analysis/assets/analysis_template.py +271 -0
  1321. package/skills/neuropixels-analysis/references/AI_CURATION.md +164 -0
  1322. package/skills/neuropixels-analysis/references/ANALYSIS.md +392 -0
  1323. package/skills/neuropixels-analysis/references/AUTOMATED_CURATION.md +435 -0
  1324. package/skills/neuropixels-analysis/references/MOTION_CORRECTION.md +323 -0
  1325. package/skills/neuropixels-analysis/references/PREPROCESSING.md +273 -0
  1326. package/skills/neuropixels-analysis/references/QUALITY_METRICS.md +359 -0
  1327. package/skills/neuropixels-analysis/references/SPIKE_SORTING.md +339 -0
  1328. package/skills/neuropixels-analysis/references/api_reference.md +229 -0
  1329. package/skills/neuropixels-analysis/references/plotting_guide.md +454 -0
  1330. package/skills/neuropixels-analysis/references/standard_workflow.md +305 -0
  1331. package/skills/neuropixels-analysis/scripts/compute_metrics.py +182 -0
  1332. package/skills/neuropixels-analysis/scripts/explore_recording.py +168 -0
  1333. package/skills/neuropixels-analysis/scripts/export_to_phy.py +79 -0
  1334. package/skills/neuropixels-analysis/scripts/neuropixels_pipeline.py +442 -0
  1335. package/skills/neuropixels-analysis/scripts/preprocess_recording.py +122 -0
  1336. package/skills/neuropixels-analysis/scripts/run_sorting.py +98 -0
  1337. package/skills/nextflow/SKILL.md +195 -0
  1338. package/skills/nextflow/references/configuration.md +276 -0
  1339. package/skills/nextflow/references/containers.md +92 -0
  1340. package/skills/nextflow/references/developing.md +301 -0
  1341. package/skills/nextflow/references/language.md +327 -0
  1342. package/skills/nextflow/references/nf-core-tools.md +130 -0
  1343. package/skills/nextflow/references/running-pipelines.md +131 -0
  1344. package/skills/nextflow/references/testing.md +189 -0
  1345. package/skills/omero-integration/SKILL.md +222 -0
  1346. package/skills/omero-integration/references/advanced.md +273 -0
  1347. package/skills/omero-integration/references/connection.md +293 -0
  1348. package/skills/omero-integration/references/data_access.md +359 -0
  1349. package/skills/omero-integration/references/image_processing.md +286 -0
  1350. package/skills/omero-integration/references/metadata.md +313 -0
  1351. package/skills/omero-integration/references/rois.md +291 -0
  1352. package/skills/omero-integration/references/scripts.md +304 -0
  1353. package/skills/omero-integration/references/sources.md +194 -0
  1354. package/skills/omero-integration/references/tables.md +269 -0
  1355. package/skills/omero-integration/scripts/export_image_metadata.py +560 -0
  1356. package/skills/omero-integration/scripts/inventory.py +302 -0
  1357. package/skills/omero-integration/scripts/omero_common.py +490 -0
  1358. package/skills/omero-integration/scripts/plan_transfer.py +393 -0
  1359. package/skills/omero-integration/scripts/validate_config.py +140 -0
  1360. package/skills/onekgpd/SKILL.md +371 -0
  1361. package/skills/onekgpd/assets/kgpe.json +48032 -0
  1362. package/skills/onekgpd/references/annotation_vocabularies.md +187 -0
  1363. package/skills/onekgpd/references/onekgpd_commands.md +296 -0
  1364. package/skills/onekgpd/scripts/onekgpd_api.py +794 -0
  1365. package/skills/onekgpd/scripts/onekgpd_meta.py +485 -0
  1366. package/skills/ontology-term-resolution/SKILL.md +147 -0
  1367. package/skills/ontology-term-resolution/references/curation-rules.md +110 -0
  1368. package/skills/ontology-term-resolution/references/ols4-api.md +135 -0
  1369. package/skills/ontology-term-resolution/references/ontology-registry.md +110 -0
  1370. package/skills/ontology-term-resolution/scripts/ols_client.py +341 -0
  1371. package/skills/ontology-term-resolution/scripts/resolve_terms.py +255 -0
  1372. package/skills/ontology-term-resolution/scripts/validate_terms.py +297 -0
  1373. package/skills/open-notebook/SKILL.md +297 -0
  1374. package/skills/open-notebook/references/api_reference.md +715 -0
  1375. package/skills/open-notebook/references/architecture.md +163 -0
  1376. package/skills/open-notebook/references/configuration.md +226 -0
  1377. package/skills/open-notebook/references/examples.md +290 -0
  1378. package/skills/open-notebook/scripts/chat_interaction.py +190 -0
  1379. package/skills/open-notebook/scripts/notebook_management.py +142 -0
  1380. package/skills/open-notebook/scripts/source_ingestion.py +160 -0
  1381. package/skills/openpiv/SKILL.md +469 -0
  1382. package/skills/openpiv/references/advanced_algorithms.md +233 -0
  1383. package/skills/openpiv/scripts/__init__.py +1 -0
  1384. package/skills/openpiv/scripts/analyze.py +143 -0
  1385. package/skills/openpiv/scripts/run_example.py +78 -0
  1386. package/skills/openpiv/scripts/runner.py +214 -0
  1387. package/skills/opentrons-integration/SKILL.md +322 -0
  1388. package/skills/opentrons-integration/references/api_reference.md +382 -0
  1389. package/skills/opentrons-integration/references/liquid_handling.md +387 -0
  1390. package/skills/opentrons-integration/references/migration-api-2-19-to-2-29.md +328 -0
  1391. package/skills/opentrons-integration/references/modules_and_deck.md +409 -0
  1392. package/skills/opentrons-integration/references/protocol_authoring.md +352 -0
  1393. package/skills/opentrons-integration/references/sources.md +151 -0
  1394. package/skills/opentrons-integration/references/validation_and_operations.md +314 -0
  1395. package/skills/opentrons-integration/requirements-flex.txt +1 -0
  1396. package/skills/opentrons-integration/requirements-ot2.txt +1 -0
  1397. package/skills/opentrons-integration/scripts/absorbance_reader_template.py +82 -0
  1398. package/skills/opentrons-integration/scripts/basic_protocol_template.py +68 -0
  1399. package/skills/opentrons-integration/scripts/ot2_basic_protocol_template.py +63 -0
  1400. package/skills/opentrons-integration/scripts/pcr_setup_template.py +146 -0
  1401. package/skills/opentrons-integration/scripts/runtime_parameters_template.py +110 -0
  1402. package/skills/opentrons-integration/scripts/serial_dilution_template.py +113 -0
  1403. package/skills/optimize-for-gpu/SKILL.md +176 -0
  1404. package/skills/optimize-for-gpu/references/code_transformation_patterns.md +301 -0
  1405. package/skills/optimize-for-gpu/references/cucim.md +679 -0
  1406. package/skills/optimize-for-gpu/references/cudf.md +762 -0
  1407. package/skills/optimize-for-gpu/references/cugraph.md +733 -0
  1408. package/skills/optimize-for-gpu/references/cuml.md +710 -0
  1409. package/skills/optimize-for-gpu/references/cupy.md +668 -0
  1410. package/skills/optimize-for-gpu/references/cuspatial.md +420 -0
  1411. package/skills/optimize-for-gpu/references/cuvs.md +671 -0
  1412. package/skills/optimize-for-gpu/references/cuxfilter.md +600 -0
  1413. package/skills/optimize-for-gpu/references/decision_framework.md +234 -0
  1414. package/skills/optimize-for-gpu/references/installation.md +121 -0
  1415. package/skills/optimize-for-gpu/references/kvikio.md +612 -0
  1416. package/skills/optimize-for-gpu/references/numba.md +808 -0
  1417. package/skills/optimize-for-gpu/references/raft.md +312 -0
  1418. package/skills/optimize-for-gpu/references/warp.md +623 -0
  1419. package/skills/owasp-top10/SKILL.md +48 -0
  1420. package/skills/pacsomatic/LICENSE +21 -0
  1421. package/skills/pacsomatic/SKILL.md +150 -0
  1422. package/skills/pacsomatic/config.yaml +42 -0
  1423. package/skills/pacsomatic/references/agent-playbook.md +73 -0
  1424. package/skills/pacsomatic/references/config-and-output.md +100 -0
  1425. package/skills/pacsomatic/references/pacsomatic_guide.md +254 -0
  1426. package/skills/pacsomatic/scripts/run_pacsomatic.py +794 -0
  1427. package/skills/paper-lookup/SKILL.md +263 -0
  1428. package/skills/paper-lookup/references/arxiv.md +275 -0
  1429. package/skills/paper-lookup/references/biorxiv.md +163 -0
  1430. package/skills/paper-lookup/references/core.md +150 -0
  1431. package/skills/paper-lookup/references/crossref.md +181 -0
  1432. package/skills/paper-lookup/references/europepmc.md +226 -0
  1433. package/skills/paper-lookup/references/medrxiv.md +126 -0
  1434. package/skills/paper-lookup/references/openalex.md +174 -0
  1435. package/skills/paper-lookup/references/pmc.md +228 -0
  1436. package/skills/paper-lookup/references/pubmed.md +124 -0
  1437. package/skills/paper-lookup/references/semantic-scholar.md +203 -0
  1438. package/skills/paper-lookup/references/unpaywall.md +127 -0
  1439. package/skills/paper-lookup/scripts/_common.py +227 -0
  1440. package/skills/paper-lookup/scripts/arxiv_atom.py +200 -0
  1441. package/skills/paper-lookup/scripts/jats_to_text.py +324 -0
  1442. package/skills/paper-lookup/scripts/openalex_abstract.py +163 -0
  1443. package/skills/paper-lookup/scripts/paginate.py +490 -0
  1444. package/skills/paperclip/SKILL.md +413 -0
  1445. package/skills/paperclip/references/cli-reference.md +389 -0
  1446. package/skills/paperclip/references/installation.md +341 -0
  1447. package/skills/paperclip/references/map-reduce.md +252 -0
  1448. package/skills/paperclip/references/python-sdk.md +323 -0
  1449. package/skills/paperclip/references/repos-and-workspace.md +271 -0
  1450. package/skills/paperclip/references/search-and-retrieval.md +281 -0
  1451. package/skills/paperzilla/SKILL.md +159 -0
  1452. package/skills/parallel-web/SKILL.md +128 -0
  1453. package/skills/parallel-web/references/data-enrichment.md +104 -0
  1454. package/skills/parallel-web/references/deep-research.md +91 -0
  1455. package/skills/parallel-web/references/findall.md +81 -0
  1456. package/skills/parallel-web/references/monitor.md +83 -0
  1457. package/skills/parallel-web/references/web-extract.md +59 -0
  1458. package/skills/parallel-web/references/web-search.md +100 -0
  1459. package/skills/pathml/SKILL.md +222 -0
  1460. package/skills/pathml/references/data_management.md +357 -0
  1461. package/skills/pathml/references/graphs.md +335 -0
  1462. package/skills/pathml/references/image_loading.md +301 -0
  1463. package/skills/pathml/references/machine_learning.md +408 -0
  1464. package/skills/pathml/references/multiparametric.md +352 -0
  1465. package/skills/pathml/references/preprocessing.md +371 -0
  1466. package/skills/pathml/scripts/_common.py +385 -0
  1467. package/skills/pathml/scripts/image_qc.py +325 -0
  1468. package/skills/pathml/scripts/plan_inference.py +282 -0
  1469. package/skills/pathml/scripts/plan_pipeline.py +239 -0
  1470. package/skills/pathml/scripts/slide_manifest.py +405 -0
  1471. package/skills/pathml/scripts/validate_spatial_schema.py +420 -0
  1472. package/skills/pathogen-variant-surveillance/SKILL.md +208 -0
  1473. package/skills/pathogen-variant-surveillance/references/lapis-api.md +209 -0
  1474. package/skills/pathogen-variant-surveillance/references/lineage-nomenclature.md +126 -0
  1475. package/skills/pathogen-variant-surveillance/references/surveillance-caveats.md +149 -0
  1476. package/skills/pathogen-variant-surveillance/scripts/lapis_client.py +776 -0
  1477. package/skills/pathogen-variant-surveillance/scripts/lineage_prevalence.py +310 -0
  1478. package/skills/pathogen-variant-surveillance/scripts/mutation_profile.py +215 -0
  1479. package/skills/pathogen-variant-surveillance/scripts/reporting_lag.py +217 -0
  1480. package/skills/pathogen-variant-surveillance/scripts/resolve_lineage.py +198 -0
  1481. package/skills/pathway-enrichment/SKILL.md +194 -0
  1482. package/skills/pathway-enrichment/references/databases-and-gene-sets.md +140 -0
  1483. package/skills/pathway-enrichment/references/gseapy.md +189 -0
  1484. package/skills/pathway-enrichment/references/interpretation.md +118 -0
  1485. package/skills/pathway-enrichment/scripts/run_enrichment.py +231 -0
  1486. package/skills/pdf/LICENSE.txt +30 -0
  1487. package/skills/pdf/SKILL.md +322 -0
  1488. package/skills/pdf/forms.md +294 -0
  1489. package/skills/pdf/reference.md +612 -0
  1490. package/skills/pdf/scripts/check_bounding_boxes.py +65 -0
  1491. package/skills/pdf/scripts/check_fillable_fields.py +11 -0
  1492. package/skills/pdf/scripts/convert_pdf_to_images.py +33 -0
  1493. package/skills/pdf/scripts/create_validation_image.py +37 -0
  1494. package/skills/pdf/scripts/extract_form_field_info.py +122 -0
  1495. package/skills/pdf/scripts/extract_form_structure.py +115 -0
  1496. package/skills/pdf/scripts/fill_fillable_fields.py +98 -0
  1497. package/skills/pdf/scripts/fill_pdf_form_with_annotations.py +107 -0
  1498. package/skills/peer-review/SKILL.md +288 -0
  1499. package/skills/peer-review/assets/citation_references_template.csv +2 -0
  1500. package/skills/peer-review/assets/claim_evidence_matrix_template.csv +4 -0
  1501. package/skills/peer-review/assets/reporting_checklist_template.csv +31 -0
  1502. package/skills/peer-review/assets/reporting_guidelines.json +466 -0
  1503. package/skills/peer-review/assets/review_intake_template.json +52 -0
  1504. package/skills/peer-review/assets/review_scaffold_template.md +68 -0
  1505. package/skills/peer-review/assets/source_ledger.csv +32 -0
  1506. package/skills/peer-review/assets/statistical_reproducibility_template.json +210 -0
  1507. package/skills/peer-review/assets/study_profile_template.json +12 -0
  1508. package/skills/peer-review/references/common_issues.md +257 -0
  1509. package/skills/peer-review/references/ethical_review_practice.md +233 -0
  1510. package/skills/peer-review/references/reporting_standards.md +249 -0
  1511. package/skills/peer-review/references/security_validation.md +75 -0
  1512. package/skills/peer-review/references/statistical_reproducibility.md +329 -0
  1513. package/skills/peer-review/references/tool_reference.md +253 -0
  1514. package/skills/peer-review/scripts/_common.py +398 -0
  1515. package/skills/peer-review/scripts/audit_citations.py +207 -0
  1516. package/skills/peer-review/scripts/audit_statistics_reproducibility.py +305 -0
  1517. package/skills/peer-review/scripts/generate_review_scaffold.py +81 -0
  1518. package/skills/peer-review/scripts/lint_review.py +254 -0
  1519. package/skills/peer-review/scripts/select_reporting_guidelines.py +383 -0
  1520. package/skills/peer-review/scripts/validate_claim_evidence.py +221 -0
  1521. package/skills/peer-review/scripts/validate_review_intake.py +452 -0
  1522. package/skills/penetration-testing/SKILL.md +31 -0
  1523. package/skills/pennylane/SKILL.md +240 -0
  1524. package/skills/pennylane/references/advanced_features.md +667 -0
  1525. package/skills/pennylane/references/devices_backends.md +562 -0
  1526. package/skills/pennylane/references/getting_started.md +232 -0
  1527. package/skills/pennylane/references/optimization.md +670 -0
  1528. package/skills/pennylane/references/quantum_chemistry.md +576 -0
  1529. package/skills/pennylane/references/quantum_circuits.md +443 -0
  1530. package/skills/pennylane/references/quantum_ml.md +555 -0
  1531. package/skills/phylogenetics/SKILL.md +409 -0
  1532. package/skills/phylogenetics/references/iqtree_inference.md +181 -0
  1533. package/skills/phylogenetics/scripts/phylogenetic_analysis.py +272 -0
  1534. package/skills/pi-agent/SKILL.md +83 -0
  1535. package/skills/pi-agent/references/compaction.md +76 -0
  1536. package/skills/pi-agent/references/containerization.md +80 -0
  1537. package/skills/pi-agent/references/custom-provider.md +131 -0
  1538. package/skills/pi-agent/references/development.md +61 -0
  1539. package/skills/pi-agent/references/environment-variables.md +57 -0
  1540. package/skills/pi-agent/references/extensions.md +185 -0
  1541. package/skills/pi-agent/references/json.md +69 -0
  1542. package/skills/pi-agent/references/keybindings.md +58 -0
  1543. package/skills/pi-agent/references/llama-cpp.md +69 -0
  1544. package/skills/pi-agent/references/models.md +114 -0
  1545. package/skills/pi-agent/references/overview.md +37 -0
  1546. package/skills/pi-agent/references/packages.md +103 -0
  1547. package/skills/pi-agent/references/pi-interview.md +123 -0
  1548. package/skills/pi-agent/references/pi-mcp-adapter.md +191 -0
  1549. package/skills/pi-agent/references/pi-subagents.md +371 -0
  1550. package/skills/pi-agent/references/pi-web-access.md +243 -0
  1551. package/skills/pi-agent/references/prompt-templates.md +48 -0
  1552. package/skills/pi-agent/references/providers.md +122 -0
  1553. package/skills/pi-agent/references/quickstart.md +73 -0
  1554. package/skills/pi-agent/references/rpc.md +95 -0
  1555. package/skills/pi-agent/references/sdk.md +151 -0
  1556. package/skills/pi-agent/references/security.md +52 -0
  1557. package/skills/pi-agent/references/session-format.md +90 -0
  1558. package/skills/pi-agent/references/sessions.md +56 -0
  1559. package/skills/pi-agent/references/settings.md +102 -0
  1560. package/skills/pi-agent/references/shell-aliases.md +15 -0
  1561. package/skills/pi-agent/references/skills.md +83 -0
  1562. package/skills/pi-agent/references/terminal-setup.md +87 -0
  1563. package/skills/pi-agent/references/termux.md +31 -0
  1564. package/skills/pi-agent/references/themes.md +69 -0
  1565. package/skills/pi-agent/references/tmux.md +44 -0
  1566. package/skills/pi-agent/references/tui.md +97 -0
  1567. package/skills/pi-agent/references/usage.md +129 -0
  1568. package/skills/pi-agent/references/windows.md +23 -0
  1569. package/skills/pkpd-modeling/SKILL.md +381 -0
  1570. package/skills/pkpd-modeling/assets/nca-reporting-checklist.md +72 -0
  1571. package/skills/pkpd-modeling/assets/popk-analysis-plan.md +136 -0
  1572. package/skills/pkpd-modeling/references/antimicrobial-and-tdm.md +110 -0
  1573. package/skills/pkpd-modeling/references/bioequivalence.md +132 -0
  1574. package/skills/pkpd-modeling/references/dataset-standards.md +103 -0
  1575. package/skills/pkpd-modeling/references/ddi-and-qt.md +132 -0
  1576. package/skills/pkpd-modeling/references/nca-conventions.md +128 -0
  1577. package/skills/pkpd-modeling/references/pbpk.md +103 -0
  1578. package/skills/pkpd-modeling/references/pd-and-exposure-response.md +149 -0
  1579. package/skills/pkpd-modeling/references/population-pk.md +133 -0
  1580. package/skills/pkpd-modeling/references/regulatory-guidance.md +82 -0
  1581. package/skills/pkpd-modeling/references/software-ecosystem.md +123 -0
  1582. package/skills/pkpd-modeling/references/source-ledger.md +89 -0
  1583. package/skills/pkpd-modeling/references/special-populations.md +126 -0
  1584. package/skills/pkpd-modeling/references/structural-models.md +140 -0
  1585. package/skills/pkpd-modeling/references/tmdd-and-biologics.md +115 -0
  1586. package/skills/pkpd-modeling/scripts/_common.py +327 -0
  1587. package/skills/pkpd-modeling/scripts/_models.py +673 -0
  1588. package/skills/pkpd-modeling/scripts/allometry_and_fih.py +346 -0
  1589. package/skills/pkpd-modeling/scripts/bioequivalence.py +480 -0
  1590. package/skills/pkpd-modeling/scripts/check_popk_dataset.py +400 -0
  1591. package/skills/pkpd-modeling/scripts/ddi_static.py +346 -0
  1592. package/skills/pkpd-modeling/scripts/exposure_response.py +328 -0
  1593. package/skills/pkpd-modeling/scripts/fit_compartmental.py +558 -0
  1594. package/skills/pkpd-modeling/scripts/nca.py +587 -0
  1595. package/skills/pkpd-modeling/scripts/simulate_regimen.py +323 -0
  1596. package/skills/pkpd-modeling/scripts/tdm_bayes.py +312 -0
  1597. package/skills/polars/SKILL.md +393 -0
  1598. package/skills/polars/references/best_practices.md +651 -0
  1599. package/skills/polars/references/core_concepts.md +380 -0
  1600. package/skills/polars/references/io_guide.md +564 -0
  1601. package/skills/polars/references/operations.md +602 -0
  1602. package/skills/polars/references/pandas_migration.md +417 -0
  1603. package/skills/polars/references/transformations.md +549 -0
  1604. package/skills/polars-bio/SKILL.md +379 -0
  1605. package/skills/polars-bio/references/bioframe_migration.md +250 -0
  1606. package/skills/polars-bio/references/configuration.md +187 -0
  1607. package/skills/polars-bio/references/file_io.md +469 -0
  1608. package/skills/polars-bio/references/interval_operations.md +370 -0
  1609. package/skills/polars-bio/references/pileup_operations.md +176 -0
  1610. package/skills/polars-bio/references/sql_processing.md +224 -0
  1611. package/skills/ponytail/SKILL.md +31 -0
  1612. package/skills/ponytail-audit/SKILL.md +18 -0
  1613. package/skills/pptx/LICENSE.txt +30 -0
  1614. package/skills/pptx/SKILL.md +246 -0
  1615. package/skills/pptx/scripts/__init__.py +0 -0
  1616. package/skills/pptx/scripts/add_slide.py +367 -0
  1617. package/skills/pptx/scripts/clean.py +309 -0
  1618. package/skills/pptx/scripts/office/helpers/__init__.py +111 -0
  1619. package/skills/pptx/scripts/office/helpers/pptx_chart.py +170 -0
  1620. package/skills/pptx/scripts/office/helpers/pptx_slide.py +60 -0
  1621. package/skills/pptx/scripts/office/helpers/pptx_theme.py +114 -0
  1622. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  1623. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  1624. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  1625. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  1626. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  1627. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  1628. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  1629. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  1630. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  1631. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  1632. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  1633. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  1634. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  1635. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  1636. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  1637. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  1638. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  1639. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  1640. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  1641. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  1642. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  1643. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  1644. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  1645. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  1646. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  1647. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  1648. package/skills/pptx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  1649. package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  1650. package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  1651. package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  1652. package/skills/pptx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  1653. package/skills/pptx/scripts/office/schemas/mce/mc.xsd +75 -0
  1654. package/skills/pptx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  1655. package/skills/pptx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  1656. package/skills/pptx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  1657. package/skills/pptx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  1658. package/skills/pptx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  1659. package/skills/pptx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  1660. package/skills/pptx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  1661. package/skills/pptx/scripts/office/soffice.py +232 -0
  1662. package/skills/pptx/scripts/office/validate.py +173 -0
  1663. package/skills/pptx/scripts/office/validators/__init__.py +15 -0
  1664. package/skills/pptx/scripts/office/validators/base.py +875 -0
  1665. package/skills/pptx/scripts/office/validators/docx.py +466 -0
  1666. package/skills/pptx/scripts/office/validators/pptx.py +441 -0
  1667. package/skills/pptx/scripts/office/validators/redlining.py +299 -0
  1668. package/skills/pptx/scripts/thumbnail.py +311 -0
  1669. package/skills/pptx-posters/SKILL.md +258 -0
  1670. package/skills/pptx-posters/assets/generation_dependencies.json +5 -0
  1671. package/skills/pptx-posters/assets/poster_manifest_template.json +154 -0
  1672. package/skills/pptx-posters/assets/poster_quality_checklist.md +192 -0
  1673. package/skills/pptx-posters/references/manifest_spec.md +297 -0
  1674. package/skills/pptx-posters/references/poster_content_guide.md +176 -0
  1675. package/skills/pptx-posters/references/poster_design_principles.md +226 -0
  1676. package/skills/pptx-posters/references/poster_layout_design.md +189 -0
  1677. package/skills/pptx-posters/references/pptx_security.md +202 -0
  1678. package/skills/pptx-posters/references/security_validation.md +90 -0
  1679. package/skills/pptx-posters/references/source_ledger.md +256 -0
  1680. package/skills/pptx-posters/scripts/_common.py +396 -0
  1681. package/skills/pptx-posters/scripts/_manifest.py +1318 -0
  1682. package/skills/pptx-posters/scripts/_pptx.py +1484 -0
  1683. package/skills/pptx-posters/scripts/check_layout.py +179 -0
  1684. package/skills/pptx-posters/scripts/check_palette.py +142 -0
  1685. package/skills/pptx-posters/scripts/generate_poster.py +427 -0
  1686. package/skills/pptx-posters/scripts/inspect_pptx.py +40 -0
  1687. package/skills/pptx-posters/scripts/inventory_images.py +252 -0
  1688. package/skills/pptx-posters/scripts/plan_export.py +201 -0
  1689. package/skills/pptx-posters/scripts/validate_manifest.py +55 -0
  1690. package/skills/primekg/SKILL.md +99 -0
  1691. package/skills/primekg/scripts/query_primekg.py +128 -0
  1692. package/skills/protocolsio-integration/SKILL.md +236 -0
  1693. package/skills/protocolsio-integration/assets/protocol-snapshot.schema.json +179 -0
  1694. package/skills/protocolsio-integration/references/additional_features.md +202 -0
  1695. package/skills/protocolsio-integration/references/authentication.md +135 -0
  1696. package/skills/protocolsio-integration/references/discussions.md +192 -0
  1697. package/skills/protocolsio-integration/references/file_manager.md +256 -0
  1698. package/skills/protocolsio-integration/references/protocols_api.md +256 -0
  1699. package/skills/protocolsio-integration/references/workspaces.md +192 -0
  1700. package/skills/protocolsio-integration/scripts/__init__.py +1 -0
  1701. package/skills/protocolsio-integration/scripts/_common.py +613 -0
  1702. package/skills/protocolsio-integration/scripts/pagination_helper.py +248 -0
  1703. package/skills/protocolsio-integration/scripts/plan_write_request.py +657 -0
  1704. package/skills/protocolsio-integration/scripts/protocols_read.py +493 -0
  1705. package/skills/protocolsio-integration/scripts/validate_auth_config.py +128 -0
  1706. package/skills/protocolsio-integration/scripts/validate_protocol_json.py +358 -0
  1707. package/skills/pufferlib/SKILL.md +328 -0
  1708. package/skills/pufferlib/references/environments.md +260 -0
  1709. package/skills/pufferlib/references/integration.md +192 -0
  1710. package/skills/pufferlib/references/policies.md +181 -0
  1711. package/skills/pufferlib/references/training.md +287 -0
  1712. package/skills/pufferlib/references/vectorization.md +210 -0
  1713. package/skills/pufferlib/scripts/__init__.py +1 -0
  1714. package/skills/pufferlib/scripts/_common.py +199 -0
  1715. package/skills/pufferlib/scripts/benchmark_vectorization.py +244 -0
  1716. package/skills/pufferlib/scripts/env_contract_validator.py +198 -0
  1717. package/skills/pufferlib/scripts/env_template.py +210 -0
  1718. package/skills/pufferlib/scripts/inspect_checkpoint.py +225 -0
  1719. package/skills/pufferlib/scripts/repro_plan.py +177 -0
  1720. package/skills/pufferlib/scripts/train_template.py +282 -0
  1721. package/skills/pufferlib/scripts/validate_plan.py +570 -0
  1722. package/skills/pydeseq2/SKILL.md +369 -0
  1723. package/skills/pydeseq2/references/analysis_patterns.md +70 -0
  1724. package/skills/pydeseq2/references/api_reference.md +256 -0
  1725. package/skills/pydeseq2/references/core_workflow_steps.md +162 -0
  1726. package/skills/pydeseq2/references/workflow_guide.md +603 -0
  1727. package/skills/pydeseq2/scripts/run_deseq2_analysis.py +388 -0
  1728. package/skills/pydicom/SKILL.md +381 -0
  1729. package/skills/pydicom/references/common_tags.md +277 -0
  1730. package/skills/pydicom/references/transfer_syntaxes.md +348 -0
  1731. package/skills/pydicom/scripts/__init__.py +1 -0
  1732. package/skills/pydicom/scripts/_common.py +916 -0
  1733. package/skills/pydicom/scripts/anonymize_dicom.py +713 -0
  1734. package/skills/pydicom/scripts/deidentification_audit.py +380 -0
  1735. package/skills/pydicom/scripts/dicom_inventory.py +402 -0
  1736. package/skills/pydicom/scripts/dicom_to_image.py +459 -0
  1737. package/skills/pydicom/scripts/extract_metadata.py +330 -0
  1738. package/skills/pydicom/scripts/pixel_frame_planner.py +303 -0
  1739. package/skills/pydicom/scripts/transfer_syntax_inspector.py +245 -0
  1740. package/skills/pydicom/scripts/uid_mapping_validator.py +240 -0
  1741. package/skills/pyhealth/SKILL.md +124 -0
  1742. package/skills/pyhealth/assets/starter_pipeline.py +58 -0
  1743. package/skills/pyhealth/references/datasets.md +126 -0
  1744. package/skills/pyhealth/references/examples.md +237 -0
  1745. package/skills/pyhealth/references/installation.md +112 -0
  1746. package/skills/pyhealth/references/medcode.md +94 -0
  1747. package/skills/pyhealth/references/models.md +114 -0
  1748. package/skills/pyhealth/references/tasks.md +143 -0
  1749. package/skills/pylabrobot/SKILL.md +216 -0
  1750. package/skills/pylabrobot/assets/protocol-manifest.schema.json +367 -0
  1751. package/skills/pylabrobot/references/analytical-equipment.md +200 -0
  1752. package/skills/pylabrobot/references/hardware-backends.md +215 -0
  1753. package/skills/pylabrobot/references/liquid-handling.md +223 -0
  1754. package/skills/pylabrobot/references/material-handling.md +229 -0
  1755. package/skills/pylabrobot/references/resources.md +238 -0
  1756. package/skills/pylabrobot/references/visualization.md +187 -0
  1757. package/skills/pylabrobot/scripts/__init__.py +1 -0
  1758. package/skills/pylabrobot/scripts/_common.py +718 -0
  1759. package/skills/pylabrobot/scripts/check_deck_geometry.py +52 -0
  1760. package/skills/pylabrobot/scripts/generate_simulation_plan.py +140 -0
  1761. package/skills/pylabrobot/scripts/inspect_backends.py +216 -0
  1762. package/skills/pylabrobot/scripts/plan_transfers.py +59 -0
  1763. package/skills/pylabrobot/scripts/validate_manifest.py +47 -0
  1764. package/skills/pymatgen/SKILL.md +404 -0
  1765. package/skills/pymatgen/references/analysis_modules.md +352 -0
  1766. package/skills/pymatgen/references/core_classes.md +290 -0
  1767. package/skills/pymatgen/references/io_formats.md +323 -0
  1768. package/skills/pymatgen/references/materials_project_api.md +406 -0
  1769. package/skills/pymatgen/references/transformations_workflows.md +385 -0
  1770. package/skills/pymatgen/scripts/_common.py +316 -0
  1771. package/skills/pymatgen/scripts/artifact_manifest.py +172 -0
  1772. package/skills/pymatgen/scripts/composition_structure_validator.py +300 -0
  1773. package/skills/pymatgen/scripts/io_conversion_plan.py +204 -0
  1774. package/skills/pymatgen/scripts/mp_query.py +416 -0
  1775. package/skills/pymatgen/scripts/phase_diagram_generator.py +415 -0
  1776. package/skills/pymatgen/scripts/structure_analyzer.py +293 -0
  1777. package/skills/pymatgen/scripts/structure_converter.py +219 -0
  1778. package/skills/pymatgen/scripts/symmetry_sensitivity_report.py +212 -0
  1779. package/skills/pymc/SKILL.md +310 -0
  1780. package/skills/pymc/assets/hierarchical_model_template.py +332 -0
  1781. package/skills/pymc/assets/linear_regression_template.py +244 -0
  1782. package/skills/pymc/references/distributions.md +345 -0
  1783. package/skills/pymc/references/model_patterns.md +130 -0
  1784. package/skills/pymc/references/sampling_inference.md +432 -0
  1785. package/skills/pymc/references/standard_workflow.md +176 -0
  1786. package/skills/pymc/references/workflows.md +530 -0
  1787. package/skills/pymc/scripts/model_comparison.py +409 -0
  1788. package/skills/pymc/scripts/model_diagnostics.py +328 -0
  1789. package/skills/pymoo/SKILL.md +276 -0
  1790. package/skills/pymoo/references/algorithms.md +232 -0
  1791. package/skills/pymoo/references/constraints_mcdm.md +417 -0
  1792. package/skills/pymoo/references/operators.md +345 -0
  1793. package/skills/pymoo/references/parallelization.md +80 -0
  1794. package/skills/pymoo/references/problems.md +265 -0
  1795. package/skills/pymoo/references/quick_start_workflows.md +404 -0
  1796. package/skills/pymoo/references/visualization.md +353 -0
  1797. package/skills/pymoo/scripts/custom_problem_example.py +181 -0
  1798. package/skills/pymoo/scripts/decision_making_example.py +161 -0
  1799. package/skills/pymoo/scripts/many_objective_example.py +74 -0
  1800. package/skills/pymoo/scripts/multi_objective_example.py +63 -0
  1801. package/skills/pymoo/scripts/single_objective_example.py +59 -0
  1802. package/skills/pyopenms/SKILL.md +179 -0
  1803. package/skills/pyopenms/references/data_structures.md +498 -0
  1804. package/skills/pyopenms/references/feature_detection.md +495 -0
  1805. package/skills/pyopenms/references/file_io.md +359 -0
  1806. package/skills/pyopenms/references/identification.md +431 -0
  1807. package/skills/pyopenms/references/metabolomics.md +548 -0
  1808. package/skills/pyopenms/references/signal_processing.md +444 -0
  1809. package/skills/pyopenms/scripts/accurate_mass_search.py +111 -0
  1810. package/skills/pyopenms/scripts/align_link_quantify.py +140 -0
  1811. package/skills/pyopenms/scripts/consensus_to_matrix.py +70 -0
  1812. package/skills/pyopenms/scripts/convert_format.py +95 -0
  1813. package/skills/pyopenms/scripts/detect_adducts.py +90 -0
  1814. package/skills/pyopenms/scripts/detect_features_centroided.py +80 -0
  1815. package/skills/pyopenms/scripts/detect_features_metabo.py +110 -0
  1816. package/skills/pyopenms/scripts/digest_protein.py +102 -0
  1817. package/skills/pyopenms/scripts/export_gnps_sirius.py +90 -0
  1818. package/skills/pyopenms/scripts/extract_chromatograms.py +105 -0
  1819. package/skills/pyopenms/scripts/inspect_ms_data.py +167 -0
  1820. package/skills/pyopenms/scripts/mass_calculator.py +92 -0
  1821. package/skills/pyopenms/scripts/plot_ms_data.py +129 -0
  1822. package/skills/pyopenms/scripts/process_identifications.py +111 -0
  1823. package/skills/pyopenms/scripts/process_spectra.py +124 -0
  1824. package/skills/pyopenms/scripts/theoretical_spectrum.py +75 -0
  1825. package/skills/pysam/SKILL.md +330 -0
  1826. package/skills/pysam/references/alignment_files.md +374 -0
  1827. package/skills/pysam/references/api_reference.md +421 -0
  1828. package/skills/pysam/references/common_workflows.md +442 -0
  1829. package/skills/pysam/references/coordinates_and_indexing.md +318 -0
  1830. package/skills/pysam/references/cram_and_performance.md +314 -0
  1831. package/skills/pysam/references/migration_to_0_24.md +177 -0
  1832. package/skills/pysam/references/sequence_files.md +316 -0
  1833. package/skills/pysam/references/sources.md +132 -0
  1834. package/skills/pysam/references/variant_files.md +396 -0
  1835. package/skills/pysam/scripts/alignment_qc.py +326 -0
  1836. package/skills/pysam/scripts/filter_alignments.py +359 -0
  1837. package/skills/pysam/scripts/inspect_hts.py +485 -0
  1838. package/skills/pysam/scripts/variant_summary.py +362 -0
  1839. package/skills/pytdc/SKILL.md +297 -0
  1840. package/skills/pytdc/references/datasets.md +242 -0
  1841. package/skills/pytdc/references/oracles.md +273 -0
  1842. package/skills/pytdc/references/sources.md +165 -0
  1843. package/skills/pytdc/references/utilities.md +364 -0
  1844. package/skills/pytdc/scripts/_common.py +205 -0
  1845. package/skills/pytdc/scripts/benchmark_evaluation.py +367 -0
  1846. package/skills/pytdc/scripts/cache_audit.py +146 -0
  1847. package/skills/pytdc/scripts/discover_metadata.py +174 -0
  1848. package/skills/pytdc/scripts/load_and_split_data.py +374 -0
  1849. package/skills/pytdc/scripts/molecular_generation.py +417 -0
  1850. package/skills/pytorch-lightning/SKILL.md +191 -0
  1851. package/skills/pytorch-lightning/references/best_practices.md +724 -0
  1852. package/skills/pytorch-lightning/references/callbacks.md +564 -0
  1853. package/skills/pytorch-lightning/references/data_module.md +565 -0
  1854. package/skills/pytorch-lightning/references/distributed_training.md +644 -0
  1855. package/skills/pytorch-lightning/references/lightning_module.md +487 -0
  1856. package/skills/pytorch-lightning/references/logging.md +636 -0
  1857. package/skills/pytorch-lightning/references/trainer.md +641 -0
  1858. package/skills/pytorch-lightning/scripts/quick_trainer_setup.py +473 -0
  1859. package/skills/pytorch-lightning/scripts/template_datamodule.py +328 -0
  1860. package/skills/pytorch-lightning/scripts/template_lightning_module.py +220 -0
  1861. package/skills/pyzotero/SKILL.md +137 -0
  1862. package/skills/pyzotero/references/authentication.md +105 -0
  1863. package/skills/pyzotero/references/cli.md +102 -0
  1864. package/skills/pyzotero/references/collections.md +113 -0
  1865. package/skills/pyzotero/references/error-handling.md +108 -0
  1866. package/skills/pyzotero/references/exports.md +102 -0
  1867. package/skills/pyzotero/references/files-attachments.md +97 -0
  1868. package/skills/pyzotero/references/full-text.md +68 -0
  1869. package/skills/pyzotero/references/mcp.md +90 -0
  1870. package/skills/pyzotero/references/pagination.md +79 -0
  1871. package/skills/pyzotero/references/read-api.md +137 -0
  1872. package/skills/pyzotero/references/saved-searches.md +77 -0
  1873. package/skills/pyzotero/references/search-params.md +90 -0
  1874. package/skills/pyzotero/references/tags.md +87 -0
  1875. package/skills/pyzotero/references/write-api.md +123 -0
  1876. package/skills/qiskit/SKILL.md +259 -0
  1877. package/skills/qiskit/references/algorithms.md +311 -0
  1878. package/skills/qiskit/references/backends.md +382 -0
  1879. package/skills/qiskit/references/circuits.md +319 -0
  1880. package/skills/qiskit/references/migration.md +338 -0
  1881. package/skills/qiskit/references/patterns.md +386 -0
  1882. package/skills/qiskit/references/primitives.md +400 -0
  1883. package/skills/qiskit/references/setup.md +253 -0
  1884. package/skills/qiskit/references/sources.md +156 -0
  1885. package/skills/qiskit/references/testing.md +428 -0
  1886. package/skills/qiskit/references/transpilation.md +333 -0
  1887. package/skills/qiskit/references/visualization.md +361 -0
  1888. package/skills/qiskit/scripts/check_environment.py +260 -0
  1889. package/skills/qiskit/scripts/inspect_runtime.py +224 -0
  1890. package/skills/qiskit/scripts/run_local_primitives.py +200 -0
  1891. package/skills/qutip/SKILL.md +317 -0
  1892. package/skills/qutip/references/advanced.md +413 -0
  1893. package/skills/qutip/references/analysis.md +319 -0
  1894. package/skills/qutip/references/core_concepts.md +300 -0
  1895. package/skills/qutip/references/time_evolution.md +373 -0
  1896. package/skills/qutip/references/visualization.md +334 -0
  1897. package/skills/qutip/scripts/_common.py +370 -0
  1898. package/skills/qutip/scripts/convergence_sweep.py +358 -0
  1899. package/skills/qutip/scripts/qobj_model_validator.py +327 -0
  1900. package/skills/qutip/scripts/result_audit.py +395 -0
  1901. package/skills/qutip/scripts/solver_config_planner.py +297 -0
  1902. package/skills/qutip/scripts/steady_state_spectrum_planner.py +245 -0
  1903. package/skills/qutip/scripts/two_level_simulation.py +394 -0
  1904. package/skills/rdkit/SKILL.md +94 -0
  1905. package/skills/rdkit/references/api_reference.md +443 -0
  1906. package/skills/rdkit/references/core_capabilities.md +604 -0
  1907. package/skills/rdkit/references/descriptors_reference.md +595 -0
  1908. package/skills/rdkit/references/smarts_patterns.md +668 -0
  1909. package/skills/rdkit/references/workflows_and_best_practices.md +169 -0
  1910. package/skills/rdkit/scripts/molecular_properties.py +243 -0
  1911. package/skills/rdkit/scripts/similarity_search.py +297 -0
  1912. package/skills/rdkit/scripts/substructure_filter.py +386 -0
  1913. package/skills/relsa-severity-assessment/SKILL.md +354 -0
  1914. package/skills/relsa-severity-assessment/assets/example_cohort.csv +55 -0
  1915. package/skills/relsa-severity-assessment/references/forecasting.md +155 -0
  1916. package/skills/relsa-severity-assessment/references/relsa-method.md +175 -0
  1917. package/skills/relsa-severity-assessment/references/thresholds-and-zones.md +154 -0
  1918. package/skills/relsa-severity-assessment/scripts/_common.py +287 -0
  1919. package/skills/relsa-severity-assessment/scripts/forecast_relsa.py +757 -0
  1920. package/skills/relsa-severity-assessment/scripts/kde_thresholds.py +369 -0
  1921. package/skills/relsa-severity-assessment/scripts/relsa_score.py +488 -0
  1922. package/skills/research-grants/SKILL.md +296 -0
  1923. package/skills/research-grants/assets/budget_justification_template.md +453 -0
  1924. package/skills/research-grants/assets/nih_specific_aims_template.md +166 -0
  1925. package/skills/research-grants/assets/nsf_project_summary_template.md +92 -0
  1926. package/skills/research-grants/references/README.md +287 -0
  1927. package/skills/research-grants/references/broader_impacts.md +392 -0
  1928. package/skills/research-grants/references/core_components.md +397 -0
  1929. package/skills/research-grants/references/darpa_guidelines.md +636 -0
  1930. package/skills/research-grants/references/doe_guidelines.md +586 -0
  1931. package/skills/research-grants/references/nih_guidelines.md +853 -0
  1932. package/skills/research-grants/references/nsf_guidelines.md +570 -0
  1933. package/skills/research-grants/references/nstc_guidelines.md +733 -0
  1934. package/skills/research-grants/references/proposal_types_and_resubmission.md +81 -0
  1935. package/skills/research-grants/references/review_criteria.md +93 -0
  1936. package/skills/research-grants/references/specific_aims_guide.md +458 -0
  1937. package/skills/research-grants/references/writing_principles.md +94 -0
  1938. package/skills/research-lookup/README.md +106 -0
  1939. package/skills/research-lookup/SKILL.md +338 -0
  1940. package/skills/research-lookup/scripts/manuscript_packet.py +754 -0
  1941. package/skills/research-lookup/scripts/research_lookup.py +1204 -0
  1942. package/skills/rowan/SKILL.md +398 -0
  1943. package/skills/rowan/references/access_and_pricing.md +37 -0
  1944. package/skills/rowan/references/batch_and_webhooks.md +255 -0
  1945. package/skills/rowan/references/end_to_end_example.md +119 -0
  1946. package/skills/rowan/references/troubleshooting.md +106 -0
  1947. package/skills/rowan/references/workflow_catalog.md +308 -0
  1948. package/skills/scanpy/SKILL.md +303 -0
  1949. package/skills/scanpy/assets/analysis_template.py +301 -0
  1950. package/skills/scanpy/assets/celltype_mapping.json +10 -0
  1951. package/skills/scanpy/assets/gene_signatures.json +9 -0
  1952. package/skills/scanpy/assets/pipeline_config.json +19 -0
  1953. package/skills/scanpy/references/analysis_workflow.md +236 -0
  1954. package/skills/scanpy/references/api_reference.md +267 -0
  1955. package/skills/scanpy/references/plotting_guide.md +365 -0
  1956. package/skills/scanpy/references/r_interop.md +292 -0
  1957. package/skills/scanpy/references/standard_workflow.md +223 -0
  1958. package/skills/scanpy/scripts/_common.py +127 -0
  1959. package/skills/scanpy/scripts/annotate.py +84 -0
  1960. package/skills/scanpy/scripts/batch_correct.py +65 -0
  1961. package/skills/scanpy/scripts/cluster.py +63 -0
  1962. package/skills/scanpy/scripts/convert.py +43 -0
  1963. package/skills/scanpy/scripts/find_markers.py +75 -0
  1964. package/skills/scanpy/scripts/inspect_data.py +81 -0
  1965. package/skills/scanpy/scripts/plot.py +78 -0
  1966. package/skills/scanpy/scripts/preprocess.py +88 -0
  1967. package/skills/scanpy/scripts/pseudobulk.py +74 -0
  1968. package/skills/scanpy/scripts/qc_analysis.py +104 -0
  1969. package/skills/scanpy/scripts/reduce_dimensions.py +64 -0
  1970. package/skills/scanpy/scripts/run_pipeline.py +182 -0
  1971. package/skills/scanpy/scripts/score_genes.py +82 -0
  1972. package/skills/scanpy/scripts/subset.py +64 -0
  1973. package/skills/scholar-evaluation/SKILL.md +296 -0
  1974. package/skills/scholar-evaluation/assets/evaluation_template.json +50 -0
  1975. package/skills/scholar-evaluation/assets/evidence_manifest_template.json +63 -0
  1976. package/skills/scholar-evaluation/assets/process_checklist_template.json +70 -0
  1977. package/skills/scholar-evaluation/assets/ratings_template.csv +21 -0
  1978. package/skills/scholar-evaluation/assets/rubric_template.json +301 -0
  1979. package/skills/scholar-evaluation/references/evaluation_framework.md +264 -0
  1980. package/skills/scholar-evaluation/references/local_tooling.md +232 -0
  1981. package/skills/scholar-evaluation/references/responsible_assessment.md +196 -0
  1982. package/skills/scholar-evaluation/references/security_validation.md +95 -0
  1983. package/skills/scholar-evaluation/references/source_ledger.md +222 -0
  1984. package/skills/scholar-evaluation/scripts/_common.py +986 -0
  1985. package/skills/scholar-evaluation/scripts/calculate_scores.py +57 -0
  1986. package/skills/scholar-evaluation/scripts/check_process.py +231 -0
  1987. package/skills/scholar-evaluation/scripts/check_traceability.py +233 -0
  1988. package/skills/scholar-evaluation/scripts/generate_report_scaffold.py +231 -0
  1989. package/skills/scholar-evaluation/scripts/summarize_agreement.py +235 -0
  1990. package/skills/scholar-evaluation/scripts/validate_rubric.py +54 -0
  1991. package/skills/scholar-evaluation/scripts/weight_sensitivity.py +251 -0
  1992. package/skills/scientific-brainstorming/SKILL.md +282 -0
  1993. package/skills/scientific-brainstorming/references/brainstorming_methods.md +292 -0
  1994. package/skills/scientific-brainstorming/references/facilitation_workflows.md +284 -0
  1995. package/skills/scientific-brainstorming/references/idea_evaluation.md +268 -0
  1996. package/skills/scientific-brainstorming/references/responsible_ai.md +220 -0
  1997. package/skills/scientific-brainstorming/references/sources.md +364 -0
  1998. package/skills/scientific-brainstorming/scripts/_common.py +307 -0
  1999. package/skills/scientific-brainstorming/scripts/evaluate_matrix.py +518 -0
  2000. package/skills/scientific-brainstorming/scripts/session_scaffold.py +248 -0
  2001. package/skills/scientific-brainstorming/scripts/validate_register.py +654 -0
  2002. package/skills/scientific-critical-thinking/SKILL.md +180 -0
  2003. package/skills/scientific-critical-thinking/references/common_biases.md +364 -0
  2004. package/skills/scientific-critical-thinking/references/core_capabilities.md +407 -0
  2005. package/skills/scientific-critical-thinking/references/evidence_hierarchy.md +485 -0
  2006. package/skills/scientific-critical-thinking/references/experimental_design.md +496 -0
  2007. package/skills/scientific-critical-thinking/references/logical_fallacies.md +478 -0
  2008. package/skills/scientific-critical-thinking/references/scientific_method.md +169 -0
  2009. package/skills/scientific-critical-thinking/references/statistical_pitfalls.md +506 -0
  2010. package/skills/scientific-schematics/SKILL.md +370 -0
  2011. package/skills/scientific-schematics/references/best_practices.md +574 -0
  2012. package/skills/scientific-schematics/references/iterative_refinement.md +315 -0
  2013. package/skills/scientific-schematics/scripts/example_usage.sh +92 -0
  2014. package/skills/scientific-schematics/scripts/generate_schematic.py +198 -0
  2015. package/skills/scientific-schematics/scripts/generate_schematic_ai.py +950 -0
  2016. package/skills/scientific-slides/SKILL.md +379 -0
  2017. package/skills/scientific-slides/assets/beamer_template_conference.tex +407 -0
  2018. package/skills/scientific-slides/assets/beamer_template_defense.tex +906 -0
  2019. package/skills/scientific-slides/assets/beamer_template_seminar.tex +870 -0
  2020. package/skills/scientific-slides/assets/powerpoint_design_guide.md +662 -0
  2021. package/skills/scientific-slides/assets/timing_guidelines.md +597 -0
  2022. package/skills/scientific-slides/references/beamer_guide.md +1019 -0
  2023. package/skills/scientific-slides/references/common_pitfalls.md +85 -0
  2024. package/skills/scientific-slides/references/data_visualization_slides.md +708 -0
  2025. package/skills/scientific-slides/references/presentation_structure.md +642 -0
  2026. package/skills/scientific-slides/references/presentation_workflow.md +196 -0
  2027. package/skills/scientific-slides/references/prompt_writing.md +42 -0
  2028. package/skills/scientific-slides/references/script_reference.md +143 -0
  2029. package/skills/scientific-slides/references/slide_capabilities.md +360 -0
  2030. package/skills/scientific-slides/references/slide_design_principles.md +849 -0
  2031. package/skills/scientific-slides/references/talk_types_guide.md +687 -0
  2032. package/skills/scientific-slides/references/visual_review_workflow.md +775 -0
  2033. package/skills/scientific-slides/scripts/generate_schematic.py +198 -0
  2034. package/skills/scientific-slides/scripts/generate_schematic_ai.py +950 -0
  2035. package/skills/scientific-slides/scripts/generate_slide_image.py +197 -0
  2036. package/skills/scientific-slides/scripts/generate_slide_image_ai.py +877 -0
  2037. package/skills/scientific-slides/scripts/pdf_to_images.py +221 -0
  2038. package/skills/scientific-slides/scripts/slides_to_pdf.py +235 -0
  2039. package/skills/scientific-slides/scripts/validate_presentation.py +408 -0
  2040. package/skills/scientific-visualization/SKILL.md +285 -0
  2041. package/skills/scientific-visualization/assets/color_palettes.py +263 -0
  2042. package/skills/scientific-visualization/assets/nature.mplstyle +68 -0
  2043. package/skills/scientific-visualization/assets/presentation.mplstyle +68 -0
  2044. package/skills/scientific-visualization/assets/publication.mplstyle +77 -0
  2045. package/skills/scientific-visualization/assets/publisher_profiles.json +269 -0
  2046. package/skills/scientific-visualization/references/color_palettes.md +227 -0
  2047. package/skills/scientific-visualization/references/journal_requirements.md +169 -0
  2048. package/skills/scientific-visualization/references/matplotlib_examples.md +336 -0
  2049. package/skills/scientific-visualization/references/publication_guidelines.md +196 -0
  2050. package/skills/scientific-visualization/references/sources.md +76 -0
  2051. package/skills/scientific-visualization/scripts/_common.py +136 -0
  2052. package/skills/scientific-visualization/scripts/export_plan.py +493 -0
  2053. package/skills/scientific-visualization/scripts/figure_export.py +642 -0
  2054. package/skills/scientific-visualization/scripts/image_metadata.py +731 -0
  2055. package/skills/scientific-visualization/scripts/palette_audit.py +327 -0
  2056. package/skills/scientific-visualization/scripts/style_presets.py +501 -0
  2057. package/skills/scientific-visualization/scripts/style_preview.py +232 -0
  2058. package/skills/scientific-writing/SKILL.md +356 -0
  2059. package/skills/scientific-writing/assets/REPORT_FORMATTING_GUIDE.md +60 -0
  2060. package/skills/scientific-writing/assets/authorship_template.json +56 -0
  2061. package/skills/scientific-writing/assets/claim_evidence_template.csv +2 -0
  2062. package/skills/scientific-writing/assets/consistency_manifest_template.json +43 -0
  2063. package/skills/scientific-writing/assets/manuscript_manifest_template.json +37 -0
  2064. package/skills/scientific-writing/assets/manuscript_scaffold.md +65 -0
  2065. package/skills/scientific-writing/assets/reporting_coverage_template.json +6 -0
  2066. package/skills/scientific-writing/assets/reporting_guidelines.json +529 -0
  2067. package/skills/scientific-writing/assets/source_manifest_template.json +27 -0
  2068. package/skills/scientific-writing/references/authorship_ai_confidentiality.md +111 -0
  2069. package/skills/scientific-writing/references/citation_styles.md +92 -0
  2070. package/skills/scientific-writing/references/cli_reference.md +113 -0
  2071. package/skills/scientific-writing/references/evidence_workflow.md +94 -0
  2072. package/skills/scientific-writing/references/figures_tables.md +94 -0
  2073. package/skills/scientific-writing/references/imrad_structure.md +114 -0
  2074. package/skills/scientific-writing/references/journal_policies.md +56 -0
  2075. package/skills/scientific-writing/references/professional_report_formatting.md +82 -0
  2076. package/skills/scientific-writing/references/reporting_guidelines.md +107 -0
  2077. package/skills/scientific-writing/references/research_integrity_open_science.md +97 -0
  2078. package/skills/scientific-writing/references/source_ledger.md +268 -0
  2079. package/skills/scientific-writing/references/writing_principles.md +97 -0
  2080. package/skills/scientific-writing/scripts/_common.py +240 -0
  2081. package/skills/scientific-writing/scripts/audit_claims.py +241 -0
  2082. package/skills/scientific-writing/scripts/check_consistency.py +408 -0
  2083. package/skills/scientific-writing/scripts/check_references.py +219 -0
  2084. package/skills/scientific-writing/scripts/lint_manuscript.py +171 -0
  2085. package/skills/scientific-writing/scripts/scaffold_manuscript.py +143 -0
  2086. package/skills/scientific-writing/scripts/select_reporting_guidelines.py +214 -0
  2087. package/skills/scientific-writing/scripts/validate_authorship.py +322 -0
  2088. package/skills/scientific-writing/scripts/validate_manifest.py +460 -0
  2089. package/skills/scikit-bio/SKILL.md +470 -0
  2090. package/skills/scikit-bio/references/api_reference.md +766 -0
  2091. package/skills/scikit-learn/SKILL.md +324 -0
  2092. package/skills/scikit-learn/references/common_workflows.md +107 -0
  2093. package/skills/scikit-learn/references/core_capabilities.md +133 -0
  2094. package/skills/scikit-learn/references/model_evaluation.md +592 -0
  2095. package/skills/scikit-learn/references/pipelines_and_composition.md +612 -0
  2096. package/skills/scikit-learn/references/preprocessing.md +606 -0
  2097. package/skills/scikit-learn/references/quick_reference.md +436 -0
  2098. package/skills/scikit-learn/references/supervised_learning.md +379 -0
  2099. package/skills/scikit-learn/references/unsupervised_learning.md +517 -0
  2100. package/skills/scikit-learn/scripts/classification_pipeline.py +257 -0
  2101. package/skills/scikit-learn/scripts/clustering_analysis.py +386 -0
  2102. package/skills/scikit-survival/SKILL.md +313 -0
  2103. package/skills/scikit-survival/references/competing-risks.md +302 -0
  2104. package/skills/scikit-survival/references/cox-models.md +252 -0
  2105. package/skills/scikit-survival/references/data-handling.md +278 -0
  2106. package/skills/scikit-survival/references/ensemble-models.md +287 -0
  2107. package/skills/scikit-survival/references/evaluation-metrics.md +391 -0
  2108. package/skills/scikit-survival/references/svm-models.md +277 -0
  2109. package/skills/scikit-survival/scripts/_common.py +456 -0
  2110. package/skills/scikit-survival/scripts/competing_risk_cif.py +286 -0
  2111. package/skills/scikit-survival/scripts/evaluate_survival_metrics.py +296 -0
  2112. package/skills/scikit-survival/scripts/model_report.py +297 -0
  2113. package/skills/scikit-survival/scripts/train_survival_model.py +583 -0
  2114. package/skills/scikit-survival/scripts/validate_survival_csv.py +172 -0
  2115. package/skills/scvelo/SKILL.md +328 -0
  2116. package/skills/scvelo/references/velocity_models.md +168 -0
  2117. package/skills/scvelo/scripts/rna_velocity_workflow.py +240 -0
  2118. package/skills/scvi-tools/SKILL.md +201 -0
  2119. package/skills/scvi-tools/references/differential-expression.md +597 -0
  2120. package/skills/scvi-tools/references/models-atac-seq.md +329 -0
  2121. package/skills/scvi-tools/references/models-multimodal.md +400 -0
  2122. package/skills/scvi-tools/references/models-scrna-seq.md +333 -0
  2123. package/skills/scvi-tools/references/models-spatial.md +432 -0
  2124. package/skills/scvi-tools/references/models-specialized.md +376 -0
  2125. package/skills/scvi-tools/references/theoretical-foundations.md +438 -0
  2126. package/skills/scvi-tools/references/workflows.md +559 -0
  2127. package/skills/seaborn/SKILL.md +254 -0
  2128. package/skills/seaborn/references/examples.md +824 -0
  2129. package/skills/seaborn/references/function_reference.md +772 -0
  2130. package/skills/seaborn/references/grids_and_levels.md +85 -0
  2131. package/skills/seaborn/references/objects_interface.md +963 -0
  2132. package/skills/seaborn/references/palettes_and_theming.md +110 -0
  2133. package/skills/seaborn/references/patterns_and_troubleshooting.md +114 -0
  2134. package/skills/seaborn/references/plotting_functions.md +178 -0
  2135. package/skills/security-auditor/SKILL.md +37 -0
  2136. package/skills/shap/SKILL.md +282 -0
  2137. package/skills/shap/references/data-maskers.md +287 -0
  2138. package/skills/shap/references/explainers.md +376 -0
  2139. package/skills/shap/references/migration.md +415 -0
  2140. package/skills/shap/references/modalities.md +353 -0
  2141. package/skills/shap/references/plots.md +406 -0
  2142. package/skills/shap/references/theory.md +352 -0
  2143. package/skills/shap/references/troubleshooting.md +442 -0
  2144. package/skills/shap/references/workflows.md +565 -0
  2145. package/skills/shap/scripts/tabular_report.py +326 -0
  2146. package/skills/simpy/SKILL.md +283 -0
  2147. package/skills/simpy/references/cli-guide.md +266 -0
  2148. package/skills/simpy/references/events.md +225 -0
  2149. package/skills/simpy/references/monitoring.md +260 -0
  2150. package/skills/simpy/references/process-interaction.md +269 -0
  2151. package/skills/simpy/references/real-time.md +174 -0
  2152. package/skills/simpy/references/resources.md +274 -0
  2153. package/skills/simpy/references/simulation-methodology.md +293 -0
  2154. package/skills/simpy/references/sources.md +167 -0
  2155. package/skills/simpy/scripts/_common.py +473 -0
  2156. package/skills/simpy/scripts/basic_simulation_template.py +415 -0
  2157. package/skills/simpy/scripts/bounded_queue_scenario.py +126 -0
  2158. package/skills/simpy/scripts/event_trace_summary.py +296 -0
  2159. package/skills/simpy/scripts/replication_runner.py +194 -0
  2160. package/skills/simpy/scripts/resource_monitor.py +474 -0
  2161. package/skills/simpy/scripts/validate_simulation_config.py +111 -0
  2162. package/skills/stable-baselines3/SKILL.md +325 -0
  2163. package/skills/stable-baselines3/references/algorithms.md +348 -0
  2164. package/skills/stable-baselines3/references/callbacks.md +571 -0
  2165. package/skills/stable-baselines3/references/custom_environments.md +528 -0
  2166. package/skills/stable-baselines3/references/vectorized_envs.md +580 -0
  2167. package/skills/stable-baselines3/scripts/custom_env_template.py +314 -0
  2168. package/skills/stable-baselines3/scripts/evaluate_agent.py +245 -0
  2169. package/skills/stable-baselines3/scripts/train_rl_agent.py +165 -0
  2170. package/skills/statistical-analysis/SKILL.md +446 -0
  2171. package/skills/statistical-analysis/references/assumptions_and_diagnostics.md +379 -0
  2172. package/skills/statistical-analysis/references/bayesian_statistics.md +686 -0
  2173. package/skills/statistical-analysis/references/effect_sizes_and_power.md +649 -0
  2174. package/skills/statistical-analysis/references/reporting_standards.md +482 -0
  2175. package/skills/statistical-analysis/references/test_selection_guide.md +129 -0
  2176. package/skills/statistical-analysis/scripts/assumption_checks.py +652 -0
  2177. package/skills/statistical-power/SKILL.md +200 -0
  2178. package/skills/statistical-power/references/closed_form_recipes.md +174 -0
  2179. package/skills/statistical-power/references/effect_sizes.md +121 -0
  2180. package/skills/statistical-power/references/simulation_based_power.md +101 -0
  2181. package/skills/statistical-power/scripts/power.py +320 -0
  2182. package/skills/statistical-power/scripts/simulate_power.py +217 -0
  2183. package/skills/statsmodels/SKILL.md +238 -0
  2184. package/skills/statsmodels/references/discrete_choice.md +669 -0
  2185. package/skills/statsmodels/references/glm.md +619 -0
  2186. package/skills/statsmodels/references/linear_models.md +447 -0
  2187. package/skills/statsmodels/references/model_selection.md +99 -0
  2188. package/skills/statsmodels/references/modeling_capabilities.md +168 -0
  2189. package/skills/statsmodels/references/quick_start_guide.md +154 -0
  2190. package/skills/statsmodels/references/stats_diagnostics.md +859 -0
  2191. package/skills/statsmodels/references/time_series.md +723 -0
  2192. package/skills/sympy/SKILL.md +354 -0
  2193. package/skills/sympy/references/advanced-topics.md +635 -0
  2194. package/skills/sympy/references/code-generation-printing.md +628 -0
  2195. package/skills/sympy/references/core-capabilities.md +348 -0
  2196. package/skills/sympy/references/core_capabilities.md +190 -0
  2197. package/skills/sympy/references/matrices-linear-algebra.md +526 -0
  2198. package/skills/sympy/references/physics-mechanics.md +592 -0
  2199. package/skills/systematic-debugging/SKILL.md +35 -0
  2200. package/skills/tamarind/SKILL.md +285 -0
  2201. package/skills/tamarind/references/api_reference.md +165 -0
  2202. package/skills/tamarind/references/examples.md +132 -0
  2203. package/skills/tamarind/references/tool_catalog.md +66 -0
  2204. package/skills/tamarind/references/workflows.md +263 -0
  2205. package/skills/tdd/SKILL.md +26 -0
  2206. package/skills/tiledbvcf/SKILL.md +456 -0
  2207. package/skills/timesfm-forecasting/SKILL.md +408 -0
  2208. package/skills/timesfm-forecasting/examples/anomaly-detection/detect_anomalies.py +524 -0
  2209. package/skills/timesfm-forecasting/examples/anomaly-detection/output/anomaly_detection.json +448 -0
  2210. package/skills/timesfm-forecasting/examples/anomaly-detection/output/anomaly_detection.png +0 -0
  2211. package/skills/timesfm-forecasting/examples/covariates-forecasting/demo_covariates.py +568 -0
  2212. package/skills/timesfm-forecasting/examples/covariates-forecasting/output/covariates_data.png +0 -0
  2213. package/skills/timesfm-forecasting/examples/covariates-forecasting/output/covariates_metadata.json +59 -0
  2214. package/skills/timesfm-forecasting/examples/covariates-forecasting/output/sales_with_covariates.csv +109 -0
  2215. package/skills/timesfm-forecasting/examples/global-temperature/README.md +178 -0
  2216. package/skills/timesfm-forecasting/examples/global-temperature/generate_animation_data.py +147 -0
  2217. package/skills/timesfm-forecasting/examples/global-temperature/generate_gif.py +248 -0
  2218. package/skills/timesfm-forecasting/examples/global-temperature/generate_html.py +544 -0
  2219. package/skills/timesfm-forecasting/examples/global-temperature/output/animation_data.json +5441 -0
  2220. package/skills/timesfm-forecasting/examples/global-temperature/output/forecast_animation.gif +0 -0
  2221. package/skills/timesfm-forecasting/examples/global-temperature/output/forecast_output.csv +13 -0
  2222. package/skills/timesfm-forecasting/examples/global-temperature/output/forecast_output.json +188 -0
  2223. package/skills/timesfm-forecasting/examples/global-temperature/output/forecast_visualization.png +0 -0
  2224. package/skills/timesfm-forecasting/examples/global-temperature/output/interactive_forecast.html +5939 -0
  2225. package/skills/timesfm-forecasting/examples/global-temperature/run_example.sh +53 -0
  2226. package/skills/timesfm-forecasting/examples/global-temperature/run_forecast.py +167 -0
  2227. package/skills/timesfm-forecasting/examples/global-temperature/temperature_anomaly.csv +37 -0
  2228. package/skills/timesfm-forecasting/examples/global-temperature/visualize_forecast.py +123 -0
  2229. package/skills/timesfm-forecasting/references/api_reference.md +231 -0
  2230. package/skills/timesfm-forecasting/references/data_preparation.md +272 -0
  2231. package/skills/timesfm-forecasting/references/examples_and_validation.md +103 -0
  2232. package/skills/timesfm-forecasting/references/output_and_config.md +93 -0
  2233. package/skills/timesfm-forecasting/references/performance_tuning.md +80 -0
  2234. package/skills/timesfm-forecasting/references/system_requirements.md +201 -0
  2235. package/skills/timesfm-forecasting/references/workflows.md +126 -0
  2236. package/skills/timesfm-forecasting/scripts/check_system.py +521 -0
  2237. package/skills/timesfm-forecasting/scripts/forecast_csv.py +269 -0
  2238. package/skills/torch-geometric/SKILL.md +458 -0
  2239. package/skills/torch-geometric/references/custom_datasets.md +239 -0
  2240. package/skills/torch-geometric/references/explainability.md +208 -0
  2241. package/skills/torch-geometric/references/heterogeneous.md +241 -0
  2242. package/skills/torch-geometric/references/link_prediction.md +226 -0
  2243. package/skills/torch-geometric/references/message_passing.md +121 -0
  2244. package/skills/torch-geometric/references/scaling.md +269 -0
  2245. package/skills/torchdrug/SKILL.md +241 -0
  2246. package/skills/torchdrug/references/core_concepts.md +241 -0
  2247. package/skills/torchdrug/references/datasets.md +179 -0
  2248. package/skills/torchdrug/references/knowledge_graphs.md +226 -0
  2249. package/skills/torchdrug/references/models_architectures.md +223 -0
  2250. package/skills/torchdrug/references/molecular_generation.md +246 -0
  2251. package/skills/torchdrug/references/molecular_property_prediction.md +239 -0
  2252. package/skills/torchdrug/references/protein_modeling.md +221 -0
  2253. package/skills/torchdrug/references/retrosynthesis.md +247 -0
  2254. package/skills/transformers/SKILL.md +195 -0
  2255. package/skills/transformers/references/generation.md +473 -0
  2256. package/skills/transformers/references/models.md +371 -0
  2257. package/skills/transformers/references/pipelines.md +334 -0
  2258. package/skills/transformers/references/tokenizers.md +449 -0
  2259. package/skills/transformers/references/training.md +504 -0
  2260. package/skills/treatment-plans/SKILL.md +174 -0
  2261. package/skills/treatment-plans/assets/clinician_authored_intervention_template.json +11 -0
  2262. package/skills/treatment-plans/assets/goals_monitoring_checkpoint_template.json +13 -0
  2263. package/skills/treatment-plans/assets/informed_preference_shared_decision_template.json +11 -0
  2264. package/skills/treatment-plans/assets/intended_use_handoff_template.json +83 -0
  2265. package/skills/treatment-plans/assets/source_fact_manifest_template.json +11 -0
  2266. package/skills/treatment-plans/assets/transition_reconciliation_template.json +27 -0
  2267. package/skills/treatment-plans/references/README.md +19 -0
  2268. package/skills/treatment-plans/references/documentation_workflow.md +165 -0
  2269. package/skills/treatment-plans/references/privacy_governance.md +119 -0
  2270. package/skills/treatment-plans/references/safety_scope.md +101 -0
  2271. package/skills/treatment-plans/references/security_validation.md +68 -0
  2272. package/skills/treatment-plans/references/shared_decision_handoff.md +138 -0
  2273. package/skills/treatment-plans/references/source_boundaries.md +127 -0
  2274. package/skills/treatment-plans/references/source_ledger.md +131 -0
  2275. package/skills/treatment-plans/scripts/_common.py +1160 -0
  2276. package/skills/treatment-plans/scripts/check_completeness.py +572 -0
  2277. package/skills/treatment-plans/scripts/check_consistency.py +386 -0
  2278. package/skills/treatment-plans/scripts/generate_template.py +133 -0
  2279. package/skills/treatment-plans/scripts/privacy_process_check.py +213 -0
  2280. package/skills/treatment-plans/scripts/timeline_generator.py +260 -0
  2281. package/skills/treatment-plans/scripts/validate_traceability.py +147 -0
  2282. package/skills/treatment-plans/scripts/validate_treatment_plan.py +95 -0
  2283. package/skills/umap-learn/SKILL.md +488 -0
  2284. package/skills/umap-learn/references/api_reference.md +574 -0
  2285. package/skills/uncertainty-and-units/SKILL.md +384 -0
  2286. package/skills/uncertainty-and-units/references/domain-conversions.md +188 -0
  2287. package/skills/uncertainty-and-units/references/gum-methodology.md +219 -0
  2288. package/skills/uncertainty-and-units/references/pint-recipes.md +228 -0
  2289. package/skills/uncertainty-and-units/references/plausibility-scales.md +168 -0
  2290. package/skills/uncertainty-and-units/references/reporting-rules.md +133 -0
  2291. package/skills/uncertainty-and-units/references/uncertainties-recipes.md +167 -0
  2292. package/skills/uncertainty-and-units/scripts/_common.py +666 -0
  2293. package/skills/uncertainty-and-units/scripts/audit_units.py +575 -0
  2294. package/skills/uncertainty-and-units/scripts/check_plausibility.py +894 -0
  2295. package/skills/uncertainty-and-units/scripts/convert_units.py +280 -0
  2296. package/skills/uncertainty-and-units/scripts/format_result.py +326 -0
  2297. package/skills/uncertainty-and-units/scripts/propagate_uncertainty.py +662 -0
  2298. package/skills/uncertainty-and-units/scripts/uncertainty_budget.py +363 -0
  2299. package/skills/usfiscaldata/SKILL.md +171 -0
  2300. package/skills/usfiscaldata/references/api-basics.md +105 -0
  2301. package/skills/usfiscaldata/references/datasets-debt.md +166 -0
  2302. package/skills/usfiscaldata/references/datasets-fiscal.md +212 -0
  2303. package/skills/usfiscaldata/references/datasets-interest-rates.md +188 -0
  2304. package/skills/usfiscaldata/references/datasets-securities.md +238 -0
  2305. package/skills/usfiscaldata/references/examples.md +258 -0
  2306. package/skills/usfiscaldata/references/parameters.md +182 -0
  2307. package/skills/usfiscaldata/references/response-format.md +178 -0
  2308. package/skills/vaex/SKILL.md +204 -0
  2309. package/skills/vaex/references/core_dataframes.md +373 -0
  2310. package/skills/vaex/references/data_processing.md +555 -0
  2311. package/skills/vaex/references/io_operations.md +718 -0
  2312. package/skills/vaex/references/machine_learning.md +728 -0
  2313. package/skills/vaex/references/performance.md +571 -0
  2314. package/skills/vaex/references/visualization.md +644 -0
  2315. package/skills/venue-templates/SKILL.md +269 -0
  2316. package/skills/venue-templates/assets/examples/cell_summary_example.md +247 -0
  2317. package/skills/venue-templates/assets/examples/medical_structured_abstract.md +313 -0
  2318. package/skills/venue-templates/assets/examples/nature_abstract_examples.md +213 -0
  2319. package/skills/venue-templates/assets/examples/neurips_introduction_example.md +245 -0
  2320. package/skills/venue-templates/assets/grants/nih_specific_aims.tex +237 -0
  2321. package/skills/venue-templates/assets/grants/nsf_proposal_template.tex +384 -0
  2322. package/skills/venue-templates/assets/journals/elsarticle-harv.bst +1598 -0
  2323. package/skills/venue-templates/assets/journals/elsarticle-num-names.bst +1535 -0
  2324. package/skills/venue-templates/assets/journals/elsarticle-num.bst +1509 -0
  2325. package/skills/venue-templates/assets/journals/elsarticle-template-harv.tex +286 -0
  2326. package/skills/venue-templates/assets/journals/elsarticle-template-num-names.tex +284 -0
  2327. package/skills/venue-templates/assets/journals/elsarticle-template-num.tex +286 -0
  2328. package/skills/venue-templates/assets/journals/nature_article.tex +174 -0
  2329. package/skills/venue-templates/assets/journals/neurips_article.tex +292 -0
  2330. package/skills/venue-templates/assets/journals/plos_one.tex +320 -0
  2331. package/skills/venue-templates/assets/posters/beamerposter_academic.tex +312 -0
  2332. package/skills/venue-templates/references/cell_press_style.md +486 -0
  2333. package/skills/venue-templates/references/conferences_formatting.md +175 -0
  2334. package/skills/venue-templates/references/cs_conference_style.md +465 -0
  2335. package/skills/venue-templates/references/grants_requirements.md +267 -0
  2336. package/skills/venue-templates/references/journals_formatting.md +200 -0
  2337. package/skills/venue-templates/references/medical_journal_styles.md +536 -0
  2338. package/skills/venue-templates/references/ml_conference_style.md +562 -0
  2339. package/skills/venue-templates/references/nature_science_style.md +407 -0
  2340. package/skills/venue-templates/references/posters_guidelines.md +630 -0
  2341. package/skills/venue-templates/references/reviewer_expectations.md +422 -0
  2342. package/skills/venue-templates/references/venue_writing_styles.md +323 -0
  2343. package/skills/venue-templates/scripts/customize_template.py +206 -0
  2344. package/skills/venue-templates/scripts/query_template.py +202 -0
  2345. package/skills/venue-templates/scripts/validate_format.py +321 -0
  2346. package/skills/verification-before-completion/SKILL.md +21 -0
  2347. package/skills/waypoint-bio/SKILL.md +273 -0
  2348. package/skills/waypoint-bio/references/cli-reference.md +210 -0
  2349. package/skills/waypoint-bio/references/compass-benchmark.md +124 -0
  2350. package/skills/waypoint-bio/references/data-preparation.md +200 -0
  2351. package/skills/waypoint-bio/references/python-api.md +219 -0
  2352. package/skills/waypoint-bio/scripts/profiler_to_waypoint.py +481 -0
  2353. package/skills/waypoint-bio/scripts/vocab_coverage.py +235 -0
  2354. package/skills/what-if-oracle/SKILL.md +184 -0
  2355. package/skills/what-if-oracle/references/scenario-templates.md +137 -0
  2356. package/skills/writing-plans/SKILL.md +15 -0
  2357. package/skills/xlsx/LICENSE.txt +30 -0
  2358. package/skills/xlsx/SKILL.md +110 -0
  2359. package/skills/xlsx/scripts/office/helpers/__init__.py +111 -0
  2360. package/skills/xlsx/scripts/office/helpers/pptx_chart.py +170 -0
  2361. package/skills/xlsx/scripts/office/helpers/pptx_slide.py +60 -0
  2362. package/skills/xlsx/scripts/office/helpers/pptx_theme.py +114 -0
  2363. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chart.xsd +1499 -0
  2364. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-chartDrawing.xsd +146 -0
  2365. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-diagram.xsd +1085 -0
  2366. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-lockedCanvas.xsd +11 -0
  2367. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-main.xsd +3081 -0
  2368. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-picture.xsd +23 -0
  2369. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-spreadsheetDrawing.xsd +185 -0
  2370. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/dml-wordprocessingDrawing.xsd +287 -0
  2371. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/pml.xsd +1676 -0
  2372. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-additionalCharacteristics.xsd +28 -0
  2373. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-bibliography.xsd +144 -0
  2374. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-commonSimpleTypes.xsd +174 -0
  2375. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlDataProperties.xsd +25 -0
  2376. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-customXmlSchemaProperties.xsd +18 -0
  2377. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesCustom.xsd +59 -0
  2378. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesExtended.xsd +56 -0
  2379. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-documentPropertiesVariantTypes.xsd +195 -0
  2380. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-math.xsd +582 -0
  2381. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/shared-relationshipReference.xsd +25 -0
  2382. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/sml.xsd +4439 -0
  2383. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-main.xsd +570 -0
  2384. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-officeDrawing.xsd +509 -0
  2385. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-presentationDrawing.xsd +12 -0
  2386. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-spreadsheetDrawing.xsd +108 -0
  2387. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/vml-wordprocessingDrawing.xsd +96 -0
  2388. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/wml.xsd +3646 -0
  2389. package/skills/xlsx/scripts/office/schemas/ISO-IEC29500-4_2016/xml.xsd +116 -0
  2390. package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-contentTypes.xsd +42 -0
  2391. package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-coreProperties.xsd +50 -0
  2392. package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-digSig.xsd +49 -0
  2393. package/skills/xlsx/scripts/office/schemas/ecma/fouth-edition/opc-relationships.xsd +33 -0
  2394. package/skills/xlsx/scripts/office/schemas/mce/mc.xsd +75 -0
  2395. package/skills/xlsx/scripts/office/schemas/microsoft/wml-2010.xsd +560 -0
  2396. package/skills/xlsx/scripts/office/schemas/microsoft/wml-2012.xsd +67 -0
  2397. package/skills/xlsx/scripts/office/schemas/microsoft/wml-2018.xsd +14 -0
  2398. package/skills/xlsx/scripts/office/schemas/microsoft/wml-cex-2018.xsd +20 -0
  2399. package/skills/xlsx/scripts/office/schemas/microsoft/wml-cid-2016.xsd +13 -0
  2400. package/skills/xlsx/scripts/office/schemas/microsoft/wml-sdtdatahash-2020.xsd +4 -0
  2401. package/skills/xlsx/scripts/office/schemas/microsoft/wml-symex-2015.xsd +8 -0
  2402. package/skills/xlsx/scripts/office/soffice.py +232 -0
  2403. package/skills/xlsx/scripts/office/validate.py +173 -0
  2404. package/skills/xlsx/scripts/office/validators/__init__.py +15 -0
  2405. package/skills/xlsx/scripts/office/validators/base.py +875 -0
  2406. package/skills/xlsx/scripts/office/validators/docx.py +466 -0
  2407. package/skills/xlsx/scripts/office/validators/pptx.py +441 -0
  2408. package/skills/xlsx/scripts/office/validators/redlining.py +299 -0
  2409. package/skills/xlsx/scripts/recalc.py +308 -0
  2410. package/skills/zarr-python/SKILL.md +241 -0
  2411. package/skills/zarr-python/references/api_reference.md +162 -0
  2412. package/skills/zarr-python/references/chunking_and_compression.md +138 -0
  2413. package/skills/zarr-python/references/integration.md +147 -0
  2414. package/skills/zarr-python/references/performance_and_patterns.md +198 -0
  2415. package/skills/zarr-python/references/storage_backends.md +91 -0
  2416. package/skills/zarr-python/references/v3_migration.md +127 -0
  2417. package/templates/agents/orchestrator.md +37 -0
  2418. package/templates/base/groupy_prompt.md +92 -0
  2419. package/templates/compact/prompt.md +9 -0
  2420. package/templates/compact/summary_prefix.md +1 -0
  2421. package/templates/modes/default.md +19 -0
  2422. package/templates/modes/plan.md +128 -0
  2423. package/templates/modes/review.md +60 -0
  2424. package/templates/permissions/approval_policy/never.md +1 -0
  2425. package/templates/permissions/approval_policy/on_request.md +23 -0
  2426. package/templates/permissions/sandbox_mode/danger_full_access.md +1 -0
  2427. package/templates/permissions/sandbox_mode/read_only.md +1 -0
  2428. package/templates/permissions/sandbox_mode/workspace_write.md +1 -0
  2429. package/templates/personalities/friendly.md +19 -0
  2430. package/templates/personalities/pragmatic.md +17 -0
@@ -0,0 +1,1767 @@
1
+ #!/usr/bin/env python3
2
+ """Collect a conservative, privacy-preserving resource snapshot.
3
+
4
+ The script performs only bounded, read-only probes. It never stress-tests the
5
+ machine, allocates a large buffer, changes affinity, or changes accelerator
6
+ state. JSON is written to stdout unless a private local filename is explicitly
7
+ requested.
8
+ """
9
+
10
+ from __future__ import annotations
11
+
12
+ import argparse
13
+ import csv
14
+ import datetime as dt
15
+ import importlib
16
+ import io
17
+ import json
18
+ import math
19
+ import os
20
+ import platform
21
+ import re
22
+ import shutil
23
+ import subprocess
24
+ import threading
25
+ from pathlib import Path, PurePosixPath
26
+ from typing import Any, Callable, Mapping, Sequence
27
+
28
+ from _common import (
29
+ MAX_BYTES,
30
+ SCHEMA_VERSION,
31
+ ResourceToolError,
32
+ cli_error,
33
+ emit_json,
34
+ )
35
+
36
+ MAX_PROBE_OUTPUT = 65_536
37
+ MAX_KERNEL_TEXT = 524_288
38
+ MAX_CGROUP_LEVELS = 64
39
+ MAX_CPU_ID = 1_048_575
40
+ MAX_DEVICES = 256
41
+ MIB = 1024**2
42
+ GIB = 1024**3
43
+ _AUTO = object()
44
+
45
+ NVIDIA_QUERY = (
46
+ "nvidia-smi",
47
+ "--query-gpu=index,name,memory.total,memory.free,driver_version,compute_cap",
48
+ "--format=csv,noheader,nounits",
49
+ )
50
+ NVIDIA_QUERY_FALLBACK = (
51
+ "nvidia-smi",
52
+ "--query-gpu=index,name,memory.total,memory.free,driver_version",
53
+ "--format=csv,noheader,nounits",
54
+ )
55
+ AMD_SMI_QUERY = ("amd-smi", "static", "--json")
56
+ ROCM_SMI_QUERY = (
57
+ "rocm-smi",
58
+ "--showproductname",
59
+ "--showmeminfo",
60
+ "vram",
61
+ "--json",
62
+ )
63
+ APPLE_DISPLAY_QUERY = ("system_profiler", "SPDisplaysDataType", "-json")
64
+ APPLE_SYSCTL_QUERY = (
65
+ "sysctl",
66
+ "-n",
67
+ "hw.logicalcpu",
68
+ "hw.physicalcpu",
69
+ "hw.memsize",
70
+ "machdep.cpu.brand_string",
71
+ )
72
+
73
+ ACCELERATOR_ENV_KEYS = (
74
+ "CUDA_VISIBLE_DEVICES",
75
+ "HIP_VISIBLE_DEVICES",
76
+ "NVIDIA_VISIBLE_DEVICES",
77
+ "ROCR_VISIBLE_DEVICES",
78
+ )
79
+ SLURM_ENV_KEYS = (
80
+ "SLURM_JOB_ID",
81
+ "SLURM_JOBID",
82
+ "SLURM_CPUS_ON_NODE",
83
+ "SLURM_CPUS_PER_TASK",
84
+ "SLURM_JOB_CPUS_PER_NODE",
85
+ "SLURM_MEM_PER_CPU",
86
+ "SLURM_MEM_PER_NODE",
87
+ "SLURM_NTASKS",
88
+ "SLURM_NTASKS_PER_NODE",
89
+ "SLURM_TASKS_PER_NODE",
90
+ "SLURM_GPUS",
91
+ "SLURM_GPUS_ON_NODE",
92
+ "SLURM_GPUS_PER_TASK",
93
+ "SLURM_JOB_GPUS",
94
+ "SLURM_STEP_GPUS",
95
+ )
96
+
97
+
98
+ def _warning(
99
+ warnings: list[dict[str, str]],
100
+ code: str,
101
+ component: str,
102
+ message: str,
103
+ *,
104
+ severity: str = "warning",
105
+ ) -> None:
106
+ warnings.append(
107
+ {
108
+ "code": code,
109
+ "component": component,
110
+ "message": message,
111
+ "severity": severity,
112
+ }
113
+ )
114
+
115
+
116
+ def _provenance(
117
+ records: list[dict[str, str]],
118
+ component: str,
119
+ source: str,
120
+ status: str,
121
+ ) -> None:
122
+ records.append(
123
+ {"component": component, "source": source, "status": status}
124
+ )
125
+
126
+
127
+ def _safe_text(value: Any, maximum: int = 128) -> str | None:
128
+ if not isinstance(value, (str, int, float)):
129
+ return None
130
+ rendered = " ".join(str(value).split())
131
+ rendered = "".join(character for character in rendered if character.isprintable())
132
+ return rendered[:maximum] or None
133
+
134
+
135
+ def _read_bounded_text(path: Path, maximum: int = MAX_KERNEL_TEXT) -> str:
136
+ with path.open("rb") as stream:
137
+ payload = stream.read(maximum + 1)
138
+ if len(payload) > maximum:
139
+ raise ValueError("bounded text input exceeded")
140
+ return payload.decode("utf-8", errors="replace")
141
+
142
+
143
+ def _try_read(
144
+ read_text: Callable[[Path], str],
145
+ path: Path,
146
+ ) -> str | None:
147
+ try:
148
+ return read_text(path)
149
+ except (OSError, ValueError, UnicodeError):
150
+ return None
151
+
152
+
153
+ def _bounded_nonnegative(value: str | int | None) -> int | None:
154
+ if isinstance(value, bool) or value is None:
155
+ return None
156
+ try:
157
+ parsed = int(str(value).strip(), 10)
158
+ except (TypeError, ValueError):
159
+ return None
160
+ return parsed if 0 <= parsed <= MAX_BYTES else None
161
+
162
+
163
+ def parse_cpu_list(value: str) -> int | None:
164
+ """Count CPUs in a Linux range list without expanding it."""
165
+ if not isinstance(value, str) or not value.strip() or len(value) > 4096:
166
+ return None
167
+ intervals: list[tuple[int, int]] = []
168
+ for token in value.strip().split(","):
169
+ token = token.strip()
170
+ match = re.fullmatch(r"(\d+)(?:-(\d+))?", token)
171
+ if not match:
172
+ return None
173
+ start = int(match.group(1))
174
+ end = int(match.group(2) or start)
175
+ if start > end or end > MAX_CPU_ID:
176
+ return None
177
+ intervals.append((start, end))
178
+ intervals.sort()
179
+ total = 0
180
+ current_start, current_end = intervals[0]
181
+ for start, end in intervals[1:]:
182
+ if start <= current_end + 1:
183
+ current_end = max(current_end, end)
184
+ else:
185
+ total += current_end - current_start + 1
186
+ current_start, current_end = start, end
187
+ total += current_end - current_start + 1
188
+ return total if total <= MAX_CPU_ID + 1 else None
189
+
190
+
191
+ def _parse_cpu_max(value: str) -> float | None:
192
+ fields = value.strip().split()
193
+ if len(fields) != 2 or fields[0] == "max":
194
+ return None
195
+ quota = _bounded_nonnegative(fields[0])
196
+ period = _bounded_nonnegative(fields[1])
197
+ if quota is None or period in (None, 0) or quota == 0:
198
+ return None
199
+ capacity = quota / period
200
+ if not math.isfinite(capacity) or capacity <= 0:
201
+ return None
202
+ return round(capacity, 6)
203
+
204
+
205
+ def _run_bounded_command(
206
+ argv: Sequence[str],
207
+ *,
208
+ timeout: float = 4.0,
209
+ maximum: int = MAX_PROBE_OUTPUT,
210
+ ) -> dict[str, Any]:
211
+ """Run a fixed argv with bounded stdout/stderr and no shell."""
212
+ if not isinstance(argv, tuple) or not argv or not all(
213
+ isinstance(item, str) and item for item in argv
214
+ ):
215
+ raise ValueError("internal command must be a fixed nonempty tuple")
216
+ try:
217
+ process = subprocess.Popen(
218
+ list(argv),
219
+ stdin=subprocess.DEVNULL,
220
+ stdout=subprocess.PIPE,
221
+ stderr=subprocess.PIPE,
222
+ shell=False,
223
+ )
224
+ except FileNotFoundError:
225
+ return {"status": "not_found", "stdout": "", "stderr": ""}
226
+ except OSError:
227
+ return {"status": "start_error", "stdout": "", "stderr": ""}
228
+
229
+ buffers = {"stdout": bytearray(), "stderr": bytearray()}
230
+ truncated = threading.Event()
231
+
232
+ def drain(name: str, stream: Any) -> None:
233
+ try:
234
+ while True:
235
+ chunk = stream.read(4096)
236
+ if not chunk:
237
+ break
238
+ remaining = maximum - len(buffers[name])
239
+ if remaining > 0:
240
+ buffers[name].extend(chunk[:remaining])
241
+ if len(chunk) > remaining:
242
+ truncated.set()
243
+ try:
244
+ process.kill()
245
+ except OSError:
246
+ pass
247
+ finally:
248
+ try:
249
+ stream.close()
250
+ except OSError:
251
+ pass
252
+
253
+ threads = [
254
+ threading.Thread(
255
+ target=drain,
256
+ args=("stdout", process.stdout),
257
+ daemon=True,
258
+ ),
259
+ threading.Thread(
260
+ target=drain,
261
+ args=("stderr", process.stderr),
262
+ daemon=True,
263
+ ),
264
+ ]
265
+ for thread in threads:
266
+ thread.start()
267
+
268
+ timed_out = False
269
+ try:
270
+ return_code = process.wait(timeout=timeout)
271
+ except subprocess.TimeoutExpired:
272
+ timed_out = True
273
+ try:
274
+ process.kill()
275
+ except OSError:
276
+ pass
277
+ return_code = process.wait()
278
+ for thread in threads:
279
+ thread.join(timeout=1.0)
280
+
281
+ status = "ok" if return_code == 0 else "error"
282
+ if timed_out:
283
+ status = "timeout"
284
+ elif truncated.is_set():
285
+ status = "truncated"
286
+ return {
287
+ "returncode": return_code,
288
+ "status": status,
289
+ "stderr": buffers["stderr"].decode("utf-8", errors="replace"),
290
+ "stdout": buffers["stdout"].decode("utf-8", errors="replace"),
291
+ }
292
+
293
+
294
+ def _load_psutil(
295
+ warnings: list[dict[str, str]],
296
+ provenance: list[dict[str, str]],
297
+ ) -> Any | None:
298
+ try:
299
+ module = importlib.import_module("psutil")
300
+ except (ImportError, OSError):
301
+ _warning(
302
+ warnings,
303
+ "PSUTIL_UNAVAILABLE",
304
+ "inventory",
305
+ "Optional psutil is unavailable; standard-library fallbacks were used.",
306
+ severity="info",
307
+ )
308
+ _provenance(provenance, "inventory.psutil", "optional_import", "unavailable")
309
+ return None
310
+ _provenance(provenance, "inventory.psutil", "optional_import", "ok")
311
+ return module
312
+
313
+
314
+ def _linux_physical_cores(
315
+ read_text: Callable[[Path], str],
316
+ ) -> int | None:
317
+ payload = _try_read(read_text, Path("/proc/cpuinfo"))
318
+ if not payload:
319
+ return None
320
+ pairs: set[tuple[str, str]] = set()
321
+ for block in payload.split("\n\n"):
322
+ fields: dict[str, str] = {}
323
+ for line in block.splitlines():
324
+ if ":" in line:
325
+ key, value = line.split(":", 1)
326
+ fields[key.strip().lower()] = value.strip()
327
+ if "physical id" in fields and "core id" in fields:
328
+ pairs.add((fields["physical id"], fields["core id"]))
329
+ count = len(pairs)
330
+ return count if 0 < count <= MAX_CPU_ID + 1 else None
331
+
332
+
333
+ def _mac_sysctl_values(
334
+ run_command: Callable[..., dict[str, Any]],
335
+ warnings: list[dict[str, str]],
336
+ provenance: list[dict[str, str]],
337
+ ) -> dict[str, Any]:
338
+ result = run_command(APPLE_SYSCTL_QUERY, timeout=2.0)
339
+ if result["status"] != "ok":
340
+ _warning(
341
+ warnings,
342
+ "APPLE_SYSCTL_UNAVAILABLE",
343
+ "platform",
344
+ "Apple sysctl inventory was unavailable; other sources were retained.",
345
+ severity="info",
346
+ )
347
+ _provenance(provenance, "platform.apple_sysctl", "sysctl", result["status"])
348
+ return {}
349
+ lines = result["stdout"].splitlines()
350
+ if len(lines) < 4:
351
+ _warning(
352
+ warnings,
353
+ "APPLE_SYSCTL_PARSE_FAILED",
354
+ "platform",
355
+ "Apple sysctl returned an unexpected bounded response.",
356
+ )
357
+ _provenance(provenance, "platform.apple_sysctl", "sysctl", "parse_error")
358
+ return {}
359
+ _provenance(provenance, "platform.apple_sysctl", "sysctl", "ok")
360
+ return {
361
+ "logical": _bounded_nonnegative(lines[0]),
362
+ "physical": _bounded_nonnegative(lines[1]),
363
+ "memory": _bounded_nonnegative(lines[2]),
364
+ "brand": _safe_text(lines[3]),
365
+ }
366
+
367
+
368
+ def _detect_cpu_inventory(
369
+ *,
370
+ system: str,
371
+ psutil_module: Any | None,
372
+ mac_sysctl: Mapping[str, Any],
373
+ read_text: Callable[[Path], str],
374
+ warnings: list[dict[str, str]],
375
+ provenance: list[dict[str, str]],
376
+ ) -> dict[str, int | None]:
377
+ host_logical = os.cpu_count()
378
+ if (
379
+ not isinstance(host_logical, int)
380
+ or isinstance(host_logical, bool)
381
+ or not 1 <= host_logical <= MAX_CPU_ID + 1
382
+ ):
383
+ host_logical = None
384
+ _warning(
385
+ warnings,
386
+ "HOST_LOGICAL_CPU_UNKNOWN",
387
+ "cpu",
388
+ "Host logical CPU count could not be determined.",
389
+ )
390
+ _provenance(provenance, "cpu.host.logical", "os.cpu_count", "unavailable")
391
+ else:
392
+ _provenance(provenance, "cpu.host.logical", "os.cpu_count", "ok")
393
+
394
+ host_physical: int | None = None
395
+ if psutil_module is not None:
396
+ try:
397
+ candidate = psutil_module.cpu_count(logical=False)
398
+ if (
399
+ isinstance(candidate, int)
400
+ and not isinstance(candidate, bool)
401
+ and 0 < candidate <= MAX_CPU_ID + 1
402
+ ):
403
+ host_physical = candidate
404
+ _provenance(
405
+ provenance, "cpu.host.physical", "psutil.cpu_count", "ok"
406
+ )
407
+ except (AttributeError, OSError, RuntimeError, ValueError):
408
+ pass
409
+ if host_physical is None and system == "Darwin":
410
+ candidate = mac_sysctl.get("physical")
411
+ if isinstance(candidate, int) and 0 < candidate <= MAX_CPU_ID + 1:
412
+ host_physical = candidate
413
+ _provenance(provenance, "cpu.host.physical", "sysctl", "ok")
414
+ if host_physical is None and system == "Linux":
415
+ host_physical = _linux_physical_cores(read_text)
416
+ if host_physical is not None:
417
+ _provenance(provenance, "cpu.host.physical", "proc_cpuinfo", "ok")
418
+ if host_physical is None:
419
+ _warning(
420
+ warnings,
421
+ "HOST_PHYSICAL_CPU_UNKNOWN",
422
+ "cpu",
423
+ "Physical core count is unknown and was not inferred from logical CPUs.",
424
+ severity="info",
425
+ )
426
+ _provenance(provenance, "cpu.host.physical", "platform_fallbacks", "unavailable")
427
+ return {"logical": host_logical, "physical": host_physical}
428
+
429
+
430
+ def _detect_process_cpu_count(
431
+ *,
432
+ psutil_module: Any | None,
433
+ warnings: list[dict[str, str]],
434
+ provenance: list[dict[str, str]],
435
+ ) -> dict[str, int | None]:
436
+ affinity_count: int | None = None
437
+ affinity_source: str | None = None
438
+ get_affinity = getattr(os, "sched_getaffinity", None)
439
+ if callable(get_affinity):
440
+ try:
441
+ affinity = get_affinity(0)
442
+ if affinity and len(affinity) <= MAX_CPU_ID + 1:
443
+ affinity_count = len(affinity)
444
+ affinity_source = "os.sched_getaffinity"
445
+ except (OSError, TypeError, ValueError):
446
+ pass
447
+ if affinity_count is None and psutil_module is not None:
448
+ try:
449
+ affinity = psutil_module.Process().cpu_affinity()
450
+ if affinity and len(affinity) <= MAX_CPU_ID + 1:
451
+ affinity_count = len(affinity)
452
+ affinity_source = "psutil.Process.cpu_affinity"
453
+ except (AttributeError, OSError, RuntimeError, ValueError):
454
+ pass
455
+ if affinity_count is not None:
456
+ _provenance(provenance, "cpu.process.affinity_logical", affinity_source or "", "ok")
457
+ else:
458
+ _provenance(
459
+ provenance, "cpu.process.affinity_logical", "affinity_apis", "unavailable"
460
+ )
461
+
462
+ process_count: int | None = None
463
+ process_cpu_count = getattr(os, "process_cpu_count", None)
464
+ if callable(process_cpu_count):
465
+ try:
466
+ candidate = process_cpu_count()
467
+ if (
468
+ isinstance(candidate, int)
469
+ and not isinstance(candidate, bool)
470
+ and 0 < candidate <= MAX_CPU_ID + 1
471
+ ):
472
+ process_count = candidate
473
+ _provenance(
474
+ provenance,
475
+ "cpu.process.python_available_logical",
476
+ "os.process_cpu_count",
477
+ "ok",
478
+ )
479
+ except (OSError, ValueError):
480
+ pass
481
+ if affinity_count is None and process_count is None:
482
+ _warning(
483
+ warnings,
484
+ "PROCESS_CPU_SCOPE_UNKNOWN",
485
+ "cpu",
486
+ "No process-aware CPU count API was available.",
487
+ severity="info",
488
+ )
489
+ return {
490
+ "affinity_logical": affinity_count,
491
+ "python_available_logical": process_count,
492
+ }
493
+
494
+
495
+ def _cgroup_relative_path(payload: str) -> tuple[str, ...] | None:
496
+ for line in payload.splitlines():
497
+ fields = line.split(":", 2)
498
+ if len(fields) == 3 and fields[0] == "0" and fields[1] == "":
499
+ raw = PurePosixPath(fields[2])
500
+ parts = tuple(part for part in raw.parts if part not in {"/", ""})
501
+ if any(part in {".", ".."} for part in parts):
502
+ return None
503
+ return parts
504
+ return None
505
+
506
+
507
+ def detect_cgroup_v2(
508
+ *,
509
+ read_text: Callable[[Path], str] = _read_bounded_text,
510
+ root: Path = Path("/sys/fs/cgroup"),
511
+ proc_self_cgroup: Path = Path("/proc/self/cgroup"),
512
+ warnings: list[dict[str, str]] | None = None,
513
+ provenance: list[dict[str, str]] | None = None,
514
+ ) -> dict[str, Any]:
515
+ """Read current and ancestor cgroup v2 limits without exposing paths."""
516
+ warning_records = warnings if warnings is not None else []
517
+ provenance_records = provenance if provenance is not None else []
518
+ if _try_read(read_text, root / "cgroup.controllers") is None:
519
+ _provenance(
520
+ provenance_records, "cgroup_v2", "cgroup.controllers", "unavailable"
521
+ )
522
+ return {
523
+ "detected": False,
524
+ "cpu_quota_cores": None,
525
+ "cpuset_logical": None,
526
+ "memory_available_bytes": None,
527
+ "memory_current_bytes": None,
528
+ "memory_high_bytes": None,
529
+ "memory_max_bytes": None,
530
+ "scope": "unknown",
531
+ }
532
+
533
+ membership = _try_read(read_text, proc_self_cgroup)
534
+ parts = _cgroup_relative_path(membership or "")
535
+ if parts is None:
536
+ _warning(
537
+ warning_records,
538
+ "CGROUP_MEMBERSHIP_UNKNOWN",
539
+ "cgroup",
540
+ "cgroup v2 was detected but current membership could not be parsed.",
541
+ )
542
+ parts = ()
543
+ current = root.joinpath(*parts)
544
+ chain: list[Path] = []
545
+ cursor = current
546
+ for _ in range(MAX_CGROUP_LEVELS):
547
+ chain.append(cursor)
548
+ if cursor == root:
549
+ break
550
+ parent = cursor.parent
551
+ if parent == cursor or (parent != root and root not in parent.parents):
552
+ break
553
+ cursor = parent
554
+ else:
555
+ _warning(
556
+ warning_records,
557
+ "CGROUP_DEPTH_BOUNDED",
558
+ "cgroup",
559
+ "cgroup ancestor traversal reached its safety bound.",
560
+ )
561
+
562
+ quota_candidates: list[float] = []
563
+ memory_max_candidates: list[int] = []
564
+ memory_high_candidates: list[int] = []
565
+ memory_available_candidates: list[int] = []
566
+ current_memory: int | None = None
567
+
568
+ for index, directory in enumerate(chain):
569
+ cpu_max_text = _try_read(read_text, directory / "cpu.max")
570
+ if cpu_max_text is not None:
571
+ quota = _parse_cpu_max(cpu_max_text)
572
+ if quota is not None:
573
+ quota_candidates.append(quota)
574
+
575
+ memory_max_text = _try_read(read_text, directory / "memory.max")
576
+ memory_current_text = _try_read(read_text, directory / "memory.current")
577
+ memory_high_text = _try_read(read_text, directory / "memory.high")
578
+ memory_current = _bounded_nonnegative(memory_current_text)
579
+ if index == 0:
580
+ current_memory = memory_current
581
+ memory_max = (
582
+ None
583
+ if memory_max_text is None or memory_max_text.strip() == "max"
584
+ else _bounded_nonnegative(memory_max_text)
585
+ )
586
+ memory_high = (
587
+ None
588
+ if memory_high_text is None or memory_high_text.strip() == "max"
589
+ else _bounded_nonnegative(memory_high_text)
590
+ )
591
+ if memory_max is not None:
592
+ memory_max_candidates.append(memory_max)
593
+ if memory_current is not None:
594
+ memory_available_candidates.append(max(0, memory_max - memory_current))
595
+ if memory_high is not None:
596
+ memory_high_candidates.append(memory_high)
597
+
598
+ cpuset_text = _try_read(read_text, current / "cpuset.cpus.effective")
599
+ cpuset_count = parse_cpu_list(cpuset_text) if cpuset_text else None
600
+ if cpuset_text and cpuset_count is None:
601
+ _warning(
602
+ warning_records,
603
+ "CGROUP_CPUSET_PARSE_FAILED",
604
+ "cgroup",
605
+ "cpuset.cpus.effective had an unexpected bounded value.",
606
+ )
607
+
608
+ _provenance(provenance_records, "cgroup_v2", "procfs_and_cgroupfs", "ok")
609
+ return {
610
+ "detected": True,
611
+ "cpu_quota_cores": min(quota_candidates) if quota_candidates else None,
612
+ "cpuset_logical": cpuset_count,
613
+ "memory_available_bytes": (
614
+ min(memory_available_candidates)
615
+ if memory_available_candidates
616
+ else None
617
+ ),
618
+ "memory_current_bytes": current_memory,
619
+ "memory_high_bytes": (
620
+ min(memory_high_candidates) if memory_high_candidates else None
621
+ ),
622
+ "memory_max_bytes": (
623
+ min(memory_max_candidates) if memory_max_candidates else None
624
+ ),
625
+ "scope": "non_root" if parts else "root",
626
+ }
627
+
628
+
629
+ def _parse_slurm_count(value: str | None) -> int | None:
630
+ if value is None or not 0 < len(value) <= 128:
631
+ return None
632
+ stripped = value.strip()
633
+ if stripped.isdigit():
634
+ count = int(stripped)
635
+ return count if 0 <= count <= 1_000_000 else None
636
+ match = re.fullmatch(r"(?:[A-Za-z0-9_.+-]+:)+(\d+)", stripped)
637
+ if match:
638
+ count = int(match.group(1))
639
+ return count if count <= 1_000_000 else None
640
+ return None
641
+
642
+
643
+ def _parse_slurm_memory(value: str | None) -> int | None:
644
+ if value is None or not 0 < len(value) <= 128:
645
+ return None
646
+ match = re.fullmatch(r"\s*(\d+)\s*([KkMmGgTt]?)\s*", value)
647
+ if not match:
648
+ return None
649
+ amount = int(match.group(1))
650
+ if amount == 0:
651
+ return None
652
+ suffix = match.group(2).upper()
653
+ multiplier = {"K": 1024, "M": MIB, "G": GIB, "T": 1024**4, "": MIB}[suffix]
654
+ result = amount * multiplier
655
+ return result if result <= MAX_BYTES else None
656
+
657
+
658
+ def _parse_first_repeated_count(value: str | None) -> int | None:
659
+ if value is None or len(value) > 4096:
660
+ return None
661
+ match = re.match(r"\s*(\d+)(?:\(x\d+\))?", value)
662
+ if not match:
663
+ return None
664
+ count = int(match.group(1))
665
+ return count if count <= 1_000_000 else None
666
+
667
+
668
+ def detect_scheduler(
669
+ environ: Mapping[str, str],
670
+ *,
671
+ warnings: list[dict[str, str]] | None = None,
672
+ provenance: list[dict[str, str]] | None = None,
673
+ ) -> dict[str, Any]:
674
+ """Interpret only an allowlist of Slurm allocation variables."""
675
+ warning_records = warnings if warnings is not None else []
676
+ provenance_records = provenance if provenance is not None else []
677
+ present = {
678
+ key: environ[key]
679
+ for key in SLURM_ENV_KEYS
680
+ if key in environ and isinstance(environ[key], str)
681
+ }
682
+ detected = bool(present)
683
+ if not detected:
684
+ _provenance(provenance_records, "scheduler", "named_slurm_environment", "absent")
685
+ return {
686
+ "allocation": {
687
+ "cpu_per_process": None,
688
+ "cpus_on_node": None,
689
+ "gpus_per_process": None,
690
+ "gpus_on_node": None,
691
+ "memory_effective_bytes": None,
692
+ "memory_scope": None,
693
+ "tasks": None,
694
+ },
695
+ "detected": False,
696
+ "enforcement": "not_applicable",
697
+ "fields_read": [],
698
+ "kind": None,
699
+ }
700
+
701
+ cpus_per_task = _parse_slurm_count(present.get("SLURM_CPUS_PER_TASK"))
702
+ cpus_on_node = _parse_slurm_count(present.get("SLURM_CPUS_ON_NODE"))
703
+ tasks = _parse_slurm_count(present.get("SLURM_NTASKS"))
704
+ tasks_per_node = _parse_slurm_count(present.get("SLURM_NTASKS_PER_NODE"))
705
+ if tasks_per_node is None:
706
+ tasks_per_node = _parse_first_repeated_count(
707
+ present.get("SLURM_TASKS_PER_NODE")
708
+ )
709
+ first_job_cpus = _parse_first_repeated_count(
710
+ present.get("SLURM_JOB_CPUS_PER_NODE")
711
+ )
712
+ cpu_per_process = cpus_per_task
713
+ if cpu_per_process is None and cpus_on_node is not None and tasks_per_node == 1:
714
+ cpu_per_process = cpus_on_node
715
+
716
+ memory_per_cpu = _parse_slurm_memory(present.get("SLURM_MEM_PER_CPU"))
717
+ memory_per_node = _parse_slurm_memory(present.get("SLURM_MEM_PER_NODE"))
718
+ memory_effective: int | None = None
719
+ memory_scope: str | None = None
720
+ if memory_per_cpu is not None and cpu_per_process is not None:
721
+ memory_effective = min(MAX_BYTES, memory_per_cpu * cpu_per_process)
722
+ memory_scope = "per_task_from_per_cpu"
723
+ elif memory_per_node is not None:
724
+ memory_effective = memory_per_node
725
+ memory_scope = "shared_per_node"
726
+ if tasks_per_node is None or tasks_per_node > 1:
727
+ _warning(
728
+ warning_records,
729
+ "SLURM_MEMORY_SHARED",
730
+ "scheduler",
731
+ "Slurm per-node memory is shared; it is only an upper bound for this process.",
732
+ severity="info",
733
+ )
734
+
735
+ gpus_per_task = _parse_slurm_count(present.get("SLURM_GPUS_PER_TASK"))
736
+ gpus_on_node = _parse_slurm_count(present.get("SLURM_GPUS_ON_NODE"))
737
+ requested_gpus = _parse_slurm_count(present.get("SLURM_GPUS"))
738
+
739
+ _warning(
740
+ warning_records,
741
+ "SLURM_ENFORCEMENT_UNKNOWN",
742
+ "scheduler",
743
+ "Allocation variables do not prove task affinity or cgroup enforcement.",
744
+ severity="info",
745
+ )
746
+ if cpus_per_task is None and cpus_on_node is not None and tasks_per_node != 1:
747
+ _warning(
748
+ warning_records,
749
+ "SLURM_CPU_SCOPE_SHARED",
750
+ "scheduler",
751
+ "Node CPU allocation was not treated as a per-process limit.",
752
+ severity="info",
753
+ )
754
+ _provenance(provenance_records, "scheduler", "named_slurm_environment", "ok")
755
+ return {
756
+ "allocation": {
757
+ "cpu_per_process": cpu_per_process,
758
+ "cpus_on_node": cpus_on_node,
759
+ "first_job_cpus_per_node": first_job_cpus,
760
+ "gpus_per_process": gpus_per_task,
761
+ "gpus_on_node": gpus_on_node,
762
+ "gpus_requested": requested_gpus,
763
+ "memory_effective_bytes": memory_effective,
764
+ "memory_scope": memory_scope,
765
+ "tasks": tasks,
766
+ "tasks_per_node": tasks_per_node,
767
+ },
768
+ "detected": True,
769
+ "enforcement": "unknown",
770
+ "fields_read": sorted(present),
771
+ "kind": "slurm",
772
+ }
773
+
774
+
775
+ def _effective_cpu(
776
+ host: Mapping[str, int | None],
777
+ process: Mapping[str, int | None],
778
+ cgroup: Mapping[str, Any],
779
+ scheduler: Mapping[str, Any],
780
+ ) -> dict[str, Any]:
781
+ candidates: list[tuple[str, float]] = []
782
+ for source, value in (
783
+ ("host_logical", host.get("logical")),
784
+ ("process_affinity", process.get("affinity_logical")),
785
+ ("python_process_count", process.get("python_available_logical")),
786
+ ("cgroup_cpuset", cgroup.get("cpuset_logical")),
787
+ ("cgroup_quota", cgroup.get("cpu_quota_cores")),
788
+ (
789
+ "scheduler_per_process",
790
+ scheduler.get("allocation", {}).get("cpu_per_process"),
791
+ ),
792
+ ):
793
+ if isinstance(value, (int, float)) and not isinstance(value, bool) and value > 0:
794
+ candidates.append((source, float(value)))
795
+ if not candidates:
796
+ return {
797
+ "capacity_cores": None,
798
+ "limiting_sources": [],
799
+ "worker_ceiling": 1,
800
+ }
801
+ capacity = min(value for _, value in candidates)
802
+ limiting = sorted(
803
+ source for source, value in candidates if abs(value - capacity) < 1e-9
804
+ )
805
+ return {
806
+ "capacity_cores": round(capacity, 6),
807
+ "limiting_sources": limiting,
808
+ "worker_ceiling": max(1, min(1024, math.floor(capacity))),
809
+ }
810
+
811
+
812
+ def _parse_linux_meminfo(payload: str) -> dict[str, int | None]:
813
+ values: dict[str, int] = {}
814
+ for line in payload.splitlines():
815
+ match = re.fullmatch(r"([A-Za-z_()]+):\s+(\d+)\s+kB", line.strip())
816
+ if match:
817
+ values[match.group(1)] = int(match.group(2)) * 1024
818
+ return {
819
+ "available": values.get("MemAvailable"),
820
+ "swap_free": values.get("SwapFree"),
821
+ "swap_total": values.get("SwapTotal"),
822
+ "total": values.get("MemTotal"),
823
+ }
824
+
825
+
826
+ def _detect_memory(
827
+ *,
828
+ system: str,
829
+ machine: str,
830
+ psutil_module: Any | None,
831
+ mac_sysctl: Mapping[str, Any],
832
+ cgroup: Mapping[str, Any],
833
+ scheduler: Mapping[str, Any],
834
+ read_text: Callable[[Path], str],
835
+ warnings: list[dict[str, str]],
836
+ provenance: list[dict[str, str]],
837
+ ) -> dict[str, Any]:
838
+ host_total: int | None = None
839
+ host_available: int | None = None
840
+ swap_total: int | None = None
841
+ swap_free: int | None = None
842
+ if psutil_module is not None:
843
+ try:
844
+ memory = psutil_module.virtual_memory()
845
+ host_total = _bounded_nonnegative(memory.total)
846
+ host_available = _bounded_nonnegative(memory.available)
847
+ _provenance(provenance, "memory.host", "psutil.virtual_memory", "ok")
848
+ except (AttributeError, OSError, RuntimeError, ValueError):
849
+ pass
850
+ try:
851
+ swap = psutil_module.swap_memory()
852
+ swap_total = _bounded_nonnegative(swap.total)
853
+ swap_free = _bounded_nonnegative(swap.free)
854
+ _provenance(provenance, "memory.swap", "psutil.swap_memory", "ok")
855
+ except (AttributeError, OSError, RuntimeError, ValueError):
856
+ pass
857
+
858
+ if system == "Linux" and (host_total is None or host_available is None):
859
+ payload = _try_read(read_text, Path("/proc/meminfo"))
860
+ if payload:
861
+ parsed = _parse_linux_meminfo(payload)
862
+ host_total = host_total or parsed["total"]
863
+ host_available = (
864
+ host_available
865
+ if host_available is not None
866
+ else parsed["available"]
867
+ )
868
+ swap_total = swap_total if swap_total is not None else parsed["swap_total"]
869
+ swap_free = swap_free if swap_free is not None else parsed["swap_free"]
870
+ _provenance(provenance, "memory.host", "proc_meminfo", "ok")
871
+ if system == "Darwin" and host_total is None:
872
+ candidate = mac_sysctl.get("memory")
873
+ if isinstance(candidate, int) and candidate > 0:
874
+ host_total = candidate
875
+ _provenance(provenance, "memory.host.total", "sysctl", "ok")
876
+ if host_total is None:
877
+ try:
878
+ pages = os.sysconf("SC_PHYS_PAGES")
879
+ page_size = os.sysconf("SC_PAGE_SIZE")
880
+ candidate = pages * page_size
881
+ if 0 < candidate <= MAX_BYTES:
882
+ host_total = candidate
883
+ _provenance(provenance, "memory.host.total", "os.sysconf", "ok")
884
+ except (AttributeError, OSError, TypeError, ValueError):
885
+ pass
886
+
887
+ if host_total is None:
888
+ _warning(
889
+ warnings,
890
+ "HOST_MEMORY_TOTAL_UNKNOWN",
891
+ "memory",
892
+ "Host memory total could not be determined.",
893
+ )
894
+ if host_available is None:
895
+ _warning(
896
+ warnings,
897
+ "HOST_MEMORY_AVAILABLE_UNKNOWN",
898
+ "memory",
899
+ "Host available memory could not be determined without an allocation probe.",
900
+ severity="info",
901
+ )
902
+
903
+ limit_candidates: list[tuple[str, int]] = []
904
+ available_candidates: list[tuple[str, int]] = []
905
+ for source, value in (
906
+ ("host_total", host_total),
907
+ ("cgroup_memory_max", cgroup.get("memory_max_bytes")),
908
+ (
909
+ "scheduler_memory",
910
+ scheduler.get("allocation", {}).get("memory_effective_bytes"),
911
+ ),
912
+ ):
913
+ if isinstance(value, int) and value >= 0:
914
+ limit_candidates.append((source, value))
915
+ for source, value in (
916
+ ("host_available", host_available),
917
+ ("cgroup_memory_remaining", cgroup.get("memory_available_bytes")),
918
+ (
919
+ "scheduler_memory_upper_bound",
920
+ scheduler.get("allocation", {}).get("memory_effective_bytes"),
921
+ ),
922
+ ):
923
+ if isinstance(value, int) and value >= 0:
924
+ available_candidates.append((source, value))
925
+
926
+ effective_limit = (
927
+ min(value for _, value in limit_candidates) if limit_candidates else None
928
+ )
929
+ effective_available = (
930
+ min(value for _, value in available_candidates)
931
+ if available_candidates
932
+ else None
933
+ )
934
+ if (
935
+ effective_limit is not None
936
+ and effective_available is not None
937
+ and effective_available > effective_limit
938
+ ):
939
+ effective_available = effective_limit
940
+ limiting_sources = (
941
+ sorted(
942
+ source
943
+ for source, value in limit_candidates
944
+ if value == effective_limit
945
+ )
946
+ if effective_limit is not None
947
+ else []
948
+ )
949
+ available_sources = (
950
+ sorted(
951
+ source
952
+ for source, value in available_candidates
953
+ if value == effective_available
954
+ )
955
+ if effective_available is not None
956
+ else []
957
+ )
958
+ unified = system == "Darwin" and machine.lower() in {"arm64", "aarch64"}
959
+ return {
960
+ "cgroup_v2": {
961
+ "available_bytes": cgroup.get("memory_available_bytes"),
962
+ "current_bytes": cgroup.get("memory_current_bytes"),
963
+ "high_bytes": cgroup.get("memory_high_bytes"),
964
+ "max_bytes": cgroup.get("memory_max_bytes"),
965
+ },
966
+ "effective": {
967
+ "available_bytes": effective_available,
968
+ "available_limiting_sources": available_sources,
969
+ "hard_limit_bytes": effective_limit,
970
+ "hard_limit_sources": limiting_sources,
971
+ "pressure_threshold_bytes": cgroup.get("memory_high_bytes"),
972
+ },
973
+ "host": {
974
+ "available_bytes": host_available,
975
+ "total_bytes": host_total,
976
+ },
977
+ "model": "unified_cpu_gpu" if unified else "system_ram",
978
+ "swap": {"free_bytes": swap_free, "total_bytes": swap_total},
979
+ }
980
+
981
+
982
+ def _detect_disk(
983
+ warnings: list[dict[str, str]],
984
+ provenance: list[dict[str, str]],
985
+ ) -> dict[str, Any]:
986
+ try:
987
+ usage = shutil.disk_usage(Path.cwd())
988
+ total = _bounded_nonnegative(usage.total)
989
+ free = _bounded_nonnegative(usage.free)
990
+ if total is None or free is None or free > total:
991
+ raise ValueError("invalid bounded disk values")
992
+ _provenance(provenance, "disk", "shutil.disk_usage", "ok")
993
+ except (OSError, ValueError):
994
+ _warning(
995
+ warnings,
996
+ "DISK_CAPACITY_UNKNOWN",
997
+ "disk",
998
+ "Working filesystem capacity could not be read.",
999
+ )
1000
+ _provenance(provenance, "disk", "shutil.disk_usage", "unavailable")
1001
+ return {
1002
+ "capacity_bytes": None,
1003
+ "free_bytes": None,
1004
+ "scope": "working_filesystem_path_redacted",
1005
+ "user_available_bytes": None,
1006
+ "writable": None,
1007
+ "writability_check": "not_performed",
1008
+ }
1009
+
1010
+ user_available = free
1011
+ if hasattr(os, "statvfs"):
1012
+ try:
1013
+ statvfs = os.statvfs(Path.cwd())
1014
+ candidate = _bounded_nonnegative(
1015
+ statvfs.f_bavail * statvfs.f_frsize
1016
+ )
1017
+ if candidate is not None:
1018
+ user_available = candidate
1019
+ _provenance(
1020
+ provenance, "disk.user_available", "os.statvfs", "ok"
1021
+ )
1022
+ except (OSError, TypeError, ValueError):
1023
+ pass
1024
+ writable = os.access(Path.cwd(), os.W_OK)
1025
+ if not writable:
1026
+ _warning(
1027
+ warnings,
1028
+ "WORKING_DIRECTORY_NOT_WRITABLE",
1029
+ "disk",
1030
+ "The working directory failed the non-writing access check.",
1031
+ )
1032
+ return {
1033
+ "capacity_bytes": total,
1034
+ "free_bytes": free,
1035
+ "scope": "working_filesystem_path_redacted",
1036
+ "user_available_bytes": max(0, min(free, user_available)),
1037
+ "writable": bool(writable),
1038
+ "writability_check": "os_access_only_no_write_probe",
1039
+ }
1040
+
1041
+
1042
+ def _mib_to_bytes(value: str) -> int | None:
1043
+ try:
1044
+ amount = float(value)
1045
+ except ValueError:
1046
+ return None
1047
+ if not math.isfinite(amount) or amount < 0:
1048
+ return None
1049
+ result = round(amount * MIB)
1050
+ return result if result <= MAX_BYTES else None
1051
+
1052
+
1053
+ def parse_nvidia_csv(payload: str) -> list[dict[str, Any]]:
1054
+ devices: list[dict[str, Any]] = []
1055
+ try:
1056
+ rows = csv.reader(io.StringIO(payload))
1057
+ for row in rows:
1058
+ if len(row) not in {5, 6}:
1059
+ continue
1060
+ index = _bounded_nonnegative(row[0])
1061
+ if index is None or index > 4096:
1062
+ continue
1063
+ devices.append(
1064
+ {
1065
+ "backend_candidate": "cuda",
1066
+ "compute_capability": (
1067
+ _safe_text(row[5], 16) if len(row) == 6 else None
1068
+ ),
1069
+ "device_class": "gpu",
1070
+ "device_permission": "not_tested",
1071
+ "driver_version": _safe_text(row[4], 64),
1072
+ "local_index": index,
1073
+ "management_query": "visible",
1074
+ "memory": {
1075
+ "dedicated_free_bytes": _mib_to_bytes(row[3].strip()),
1076
+ "dedicated_total_bytes": _mib_to_bytes(row[2].strip()),
1077
+ "model": "dedicated",
1078
+ },
1079
+ "name": _safe_text(row[1]) or "NVIDIA GPU",
1080
+ "runtime_compatibility": "not_tested",
1081
+ "vendor": "nvidia",
1082
+ }
1083
+ )
1084
+ except csv.Error:
1085
+ return []
1086
+ return sorted(devices, key=lambda item: item["local_index"])
1087
+
1088
+
1089
+ def _recursive_scalar(
1090
+ value: Any,
1091
+ accepted_keys: set[str],
1092
+ ) -> tuple[str, Any] | None:
1093
+ if isinstance(value, dict):
1094
+ for key, child in value.items():
1095
+ normalized = re.sub(r"[^a-z0-9]+", "_", str(key).lower()).strip("_")
1096
+ if normalized in accepted_keys and isinstance(child, (str, int, float)):
1097
+ return normalized, child
1098
+ for child in value.values():
1099
+ found = _recursive_scalar(child, accepted_keys)
1100
+ if found is not None:
1101
+ return found
1102
+ elif isinstance(value, list):
1103
+ for child in value:
1104
+ found = _recursive_scalar(child, accepted_keys)
1105
+ if found is not None:
1106
+ return found
1107
+ return None
1108
+
1109
+
1110
+ def _amd_entries(data: Any) -> list[tuple[int, dict[str, Any]]]:
1111
+ entries: list[tuple[int, dict[str, Any]]] = []
1112
+ if isinstance(data, list):
1113
+ for index, item in enumerate(data):
1114
+ if isinstance(item, dict) and (
1115
+ "gpu" in {str(key).lower() for key in item}
1116
+ or "asic" in {str(key).lower() for key in item}
1117
+ ):
1118
+ gpu_value = next(
1119
+ (
1120
+ value
1121
+ for key, value in item.items()
1122
+ if str(key).lower() == "gpu"
1123
+ ),
1124
+ index,
1125
+ )
1126
+ gpu_index = _bounded_nonnegative(gpu_value)
1127
+ entries.append((gpu_index if gpu_index is not None else index, item))
1128
+ elif isinstance(data, dict):
1129
+ for key, item in data.items():
1130
+ normalized = re.sub(
1131
+ r"[^a-z0-9]+", "_", str(key).lower()
1132
+ ).strip("_")
1133
+ if normalized in {"gpu_data", "gpu_devices", "gpus"}:
1134
+ entries.extend(_amd_entries(item))
1135
+ for key, item in data.items():
1136
+ match = re.fullmatch(r"(?:card|gpu)\s*(\d+)", str(key), re.IGNORECASE)
1137
+ if match and isinstance(item, dict):
1138
+ entries.append((int(match.group(1)), item))
1139
+ if not entries and "gpu" in {str(key).lower() for key in data}:
1140
+ gpu_value = next(
1141
+ value for key, value in data.items() if str(key).lower() == "gpu"
1142
+ )
1143
+ if not isinstance(gpu_value, (dict, list)):
1144
+ gpu_index = _bounded_nonnegative(gpu_value)
1145
+ entries.append((gpu_index or 0, data))
1146
+ deduplicated: dict[int, dict[str, Any]] = {}
1147
+ for index, entry in entries:
1148
+ deduplicated.setdefault(index, entry)
1149
+ return sorted(deduplicated.items())
1150
+
1151
+
1152
+ def _amd_memory_bytes(entry: Mapping[str, Any]) -> int | None:
1153
+ for key, value in entry.items():
1154
+ normalized = re.sub(r"[^a-z0-9]+", "_", str(key).lower()).strip("_")
1155
+ if (
1156
+ "vram" in normalized
1157
+ and ("total" in normalized or "size" in normalized)
1158
+ and isinstance(value, (str, int, float))
1159
+ ):
1160
+ match = re.search(r"(\d+(?:\.\d+)?)", str(value))
1161
+ if not match:
1162
+ continue
1163
+ amount = float(match.group(1))
1164
+ unit_context = f"{normalized} {str(value).lower()}"
1165
+ if "gib" in unit_context or "gb" in unit_context:
1166
+ multiplier = GIB
1167
+ elif "mib" in unit_context or "mb" in unit_context:
1168
+ multiplier = MIB
1169
+ else:
1170
+ multiplier = 1
1171
+ result = round(amount * multiplier)
1172
+ if 0 <= result <= MAX_BYTES:
1173
+ return result
1174
+ if isinstance(value, dict):
1175
+ nested = _amd_memory_bytes(value)
1176
+ if nested is not None:
1177
+ return nested
1178
+ return None
1179
+
1180
+
1181
+ def parse_amd_json(payload: str) -> list[dict[str, Any]]:
1182
+ try:
1183
+ data = json.loads(payload)
1184
+ entries = _amd_entries(data)
1185
+ except (json.JSONDecodeError, RecursionError):
1186
+ return []
1187
+ devices: list[dict[str, Any]] = []
1188
+ name_keys = {
1189
+ "asic_market_name",
1190
+ "card_model",
1191
+ "card_series",
1192
+ "market_name",
1193
+ "product_name",
1194
+ }
1195
+ for index, entry in entries:
1196
+ try:
1197
+ found = _recursive_scalar(entry, name_keys)
1198
+ total_memory = _amd_memory_bytes(entry)
1199
+ except RecursionError:
1200
+ continue
1201
+ name = _safe_text(found[1]) if found else None
1202
+ devices.append(
1203
+ {
1204
+ "backend_candidate": "rocm",
1205
+ "compute_capability": None,
1206
+ "device_class": "gpu",
1207
+ "device_permission": "not_tested",
1208
+ "driver_version": None,
1209
+ "local_index": index,
1210
+ "management_query": "visible",
1211
+ "memory": {
1212
+ "dedicated_free_bytes": None,
1213
+ "dedicated_total_bytes": total_memory,
1214
+ "model": "dedicated_or_hbm",
1215
+ },
1216
+ "name": name or "AMD GPU",
1217
+ "runtime_compatibility": "not_tested",
1218
+ "vendor": "amd",
1219
+ }
1220
+ )
1221
+ return sorted(devices, key=lambda item: item["local_index"])
1222
+
1223
+
1224
+ def parse_apple_profiler_json(
1225
+ payload: str,
1226
+ *,
1227
+ machine: str,
1228
+ ) -> list[dict[str, Any]]:
1229
+ try:
1230
+ data = json.loads(payload)
1231
+ except (json.JSONDecodeError, RecursionError):
1232
+ return []
1233
+ entries = data.get("SPDisplaysDataType") if isinstance(data, dict) else None
1234
+ if not isinstance(entries, list):
1235
+ return []
1236
+ unified = machine.lower() in {"arm64", "aarch64"}
1237
+ devices: list[dict[str, Any]] = []
1238
+ for index, entry in enumerate(entries):
1239
+ if not isinstance(entry, dict):
1240
+ continue
1241
+ name = _safe_text(entry.get("sppci_model") or entry.get("_name"))
1242
+ core_value = (
1243
+ entry.get("sppci_cores")
1244
+ or entry.get("spdisplays_gpu_cores")
1245
+ or entry.get("_spdisplays_gpu_cores")
1246
+ )
1247
+ devices.append(
1248
+ {
1249
+ "backend_candidate": "metal",
1250
+ "compute_capability": None,
1251
+ "device_class": "integrated_gpu" if unified else "gpu",
1252
+ "device_permission": "not_tested",
1253
+ "driver_version": None,
1254
+ "gpu_cores": _bounded_nonnegative(core_value),
1255
+ "local_index": index,
1256
+ "management_query": "visible",
1257
+ "memory": {
1258
+ "dedicated_free_bytes": None,
1259
+ "dedicated_total_bytes": None,
1260
+ "model": "unified" if unified else "unknown",
1261
+ },
1262
+ "name": name or "Apple display accelerator",
1263
+ "runtime_compatibility": "not_tested",
1264
+ "vendor": "apple",
1265
+ }
1266
+ )
1267
+ return devices
1268
+
1269
+
1270
+ def _visibility_summary(environ: Mapping[str, str]) -> dict[str, Any]:
1271
+ summary: dict[str, Any] = {}
1272
+ for key in ACCELERATOR_ENV_KEYS:
1273
+ if key not in environ:
1274
+ summary[key] = {
1275
+ "entry_count": None,
1276
+ "set": False,
1277
+ "state": "unset",
1278
+ "value_redacted": True,
1279
+ }
1280
+ continue
1281
+ raw = environ[key] if isinstance(environ[key], str) else ""
1282
+ if len(raw) > 4096:
1283
+ summary[key] = {
1284
+ "entry_count": None,
1285
+ "set": True,
1286
+ "state": "invalid_or_oversized",
1287
+ "value_redacted": True,
1288
+ }
1289
+ continue
1290
+ stripped = raw.strip()
1291
+ lowered = stripped.lower()
1292
+ if lowered in {"", "-1", "none", "void"}:
1293
+ state, count = "none", 0
1294
+ elif lowered == "all":
1295
+ state, count = "all", None
1296
+ else:
1297
+ entries = {
1298
+ item.strip() for item in stripped.split(",") if item.strip()
1299
+ }
1300
+ state = "restricted" if entries else "none"
1301
+ count = min(len(entries), 4096)
1302
+ summary[key] = {
1303
+ "entry_count": count,
1304
+ "set": True,
1305
+ "state": state,
1306
+ "value_redacted": True,
1307
+ }
1308
+ return summary
1309
+
1310
+
1311
+ def _accelerator_upper_bounds(
1312
+ devices: Sequence[Mapping[str, Any]],
1313
+ visibility: Mapping[str, Mapping[str, Any]],
1314
+ scheduler: Mapping[str, Any],
1315
+ ) -> dict[str, int | None]:
1316
+ result: dict[str, int | None] = {}
1317
+ scheduler_count = scheduler.get("allocation", {}).get("gpus_per_process")
1318
+ if scheduler_count is None:
1319
+ scheduler_count = scheduler.get("allocation", {}).get("gpus_on_node")
1320
+ environment_keys = {
1321
+ "cuda": ("CUDA_VISIBLE_DEVICES", "NVIDIA_VISIBLE_DEVICES"),
1322
+ "rocm": ("ROCR_VISIBLE_DEVICES", "HIP_VISIBLE_DEVICES", "CUDA_VISIBLE_DEVICES"),
1323
+ "metal": (),
1324
+ }
1325
+ for backend, keys in environment_keys.items():
1326
+ query_count = sum(
1327
+ 1 for device in devices if device.get("backend_candidate") == backend
1328
+ )
1329
+ if query_count == 0:
1330
+ result[backend] = None
1331
+ continue
1332
+ limits = [query_count]
1333
+ if isinstance(scheduler_count, int):
1334
+ limits.append(scheduler_count)
1335
+ for key in keys:
1336
+ item = visibility.get(key, {})
1337
+ if item.get("state") == "none":
1338
+ limits.append(0)
1339
+ elif (
1340
+ item.get("state") == "restricted"
1341
+ and isinstance(item.get("entry_count"), int)
1342
+ ):
1343
+ limits.append(item["entry_count"])
1344
+ result[backend] = min(limits)
1345
+ return result
1346
+
1347
+
1348
+ def _record_probe_failure(
1349
+ result: Mapping[str, Any],
1350
+ *,
1351
+ code: str,
1352
+ component: str,
1353
+ tool: str,
1354
+ warnings: list[dict[str, str]],
1355
+ provenance: list[dict[str, str]],
1356
+ ) -> None:
1357
+ status = str(result.get("status", "error"))
1358
+ _provenance(provenance, component, tool, status)
1359
+ if status != "not_found":
1360
+ _warning(
1361
+ warnings,
1362
+ code,
1363
+ component,
1364
+ f"{tool} read-only query did not complete successfully ({status}).",
1365
+ severity="info" if status in {"start_error", "error"} else "warning",
1366
+ )
1367
+
1368
+
1369
+ def _detect_accelerators(
1370
+ *,
1371
+ system: str,
1372
+ machine: str,
1373
+ environ: Mapping[str, str],
1374
+ scheduler: Mapping[str, Any],
1375
+ run_command: Callable[..., dict[str, Any]],
1376
+ warnings: list[dict[str, str]],
1377
+ provenance: list[dict[str, str]],
1378
+ ) -> dict[str, Any]:
1379
+ devices: list[dict[str, Any]] = []
1380
+
1381
+ nvidia = run_command(NVIDIA_QUERY, timeout=4.0)
1382
+ nvidia_devices = parse_nvidia_csv(nvidia.get("stdout", "")) if nvidia["status"] == "ok" else []
1383
+ if nvidia["status"] == "error":
1384
+ fallback = run_command(NVIDIA_QUERY_FALLBACK, timeout=4.0)
1385
+ if fallback["status"] == "ok":
1386
+ nvidia = fallback
1387
+ nvidia_devices = parse_nvidia_csv(fallback.get("stdout", ""))
1388
+ if nvidia["status"] == "ok":
1389
+ _provenance(provenance, "accelerators.nvidia", "nvidia-smi", "ok")
1390
+ if nvidia.get("stdout", "").strip() and not nvidia_devices:
1391
+ _warning(
1392
+ warnings,
1393
+ "NVIDIA_OUTPUT_PARSE_FAILED",
1394
+ "accelerators",
1395
+ "nvidia-smi returned an unexpected bounded CSV response.",
1396
+ )
1397
+ else:
1398
+ _record_probe_failure(
1399
+ nvidia,
1400
+ code="NVIDIA_QUERY_FAILED",
1401
+ component="accelerators.nvidia",
1402
+ tool="nvidia-smi",
1403
+ warnings=warnings,
1404
+ provenance=provenance,
1405
+ )
1406
+ devices.extend(nvidia_devices)
1407
+
1408
+ amd = run_command(AMD_SMI_QUERY, timeout=4.0)
1409
+ amd_devices = parse_amd_json(amd.get("stdout", "")) if amd["status"] == "ok" else []
1410
+ amd_tool = "amd-smi"
1411
+ if not amd_devices and amd["status"] in {"not_found", "error", "start_error"}:
1412
+ amd = run_command(ROCM_SMI_QUERY, timeout=4.0)
1413
+ amd_tool = "rocm-smi"
1414
+ amd_devices = parse_amd_json(amd.get("stdout", "")) if amd["status"] == "ok" else []
1415
+ if amd["status"] == "ok":
1416
+ _provenance(provenance, "accelerators.amd", amd_tool, "ok")
1417
+ if amd.get("stdout", "").strip() and not amd_devices:
1418
+ _warning(
1419
+ warnings,
1420
+ "AMD_OUTPUT_PARSE_FAILED",
1421
+ "accelerators",
1422
+ f"{amd_tool} returned an unexpected bounded JSON response.",
1423
+ )
1424
+ else:
1425
+ _record_probe_failure(
1426
+ amd,
1427
+ code="AMD_QUERY_FAILED",
1428
+ component="accelerators.amd",
1429
+ tool=amd_tool,
1430
+ warnings=warnings,
1431
+ provenance=provenance,
1432
+ )
1433
+ devices.extend(amd_devices)
1434
+
1435
+ if system == "Darwin":
1436
+ apple = run_command(APPLE_DISPLAY_QUERY, timeout=5.0)
1437
+ apple_devices = (
1438
+ parse_apple_profiler_json(apple.get("stdout", ""), machine=machine)
1439
+ if apple["status"] == "ok"
1440
+ else []
1441
+ )
1442
+ if apple["status"] == "ok":
1443
+ _provenance(
1444
+ provenance, "accelerators.apple", "system_profiler", "ok"
1445
+ )
1446
+ else:
1447
+ _record_probe_failure(
1448
+ apple,
1449
+ code="APPLE_ACCELERATOR_QUERY_FAILED",
1450
+ component="accelerators.apple",
1451
+ tool="system_profiler",
1452
+ warnings=warnings,
1453
+ provenance=provenance,
1454
+ )
1455
+ if (
1456
+ not apple_devices
1457
+ and machine.lower() in {"arm64", "aarch64"}
1458
+ ):
1459
+ apple_devices = [
1460
+ {
1461
+ "backend_candidate": "metal",
1462
+ "compute_capability": None,
1463
+ "device_class": "integrated_gpu",
1464
+ "device_permission": "not_tested",
1465
+ "driver_version": None,
1466
+ "gpu_cores": None,
1467
+ "local_index": 0,
1468
+ "management_query": "inferred_from_apple_silicon_platform",
1469
+ "memory": {
1470
+ "dedicated_free_bytes": None,
1471
+ "dedicated_total_bytes": None,
1472
+ "model": "unified",
1473
+ },
1474
+ "name": "Apple silicon integrated GPU",
1475
+ "runtime_compatibility": "not_tested",
1476
+ "vendor": "apple",
1477
+ }
1478
+ ]
1479
+ devices.extend(apple_devices)
1480
+
1481
+ devices.sort(
1482
+ key=lambda item: (
1483
+ str(item.get("backend_candidate")),
1484
+ int(item.get("local_index", 0)),
1485
+ str(item.get("name")),
1486
+ )
1487
+ )
1488
+ if len(devices) > MAX_DEVICES:
1489
+ devices = devices[:MAX_DEVICES]
1490
+ _warning(
1491
+ warnings,
1492
+ "ACCELERATOR_DEVICE_LIST_BOUNDED",
1493
+ "accelerators",
1494
+ f"Accelerator output was limited to {MAX_DEVICES} devices.",
1495
+ )
1496
+ visibility = _visibility_summary(environ)
1497
+ if devices:
1498
+ _warning(
1499
+ warnings,
1500
+ "ACCELERATOR_RUNTIME_NOT_TESTED",
1501
+ "accelerators",
1502
+ "Management visibility does not prove permission or framework/runtime compatibility.",
1503
+ severity="info",
1504
+ )
1505
+ counts = {
1506
+ backend: sum(
1507
+ 1 for device in devices if device.get("backend_candidate") == backend
1508
+ )
1509
+ for backend in ("cuda", "metal", "rocm")
1510
+ }
1511
+ return {
1512
+ "candidate_counts": counts,
1513
+ "candidate_upper_bounds": _accelerator_upper_bounds(
1514
+ devices, visibility, scheduler
1515
+ ),
1516
+ "devices": devices,
1517
+ "runtime_usable_devices": None,
1518
+ "visibility_environment": visibility,
1519
+ }
1520
+
1521
+
1522
+ def _container_context(
1523
+ *,
1524
+ cgroup: Mapping[str, Any],
1525
+ exists: Callable[[Path], bool] = Path.exists,
1526
+ ) -> dict[str, Any]:
1527
+ evidence: list[str] = []
1528
+ for marker, label in (
1529
+ (Path("/.dockerenv"), "docker_marker"),
1530
+ (Path("/run/.containerenv"), "containerenv_marker"),
1531
+ ):
1532
+ try:
1533
+ if exists(marker):
1534
+ evidence.append(label)
1535
+ except OSError:
1536
+ pass
1537
+ if cgroup.get("detected") and any(
1538
+ cgroup.get(key) is not None
1539
+ for key in ("cpu_quota_cores", "cpuset_logical", "memory_max_bytes")
1540
+ ):
1541
+ evidence.append("cgroup_limit")
1542
+ return {
1543
+ "detected": bool(
1544
+ {"docker_marker", "containerenv_marker"}.intersection(evidence)
1545
+ ),
1546
+ "evidence": sorted(evidence),
1547
+ "runtime": (
1548
+ "docker_or_compatible"
1549
+ if "docker_marker" in evidence
1550
+ else "oci_compatible"
1551
+ if "containerenv_marker" in evidence
1552
+ else None
1553
+ ),
1554
+ }
1555
+
1556
+
1557
+ def _observed_at() -> str:
1558
+ return (
1559
+ dt.datetime.now(dt.timezone.utc)
1560
+ .replace(microsecond=0)
1561
+ .isoformat()
1562
+ .replace("+00:00", "Z")
1563
+ )
1564
+
1565
+
1566
+ def collect_snapshot(
1567
+ *,
1568
+ skip_accelerators: bool = False,
1569
+ observed_at: str | None = None,
1570
+ environ: Mapping[str, str] | None = None,
1571
+ psutil_module: Any = _AUTO,
1572
+ read_text: Callable[[Path], str] = _read_bounded_text,
1573
+ run_command: Callable[..., dict[str, Any]] = _run_bounded_command,
1574
+ ) -> dict[str, Any]:
1575
+ """Collect one snapshot; individual probe failures remain warnings."""
1576
+ warnings: list[dict[str, str]] = []
1577
+ provenance: list[dict[str, str]] = []
1578
+ environment = os.environ if environ is None else environ
1579
+ system = _safe_text(platform.system(), 64) or "Unknown"
1580
+ machine = _safe_text(platform.machine(), 64) or "unknown"
1581
+
1582
+ if psutil_module is _AUTO:
1583
+ psutil_module = _load_psutil(warnings, provenance)
1584
+ elif psutil_module is None:
1585
+ _provenance(provenance, "inventory.psutil", "injected", "unavailable")
1586
+
1587
+ mac_sysctl: dict[str, Any] = {}
1588
+ if system == "Darwin":
1589
+ mac_sysctl = _mac_sysctl_values(run_command, warnings, provenance)
1590
+ host_cpu = _detect_cpu_inventory(
1591
+ system=system,
1592
+ psutil_module=psutil_module,
1593
+ mac_sysctl=mac_sysctl,
1594
+ read_text=read_text,
1595
+ warnings=warnings,
1596
+ provenance=provenance,
1597
+ )
1598
+ process_cpu = _detect_process_cpu_count(
1599
+ psutil_module=psutil_module,
1600
+ warnings=warnings,
1601
+ provenance=provenance,
1602
+ )
1603
+ cgroup = (
1604
+ detect_cgroup_v2(
1605
+ read_text=read_text,
1606
+ warnings=warnings,
1607
+ provenance=provenance,
1608
+ )
1609
+ if system == "Linux"
1610
+ else {
1611
+ "detected": False,
1612
+ "cpu_quota_cores": None,
1613
+ "cpuset_logical": None,
1614
+ "memory_available_bytes": None,
1615
+ "memory_current_bytes": None,
1616
+ "memory_high_bytes": None,
1617
+ "memory_max_bytes": None,
1618
+ "scope": "not_applicable",
1619
+ }
1620
+ )
1621
+ scheduler = detect_scheduler(
1622
+ environment,
1623
+ warnings=warnings,
1624
+ provenance=provenance,
1625
+ )
1626
+ cpu = {
1627
+ "cgroup_v2": {
1628
+ "cpuset_logical": cgroup.get("cpuset_logical"),
1629
+ "quota_cores": cgroup.get("cpu_quota_cores"),
1630
+ },
1631
+ "effective": _effective_cpu(host_cpu, process_cpu, cgroup, scheduler),
1632
+ "host": host_cpu,
1633
+ "process": process_cpu,
1634
+ }
1635
+ memory = _detect_memory(
1636
+ system=system,
1637
+ machine=machine,
1638
+ psutil_module=psutil_module,
1639
+ mac_sysctl=mac_sysctl,
1640
+ cgroup=cgroup,
1641
+ scheduler=scheduler,
1642
+ read_text=read_text,
1643
+ warnings=warnings,
1644
+ provenance=provenance,
1645
+ )
1646
+ if skip_accelerators:
1647
+ accelerators = {
1648
+ "candidate_counts": {"cuda": 0, "metal": 0, "rocm": 0},
1649
+ "candidate_upper_bounds": {
1650
+ "cuda": None,
1651
+ "metal": None,
1652
+ "rocm": None,
1653
+ },
1654
+ "devices": [],
1655
+ "runtime_usable_devices": None,
1656
+ "visibility_environment": _visibility_summary(environment),
1657
+ }
1658
+ _provenance(provenance, "accelerators", "user_option", "skipped")
1659
+ else:
1660
+ accelerators = _detect_accelerators(
1661
+ system=system,
1662
+ machine=machine,
1663
+ environ=environment,
1664
+ scheduler=scheduler,
1665
+ run_command=run_command,
1666
+ warnings=warnings,
1667
+ provenance=provenance,
1668
+ )
1669
+
1670
+ disk = _detect_disk(warnings, provenance)
1671
+ warnings.sort(
1672
+ key=lambda item: (
1673
+ item["component"],
1674
+ item["code"],
1675
+ item["message"],
1676
+ )
1677
+ )
1678
+ provenance.sort(
1679
+ key=lambda item: (item["component"], item["source"], item["status"])
1680
+ )
1681
+ completeness = (
1682
+ "partial"
1683
+ if any(item["severity"] == "warning" for item in warnings)
1684
+ else "complete_with_informational_notes"
1685
+ if warnings
1686
+ else "complete"
1687
+ )
1688
+ return {
1689
+ "accelerators": accelerators,
1690
+ "cgroup_v2": {
1691
+ "detected": cgroup.get("detected"),
1692
+ "scope": cgroup.get("scope"),
1693
+ },
1694
+ "completeness": completeness,
1695
+ "container": _container_context(cgroup=cgroup),
1696
+ "cpu": cpu,
1697
+ "disk": disk,
1698
+ "memory": memory,
1699
+ "observed_at": observed_at or _observed_at(),
1700
+ "platform": {
1701
+ "machine": machine,
1702
+ "python_version": _safe_text(platform.python_version(), 64) or "unknown",
1703
+ "system": system,
1704
+ },
1705
+ "privacy": {
1706
+ "absolute_paths_included": False,
1707
+ "environment_values_included": False,
1708
+ "hostnames_included": False,
1709
+ "identifiers_redacted_by_default": True,
1710
+ },
1711
+ "provenance": provenance,
1712
+ "scheduler": scheduler,
1713
+ "schema_version": SCHEMA_VERSION,
1714
+ "snapshot_kind": "effective_resource_snapshot",
1715
+ "warnings": warnings,
1716
+ }
1717
+
1718
+
1719
+ def detect_all_resources(output_path: str | None = None) -> dict[str, Any]:
1720
+ """Compatibility API: collect a snapshot and optionally write it safely."""
1721
+ snapshot = collect_snapshot()
1722
+ if output_path is not None:
1723
+ emit_json(snapshot, output_path)
1724
+ return snapshot
1725
+
1726
+
1727
+ def build_parser() -> argparse.ArgumentParser:
1728
+ parser = argparse.ArgumentParser(
1729
+ description=(
1730
+ "Report host inventory and effective process limits as deterministic JSON"
1731
+ )
1732
+ )
1733
+ parser.add_argument(
1734
+ "--output",
1735
+ metavar="FILE.json",
1736
+ help=(
1737
+ "write a private JSON file in the current directory; default: stdout"
1738
+ ),
1739
+ )
1740
+ parser.add_argument(
1741
+ "--force",
1742
+ action="store_true",
1743
+ help="replace an existing explicit output file",
1744
+ )
1745
+ parser.add_argument(
1746
+ "--skip-accelerators",
1747
+ action="store_true",
1748
+ help="skip bounded accelerator management queries",
1749
+ )
1750
+ return parser
1751
+
1752
+
1753
+ def main(argv: Sequence[str] | None = None) -> int:
1754
+ parser = build_parser()
1755
+ args = parser.parse_args(argv)
1756
+ if args.force and not args.output:
1757
+ parser.error("--force requires --output")
1758
+ try:
1759
+ snapshot = collect_snapshot(skip_accelerators=args.skip_accelerators)
1760
+ emit_json(snapshot, args.output, force=args.force)
1761
+ except ResourceToolError as exc:
1762
+ return cli_error(parser, exc)
1763
+ return 0
1764
+
1765
+
1766
+ if __name__ == "__main__":
1767
+ raise SystemExit(main())