pi-skill-search 0.1.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 (299) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/LICENSE +21 -0
  3. package/README.md +97 -0
  4. package/index.ts +163 -0
  5. package/package.json +48 -0
  6. package/skills/adaptyv/SKILL.md +92 -0
  7. package/skills/add-community-extension/SKILL.md +85 -0
  8. package/skills/aeon/SKILL.md +111 -0
  9. package/skills/ai-slop-cleaner/SKILL.md +118 -0
  10. package/skills/anndata/SKILL.md +83 -0
  11. package/skills/arboreto/SKILL.md +107 -0
  12. package/skills/ask/SKILL.md +55 -0
  13. package/skills/astropy/SKILL.md +30 -0
  14. package/skills/async-worker-recovery/SKILL.md +44 -0
  15. package/skills/autopilot/SKILL.md +63 -0
  16. package/skills/autoresearch/SKILL.md +64 -0
  17. package/skills/autoskill/SKILL.md +116 -0
  18. package/skills/babysit/SKILL.md +43 -0
  19. package/skills/benchling-integration/SKILL.md +106 -0
  20. package/skills/bgpt-paper-search/SKILL.md +67 -0
  21. package/skills/biopython/SKILL.md +29 -0
  22. package/skills/bioservices/SKILL.md +96 -0
  23. package/skills/brainstorming/SKILL.md +104 -0
  24. package/skills/cancel/SKILL.md +85 -0
  25. package/skills/ccg/SKILL.md +87 -0
  26. package/skills/celery-pipeline/SKILL.md +30 -0
  27. package/skills/cellxgene-census/SKILL.md +104 -0
  28. package/skills/child-pi-spawning/SKILL.md +85 -0
  29. package/skills/cirq/SKILL.md +113 -0
  30. package/skills/citation-management/SKILL.md +91 -0
  31. package/skills/clinical-decision-support/SKILL.md +117 -0
  32. package/skills/clinical-reports/SKILL.md +118 -0
  33. package/skills/clinical-trial/SKILL.md +28 -0
  34. package/skills/cobrapy/SKILL.md +116 -0
  35. package/skills/configure-notifications/SKILL.md +85 -0
  36. package/skills/consciousness-council/SKILL.md +120 -0
  37. package/skills/context-artifact-hygiene/SKILL.md +85 -0
  38. package/skills/context-mode-ops/SKILL.md +87 -0
  39. package/skills/dask/SKILL.md +85 -0
  40. package/skills/database-lookup/SKILL.md +118 -0
  41. package/skills/datamol/SKILL.md +108 -0
  42. package/skills/debug/SKILL.md +32 -0
  43. package/skills/deep-dive/SKILL.md +114 -0
  44. package/skills/deep-interview/SKILL.md +90 -0
  45. package/skills/deepchem/SKILL.md +117 -0
  46. package/skills/deepinit/SKILL.md +100 -0
  47. package/skills/deeptools/SKILL.md +118 -0
  48. package/skills/delegation-patterns/SKILL.md +56 -0
  49. package/skills/depmap/SKILL.md +94 -0
  50. package/skills/dhdna-profiler/SKILL.md +86 -0
  51. package/skills/diffdock/SKILL.md +101 -0
  52. package/skills/dispatching-parallel-agents/SKILL.md +119 -0
  53. package/skills/dnanexus-integration/SKILL.md +118 -0
  54. package/skills/do/SKILL.md +48 -0
  55. package/skills/docker-sandbox/SKILL.md +29 -0
  56. package/skills/docx/SKILL.md +119 -0
  57. package/skills/esm/SKILL.md +116 -0
  58. package/skills/etetoolkit/SKILL.md +103 -0
  59. package/skills/event-log-tracing/SKILL.md +85 -0
  60. package/skills/exa-search/SKILL.md +72 -0
  61. package/skills/executing-plans/SKILL.md +69 -0
  62. package/skills/exploratory-data-analysis/SKILL.md +118 -0
  63. package/skills/external-context/SKILL.md +80 -0
  64. package/skills/fastapi/SKILL.md +30 -0
  65. package/skills/finishing-a-development-branch/SKILL.md +106 -0
  66. package/skills/flowio/SKILL.md +114 -0
  67. package/skills/fluidsim/SKILL.md +108 -0
  68. package/skills/generate-image/SKILL.md +108 -0
  69. package/skills/geniml/SKILL.md +117 -0
  70. package/skills/geomaster/SKILL.md +109 -0
  71. package/skills/geopandas/SKILL.md +114 -0
  72. package/skills/get-available-resources/SKILL.md +100 -0
  73. package/skills/gget/SKILL.md +111 -0
  74. package/skills/ginkgo-cloud-lab/SKILL.md +52 -0
  75. package/skills/git-master/SKILL.md +85 -0
  76. package/skills/glycoengineering/SKILL.md +104 -0
  77. package/skills/gtars/SKILL.md +104 -0
  78. package/skills/hackernews-frontpage/SKILL.md +46 -0
  79. package/skills/histolab/SKILL.md +98 -0
  80. package/skills/how-it-works/SKILL.md +25 -0
  81. package/skills/hud/SKILL.md +86 -0
  82. package/skills/hugging-science/SKILL.md +93 -0
  83. package/skills/huggingface/SKILL.md +30 -0
  84. package/skills/hypogenic/SKILL.md +107 -0
  85. package/skills/hypothesis-generation/SKILL.md +118 -0
  86. package/skills/imaging-data-commons/SKILL.md +119 -0
  87. package/skills/infographics/SKILL.md +102 -0
  88. package/skills/iso-13485-certification/SKILL.md +114 -0
  89. package/skills/knowledge-agent/SKILL.md +83 -0
  90. package/skills/labarchive-integration/SKILL.md +98 -0
  91. package/skills/lamindb/SKILL.md +119 -0
  92. package/skills/landsat/SKILL.md +29 -0
  93. package/skills/latchbio-integration/SKILL.md +118 -0
  94. package/skills/latex-posters/SKILL.md +112 -0
  95. package/skills/learn-codebase/SKILL.md +24 -0
  96. package/skills/learner/SKILL.md +118 -0
  97. package/skills/literature-review/SKILL.md +118 -0
  98. package/skills/live-agent-lifecycle/SKILL.md +85 -0
  99. package/skills/mailbox-interactive/SKILL.md +85 -0
  100. package/skills/make-plan/SKILL.md +59 -0
  101. package/skills/markdown-mermaid-writing/SKILL.md +118 -0
  102. package/skills/market-research-reports/SKILL.md +119 -0
  103. package/skills/markitdown/SKILL.md +111 -0
  104. package/skills/markitdown-docs/SKILL.md +28 -0
  105. package/skills/matchms/SKILL.md +91 -0
  106. package/skills/matlab/SKILL.md +118 -0
  107. package/skills/matplotlib/SKILL.md +30 -0
  108. package/skills/mcp-setup/SKILL.md +84 -0
  109. package/skills/medchem/SKILL.md +109 -0
  110. package/skills/mem-search/SKILL.md +96 -0
  111. package/skills/modal/SKILL.md +104 -0
  112. package/skills/model-routing-context/SKILL.md +85 -0
  113. package/skills/molecular-dynamics/SKILL.md +116 -0
  114. package/skills/molfeat/SKILL.md +110 -0
  115. package/skills/multi-perspective-review/SKILL.md +85 -0
  116. package/skills/networkx/SKILL.md +111 -0
  117. package/skills/neurokit2/SKILL.md +114 -0
  118. package/skills/neuropixels-analysis/SKILL.md +112 -0
  119. package/skills/nilearn/SKILL.md +29 -0
  120. package/skills/observability-reliability/SKILL.md +43 -0
  121. package/skills/omc-doctor/SKILL.md +86 -0
  122. package/skills/omc-reference/SKILL.md +119 -0
  123. package/skills/omc-setup/SKILL.md +82 -0
  124. package/skills/omc-teams/SKILL.md +81 -0
  125. package/skills/omero-integration/SKILL.md +111 -0
  126. package/skills/open-notebook/SKILL.md +100 -0
  127. package/skills/openephys/SKILL.md +28 -0
  128. package/skills/opentrons-integration/SKILL.md +110 -0
  129. package/skills/optimize-for-gpu/SKILL.md +119 -0
  130. package/skills/orchestration/SKILL.md +85 -0
  131. package/skills/ownership-session-security/SKILL.md +43 -0
  132. package/skills/paper-lookup/SKILL.md +119 -0
  133. package/skills/paperzilla/SKILL.md +114 -0
  134. package/skills/parallel-web/SKILL.md +64 -0
  135. package/skills/pathfinder/SKILL.md +114 -0
  136. package/skills/pathml/SKILL.md +98 -0
  137. package/skills/pdf/SKILL.md +113 -0
  138. package/skills/peer-review/SKILL.md +119 -0
  139. package/skills/pennylane/SKILL.md +119 -0
  140. package/skills/phylogenetics/SKILL.md +102 -0
  141. package/skills/pi-extension-lifecycle/SKILL.md +41 -0
  142. package/skills/plan/SKILL.md +66 -0
  143. package/skills/polars/SKILL.md +114 -0
  144. package/skills/polars-bio/SKILL.md +84 -0
  145. package/skills/pptx/SKILL.md +118 -0
  146. package/skills/pptx-posters/SKILL.md +112 -0
  147. package/skills/primekg/SKILL.md +97 -0
  148. package/skills/project-session-manager/SKILL.md +85 -0
  149. package/skills/protocolsio-integration/SKILL.md +119 -0
  150. package/skills/pubmed-search/SKILL.md +29 -0
  151. package/skills/pufferlib/SKILL.md +103 -0
  152. package/skills/pydeseq2/SKILL.md +106 -0
  153. package/skills/pydicom/SKILL.md +115 -0
  154. package/skills/pyhealth/SKILL.md +117 -0
  155. package/skills/pylabrobot/SKILL.md +100 -0
  156. package/skills/pymatgen/SKILL.md +28 -0
  157. package/skills/pymc/SKILL.md +108 -0
  158. package/skills/pymoo/SKILL.md +90 -0
  159. package/skills/pyopenms/SKILL.md +119 -0
  160. package/skills/pysam/SKILL.md +118 -0
  161. package/skills/pyspark/SKILL.md +30 -0
  162. package/skills/pytdc/SKILL.md +102 -0
  163. package/skills/pytorch/SKILL.md +31 -0
  164. package/skills/pytorch-lightning/SKILL.md +119 -0
  165. package/skills/pyzotero/SKILL.md +104 -0
  166. package/skills/qiskit/SKILL.md +119 -0
  167. package/skills/qutip/SKILL.md +111 -0
  168. package/skills/ralph/SKILL.md +23 -0
  169. package/skills/ralplan/SKILL.md +105 -0
  170. package/skills/rdflib/SKILL.md +29 -0
  171. package/skills/rdkit/SKILL.md +30 -0
  172. package/skills/read-only-explorer/SKILL.md +85 -0
  173. package/skills/receiving-code-review/SKILL.md +103 -0
  174. package/skills/release/SKILL.md +117 -0
  175. package/skills/remember/SKILL.md +39 -0
  176. package/skills/requesting-code-review/SKILL.md +85 -0
  177. package/skills/requirements-to-task-packet/SKILL.md +65 -0
  178. package/skills/research-grants/SKILL.md +118 -0
  179. package/skills/research-lookup/SKILL.md +117 -0
  180. package/skills/research-reproducibility/SKILL.md +28 -0
  181. package/skills/resource-discovery-config/SKILL.md +43 -0
  182. package/skills/rowan/SKILL.md +100 -0
  183. package/skills/runtime-state-reader/SKILL.md +46 -0
  184. package/skills/safe-bash/SKILL.md +85 -0
  185. package/skills/scanpy/SKILL.md +32 -0
  186. package/skills/scholar-evaluation/SKILL.md +115 -0
  187. package/skills/scientific-brainstorming/SKILL.md +118 -0
  188. package/skills/scientific-critical-thinking/SKILL.md +119 -0
  189. package/skills/scientific-schematics/SKILL.md +116 -0
  190. package/skills/scientific-slides/SKILL.md +117 -0
  191. package/skills/scientific-visualization/SKILL.md +109 -0
  192. package/skills/scientific-writing/SKILL.md +119 -0
  193. package/skills/scikit-bio/SKILL.md +92 -0
  194. package/skills/scikit-learn/SKILL.md +99 -0
  195. package/skills/scikit-survival/SKILL.md +110 -0
  196. package/skills/sciomc/SKILL.md +86 -0
  197. package/skills/scvelo/SKILL.md +106 -0
  198. package/skills/scvi-tools/SKILL.md +114 -0
  199. package/skills/seaborn/SKILL.md +97 -0
  200. package/skills/secure-agent-orchestration-review/SKILL.md +47 -0
  201. package/skills/self-improve/SKILL.md +119 -0
  202. package/skills/semantic-compression/SKILL.md +62 -0
  203. package/skills/setup/SKILL.md +42 -0
  204. package/skills/shap/SKILL.md +103 -0
  205. package/skills/simpy/SKILL.md +116 -0
  206. package/skills/skill/SKILL.md +117 -0
  207. package/skills/skill-search/SKILL.md +67 -0
  208. package/skills/skillify/SKILL.md +46 -0
  209. package/skills/smart-explore/SKILL.md +94 -0
  210. package/skills/sqlite-pandas/SKILL.md +30 -0
  211. package/skills/stable-baselines3/SKILL.md +86 -0
  212. package/skills/state-mutation-locking/SKILL.md +44 -0
  213. package/skills/statistical-analysis/SKILL.md +108 -0
  214. package/skills/statsmodels/SKILL.md +29 -0
  215. package/skills/subagent-driven-development/SKILL.md +89 -0
  216. package/skills/sympy/SKILL.md +115 -0
  217. package/skills/system-prompts/SKILL.md +116 -0
  218. package/skills/systematic-debugging/SKILL.md +119 -0
  219. package/skills/team/SKILL.md +85 -0
  220. package/skills/test-driven-development/SKILL.md +84 -0
  221. package/skills/tiledbvcf/SKILL.md +119 -0
  222. package/skills/timeline-report/SKILL.md +85 -0
  223. package/skills/timesfm-forecasting/SKILL.md +112 -0
  224. package/skills/torch-geometric/SKILL.md +118 -0
  225. package/skills/torchdrug/SKILL.md +118 -0
  226. package/skills/trace/SKILL.md +118 -0
  227. package/skills/transformers/SKILL.md +110 -0
  228. package/skills/treatment-plans/SKILL.md +119 -0
  229. package/skills/ui-render-performance/SKILL.md +41 -0
  230. package/skills/ultragoal/SKILL.md +63 -0
  231. package/skills/ultraqa/SKILL.md +85 -0
  232. package/skills/ultrawork/SKILL.md +20 -0
  233. package/skills/umap-learn/SKILL.md +119 -0
  234. package/skills/usfiscaldata/SKILL.md +118 -0
  235. package/skills/using-git-worktrees/SKILL.md +112 -0
  236. package/skills/using-superpowers/SKILL.md +85 -0
  237. package/skills/using-vetc/SKILL.md +92 -0
  238. package/skills/vaex/SKILL.md +111 -0
  239. package/skills/venue-templates/SKILL.md +113 -0
  240. package/skills/verification-before-completion/SKILL.md +88 -0
  241. package/skills/verification-before-done/SKILL.md +68 -0
  242. package/skills/verify/SKILL.md +33 -0
  243. package/skills/version-bump/SKILL.md +54 -0
  244. package/skills/vetc-analyze-ba/SKILL.md +117 -0
  245. package/skills/vetc-analyze-codebase/SKILL.md +118 -0
  246. package/skills/vetc-api-design/SKILL.md +103 -0
  247. package/skills/vetc-brainstorming/SKILL.md +116 -0
  248. package/skills/vetc-change-proposal/SKILL.md +111 -0
  249. package/skills/vetc-cicd/SKILL.md +113 -0
  250. package/skills/vetc-continuous-learning/SKILL.md +115 -0
  251. package/skills/vetc-deep-interview/SKILL.md +103 -0
  252. package/skills/vetc-docgen/SKILL.md +108 -0
  253. package/skills/vetc-frontend-patterns/SKILL.md +99 -0
  254. package/skills/vetc-iterative-retrieval/SKILL.md +110 -0
  255. package/skills/vetc-java-patterns/SKILL.md +113 -0
  256. package/skills/vetc-meta-skill-creator/SKILL.md +99 -0
  257. package/skills/vetc-oracle-patterns/SKILL.md +109 -0
  258. package/skills/vetc-performance-testing/SKILL.md +104 -0
  259. package/skills/vetc-pr-response/SKILL.md +106 -0
  260. package/skills/vetc-ralph/SKILL.md +108 -0
  261. package/skills/vetc-ralplan/SKILL.md +116 -0
  262. package/skills/vetc-receiving-review/SKILL.md +106 -0
  263. package/skills/vetc-reconcile-patterns/SKILL.md +117 -0
  264. package/skills/vetc-refactoring/SKILL.md +96 -0
  265. package/skills/vetc-runbook/SKILL.md +118 -0
  266. package/skills/vetc-sast/SKILL.md +118 -0
  267. package/skills/vetc-sdlc/SKILL.md +97 -0
  268. package/skills/vetc-security/SKILL.md +117 -0
  269. package/skills/vetc-spec-driven/SKILL.md +111 -0
  270. package/skills/vetc-spec-quality/SKILL.md +117 -0
  271. package/skills/vetc-systematic-debugging/SKILL.md +74 -0
  272. package/skills/vetc-tdd/SKILL.md +96 -0
  273. package/skills/vetc-thinking-pm/SKILL.md +110 -0
  274. package/skills/vetc-ui-visual-qa/SKILL.md +117 -0
  275. package/skills/vetc-verify/SKILL.md +101 -0
  276. package/skills/visual-verdict/SKILL.md +59 -0
  277. package/skills/what-if-oracle/SKILL.md +87 -0
  278. package/skills/widget-rendering/SKILL.md +85 -0
  279. package/skills/wiki/SKILL.md +69 -0
  280. package/skills/workspace-isolation/SKILL.md +85 -0
  281. package/skills/worktree-isolation/SKILL.md +85 -0
  282. package/skills/wowerpoint/SKILL.md +101 -0
  283. package/skills/writer-memory/SKILL.md +82 -0
  284. package/skills/writing-plans/SKILL.md +115 -0
  285. package/skills/writing-skills/SKILL.md +115 -0
  286. package/skills/xgboost/SKILL.md +29 -0
  287. package/skills/xgboost-ts/SKILL.md +28 -0
  288. package/skills/xlsx/SKILL.md +111 -0
  289. package/skills/zarr-python/SKILL.md +101 -0
  290. package/src/categories.ts +383 -0
  291. package/src/format.ts +104 -0
  292. package/src/indexer.ts +101 -0
  293. package/src/proactive.ts +51 -0
  294. package/src/scanner.ts +85 -0
  295. package/src/search.ts +89 -0
  296. package/src/strip.ts +29 -0
  297. package/src/synonyms.ts +83 -0
  298. package/src/text.ts +118 -0
  299. package/src/types.ts +64 -0
@@ -0,0 +1,96 @@
1
+ ---
2
+ name: mem-search
3
+ description: Search claude-mem's persistent cross-session memory database. Use when user asks "did we already solve this?", "how did we do X last time?", or needs work from previous sessions.
4
+ ---
5
+
6
+ # Memory Search
7
+
8
+ Search past work across all sessions. Simple workflow: search -> filter -> fetch.
9
+
10
+ ## When to Use
11
+
12
+ Use when users ask about PREVIOUS sessions (not current conversation):
13
+
14
+ - "Did we already fix this?"
15
+ - "How did we solve X last time?"
16
+ - "What happened last week?"
17
+
18
+ ## 3-Layer Workflow (ALWAYS Follow)
19
+
20
+ **NEVER fetch full details without filtering first. 10x token savings.**
21
+
22
+ ### Step 1: Search - Get Index with IDs
23
+
24
+ Use the `search` MCP tool:
25
+
26
+ ```
27
+ search(query="authentication", limit=20, project="my-project")
28
+ ```
29
+
30
+ **Returns:** Table with IDs, timestamps, types, titles (~50-100 tokens/result)
31
+
32
+ ```
33
+ | ID | Time | T | Title | Read |
34
+ |----|------|---|-------|------|
35
+ | #11131 | 3:48 PM | 🟣 | Added JWT authentication | ~75 |
36
+ | #10942 | 2:15 PM | 🔴 | Fixed auth token expiration | ~50 |
37
+
38
+ ### Step 2: Timeline - Get Context Around Interesting Results
39
+
40
+ Use the `timeline` MCP tool:
41
+
42
+ ```
43
+ timeline(anchor=11131, depth_before=3, depth_after=3, project="my-project")
44
+ ```
45
+
46
+ Or find anchor automatically from query:
47
+
48
+ ```
49
+ timeline(query="authentication", depth_before=3, depth_after=3, project="my-project")
50
+ ```
51
+
52
+ **Returns:** `depth_before + 1 + depth_after` items in chronological order with observations, sessions, and prompts interleaved around the anchor.
53
+
54
+ ### Step 3: Fetch - Get Full Details ONLY for Filtered IDs
55
+
56
+ Review titles from Step 1 and context from Step 2. Pick relevant IDs. Discard the rest.
57
+
58
+ Use the `get_observations` MCP tool:
59
+
60
+ ```
61
+ get_observations(ids=[11131, 10942])
62
+ ```
63
+
64
+ **ALWAYS use `get_observations` for 2+ observations - single request vs N requests.**
65
+
66
+ **Parameters:**
67
+
68
+ - `ids` (array of numbers, required) - Observation IDs to fetch
69
+
70
+ ## Examples
71
+
72
+ **Find recent bug fixes:**
73
+
74
+ ```
75
+ search(query="bug", type="observations", obs_type="bugfix", limit=20, project="my-project")
76
+ ```
77
+
78
+ **Find what happened last week:**
79
+
80
+ ```
81
+ search(type="observations", dateStart="2025-11-11", limit=20, project="my-project")
82
+ ```
83
+
84
+ **Understand context around a discovery:**
85
+
86
+ ## Why This Workflow?
87
+
88
+ - **Search index:** ~50-100 tokens per result
89
+ - **Full observation:** ~500-1000 tokens each
90
+ - **Batch fetch:** 1 HTTP request vs N individual requests
91
+ - **10x token savings** by filtering before fetching
92
+
93
+ ## Knowledge Agents
94
+
95
+ Want synthesized answers instead of raw records? Use `/knowledge-agent` to build a queryable corpus from your observation history. The knowledge agent reads all matching observations and answers questions conversationally.
96
+ ```
@@ -0,0 +1,104 @@
1
+ ---
2
+ name: modal
3
+ description: Cloud computing platform for running Python on GPUs and serverless infrastructure. Use when deploying AI/ML models, running GPU-accelerated workloads, serving web endpoints, scheduling batch jobs, or scaling Python code to the cloud. Use this skill whenever the user mentions Modal, serverless GPU compute, deploying ML models to the cloud, serving inference endpoints, running batch processing in the cloud, or needs to scale Python workloads beyond their local machine. Also use when the user wants to run code on H100s, A100s, or other cloud GPUs, or needs to create a web API for a model.
4
+ ---
5
+
6
+ # Modal
7
+
8
+ ## Overview
9
+
10
+ Modal is a cloud platform for running Python code serverlessly, with a focus on AI/ML workloads. Key capabilities:
11
+ - **GPU compute** on demand (T4, L4, A10, L40S, A100, H100, H200, B200)
12
+ - **Serverless functions** with autoscaling from zero to thousands of containers
13
+ - **Custom container images** built entirely in Python code
14
+ - **Persistent storage** via Volumes for model weights and datasets
15
+ - **Web endpoints** for serving models and APIs
16
+ - **Scheduled jobs** via cron or fixed intervals
17
+ - **Sub-second cold starts** for low-latency inference
18
+
19
+ Everything in Modal is defined as code — no YAML, no Dockerfiles required (though both are supported).
20
+
21
+ ## When to Use This Skill
22
+
23
+ Use this skill when:
24
+ - Deploy or serve AI/ML models in the cloud
25
+ - Run GPU-accelerated computations (training, inference, fine-tuning)
26
+ - Create serverless web APIs or endpoints
27
+ - Scale batch processing jobs in parallel
28
+ - Schedule recurring tasks (data pipelines, retraining, scraping)
29
+ - Need persistent cloud storage for model weights or datasets
30
+ - Want to run code in custom container environments
31
+ - Build job queues or async task processing systems
32
+
33
+ ### Authenticate
34
+
35
+ Prefer existing credentials before creating new ones:
36
+
37
+ 1. Check whether `MODAL_TOKEN_ID` and `MODAL_TOKEN_SECRET` are already present in the current environment.
38
+ 2. If not, check for those values in a local `.env` file and load them if appropriate for the workflow.
39
+ 3. Only fall back to interactive `modal setup` or generating fresh tokens if neither source already provides credentials.
40
+
41
+ ```bash
42
+ modal setup
43
+ ```
44
+
45
+ This opens a browser for authentication. For CI/CD or headless environments, use environment variables:
46
+
47
+ ```bash
48
+
49
+ ## Core Concepts
50
+
51
+ ### App and Functions
52
+
53
+ A Modal `App` groups related functions. Functions decorated with `@app.function()` run remotely in the cloud:
54
+
55
+ ```python
56
+ import modal
57
+
58
+ app = modal.App("my-app")
59
+
60
+ @app.function()
61
+ def square(x):
62
+ return x ** 2
63
+
64
+ @app.local_entrypoint()
65
+ def main():
66
+
67
+ ### Container Images
68
+
69
+ Modal builds container images from Python code. The recommended package installer is `uv`:
70
+
71
+ ```python
72
+ image = (
73
+ modal.Image.debian_slim(python_version="3.11")
74
+ .uv_pip_install("torch==2.8.0", "transformers", "accelerate")
75
+ .apt_install("git")
76
+ )
77
+
78
+ @app.function(image=image)
79
+ def inference(prompt):
80
+ from transformers import pipeline
81
+ pipe = pipeline("text-generation", model="meta-llama/Llama-3-8B")
82
+
83
+ ### GPU Compute
84
+
85
+ Request GPUs via the `gpu` parameter:
86
+
87
+ ```python
88
+ @app.function(gpu="H100")
89
+ def train_model():
90
+ import torch
91
+ device = torch.device("cuda")
92
+ # GPU training code here
93
+
94
+ # Multiple GPUs
95
+ @app.function(gpu="H100:4")
96
+ def distributed_training():
97
+ ...
98
+
99
+ # GPU fallback chain
100
+ @app.function(gpu=["H100", "A100-80GB", "A100-40GB"])
101
+ def flexible_inference():
102
+ ...
103
+
104
+
@@ -0,0 +1,85 @@
1
+ ---
2
+ name: model-routing-context
3
+ description: Model routing, parent context, thinking level, and prompt construction workflow. Use when changing model fallback, child Pi args, inherited context, task prompts, or compact-read behavior.
4
+ ---
5
+
6
+
7
+ # model-routing-context
8
+
9
+ Use this skill when working on model/context propagation.
10
+
11
+ ## Source patterns distilled
12
+
13
+ - Pi session context/model state: `source/pi-mono/packages/coding-agent/src/core/session-manager.ts`, `agent-session.ts`, compaction modules
14
+ - pi-crew model and prompt code: `src/runtime/model-fallback.ts`, `src/runtime/pi-args.ts`, `src/runtime/task-runner/prompt-builder.ts`, `src/runtime/task-output-context.ts`, `src/extension/team-tool/context.ts`
15
+
16
+ ## Rules
17
+
18
+ - Preserve parent model inheritance unless an agent/task/user explicitly provides a non-empty model override.
19
+ - Treat empty strings and whitespace model values as absent.
20
+ - Carry relevant parent conversation context as reference-only; do not let it override explicit task instructions or safety constraints.
21
+ - Respect compact-read/compaction summaries when building context; avoid ballooning prompts with redundant transcript data.
22
+ - Avoid inline dynamic imports for model providers or prompt helpers.
23
+ - When changing model precedence, add tests for undefined, empty, whitespace, agent, task, parent, and explicit tool override cases.
24
+ - Redact secrets in context snippets and child prompts where logs/artifacts may persist them.
25
+
26
+ ## Anti-patterns
27
+
28
+ - Letting `agentModel: ""` block parent model fallback.
29
+ - Treating parent conversation text as executable instructions rather than context.
30
+ - Passing full session transcripts to every child by default.
31
+ - Losing thinking level or model changes across session switch/fork flows.
32
+
33
+ ## Worked Examples
34
+
35
+ ### Model precedence chain with all fields
36
+
37
+ When every level provides a model:
38
+
39
+ ```typescript
40
+ // Requested by user/tool: "sonnet-4-2025-01-16"
41
+ // Step model (workflow): undefined
42
+ // Team role model: undefined
43
+ // Agent model: "haiku-4"
44
+ // Parent model: "sonnet-4-2025-01-16"
45
+ // Model registry: { default: "claude-sonnet-4" }
46
+
47
+ const result = buildConfiguredModelRouting({
48
+ overrideModel: "sonnet-4-2025-01-16", // tool override wins
49
+ stepModel: undefined,
50
+ teamRoleModel: undefined,
51
+ agentModel: "haiku-4",
52
+ fallbackModels: ["haiku-3"],
53
+ parentModel: "sonnet-4-2025-01-16",
54
+ modelRegistry: { default: "claude-sonnet-4" },
55
+ cwd,
56
+ });
57
+
58
+ // Result: candidates = ["sonnet-4-2025-01-16"]
59
+ // resolved = "sonnet-4-2025-01-16" (override wins)
60
+ // reason = "tool override"
61
+ ```
62
+
63
+ ### Override at each level
64
+
65
+ ```typescript
66
+ // Level 1: tool override (highest)
67
+ buildConfiguredModelRouting({ overrideModel: "sonnet-4-2025-01-16" });
68
+ // → candidates = ["sonnet-4-2025-01-16"]
69
+
70
+ // Level 2: step model
71
+ buildConfiguredModelRouting({ overrideModel: undefined, stepModel: "haiku-4" });
72
+ // → candidates = ["haiku-4"]
73
+
74
+ // Level 3: team role model
75
+ buildConfiguredModelRouting({ overrideModel: undefined, stepModel: undefined, teamRoleModel: "sonnet-3.5" });
76
+ // → candidates = ["sonnet-3.5"]
77
+
78
+ // Level 4: agent model with fallback
79
+ buildConfiguredModelRouting({ overrideModel: undefined, stepModel: undefined, teamRoleModel: undefined, agentModel: "haiku-3", fallbackModels: ["claude-3-5-haiku-20241022"] });
80
+ // → candidates = ["haiku-3", "claude-3-5-haiku-20241022"]
81
+ ```
82
+
83
+ ### Empty/whitespace/null handling
84
+
85
+ ```typescript
@@ -0,0 +1,116 @@
1
+ ---
2
+ name: molecular-dynamics
3
+ description: Run and analyze molecular dynamics simulations with OpenMM and MDAnalysis. Set up protein/small molecule systems, define force fields, run energy minimization and production MD, analyze trajectories (RMSD, RMSF, contact maps, free energy surfaces). For structural biology, drug binding, and biophysics.
4
+ ---
5
+
6
+ # Molecular Dynamics
7
+
8
+ ## Overview
9
+
10
+ Molecular dynamics (MD) simulation computationally models the time evolution of molecular systems by integrating Newton's equations of motion. This skill covers two complementary tools:
11
+
12
+ - **OpenMM** (https://openmm.org/): High-performance MD simulation engine with GPU support, Python API, and flexible force field support
13
+ - **MDAnalysis** (https://mdanalysis.org/): Python library for reading, writing, and analyzing MD trajectories from all major simulation packages
14
+
15
+ **Installation:**
16
+ ```bash
17
+ conda install -c conda-forge openmm mdanalysis nglview
18
+ # or
19
+ pip install openmm mdanalysis
20
+
21
+ ## When to Use This Skill
22
+
23
+ Use molecular dynamics when:
24
+
25
+ - **Protein stability analysis**: How does a mutation affect protein dynamics?
26
+ - **Drug binding simulations**: Characterize binding mode and residence time of a ligand
27
+ - **Conformational sampling**: Explore protein flexibility and conformational changes
28
+ - **Protein-protein interaction**: Model interface dynamics and binding energetics
29
+ - **RMSD/RMSF analysis**: Quantify structural fluctuations from a reference structure
30
+ - **Free energy estimation**: Compute binding free energy or conformational free energy
31
+ - **Membrane simulations**: Model proteins in lipid bilayers
32
+ - **Intrinsically disordered proteins**: Study IDR conformational ensembles
33
+
34
+ ## Core Workflow: OpenMM Simulation
35
+
36
+ ### 1. System Preparation
37
+
38
+ ```python
39
+ from openmm.app import *
40
+ from openmm import *
41
+ from openmm.unit import *
42
+ import sys
43
+
44
+ def prepare_system_from_pdb(pdb_file, forcefield_name="amber14-all.xml",
45
+ water_model="amber14/tip3pfb.xml"):
46
+ """
47
+ Prepare an OpenMM system from a PDB file.
48
+
49
+ Args:
50
+ pdb_file: Path to cleaned PDB file (use PDBFixer for raw PDB files)
51
+
52
+ ### 2. Energy Minimization
53
+
54
+ ```python
55
+ from openmm.app import *
56
+ from openmm import *
57
+ from openmm.unit import *
58
+
59
+ def minimize_energy(modeller, system, output_pdb="minimized.pdb",
60
+ max_iterations=1000, tolerance=10.0):
61
+ """
62
+ Energy minimize the system to remove steric clashes.
63
+
64
+ Args:
65
+ modeller: Modeller object with topology and positions
66
+ system: OpenMM System
67
+
68
+ ### 3. NVT Equilibration
69
+
70
+ ```python
71
+ from openmm.app import *
72
+ from openmm import *
73
+ from openmm.unit import *
74
+
75
+ def run_nvt_equilibration(simulation, n_steps=50000, temperature=300,
76
+ report_interval=1000, output_prefix="nvt"):
77
+ """
78
+ NVT equilibration: constant N, V, T.
79
+ Equilibrate velocities to target temperature.
80
+
81
+ Args:
82
+ simulation: OpenMM Simulation (after minimization)
83
+
84
+ ### 4. NPT Equilibration and Production
85
+
86
+ ```python
87
+ def run_npt_production(simulation, n_steps=500000, temperature=300, pressure=1.0,
88
+ report_interval=5000, output_prefix="npt"):
89
+ """
90
+ NPT production run: constant N, P, T.
91
+
92
+ Args:
93
+ n_steps: Production steps (500000 × 2fs = 1 ns)
94
+ temperature: Temperature in Kelvin
95
+ pressure: Pressure in bar
96
+ report_interval: Steps between reports
97
+ """
98
+ # Add Monte Carlo barostat for pressure control
99
+
100
+ ## Trajectory Analysis with MDAnalysis
101
+
102
+ ### 1. Load Trajectory
103
+
104
+ ```python
105
+ import MDAnalysis as mda
106
+ from MDAnalysis.analysis import rms, align, contacts
107
+ import numpy as np
108
+ import matplotlib.pyplot as plt
109
+
110
+ def load_trajectory(topology_file, trajectory_file):
111
+ """
112
+ Load an MD trajectory with MDAnalysis.
113
+
114
+ Args:
115
+
116
+
@@ -0,0 +1,110 @@
1
+ ---
2
+ name: molfeat
3
+ description: Molecular featurization for ML (100+ featurizers). ECFP, MACCS, descriptors, pretrained models (ChemBERTa), convert SMILES to features, for QSAR and molecular ML.
4
+ ---
5
+
6
+ # Molfeat - Molecular Featurization Hub
7
+
8
+ ## Overview
9
+
10
+ Molfeat is a comprehensive Python library for molecular featurization that unifies 100+ pre-trained embeddings and hand-crafted featurizers. Convert chemical structures (SMILES strings or RDKit molecules) into numerical representations for machine learning tasks including QSAR modeling, virtual screening, similarity searching, and deep learning applications. Features fast parallel processing, scikit-learn compatible transformers, and built-in caching.
11
+
12
+ ## When to Use This Skill
13
+
14
+ This skill should be used when working with:
15
+ - **Molecular machine learning**: Building QSAR/QSPR models, property prediction
16
+ - **Virtual screening**: Ranking compound libraries for biological activity
17
+ - **Similarity searching**: Finding structurally similar molecules
18
+ - **Chemical space analysis**: Clustering, visualization, dimensionality reduction
19
+ - **Deep learning**: Training neural networks on molecular data
20
+ - **Featurization pipelines**: Converting SMILES to ML-ready representations
21
+ - **Cheminformatics**: Any task requiring molecular feature extraction
22
+
23
+ # With all optional dependencies
24
+ uv pip install "molfeat[all]"
25
+ ```
26
+
27
+ **Optional dependencies for specific featurizers:**
28
+ - `molfeat[dgl]` - GNN models (GIN variants)
29
+ - `molfeat[graphormer]` - Graphormer models
30
+ - `molfeat[transformer]` - ChemBERTa, ChemGPT, MolT5
31
+ - `molfeat[fcd]` - FCD descriptors
32
+ - `molfeat[map4]` - MAP4 fingerprints
33
+
34
+ ## Core Concepts
35
+
36
+ Molfeat organizes featurization into three hierarchical classes:
37
+
38
+ ### 1. Calculators (`molfeat.calc`)
39
+
40
+ Callable objects that convert individual molecules into feature vectors. Accept RDKit `Chem.Mol` objects or SMILES strings.
41
+
42
+ **Use calculators for:**
43
+ - Single molecule featurization
44
+ - Custom processing loops
45
+ - Direct feature computation
46
+
47
+ **Example:**
48
+ ```python
49
+ from molfeat.calc import FPCalculator
50
+
51
+ calc = FPCalculator("ecfp", radius=3, fpSize=2048)
52
+ features = calc("CCO") # Returns numpy array (2048,)
53
+ ```
54
+
55
+ ### 2. Transformers (`molfeat.trans`)
56
+
57
+ Scikit-learn compatible transformers that wrap calculators for batch processing with parallelization.
58
+
59
+ **Use transformers for:**
60
+ - Batch featurization of molecular datasets
61
+ - Integration with scikit-learn pipelines
62
+ - Parallel processing (automatic CPU utilization)
63
+
64
+ **Example:**
65
+ ```python
66
+ from molfeat.trans import MoleculeTransformer
67
+ from molfeat.calc import FPCalculator
68
+
69
+ transformer = MoleculeTransformer(FPCalculator("ecfp"), n_jobs=-1)
70
+ features = transformer(smiles_list) # Parallel processing
71
+ ```
72
+
73
+ ### 3. Pretrained Transformers (`molfeat.trans.pretrained`)
74
+
75
+ Specialized transformers for deep learning models with batched inference and caching.
76
+
77
+ **Use pretrained transformers for:**
78
+ - State-of-the-art molecular embeddings
79
+ - Transfer learning from large chemical datasets
80
+ - Deep learning feature extraction
81
+
82
+ **Example:**
83
+ ```python
84
+ from molfeat.trans.pretrained import PretrainedMolTransformer
85
+
86
+ transformer = PretrainedMolTransformer("ChemBERTa-77M-MLM", n_jobs=-1)
87
+ embeddings = transformer(smiles_list) # Deep learning embeddings
88
+ ```
89
+
90
+ ## Quick Start Workflow
91
+
92
+ ### Basic Featurization
93
+
94
+ ```python
95
+ import datamol as dm
96
+ from molfeat.calc import FPCalculator
97
+ from molfeat.trans import MoleculeTransformer
98
+
99
+ # Load molecular data
100
+ smiles = ["CCO", "CC(=O)O", "c1ccccc1", "CC(C)O"]
101
+
102
+ # Create calculator and transformer
103
+ calc = FPCalculator("ecfp", radius=3)
104
+ transformer = MoleculeTransformer(calc, n_jobs=-1)
105
+
106
+ # Featurize molecules
107
+ features = transformer(smiles)
108
+ print(f"Shape: {features.shape}") # (4, 2048)
109
+
110
+
@@ -0,0 +1,85 @@
1
+ ---
2
+ name: multi-perspective-review
3
+ description: Use when reviewing a plan, diff, implementation, worker output, release candidate, or external review feedback.
4
+ ---
5
+
6
+
7
+ # multi-perspective-review
8
+
9
+ Core principle: review early, review often, and separate concerns. Reviewer output is evidence to evaluate, not an instruction to obey blindly.
10
+
11
+ Distilled from detailed reads of requesting-code-review, receiving-code-review, subagent review checkpoints, differential review, and specialized review-agent patterns.
12
+
13
+ ## Review Passes
14
+
15
+ Run relevant passes separately:
16
+
17
+ 1. Spec compliance: Does the work match the request and nothing extra?
18
+ 2. Correctness: Are edge cases, state transitions, and failure paths right?
19
+ 3. Regression risk: Could config precedence, runtime defaults, or public APIs break?
20
+ 4. Security: Trust boundaries, path containment, prompt injection, secrets, permissions.
21
+ 5. Tests: Do tests assert the changed behavior and isolation concerns?
22
+ 6. Maintainability: Narrow diff, typed inputs, clear ownership, reversible changes.
23
+ 7. Operator experience: Error/status text, recovery hints, artifacts, logs.
24
+ 8. Compatibility: Windows paths, Node/Pi versions, CLI flags, legacy paths.
25
+
26
+ ## Finding Format
27
+
28
+ ```text
29
+ [severity] path:line or symbol
30
+ Issue: ...
31
+ Impact: ...
32
+ Fix: ...
33
+ Verification: ...
34
+ ```
35
+
36
+ Severity:
37
+
38
+ - critical: data loss, secret leak, arbitrary command/path escape, unusable default install;
39
+ - high: broken core workflow, ownership bypass, persistent incorrect state;
40
+ - medium: important regression, flaky test, confusing recoverable behavior;
41
+ - low: polish, maintainability, docs.
42
+
43
+ ## Example Findings by Perspective
44
+
45
+ ### Spec Compliance
46
+
47
+ ```
48
+ [medium] src/runtime/task-runner.ts:89
49
+ Issue: `executeWorkers` is checked once at top of runTeamTask but the value
50
+ is passed through an untyped parameter. The function comment says "workers
51
+ are disabled in scaffold mode" but the actual behavior is driven by `runtimeKind`.
52
+ Impact: If someone changes the comment but not the code, the mismatch is invisible.
53
+ Fix: Add a runtimeKind guard and deprecate the executeWorkers parameter.
54
+ Verification: `npx tsc --noEmit` passes; test with `PI_TEAMS_MOCK_CHILD_PI=scaffold`.
55
+ ```
56
+
57
+ ### Correctness
58
+
59
+ ```
60
+ [high] src/runtime/live-agent-manager.ts:47
61
+ Issue: `registerLiveAgent` returns the new handle but callers may use the
62
+ old handle reference if they captured it before the call.
63
+ Impact: Status updates may apply to the wrong handle if the agent re-registers.
64
+ Fix: Always call `getLiveAgent` after `registerLiveAgent` to get the canonical handle.
65
+ Verification: Add test that verifies status after re-registration.
66
+ ```
67
+
68
+ ### Regression Risk
69
+
70
+ ```
71
+ [medium] src/state/state-store.ts:150
72
+ Issue: `saveRunTasks` uses `atomicWriteJson` but the file may grow large.
73
+ No pagination or archiving strategy for long-running runs.
74
+ Impact: Tasks file could exceed 10MB with many updates, causing slow I/O.
75
+ Fix: Consider splitting into per-task files or adding a size warning.
76
+ Verification: Load test with 10,000 task updates.
77
+ ```
78
+
79
+ ### Security
80
+
81
+ ```
82
+ [critical] src/utils/safe-paths.ts:20
83
+ Issue: `resolveRealContainedPath` follows symlinks but doesn't verify the
84
+ resolved path stays under the allowed base.
85
+ Impact: A malicious symlink could escape the workspace boundary.