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.
- package/CHANGELOG.md +20 -0
- package/LICENSE +21 -0
- package/README.md +97 -0
- package/index.ts +163 -0
- package/package.json +48 -0
- package/skills/adaptyv/SKILL.md +92 -0
- package/skills/add-community-extension/SKILL.md +85 -0
- package/skills/aeon/SKILL.md +111 -0
- package/skills/ai-slop-cleaner/SKILL.md +118 -0
- package/skills/anndata/SKILL.md +83 -0
- package/skills/arboreto/SKILL.md +107 -0
- package/skills/ask/SKILL.md +55 -0
- package/skills/astropy/SKILL.md +30 -0
- package/skills/async-worker-recovery/SKILL.md +44 -0
- package/skills/autopilot/SKILL.md +63 -0
- package/skills/autoresearch/SKILL.md +64 -0
- package/skills/autoskill/SKILL.md +116 -0
- package/skills/babysit/SKILL.md +43 -0
- package/skills/benchling-integration/SKILL.md +106 -0
- package/skills/bgpt-paper-search/SKILL.md +67 -0
- package/skills/biopython/SKILL.md +29 -0
- package/skills/bioservices/SKILL.md +96 -0
- package/skills/brainstorming/SKILL.md +104 -0
- package/skills/cancel/SKILL.md +85 -0
- package/skills/ccg/SKILL.md +87 -0
- package/skills/celery-pipeline/SKILL.md +30 -0
- package/skills/cellxgene-census/SKILL.md +104 -0
- package/skills/child-pi-spawning/SKILL.md +85 -0
- package/skills/cirq/SKILL.md +113 -0
- package/skills/citation-management/SKILL.md +91 -0
- package/skills/clinical-decision-support/SKILL.md +117 -0
- package/skills/clinical-reports/SKILL.md +118 -0
- package/skills/clinical-trial/SKILL.md +28 -0
- package/skills/cobrapy/SKILL.md +116 -0
- package/skills/configure-notifications/SKILL.md +85 -0
- package/skills/consciousness-council/SKILL.md +120 -0
- package/skills/context-artifact-hygiene/SKILL.md +85 -0
- package/skills/context-mode-ops/SKILL.md +87 -0
- package/skills/dask/SKILL.md +85 -0
- package/skills/database-lookup/SKILL.md +118 -0
- package/skills/datamol/SKILL.md +108 -0
- package/skills/debug/SKILL.md +32 -0
- package/skills/deep-dive/SKILL.md +114 -0
- package/skills/deep-interview/SKILL.md +90 -0
- package/skills/deepchem/SKILL.md +117 -0
- package/skills/deepinit/SKILL.md +100 -0
- package/skills/deeptools/SKILL.md +118 -0
- package/skills/delegation-patterns/SKILL.md +56 -0
- package/skills/depmap/SKILL.md +94 -0
- package/skills/dhdna-profiler/SKILL.md +86 -0
- package/skills/diffdock/SKILL.md +101 -0
- package/skills/dispatching-parallel-agents/SKILL.md +119 -0
- package/skills/dnanexus-integration/SKILL.md +118 -0
- package/skills/do/SKILL.md +48 -0
- package/skills/docker-sandbox/SKILL.md +29 -0
- package/skills/docx/SKILL.md +119 -0
- package/skills/esm/SKILL.md +116 -0
- package/skills/etetoolkit/SKILL.md +103 -0
- package/skills/event-log-tracing/SKILL.md +85 -0
- package/skills/exa-search/SKILL.md +72 -0
- package/skills/executing-plans/SKILL.md +69 -0
- package/skills/exploratory-data-analysis/SKILL.md +118 -0
- package/skills/external-context/SKILL.md +80 -0
- package/skills/fastapi/SKILL.md +30 -0
- package/skills/finishing-a-development-branch/SKILL.md +106 -0
- package/skills/flowio/SKILL.md +114 -0
- package/skills/fluidsim/SKILL.md +108 -0
- package/skills/generate-image/SKILL.md +108 -0
- package/skills/geniml/SKILL.md +117 -0
- package/skills/geomaster/SKILL.md +109 -0
- package/skills/geopandas/SKILL.md +114 -0
- package/skills/get-available-resources/SKILL.md +100 -0
- package/skills/gget/SKILL.md +111 -0
- package/skills/ginkgo-cloud-lab/SKILL.md +52 -0
- package/skills/git-master/SKILL.md +85 -0
- package/skills/glycoengineering/SKILL.md +104 -0
- package/skills/gtars/SKILL.md +104 -0
- package/skills/hackernews-frontpage/SKILL.md +46 -0
- package/skills/histolab/SKILL.md +98 -0
- package/skills/how-it-works/SKILL.md +25 -0
- package/skills/hud/SKILL.md +86 -0
- package/skills/hugging-science/SKILL.md +93 -0
- package/skills/huggingface/SKILL.md +30 -0
- package/skills/hypogenic/SKILL.md +107 -0
- package/skills/hypothesis-generation/SKILL.md +118 -0
- package/skills/imaging-data-commons/SKILL.md +119 -0
- package/skills/infographics/SKILL.md +102 -0
- package/skills/iso-13485-certification/SKILL.md +114 -0
- package/skills/knowledge-agent/SKILL.md +83 -0
- package/skills/labarchive-integration/SKILL.md +98 -0
- package/skills/lamindb/SKILL.md +119 -0
- package/skills/landsat/SKILL.md +29 -0
- package/skills/latchbio-integration/SKILL.md +118 -0
- package/skills/latex-posters/SKILL.md +112 -0
- package/skills/learn-codebase/SKILL.md +24 -0
- package/skills/learner/SKILL.md +118 -0
- package/skills/literature-review/SKILL.md +118 -0
- package/skills/live-agent-lifecycle/SKILL.md +85 -0
- package/skills/mailbox-interactive/SKILL.md +85 -0
- package/skills/make-plan/SKILL.md +59 -0
- package/skills/markdown-mermaid-writing/SKILL.md +118 -0
- package/skills/market-research-reports/SKILL.md +119 -0
- package/skills/markitdown/SKILL.md +111 -0
- package/skills/markitdown-docs/SKILL.md +28 -0
- package/skills/matchms/SKILL.md +91 -0
- package/skills/matlab/SKILL.md +118 -0
- package/skills/matplotlib/SKILL.md +30 -0
- package/skills/mcp-setup/SKILL.md +84 -0
- package/skills/medchem/SKILL.md +109 -0
- package/skills/mem-search/SKILL.md +96 -0
- package/skills/modal/SKILL.md +104 -0
- package/skills/model-routing-context/SKILL.md +85 -0
- package/skills/molecular-dynamics/SKILL.md +116 -0
- package/skills/molfeat/SKILL.md +110 -0
- package/skills/multi-perspective-review/SKILL.md +85 -0
- package/skills/networkx/SKILL.md +111 -0
- package/skills/neurokit2/SKILL.md +114 -0
- package/skills/neuropixels-analysis/SKILL.md +112 -0
- package/skills/nilearn/SKILL.md +29 -0
- package/skills/observability-reliability/SKILL.md +43 -0
- package/skills/omc-doctor/SKILL.md +86 -0
- package/skills/omc-reference/SKILL.md +119 -0
- package/skills/omc-setup/SKILL.md +82 -0
- package/skills/omc-teams/SKILL.md +81 -0
- package/skills/omero-integration/SKILL.md +111 -0
- package/skills/open-notebook/SKILL.md +100 -0
- package/skills/openephys/SKILL.md +28 -0
- package/skills/opentrons-integration/SKILL.md +110 -0
- package/skills/optimize-for-gpu/SKILL.md +119 -0
- package/skills/orchestration/SKILL.md +85 -0
- package/skills/ownership-session-security/SKILL.md +43 -0
- package/skills/paper-lookup/SKILL.md +119 -0
- package/skills/paperzilla/SKILL.md +114 -0
- package/skills/parallel-web/SKILL.md +64 -0
- package/skills/pathfinder/SKILL.md +114 -0
- package/skills/pathml/SKILL.md +98 -0
- package/skills/pdf/SKILL.md +113 -0
- package/skills/peer-review/SKILL.md +119 -0
- package/skills/pennylane/SKILL.md +119 -0
- package/skills/phylogenetics/SKILL.md +102 -0
- package/skills/pi-extension-lifecycle/SKILL.md +41 -0
- package/skills/plan/SKILL.md +66 -0
- package/skills/polars/SKILL.md +114 -0
- package/skills/polars-bio/SKILL.md +84 -0
- package/skills/pptx/SKILL.md +118 -0
- package/skills/pptx-posters/SKILL.md +112 -0
- package/skills/primekg/SKILL.md +97 -0
- package/skills/project-session-manager/SKILL.md +85 -0
- package/skills/protocolsio-integration/SKILL.md +119 -0
- package/skills/pubmed-search/SKILL.md +29 -0
- package/skills/pufferlib/SKILL.md +103 -0
- package/skills/pydeseq2/SKILL.md +106 -0
- package/skills/pydicom/SKILL.md +115 -0
- package/skills/pyhealth/SKILL.md +117 -0
- package/skills/pylabrobot/SKILL.md +100 -0
- package/skills/pymatgen/SKILL.md +28 -0
- package/skills/pymc/SKILL.md +108 -0
- package/skills/pymoo/SKILL.md +90 -0
- package/skills/pyopenms/SKILL.md +119 -0
- package/skills/pysam/SKILL.md +118 -0
- package/skills/pyspark/SKILL.md +30 -0
- package/skills/pytdc/SKILL.md +102 -0
- package/skills/pytorch/SKILL.md +31 -0
- package/skills/pytorch-lightning/SKILL.md +119 -0
- package/skills/pyzotero/SKILL.md +104 -0
- package/skills/qiskit/SKILL.md +119 -0
- package/skills/qutip/SKILL.md +111 -0
- package/skills/ralph/SKILL.md +23 -0
- package/skills/ralplan/SKILL.md +105 -0
- package/skills/rdflib/SKILL.md +29 -0
- package/skills/rdkit/SKILL.md +30 -0
- package/skills/read-only-explorer/SKILL.md +85 -0
- package/skills/receiving-code-review/SKILL.md +103 -0
- package/skills/release/SKILL.md +117 -0
- package/skills/remember/SKILL.md +39 -0
- package/skills/requesting-code-review/SKILL.md +85 -0
- package/skills/requirements-to-task-packet/SKILL.md +65 -0
- package/skills/research-grants/SKILL.md +118 -0
- package/skills/research-lookup/SKILL.md +117 -0
- package/skills/research-reproducibility/SKILL.md +28 -0
- package/skills/resource-discovery-config/SKILL.md +43 -0
- package/skills/rowan/SKILL.md +100 -0
- package/skills/runtime-state-reader/SKILL.md +46 -0
- package/skills/safe-bash/SKILL.md +85 -0
- package/skills/scanpy/SKILL.md +32 -0
- package/skills/scholar-evaluation/SKILL.md +115 -0
- package/skills/scientific-brainstorming/SKILL.md +118 -0
- package/skills/scientific-critical-thinking/SKILL.md +119 -0
- package/skills/scientific-schematics/SKILL.md +116 -0
- package/skills/scientific-slides/SKILL.md +117 -0
- package/skills/scientific-visualization/SKILL.md +109 -0
- package/skills/scientific-writing/SKILL.md +119 -0
- package/skills/scikit-bio/SKILL.md +92 -0
- package/skills/scikit-learn/SKILL.md +99 -0
- package/skills/scikit-survival/SKILL.md +110 -0
- package/skills/sciomc/SKILL.md +86 -0
- package/skills/scvelo/SKILL.md +106 -0
- package/skills/scvi-tools/SKILL.md +114 -0
- package/skills/seaborn/SKILL.md +97 -0
- package/skills/secure-agent-orchestration-review/SKILL.md +47 -0
- package/skills/self-improve/SKILL.md +119 -0
- package/skills/semantic-compression/SKILL.md +62 -0
- package/skills/setup/SKILL.md +42 -0
- package/skills/shap/SKILL.md +103 -0
- package/skills/simpy/SKILL.md +116 -0
- package/skills/skill/SKILL.md +117 -0
- package/skills/skill-search/SKILL.md +67 -0
- package/skills/skillify/SKILL.md +46 -0
- package/skills/smart-explore/SKILL.md +94 -0
- package/skills/sqlite-pandas/SKILL.md +30 -0
- package/skills/stable-baselines3/SKILL.md +86 -0
- package/skills/state-mutation-locking/SKILL.md +44 -0
- package/skills/statistical-analysis/SKILL.md +108 -0
- package/skills/statsmodels/SKILL.md +29 -0
- package/skills/subagent-driven-development/SKILL.md +89 -0
- package/skills/sympy/SKILL.md +115 -0
- package/skills/system-prompts/SKILL.md +116 -0
- package/skills/systematic-debugging/SKILL.md +119 -0
- package/skills/team/SKILL.md +85 -0
- package/skills/test-driven-development/SKILL.md +84 -0
- package/skills/tiledbvcf/SKILL.md +119 -0
- package/skills/timeline-report/SKILL.md +85 -0
- package/skills/timesfm-forecasting/SKILL.md +112 -0
- package/skills/torch-geometric/SKILL.md +118 -0
- package/skills/torchdrug/SKILL.md +118 -0
- package/skills/trace/SKILL.md +118 -0
- package/skills/transformers/SKILL.md +110 -0
- package/skills/treatment-plans/SKILL.md +119 -0
- package/skills/ui-render-performance/SKILL.md +41 -0
- package/skills/ultragoal/SKILL.md +63 -0
- package/skills/ultraqa/SKILL.md +85 -0
- package/skills/ultrawork/SKILL.md +20 -0
- package/skills/umap-learn/SKILL.md +119 -0
- package/skills/usfiscaldata/SKILL.md +118 -0
- package/skills/using-git-worktrees/SKILL.md +112 -0
- package/skills/using-superpowers/SKILL.md +85 -0
- package/skills/using-vetc/SKILL.md +92 -0
- package/skills/vaex/SKILL.md +111 -0
- package/skills/venue-templates/SKILL.md +113 -0
- package/skills/verification-before-completion/SKILL.md +88 -0
- package/skills/verification-before-done/SKILL.md +68 -0
- package/skills/verify/SKILL.md +33 -0
- package/skills/version-bump/SKILL.md +54 -0
- package/skills/vetc-analyze-ba/SKILL.md +117 -0
- package/skills/vetc-analyze-codebase/SKILL.md +118 -0
- package/skills/vetc-api-design/SKILL.md +103 -0
- package/skills/vetc-brainstorming/SKILL.md +116 -0
- package/skills/vetc-change-proposal/SKILL.md +111 -0
- package/skills/vetc-cicd/SKILL.md +113 -0
- package/skills/vetc-continuous-learning/SKILL.md +115 -0
- package/skills/vetc-deep-interview/SKILL.md +103 -0
- package/skills/vetc-docgen/SKILL.md +108 -0
- package/skills/vetc-frontend-patterns/SKILL.md +99 -0
- package/skills/vetc-iterative-retrieval/SKILL.md +110 -0
- package/skills/vetc-java-patterns/SKILL.md +113 -0
- package/skills/vetc-meta-skill-creator/SKILL.md +99 -0
- package/skills/vetc-oracle-patterns/SKILL.md +109 -0
- package/skills/vetc-performance-testing/SKILL.md +104 -0
- package/skills/vetc-pr-response/SKILL.md +106 -0
- package/skills/vetc-ralph/SKILL.md +108 -0
- package/skills/vetc-ralplan/SKILL.md +116 -0
- package/skills/vetc-receiving-review/SKILL.md +106 -0
- package/skills/vetc-reconcile-patterns/SKILL.md +117 -0
- package/skills/vetc-refactoring/SKILL.md +96 -0
- package/skills/vetc-runbook/SKILL.md +118 -0
- package/skills/vetc-sast/SKILL.md +118 -0
- package/skills/vetc-sdlc/SKILL.md +97 -0
- package/skills/vetc-security/SKILL.md +117 -0
- package/skills/vetc-spec-driven/SKILL.md +111 -0
- package/skills/vetc-spec-quality/SKILL.md +117 -0
- package/skills/vetc-systematic-debugging/SKILL.md +74 -0
- package/skills/vetc-tdd/SKILL.md +96 -0
- package/skills/vetc-thinking-pm/SKILL.md +110 -0
- package/skills/vetc-ui-visual-qa/SKILL.md +117 -0
- package/skills/vetc-verify/SKILL.md +101 -0
- package/skills/visual-verdict/SKILL.md +59 -0
- package/skills/what-if-oracle/SKILL.md +87 -0
- package/skills/widget-rendering/SKILL.md +85 -0
- package/skills/wiki/SKILL.md +69 -0
- package/skills/workspace-isolation/SKILL.md +85 -0
- package/skills/worktree-isolation/SKILL.md +85 -0
- package/skills/wowerpoint/SKILL.md +101 -0
- package/skills/writer-memory/SKILL.md +82 -0
- package/skills/writing-plans/SKILL.md +115 -0
- package/skills/writing-skills/SKILL.md +115 -0
- package/skills/xgboost/SKILL.md +29 -0
- package/skills/xgboost-ts/SKILL.md +28 -0
- package/skills/xlsx/SKILL.md +111 -0
- package/skills/zarr-python/SKILL.md +101 -0
- package/src/categories.ts +383 -0
- package/src/format.ts +104 -0
- package/src/indexer.ts +101 -0
- package/src/proactive.ts +51 -0
- package/src/scanner.ts +85 -0
- package/src/search.ts +89 -0
- package/src/strip.ts +29 -0
- package/src/synonyms.ts +83 -0
- package/src/text.ts +118 -0
- package/src/types.ts +64 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: omc-setup
|
|
3
|
+
description: Install or refresh oh-my-claudecode for plugin, npm, and local-dev setups from the canonical setup flow
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# OMC Setup
|
|
7
|
+
|
|
8
|
+
This is the **only command you need to learn**. After running this, everything else is automatic.
|
|
9
|
+
|
|
10
|
+
**When this skill is invoked, immediately execute the workflow below. Do not only restate or summarize these instructions back to the user.**
|
|
11
|
+
|
|
12
|
+
Note: All `~/.claude/...` paths in this guide respect `CLAUDE_CONFIG_DIR` when that environment variable is set.
|
|
13
|
+
|
|
14
|
+
## Best-Fit Use
|
|
15
|
+
|
|
16
|
+
Choose this setup flow when the user wants to **install, refresh, or repair OMC itself**.
|
|
17
|
+
|
|
18
|
+
- Marketplace/plugin install users should land here after `/plugin install oh-my-claudecode`
|
|
19
|
+
- npm users should land here after `npm i -g oh-my-claude-sisyphus@latest`
|
|
20
|
+
- local-dev and worktree users should land here after updating the checked-out repo and rerunning setup
|
|
21
|
+
|
|
22
|
+
## Flag Parsing
|
|
23
|
+
|
|
24
|
+
Check for flags in the user's invocation:
|
|
25
|
+
- `--help` → Show Help Text (below) and stop
|
|
26
|
+
- `--local` → Phase 1 only (target=local), then stop
|
|
27
|
+
- `--global` → Phase 1 only (target=global), then stop
|
|
28
|
+
- `--force` → Skip Pre-Setup Check, run full setup (Phase 1 → 2 → 3 → 4)
|
|
29
|
+
- No flags → Run Pre-Setup Check, then full setup if needed
|
|
30
|
+
|
|
31
|
+
## Help Text
|
|
32
|
+
|
|
33
|
+
When user runs with `--help`, display this and stop:
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
OMC Setup - Configure oh-my-claudecode
|
|
37
|
+
|
|
38
|
+
USAGE:
|
|
39
|
+
omc-setup Run initial setup wizard (or update if already configured)
|
|
40
|
+
omc-setup --local Configure local project (.claude/CLAUDE.md)
|
|
41
|
+
omc-setup --global Configure global settings (~/.claude/CLAUDE.md)
|
|
42
|
+
omc-setup --force Force full setup wizard even if already configured
|
|
43
|
+
omc-setup --help Show this help
|
|
44
|
+
|
|
45
|
+
MODES:
|
|
46
|
+
Initial Setup (no flags)
|
|
47
|
+
- Interactive wizard for first-time setup
|
|
48
|
+
- Configures CLAUDE.md (local or global)
|
|
49
|
+
- Sets up HUD statusline
|
|
50
|
+
- Checks for updates
|
|
51
|
+
- Offers MCP server configuration
|
|
52
|
+
- Configures team mode defaults (agent count, type, model)
|
|
53
|
+
- If already configured, offers quick update option
|
|
54
|
+
|
|
55
|
+
Local Configuration (--local)
|
|
56
|
+
- Downloads fresh CLAUDE.md to ./.claude/
|
|
57
|
+
- Backs up existing CLAUDE.md to .claude/CLAUDE.md.backup.YYYY-MM-DD
|
|
58
|
+
- Project-specific settings
|
|
59
|
+
- Use this to update project config after OMC upgrades
|
|
60
|
+
|
|
61
|
+
Global Configuration (--global)
|
|
62
|
+
- Downloads fresh CLAUDE.md to ~/.claude/
|
|
63
|
+
- Backs up existing CLAUDE.md to ~/.claude/CLAUDE.md.backup.YYYY-MM-DD
|
|
64
|
+
- Default: explicitly overwrites ~/.claude/CLAUDE.md so plain `claude` also uses OMC
|
|
65
|
+
- Optional preserve mode keeps the user's base `CLAUDE.md` and installs OMC into `CLAUDE-omc.md` for `omc` launches
|
|
66
|
+
- Applies to all Claude Code sessions
|
|
67
|
+
- Cleans up legacy hooks
|
|
68
|
+
- Use this to update global config after OMC upgrades
|
|
69
|
+
|
|
70
|
+
Force Full Setup (--force)
|
|
71
|
+
- Bypasses the "already configured" check
|
|
72
|
+
- Runs the complete setup wizard from scratch
|
|
73
|
+
- Use when you want to reconfigure preferences
|
|
74
|
+
|
|
75
|
+
EXAMPLES:
|
|
76
|
+
omc-setup # First time setup (or update CLAUDE.md if configured)
|
|
77
|
+
omc-setup --local # Update this project
|
|
78
|
+
omc-setup --global # Update all projects
|
|
79
|
+
omc-setup --force # Re-run full setup wizard
|
|
80
|
+
|
|
81
|
+
For more info: https://github.com/Yeachan-Heo/oh-my-claudecode
|
|
82
|
+
```
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: omc-teams
|
|
3
|
+
description: CLI-team runtime for claude, codex, or gemini workers in tmux panes when you need process-based parallel execution
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# OMC Teams Skill
|
|
7
|
+
|
|
8
|
+
Spawn N CLI worker processes in tmux panes to execute tasks in parallel. Supports `claude`, `codex`, and `gemini` agent types.
|
|
9
|
+
|
|
10
|
+
`/omc-teams` is a legacy compatibility skill for the CLI-first runtime: use `omc team ...` commands (not deprecated MCP runtime tools).
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
omc-teams N:claude "task description"
|
|
16
|
+
omc-teams N:codex "task description"
|
|
17
|
+
omc-teams N:gemini "task description"
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Parameters
|
|
21
|
+
|
|
22
|
+
- **N** - Number of CLI workers (1-10)
|
|
23
|
+
- **agent-type** - `claude` (Claude CLI), `codex` (OpenAI Codex CLI), or `gemini` (Google Gemini CLI)
|
|
24
|
+
- **task** - Task description to distribute across all workers
|
|
25
|
+
|
|
26
|
+
### Examples
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
/omc-teams 2:claude "implement auth module with tests"
|
|
30
|
+
/omc-teams 2:codex "review the auth module for security issues"
|
|
31
|
+
/omc-teams 3:gemini "redesign UI components for accessibility"
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Requirements
|
|
35
|
+
|
|
36
|
+
- **tmux binary** must be installed and discoverable (`command -v tmux`)
|
|
37
|
+
- **Classic tmux session optional** for in-place pane splitting (`$TMUX` set). Inside cmux or a plain terminal, `omc team` falls back to a detached tmux session instead of splitting the current surface.
|
|
38
|
+
- **claude** CLI: `npm install -g @anthropic-ai/claude-code`
|
|
39
|
+
- **codex** CLI: `npm install -g @openai/codex`
|
|
40
|
+
- **gemini** CLI: `npm install -g @google/gemini-cli`
|
|
41
|
+
|
|
42
|
+
## Workflow
|
|
43
|
+
|
|
44
|
+
### Phase 0: Verify prerequisites
|
|
45
|
+
|
|
46
|
+
Check tmux explicitly before claiming it is missing:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
command -v tmux >/dev/null 2>&1
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
- If this fails, report that **tmux is not installed** and stop.
|
|
53
|
+
- If `$TMUX` is set, `omc team` can reuse the current tmux window/panes directly.
|
|
54
|
+
- If `$TMUX` is empty but `CMUX_SURFACE_ID` is set, report that the user is running inside **cmux**. Do **not** say tmux is missing or that they are "not inside tmux"; `omc team` will launch a **detached tmux session** for workers instead of splitting the cmux surface.
|
|
55
|
+
- If neither `$TMUX` nor `CMUX_SURFACE_ID` is set, report that the user is in a **plain terminal**. `omc team` can still launch a **detached tmux session**, but if they specifically want in-place pane/window topology they should start from a classic tmux session first.
|
|
56
|
+
- If you need to confirm the active tmux session, use:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
tmux display-message -p '#S'
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Phase 1: Parse + validate input
|
|
63
|
+
|
|
64
|
+
Extract:
|
|
65
|
+
|
|
66
|
+
- `N` — worker count (1–10)
|
|
67
|
+
- `agent-type` — `claude|codex|gemini`
|
|
68
|
+
- `task` — task description
|
|
69
|
+
|
|
70
|
+
Validate before decomposing or running anything:
|
|
71
|
+
|
|
72
|
+
- Reject unsupported agent types up front. `/omc-teams` only supports **`claude`**, **`codex`**, and **`gemini`**.
|
|
73
|
+
- If the user asks for an unsupported type such as `expert`, explain that `/omc-teams` launches external CLI workers only.
|
|
74
|
+
- For native Claude Code team agents/roles, direct them to **`team`** instead.
|
|
75
|
+
|
|
76
|
+
### Phase 2: Decompose task
|
|
77
|
+
|
|
78
|
+
Break work into N independent subtasks (file- or concern-scoped) to avoid write conflicts.
|
|
79
|
+
|
|
80
|
+
### Phase 2.5: Resolve workspace root for multi-repo plans
|
|
81
|
+
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: omero-integration
|
|
3
|
+
description: Microscopy data management platform. Access images via Python, retrieve datasets, analyze pixels, manage ROIs/annotations, batch processing, for high-content screening and microscopy workflows.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# OMERO Integration
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
OMERO is an open-source platform for managing, visualizing, and analyzing microscopy images and metadata. Access images via Python API, retrieve datasets, analyze pixels, manage ROIs and annotations, for high-content screening and microscopy workflows.
|
|
11
|
+
|
|
12
|
+
## When to Use This Skill
|
|
13
|
+
|
|
14
|
+
This skill should be used when:
|
|
15
|
+
- Working with OMERO Python API (omero-py) to access microscopy data
|
|
16
|
+
- Retrieving images, datasets, projects, or screening data programmatically
|
|
17
|
+
- Analyzing pixel data and creating derived images
|
|
18
|
+
- Creating or managing ROIs (regions of interest) on microscopy images
|
|
19
|
+
- Adding annotations, tags, or metadata to OMERO objects
|
|
20
|
+
- Storing measurement results in OMERO tables
|
|
21
|
+
- Creating server-side scripts for batch processing
|
|
22
|
+
- Performing high-content screening analysis
|
|
23
|
+
|
|
24
|
+
## Core Capabilities
|
|
25
|
+
|
|
26
|
+
This skill covers eight major capability areas. Each is documented in detail in the references/ directory:
|
|
27
|
+
|
|
28
|
+
### 1. Connection & Session Management
|
|
29
|
+
**File**: `(see docs)`
|
|
30
|
+
|
|
31
|
+
Establish secure connections to OMERO servers, manage sessions, handle authentication, and work with group contexts. Use this for initial setup and connection patterns.
|
|
32
|
+
|
|
33
|
+
**Common scenarios:**
|
|
34
|
+
- Connect to OMERO server with credentials
|
|
35
|
+
- Use existing session IDs
|
|
36
|
+
- Switch between group contexts
|
|
37
|
+
- Manage connection lifecycle with context managers
|
|
38
|
+
|
|
39
|
+
### 2. Data Access & Retrieval
|
|
40
|
+
**File**: `(see docs)`
|
|
41
|
+
|
|
42
|
+
Navigate OMERO's hierarchical data structure (Projects → Datasets → Images) and screening data (Screens → Plates → Wells). Retrieve objects, query by attributes, and access metadata.
|
|
43
|
+
|
|
44
|
+
**Common scenarios:**
|
|
45
|
+
- List all projects and datasets for a user
|
|
46
|
+
- Retrieve images by ID or dataset
|
|
47
|
+
- Access screening plate data
|
|
48
|
+
- Query objects with filters
|
|
49
|
+
|
|
50
|
+
### 3. Metadata & Annotations
|
|
51
|
+
**File**: `(see docs)`
|
|
52
|
+
|
|
53
|
+
Create and manage annotations including tags, key-value pairs, file attachments, and comments. Link annotations to images, datasets, or other objects.
|
|
54
|
+
|
|
55
|
+
**Common scenarios:**
|
|
56
|
+
- Add tags to images
|
|
57
|
+
- Attach analysis results as files
|
|
58
|
+
- Create custom key-value metadata
|
|
59
|
+
- Query annotations by namespace
|
|
60
|
+
|
|
61
|
+
### 4. Image Processing & Rendering
|
|
62
|
+
**File**: `(see docs)`
|
|
63
|
+
|
|
64
|
+
Access raw pixel data as NumPy arrays, manipulate rendering settings, create derived images, and manage physical dimensions.
|
|
65
|
+
|
|
66
|
+
**Common scenarios:**
|
|
67
|
+
- Extract pixel data for computational analysis
|
|
68
|
+
- Generate thumbnail images
|
|
69
|
+
- Create maximum intensity projections
|
|
70
|
+
- Modify channel rendering settings
|
|
71
|
+
|
|
72
|
+
### 5. Regions of Interest (ROIs)
|
|
73
|
+
**File**: `(see docs)`
|
|
74
|
+
|
|
75
|
+
Create, retrieve, and analyze ROIs with various shapes (rectangles, ellipses, polygons, masks, points, lines). Extract intensity statistics from ROI regions.
|
|
76
|
+
|
|
77
|
+
**Common scenarios:**
|
|
78
|
+
- Draw rectangular ROIs on images
|
|
79
|
+
- Create polygon masks for segmentation
|
|
80
|
+
- Analyze pixel intensities within ROIs
|
|
81
|
+
- Export ROI coordinates
|
|
82
|
+
|
|
83
|
+
### 6. OMERO Tables
|
|
84
|
+
**File**: `(see docs)`
|
|
85
|
+
|
|
86
|
+
Store and query structured tabular data associated with OMERO objects. Useful for analysis results, measurements, and metadata.
|
|
87
|
+
|
|
88
|
+
**Common scenarios:**
|
|
89
|
+
- Store quantitative measurements for images
|
|
90
|
+
- Create tables with multiple column types
|
|
91
|
+
- Query table data with conditions
|
|
92
|
+
- Link tables to specific images or datasets
|
|
93
|
+
|
|
94
|
+
### 7. Scripts & Batch Operations
|
|
95
|
+
**File**: `(see docs)`
|
|
96
|
+
|
|
97
|
+
Create OMERO.scripts that run server-side for batch processing, automated workflows, and integration with OMERO clients.
|
|
98
|
+
|
|
99
|
+
**Common scenarios:**
|
|
100
|
+
- Process multiple images in batch
|
|
101
|
+
- Create automated analysis pipelines
|
|
102
|
+
- Generate summary statistics across datasets
|
|
103
|
+
- Export data in custom formats
|
|
104
|
+
|
|
105
|
+
### 8. Advanced Features
|
|
106
|
+
**File**: `(see docs)`
|
|
107
|
+
|
|
108
|
+
Covers permissions, filesets, cross-group queries, delete operations, and other advanced functionality.
|
|
109
|
+
|
|
110
|
+
**Common scenarios:**
|
|
111
|
+
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: open-notebook
|
|
3
|
+
description: Self-hosted, open-source alternative to Google NotebookLM for AI-powered research and document analysis. Use when organizing research materials into notebooks, ingesting diverse content sources (PDFs, videos, audio, web pages, Office documents), generating AI-powered notes and summaries, creating multi-speaker podcasts from research, chatting with documents using context-aware AI, searching across materials with full-text and vector search, or running custom content transformations. Supports 16+ AI providers including OpenAI, Anthropic, Google, Ollama, Groq, and Mistral with complete data privacy through self-hosting.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Open Notebook
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Open Notebook is an open-source, self-hosted alternative to Google's NotebookLM that enables researchers to organize materials, generate AI-powered insights, create podcasts, and have context-aware conversations with their documents — all while maintaining complete data privacy.
|
|
11
|
+
|
|
12
|
+
Unlike Google's Notebook LM, which has no publicly available API outside of the Enterprise version, Open Notebook provides a comprehensive REST API, supports 16+ AI providers, and runs entirely on your own infrastructure.
|
|
13
|
+
|
|
14
|
+
**Key advantages over NotebookLM:**
|
|
15
|
+
- Full REST API for programmatic access and automation
|
|
16
|
+
- Choice of 16+ AI providers (not locked to Google models)
|
|
17
|
+
- Multi-speaker podcast generation with 1-4 customizable speakers (vs. 2-speaker limit)
|
|
18
|
+
- Complete data sovereignty through self-hosting
|
|
19
|
+
- Open source and fully extensible (MIT license)
|
|
20
|
+
|
|
21
|
+
**Repository:** https://github.com/lfnovo/open-notebook
|
|
22
|
+
|
|
23
|
+
## Quick Start
|
|
24
|
+
|
|
25
|
+
### Prerequisites
|
|
26
|
+
|
|
27
|
+
- Docker Desktop installed
|
|
28
|
+
- API key for at least one AI provider (or local Ollama for free local inference)
|
|
29
|
+
|
|
30
|
+
# Download the docker-compose file
|
|
31
|
+
curl -o docker-compose.yml https://raw.githubusercontent.com/lfnovo/open-notebook/main/docker-compose.yml
|
|
32
|
+
|
|
33
|
+
# Set the required encryption key
|
|
34
|
+
export OPEN_NOTEBOOK_ENCRYPTION_KEY="your-secret-key-here"
|
|
35
|
+
|
|
36
|
+
# Launch the services
|
|
37
|
+
docker-compose up -d
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Access the application:
|
|
41
|
+
- **Frontend UI:** http://localhost:8502
|
|
42
|
+
- **REST API:** http://localhost:5055
|
|
43
|
+
- **API Documentation:** http://localhost:5055/docs
|
|
44
|
+
|
|
45
|
+
### Configure AI Provider
|
|
46
|
+
|
|
47
|
+
After startup, configure at least one AI provider:
|
|
48
|
+
|
|
49
|
+
1. Navigate to **Settings > API Keys** in the UI
|
|
50
|
+
2. Add credentials for your preferred provider (OpenAI, Anthropic, etc.)
|
|
51
|
+
3. Test the connection and discover available models
|
|
52
|
+
4. Register models for use across the platform
|
|
53
|
+
|
|
54
|
+
Or configure via the REST API:
|
|
55
|
+
|
|
56
|
+
```python
|
|
57
|
+
import requests
|
|
58
|
+
|
|
59
|
+
BASE_URL = "http://localhost:5055/api"
|
|
60
|
+
|
|
61
|
+
# Add a credential for an AI provider
|
|
62
|
+
response = requests.post(f"{BASE_URL}/credentials", json={
|
|
63
|
+
"provider": "openai",
|
|
64
|
+
"name": "My OpenAI Key",
|
|
65
|
+
"api_key": "sk-..."
|
|
66
|
+
})
|
|
67
|
+
credential = response.json()
|
|
68
|
+
|
|
69
|
+
# Discover available models
|
|
70
|
+
response = requests.post(
|
|
71
|
+
f"{BASE_URL}/credentials/{credential['id']}/discover"
|
|
72
|
+
)
|
|
73
|
+
discovered = response.json()
|
|
74
|
+
|
|
75
|
+
# Register discovered models
|
|
76
|
+
requests.post(
|
|
77
|
+
f"{BASE_URL}/credentials/{credential['id']}/register-models",
|
|
78
|
+
json={"model_ids": [m["id"] for m in discovered["models"]]}
|
|
79
|
+
)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Core Features
|
|
83
|
+
|
|
84
|
+
### Notebooks
|
|
85
|
+
Organize research into separate notebooks, each containing sources, notes, and chat sessions.
|
|
86
|
+
|
|
87
|
+
```python
|
|
88
|
+
import requests
|
|
89
|
+
|
|
90
|
+
BASE_URL = "http://localhost:5055/api"
|
|
91
|
+
|
|
92
|
+
# Create a notebook
|
|
93
|
+
response = requests.post(f"{BASE_URL}/notebooks", json={
|
|
94
|
+
"name": "Cancer Genomics Research",
|
|
95
|
+
"description": "Literature review on tumor mutational burden"
|
|
96
|
+
})
|
|
97
|
+
notebook = response.json()
|
|
98
|
+
notebook_id = notebook["id"]
|
|
99
|
+
|
|
100
|
+
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: openephys
|
|
3
|
+
description: Electrophysiology recording and neural data analysis. Use when working with neural recording systems, spike sorting, local field potentials, neuropixel probes, or electrophysiological signal processing. Trigger on imports of openephys, spikeinterface, probeinterface, or mentions of neural recording, neuropixel, spikeglx, electrophysiolog.
|
|
4
|
+
---
|
|
5
|
+
# openephys
|
|
6
|
+
|
|
7
|
+
Use this skill for electrophysiology data acquisition and analysis.
|
|
8
|
+
|
|
9
|
+
## Core patterns
|
|
10
|
+
|
|
11
|
+
- **Load recordings**: `read_openephys('session_folder')` for continuous data.
|
|
12
|
+
- **Spike extraction**: Use `spikeinterface` for modern spike sorting pipelines.
|
|
13
|
+
- **LFP analysis**: Bandpass filter 1-300 Hz for local field potentials.
|
|
14
|
+
- **Probe config**: `probeinterface` for neuropixel probe geometry mapping.
|
|
15
|
+
|
|
16
|
+
## Rules
|
|
17
|
+
|
|
18
|
+
- Always check sampling rate consistency across channels before analysis.
|
|
19
|
+
- Use memmap or chunked loading for large continuous files (>10GB).
|
|
20
|
+
- Reference signals appropriately (common average, median, or bipolar).
|
|
21
|
+
|
|
22
|
+
## Anti-patterns
|
|
23
|
+
|
|
24
|
+
- Don't load entire recordings into RAM — stream or chunk.
|
|
25
|
+
- Don't apply spike sorting without artifact removal first.
|
|
26
|
+
- Don't mix probe configurations without recalculating channel maps.
|
|
27
|
+
|
|
28
|
+
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: opentrons-integration
|
|
3
|
+
description: Official Opentrons Protocol API for OT-2 and Flex robots. Use when writing protocols specifically for Opentrons hardware with full access to Protocol API v2 features. Best for production Opentrons protocols, official API compatibility. For multi-vendor automation or broader equipment control use pylabrobot.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Opentrons Integration
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Opentrons is a Python-based lab automation platform for Flex and OT-2 robots. Write Protocol API v2 protocols for liquid handling, control hardware modules (heater-shaker, thermocycler), manage labware, for automated pipetting workflows.
|
|
11
|
+
|
|
12
|
+
## When to Use This Skill
|
|
13
|
+
|
|
14
|
+
This skill should be used when:
|
|
15
|
+
- Writing Opentrons Protocol API v2 protocols in Python
|
|
16
|
+
- Automating liquid handling workflows on Flex or OT-2 robots
|
|
17
|
+
- Controlling hardware modules (temperature, magnetic, heater-shaker, thermocycler)
|
|
18
|
+
- Setting up labware configurations and deck layouts
|
|
19
|
+
- Implementing complex pipetting operations (serial dilutions, plate replication, PCR setup)
|
|
20
|
+
- Managing tip usage and optimizing protocol efficiency
|
|
21
|
+
- Working with multi-channel pipettes for 96-well plate operations
|
|
22
|
+
- Simulating and testing protocols before robot execution
|
|
23
|
+
|
|
24
|
+
## Core Capabilities
|
|
25
|
+
|
|
26
|
+
### 1. Protocol Structure and Metadata
|
|
27
|
+
|
|
28
|
+
Every Opentrons protocol follows a standard structure:
|
|
29
|
+
|
|
30
|
+
```python
|
|
31
|
+
from opentrons import protocol_api
|
|
32
|
+
|
|
33
|
+
# Metadata
|
|
34
|
+
metadata = {
|
|
35
|
+
'protocolName': 'My Protocol',
|
|
36
|
+
'author': 'Name <email@example.com>',
|
|
37
|
+
'description': 'Protocol description',
|
|
38
|
+
'apiLevel': '2.19' # Use latest available API version
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
# Requirements (optional)
|
|
42
|
+
requirements = {
|
|
43
|
+
'robotType': 'Flex', # or 'OT-2'
|
|
44
|
+
'apiLevel': '2.19'
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
# Run function
|
|
48
|
+
def run(protocol: protocol_api.ProtocolContext):
|
|
49
|
+
# Protocol commands go here
|
|
50
|
+
pass
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**Key elements:**
|
|
54
|
+
- Import `protocol_api` from `opentrons`
|
|
55
|
+
- Define `metadata` dict with protocolName, author, description, apiLevel
|
|
56
|
+
- Optional `requirements` dict for robot type and API version
|
|
57
|
+
- Implement `run()` function receiving `ProtocolContext` as parameter
|
|
58
|
+
- All protocol logic goes inside the `run()` function
|
|
59
|
+
|
|
60
|
+
### 2. Loading Hardware
|
|
61
|
+
|
|
62
|
+
**Loading Instruments (Pipettes):**
|
|
63
|
+
|
|
64
|
+
```python
|
|
65
|
+
def run(protocol: protocol_api.ProtocolContext):
|
|
66
|
+
# Load pipette on specific mount
|
|
67
|
+
left_pipette = protocol.load_instrument(
|
|
68
|
+
'p1000_single_flex', # Instrument name
|
|
69
|
+
'left', # Mount: 'left' or 'right'
|
|
70
|
+
tip_racks=[tip_rack] # List of tip rack labware objects
|
|
71
|
+
)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Common pipette names:
|
|
75
|
+
|
|
76
|
+
# Load labware directly on deck
|
|
77
|
+
plate = protocol.load_labware(
|
|
78
|
+
'corning_96_wellplate_360ul_flat', # Labware API name
|
|
79
|
+
'D1', # Deck slot (Flex: A1-D3, OT-2: 1-11)
|
|
80
|
+
label='Sample Plate' # Optional display label
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
# Load tip rack
|
|
84
|
+
tip_rack = protocol.load_labware('opentrons_flex_96_tiprack_1000ul', 'C1')
|
|
85
|
+
|
|
86
|
+
# Load labware on adapter
|
|
87
|
+
adapter = protocol.load_adapter('opentrons_flex_96_tiprack_adapter', 'B1')
|
|
88
|
+
tips = adapter.load_labware('opentrons_flex_96_tiprack_200ul')
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
**Loading Modules:**
|
|
92
|
+
|
|
93
|
+
```python
|
|
94
|
+
# Temperature module
|
|
95
|
+
temp_module = protocol.load_module('temperature module gen2', 'D3')
|
|
96
|
+
temp_plate = temp_module.load_labware('corning_96_wellplate_360ul_flat')
|
|
97
|
+
|
|
98
|
+
# Magnetic module
|
|
99
|
+
mag_module = protocol.load_module('magnetic module gen2', 'C2')
|
|
100
|
+
mag_plate = mag_module.load_labware('nest_96_wellplate_100ul_pcr_full_skirt')
|
|
101
|
+
|
|
102
|
+
# Heater-Shaker module
|
|
103
|
+
hs_module = protocol.load_module('heaterShakerModuleV1', 'D1')
|
|
104
|
+
hs_plate = hs_module.load_labware('corning_96_wellplate_360ul_flat')
|
|
105
|
+
|
|
106
|
+
# Thermocycler module (takes up specific slots automatically)
|
|
107
|
+
tc_module = protocol.load_module('thermocyclerModuleV2')
|
|
108
|
+
tc_plate = tc_module.load_labware('nest_96_wellplate_100ul_pcr_full_skirt')
|
|
109
|
+
|
|
110
|
+
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: optimize-for-gpu
|
|
3
|
+
description: "GPU-accelerate Python code using CuPy, Numba CUDA, Warp, cuDF, cuML, cuGraph, KvikIO, cuCIM, cuxfilter, cuVS, cuSpatial, and RAFT. Use whenever the user mentions GPU/CUDA/NVIDIA acceleration, or wants to speed up NumPy, pandas, scikit-learn, scikit-image, NetworkX, GeoPandas, or Faiss workloads. Covers physics simulation, differentiable rendering, mesh ray casting, particle systems (DEM/SPH/fluids), vector/similarity search, GPUDirect Storage file IO, interactive dashboards, geospatial analysis, medical imaging, and sparse eigensolvers. Also use when you see CPU-bound Python code (loops, large arrays, ML pipelines, graph analytics, image processing) that would benefit from GPU acceleration, even if not explicitly requested."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# GPU Optimization for Python with NVIDIA
|
|
7
|
+
|
|
8
|
+
You are an expert GPU optimization engineer. Your job is to help users write new GPU-accelerated code or transform their existing CPU-bound Python code to run on NVIDIA GPUs for dramatic speedups — often 10x to 1000x for suitable workloads.
|
|
9
|
+
|
|
10
|
+
## When This Skill Applies
|
|
11
|
+
|
|
12
|
+
- User wants to speed up numerical/scientific Python code
|
|
13
|
+
- User is working with large arrays, matrices, or dataframes
|
|
14
|
+
- User mentions CUDA, GPU, NVIDIA, or parallel computing
|
|
15
|
+
- User has NumPy, pandas, SciPy, scikit-learn, NetworkX, or scipy.sparse.linalg code that processes large datasets
|
|
16
|
+
- User needs low-level GPU primitives (sparse eigensolvers, device memory management, multi-GPU communication)
|
|
17
|
+
- User is doing machine learning (training, inference, hyperparameter tuning, preprocessing)
|
|
18
|
+
- User is doing graph analytics (centrality, community detection, shortest paths, PageRank, etc.)
|
|
19
|
+
- User is doing vector search, nearest neighbor search, similarity search, or building a RAG pipeline
|
|
20
|
+
- User has Faiss, Annoy, ScaNN, or sklearn NearestNeighbors code that could be GPU-accelerated
|
|
21
|
+
- User wants GPU-accelerated interactive dashboards, cross-filtering, or exploratory data analysis on large datasets
|
|
22
|
+
- User is doing geospatial analysis (point-in-polygon, spatial joins, trajectory analysis, distance calculations) with GeoPandas or shapely
|
|
23
|
+
- User is doing image processing, computer vision, or medical imaging (filtering, segmentation, morphology, feature detection) with scikit-image or OpenCV
|
|
24
|
+
- User is working with whole-slide images (WSI), digital pathology, microscopy, or remote sensing imagery
|
|
25
|
+
|
|
26
|
+
## Decision Framework: Which Library to Use
|
|
27
|
+
|
|
28
|
+
Choose the right tool based on what the user's code actually does. Read the appropriate reference file(s) before writing any GPU code.
|
|
29
|
+
|
|
30
|
+
### CuPy — for array/matrix operations (NumPy replacement)
|
|
31
|
+
**Read:** `(see docs)`
|
|
32
|
+
|
|
33
|
+
Use CuPy when the user's code is primarily:
|
|
34
|
+
- NumPy array operations (element-wise math, linear algebra, FFT, sorting, reductions)
|
|
35
|
+
- SciPy operations (sparse matrices, signal processing, image filtering, special functions)
|
|
36
|
+
- Any code that chains NumPy calls — CuPy is a drop-in replacement
|
|
37
|
+
|
|
38
|
+
CuPy wraps NVIDIA's optimized libraries (cuBLAS, cuFFT, cuSOLVER, cuSPARSE, cuRAND) so standard operations are already tuned. Most NumPy code works by changing `import numpy as np` to `import cupy as cp`.
|
|
39
|
+
|
|
40
|
+
**Best for:** Linear algebra, FFTs, array math, image processing, signal processing, Monte Carlo with array ops, any NumPy-heavy workflow.
|
|
41
|
+
|
|
42
|
+
### Numba CUDA — for custom GPU kernels
|
|
43
|
+
**Read:** `(see docs)`
|
|
44
|
+
|
|
45
|
+
Use Numba when the user needs:
|
|
46
|
+
- Custom algorithms that don't map to standard array operations
|
|
47
|
+
- Fine-grained control over GPU threads, blocks, and shared memory
|
|
48
|
+
- Element-wise operations with complex logic (use `@vectorize(target='cuda')`)
|
|
49
|
+
- Reduction operations with custom logic
|
|
50
|
+
- Stencil computations or neighbor-dependent calculations
|
|
51
|
+
- Anything requiring the CUDA programming model directly
|
|
52
|
+
|
|
53
|
+
Numba compiles Python directly into CUDA kernels. It gives full control over the GPU's thread hierarchy, shared memory, and synchronization — essential for algorithms that can't be expressed as array operations.
|
|
54
|
+
|
|
55
|
+
**Best for:** Custom kernels, particle simulations, stencil codes, custom reductions, algorithms needing shared memory, any code with complex per-element logic.
|
|
56
|
+
|
|
57
|
+
### Warp — for simulation, spatial computing, and differentiable programming
|
|
58
|
+
**Read:** `(see docs)`
|
|
59
|
+
|
|
60
|
+
Use Warp when the user's code is primarily:
|
|
61
|
+
- Physics simulation (particles, cloth, fluids, rigid bodies, DEM, SPH)
|
|
62
|
+
- Geometry processing (mesh operations, ray casting, signed distance fields, marching cubes)
|
|
63
|
+
- Robotics (kinematics, dynamics, control with transforms and quaternions)
|
|
64
|
+
- Differentiable simulation for ML training (integrates with PyTorch/JAX autograd)
|
|
65
|
+
- Any Python simulation loop that needs to be JIT-compiled to GPU
|
|
66
|
+
- Spatial computing with meshes, volumes (NanoVDB), hash grids, or BVH queries
|
|
67
|
+
|
|
68
|
+
Warp JIT-compiles `@wp.kernel` Python functions to CUDA, with built-in types for spatial computing (vec3, mat33, quat, transform) and primitives for geometry queries (Mesh, Volume, HashGrid, BVH). All kernels are automatically differentiable.
|
|
69
|
+
|
|
70
|
+
**Best for:** Physics simulation, mesh ray casting, particle systems, differentiable rendering, robotics kinematics, SDF operations, any workload combining spatial data structures with GPU compute.
|
|
71
|
+
|
|
72
|
+
**Warp vs Numba:** Both compile Python to CUDA, but Warp provides higher-level spatial types (vec3, quat, Mesh, Volume) and automatic differentiation, while Numba gives raw CUDA control (shared memory, block/thread management, atomics). Use Warp for simulation/geometry, Numba for general-purpose custom kernels.
|
|
73
|
+
|
|
74
|
+
### cuDF — for dataframe operations (pandas replacement)
|
|
75
|
+
**Read:** `(see docs)`
|
|
76
|
+
|
|
77
|
+
Use cuDF when the user's code is primarily:
|
|
78
|
+
- pandas DataFrame operations (filtering, groupby, joins, aggregations)
|
|
79
|
+
- CSV/Parquet/JSON reading and processing
|
|
80
|
+
- ETL pipelines or data wrangling on large datasets
|
|
81
|
+
- Any pandas-heavy workflow on datasets that fit in GPU memory
|
|
82
|
+
|
|
83
|
+
cuDF's `cudf.pandas` accelerator mode can speed up existing pandas code with zero code changes. For maximum performance, use the native cuDF API.
|
|
84
|
+
|
|
85
|
+
**Best for:** Data wrangling, ETL, groupby/aggregations, joins, string processing on dataframes, time series on tabular data.
|
|
86
|
+
|
|
87
|
+
### cuML — for machine learning (scikit-learn replacement)
|
|
88
|
+
**Read:** `(see docs)`
|
|
89
|
+
|
|
90
|
+
Use cuML when the user's code is primarily:
|
|
91
|
+
- scikit-learn estimators (classification, regression, clustering, dimensionality reduction)
|
|
92
|
+
- ML preprocessing (scaling, encoding, imputation, feature extraction)
|
|
93
|
+
- Hyperparameter tuning or cross-validation
|
|
94
|
+
- Tree model inference (XGBoost, LightGBM, sklearn Random Forest via FIL)
|
|
95
|
+
- UMAP, t-SNE, HDBSCAN, or KNN on large datasets
|
|
96
|
+
|
|
97
|
+
cuML's `cuml.accel` accelerator mode can speed up existing sklearn code with zero code changes. For maximum performance, use the native cuML API. Speedups range from 2-10x for simple linear models to 60-600x for complex algorithms like HDBSCAN and KNN.
|
|
98
|
+
|
|
99
|
+
**Best for:** Classification, regression, clustering, dimensionality reduction, preprocessing pipelines, model inference, any scikit-learn-heavy workflow.
|
|
100
|
+
|
|
101
|
+
### cuGraph — for graph analytics (NetworkX replacement)
|
|
102
|
+
**Read:** `(see docs)`
|
|
103
|
+
|
|
104
|
+
Use cuGraph when the user's code is primarily:
|
|
105
|
+
- NetworkX graph algorithms (centrality, community detection, shortest paths, PageRank)
|
|
106
|
+
- Graph construction and analysis on large networks
|
|
107
|
+
- Social network analysis, knowledge graphs, or recommendation systems
|
|
108
|
+
- Any graph algorithm on networks with 10K+ edges
|
|
109
|
+
|
|
110
|
+
cuGraph's `nx-cugraph` backend can accelerate existing NetworkX code with zero code changes via an environment variable. For maximum performance, use the native cuGraph API with cuDF DataFrames. Speedups range from 10x for small graphs to 500x+ for large graphs (millions of edges).
|
|
111
|
+
|
|
112
|
+
**Best for:** PageRank, betweenness centrality, community detection (Louvain, Leiden), BFS/SSSP, connected components, link prediction, graph neural network sampling, any NetworkX-heavy workflow.
|
|
113
|
+
|
|
114
|
+
### KvikIO — for high-performance GPU file IO
|
|
115
|
+
**Read:** `(see docs)`
|
|
116
|
+
|
|
117
|
+
Use KvikIO when the user's code is primarily:
|
|
118
|
+
|
|
119
|
+
|