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,72 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: exa-search
|
|
3
|
+
description: "Web toolkit powered by Exa, tuned for scientific and technical content. Use this skill when the user needs to search the web or fetch/extract URL content. Covers: web search (semantic lookups, research, current info — with optional research-paper category and academic domain filtering) and URL extraction (fetching pages, articles, academic PDFs in batch). Use this skill for web-related tasks when the user wants high-quality search or scholarly filtering via category=research paper. Triggers on requests to search, look up, fetch a page, or extract an article."
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Exa Web Toolkit
|
|
7
|
+
|
|
8
|
+
A skill for web-powered research tasks backed by [Exa](https://exa.ai): web search and URL extraction. Exa's index combines high-quality keyword and semantic retrieval, which makes it well-suited to scientific, technical, and conceptual queries.
|
|
9
|
+
|
|
10
|
+
## Routing — pick the right capability
|
|
11
|
+
|
|
12
|
+
Read the user's request and match it to one of the capabilities below. Read the corresponding reference file for detailed instructions before running commands.
|
|
13
|
+
|
|
14
|
+
| User wants to... | Capability | Where |
|
|
15
|
+
|---|---|---|
|
|
16
|
+
| Look something up, research a topic, find current info | **Web Search** | `(see docs)` |
|
|
17
|
+
| Fetch content from a specific URL (webpage, article, PDF) | **Web Extract** | `(see docs)` |
|
|
18
|
+
| Install or authenticate | **Setup** | Below |
|
|
19
|
+
|
|
20
|
+
### Decision guide
|
|
21
|
+
|
|
22
|
+
- **Default to Web Search** for topic lookups, research questions, or "what is X?" queries. When the topic is scientific or technical, pass `--category "research paper"` to bias toward scholarly sources, and/or an academic `--include-domains` allowlist. See `(see docs)` for the two-pass academic strategy.
|
|
23
|
+
- **Use Web Extract** when the user provides a URL or asks you to read/fetch a specific page. Prefer this over the built-in WebFetch for batch extraction (multiple URLs in one call) and for academic PDFs.
|
|
24
|
+
|
|
25
|
+
### Academic source priority
|
|
26
|
+
|
|
27
|
+
For technical or scientific queries, prefer academic and scientific sources:
|
|
28
|
+
- Peer-reviewed journal articles and conference proceedings over blog posts or news
|
|
29
|
+
- Preprints (arXiv, bioRxiv, medRxiv) when peer-reviewed versions aren't available
|
|
30
|
+
- Institutional and government sources (NIH, WHO, NASA, NIST) over commercial sites
|
|
31
|
+
- Primary research over secondary summaries
|
|
32
|
+
|
|
33
|
+
Two levers to steer Exa toward scholarly content:
|
|
34
|
+
1. `--category "research paper"` biases retrieval toward scholarly sources.
|
|
35
|
+
2. `--include-domains` with a scholarly allowlist (arxiv.org, nature.com, pubmed.ncbi.nlm.nih.gov, etc.) restricts the domain pool.
|
|
36
|
+
|
|
37
|
+
Combine both for strictly academic results. See `(see docs)` for the full pattern.
|
|
38
|
+
|
|
39
|
+
When citing academic sources, include author names and publication year where available (e.g., [Smith et al., 2025](url)) in addition to the standard citation format. If a DOI is present, prefer the DOI link.
|
|
40
|
+
|
|
41
|
+
---
|
|
42
|
+
|
|
43
|
+
### Authentication
|
|
44
|
+
|
|
45
|
+
All commands read the API key from the `EXA_API_KEY` environment variable. Get your Exa API key at [dashboard.exa.ai/api-keys](https://dashboard.exa.ai/api-keys).
|
|
46
|
+
|
|
47
|
+
First, check if a `.env` file exists in the project root and contains `EXA_API_KEY`. If so, load it:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
dotenv -f .env run -- uv run --with exa-py python "$SKILL_PATH/scripts/exa_search.py" "your query"
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
If `dotenv` isn't available, install it: `pip install python-dotenv[cli]` or `uv pip install python-dotenv[cli]`.
|
|
54
|
+
|
|
55
|
+
If there's no `.env`, export the key for the session:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
|
|
59
|
+
### Tracking header
|
|
60
|
+
|
|
61
|
+
Every script in this skill sets the `x-exa-integration` request header to `k-dense-ai--scientific-agent-skills` so Exa can attribute usage from the K-Dense AI scientific-agent-skills repo to this integration. Do not remove or rename this header when adapting the scripts.
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Files in this skill
|
|
66
|
+
|
|
67
|
+
- `SKILL.md` — this file (routing and setup)
|
|
68
|
+
- `(see docs)` — detailed web search reference with academic strategy
|
|
69
|
+
- `(see docs)` — URL content extraction reference
|
|
70
|
+
- `scripts/exa_search.py` — CLI wrapper around `client.search_and_contents`
|
|
71
|
+
- `scripts/exa_extract.py` — CLI wrapper around `client.get_contents`
|
|
72
|
+
```
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: executing-plans
|
|
3
|
+
description: Use when you have a written implementation plan to execute in a separate session with review checkpoints
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Executing Plans
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Load plan, review critically, execute all tasks, report when complete.
|
|
11
|
+
|
|
12
|
+
**Announce at start:** "I'm using the executing-plans skill to implement this plan."
|
|
13
|
+
|
|
14
|
+
**Note:** Tell your human partner that Superpowers works much better with access to subagents. The quality of its work will be significantly higher if run on a platform with subagent support (such as Claude Code or Codex). If subagents are available, use superpowers:subagent-driven-development instead of this skill.
|
|
15
|
+
|
|
16
|
+
## The Process
|
|
17
|
+
|
|
18
|
+
### Step 1: Load and Review Plan
|
|
19
|
+
1. Read plan file
|
|
20
|
+
2. Review critically - identify any questions or concerns about the plan
|
|
21
|
+
3. If concerns: Raise them with your human partner before starting
|
|
22
|
+
4. If no concerns: Create TodoWrite and proceed
|
|
23
|
+
|
|
24
|
+
### Step 2: Execute Tasks
|
|
25
|
+
|
|
26
|
+
For each task:
|
|
27
|
+
1. Mark as in_progress
|
|
28
|
+
2. Follow each step exactly (plan has bite-sized steps)
|
|
29
|
+
3. Run verifications as specified
|
|
30
|
+
4. Mark as completed
|
|
31
|
+
|
|
32
|
+
### Step 3: Complete Development
|
|
33
|
+
|
|
34
|
+
After all tasks complete and verified:
|
|
35
|
+
- Announce: "I'm using the finishing-a-development-branch skill to complete this work."
|
|
36
|
+
- **REQUIRED SUB-SKILL:** Use superpowers:finishing-a-development-branch
|
|
37
|
+
- Follow that skill to verify tests, present options, execute choice
|
|
38
|
+
|
|
39
|
+
## When to Stop and Ask for Help
|
|
40
|
+
|
|
41
|
+
**STOP executing immediately when:**
|
|
42
|
+
- Hit a blocker (missing dependency, test fails, instruction unclear)
|
|
43
|
+
- Plan has critical gaps preventing starting
|
|
44
|
+
- You don't understand an instruction
|
|
45
|
+
- Verification fails repeatedly
|
|
46
|
+
|
|
47
|
+
**Ask for clarification rather than guessing.**
|
|
48
|
+
|
|
49
|
+
## When to Revisit Earlier Steps
|
|
50
|
+
|
|
51
|
+
**Return to Review (Step 1) when:**
|
|
52
|
+
- Partner updates the plan based on your feedback
|
|
53
|
+
- Fundamental approach needs rethinking
|
|
54
|
+
|
|
55
|
+
**Don't force through blockers** - stop and ask.
|
|
56
|
+
|
|
57
|
+
## Remember
|
|
58
|
+
- Review plan critically first
|
|
59
|
+
- Follow plan steps exactly
|
|
60
|
+
- Don't skip verifications
|
|
61
|
+
- Reference skills when plan says to
|
|
62
|
+
- Stop when blocked, don't guess
|
|
63
|
+
- Never start implementation on main/master branch without explicit user consent
|
|
64
|
+
|
|
65
|
+
## Integration
|
|
66
|
+
|
|
67
|
+
**Required workflow skills:**
|
|
68
|
+
- **superpowers:using-git-worktrees** - Ensures isolated workspace (creates one or verifies existing)
|
|
69
|
+
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: exploratory-data-analysis
|
|
3
|
+
description: Perform comprehensive exploratory data analysis on scientific data files across 200+ file formats. This skill should be used when analyzing any scientific data file to understand its structure, content, quality, and characteristics. Automatically detects file type and generates detailed markdown reports with format-specific analysis, quality metrics, and downstream analysis recommendations. Covers chemistry, bioinformatics, microscopy, spectroscopy, proteomics, metabolomics, and general scientific data formats.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Exploratory Data Analysis
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Perform comprehensive exploratory data analysis (EDA) on scientific data files across multiple domains. This skill provides automated file type detection, format-specific analysis, data quality assessment, and generates detailed markdown reports suitable for documentation and downstream analysis planning.
|
|
11
|
+
|
|
12
|
+
**Key Capabilities:**
|
|
13
|
+
- Automatic detection and analysis of 200+ scientific file formats
|
|
14
|
+
- Comprehensive format-specific metadata extraction
|
|
15
|
+
- Data quality and integrity assessment
|
|
16
|
+
- Statistical summaries and distributions
|
|
17
|
+
- Visualization recommendations
|
|
18
|
+
- Downstream analysis suggestions
|
|
19
|
+
- Markdown report generation
|
|
20
|
+
|
|
21
|
+
## When to Use This Skill
|
|
22
|
+
|
|
23
|
+
Use this skill when:
|
|
24
|
+
- User provides a path to a scientific data file for analysis
|
|
25
|
+
- User asks to "explore", "analyze", or "summarize" a data file
|
|
26
|
+
- User wants to understand the structure and content of scientific data
|
|
27
|
+
- User needs a comprehensive report of a dataset before analysis
|
|
28
|
+
- User wants to assess data quality or completeness
|
|
29
|
+
- User asks what type of analysis is appropriate for a file
|
|
30
|
+
|
|
31
|
+
## Supported File Categories
|
|
32
|
+
|
|
33
|
+
The skill has comprehensive coverage of scientific file formats organized into six major categories:
|
|
34
|
+
|
|
35
|
+
## Workflow
|
|
36
|
+
|
|
37
|
+
### Step 1: File Type Detection
|
|
38
|
+
|
|
39
|
+
When a user provides a file path, first identify the file type:
|
|
40
|
+
|
|
41
|
+
1. Extract the file extension
|
|
42
|
+
2. Look up the extension in the appropriate reference file
|
|
43
|
+
3. Identify the file category and format description
|
|
44
|
+
4. Load format-specific information
|
|
45
|
+
|
|
46
|
+
**Example:**
|
|
47
|
+
```
|
|
48
|
+
User: "Analyze data.fastq"
|
|
49
|
+
→ Extension: .fastq
|
|
50
|
+
→ Category: bioinformatics_genomics
|
|
51
|
+
→ Format: FASTQ Format (sequence data with quality scores)
|
|
52
|
+
→ Reference: (see docs)
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Step 3: Perform Data Analysis
|
|
56
|
+
|
|
57
|
+
Use the `scripts/eda_analyzer.py` script OR implement custom analysis:
|
|
58
|
+
|
|
59
|
+
**Option A: Use the analyzer script**
|
|
60
|
+
```python
|
|
61
|
+
# The script automatically:
|
|
62
|
+
# 1. Detects file type
|
|
63
|
+
# 4. Generates markdown report
|
|
64
|
+
|
|
65
|
+
python scripts/eda_analyzer.py <filepath> [output.md]
|
|
66
|
+
|
|
67
|
+
**Option B: Custom analysis in the conversation**
|
|
68
|
+
Based on the format information from the reference file, perform appropriate analysis:
|
|
69
|
+
|
|
70
|
+
For tabular data (CSV, TSV, Excel):
|
|
71
|
+
- Load with pandas
|
|
72
|
+
- Check dimensions, data types
|
|
73
|
+
- Analyze missing values
|
|
74
|
+
- Calculate summary statistics
|
|
75
|
+
- Identify outliers
|
|
76
|
+
- Check for duplicates
|
|
77
|
+
|
|
78
|
+
### Step 4: Generate Comprehensive Report
|
|
79
|
+
|
|
80
|
+
Create a markdown report with the following sections:
|
|
81
|
+
|
|
82
|
+
#### Required Sections:
|
|
83
|
+
1. **Title and Metadata**
|
|
84
|
+
- Filename and timestamp
|
|
85
|
+
- File size and location
|
|
86
|
+
|
|
87
|
+
2. **Basic Information**
|
|
88
|
+
- File properties
|
|
89
|
+
- Format identification
|
|
90
|
+
|
|
91
|
+
3. **File Type Details**
|
|
92
|
+
- Format description from reference
|
|
93
|
+
|
|
94
|
+
### Step 5: Save Report
|
|
95
|
+
|
|
96
|
+
Save the markdown report with a descriptive filename:
|
|
97
|
+
- Pattern: `{original_filename}_eda_report.md`
|
|
98
|
+
- Example: `experiment_data.fastq` → `experiment_data_eda_report.md`
|
|
99
|
+
|
|
100
|
+
### Reference File Structure
|
|
101
|
+
|
|
102
|
+
Each format entry includes:
|
|
103
|
+
- **Description:** What the format is
|
|
104
|
+
- **Typical Data:** What it contains
|
|
105
|
+
- **Use Cases:** Common applications
|
|
106
|
+
- **Python Libraries:** How to read it (with code examples)
|
|
107
|
+
- **EDA Approach:** Specific analyses to perform
|
|
108
|
+
|
|
109
|
+
**Example lookup:**
|
|
110
|
+
```markdown
|
|
111
|
+
### .pdb - Protein Data Bank
|
|
112
|
+
**Description:** Standard format for 3D structures of biological macromolecules
|
|
113
|
+
**Typical Data:** Atomic coordinates, residue information, secondary structure
|
|
114
|
+
**Use Cases:** Protein structure analysis, molecular visualization, docking
|
|
115
|
+
**Python Libraries:**
|
|
116
|
+
- `Biopython`: `Bio.PDB`
|
|
117
|
+
|
|
118
|
+
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: external-context
|
|
3
|
+
description: Invoke parallel document-specialist agents for external web searches and documentation lookup
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# External Context Skill
|
|
7
|
+
|
|
8
|
+
Fetch external documentation, references, and context for a query. Decomposes into 2-5 facets and spawns parallel document-specialist Claude agents.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```
|
|
13
|
+
external-context <topic or question>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
### Examples
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
external-context What are the best practices for JWT token rotation in Node.js?
|
|
20
|
+
external-context Compare Prisma vs Drizzle ORM for PostgreSQL
|
|
21
|
+
external-context Latest React Server Components patterns and conventions
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Protocol
|
|
25
|
+
|
|
26
|
+
### Step 1: Facet Decomposition
|
|
27
|
+
|
|
28
|
+
Given a query, decompose into 2-5 independent search facets:
|
|
29
|
+
|
|
30
|
+
```markdown
|
|
31
|
+
## Search Decomposition
|
|
32
|
+
|
|
33
|
+
**Query:** <original query>
|
|
34
|
+
|
|
35
|
+
### Facet 1: <facet-name>
|
|
36
|
+
- **Search focus:** What to search for
|
|
37
|
+
- **Sources:** Official docs, GitHub, blogs, etc.
|
|
38
|
+
|
|
39
|
+
### Facet 2: <facet-name>
|
|
40
|
+
...
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Step 2: Parallel Agent Invocation
|
|
44
|
+
|
|
45
|
+
Fire independent facets in parallel via Task tool:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Task(subagent_type="oh-my-claudecode:document-specialist", model="sonnet", prompt="Search for: <facet 1 description>. Use WebSearch and WebFetch to find official documentation and examples. Cite all sources with URLs.")
|
|
49
|
+
|
|
50
|
+
Task(subagent_type="oh-my-claudecode:document-specialist", model="sonnet", prompt="Search for: <facet 2 description>. Use WebSearch and WebFetch to find official documentation and examples. Cite all sources with URLs.")
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Maximum 5 parallel document-specialist agents.
|
|
54
|
+
|
|
55
|
+
### Step 3: Synthesis Output Format
|
|
56
|
+
|
|
57
|
+
Present synthesized results in this format:
|
|
58
|
+
|
|
59
|
+
```markdown
|
|
60
|
+
## External Context: <query>
|
|
61
|
+
|
|
62
|
+
### Key Findings
|
|
63
|
+
1. **<finding>** - Source: [title](url)
|
|
64
|
+
2. **<finding>** - Source: [title](url)
|
|
65
|
+
|
|
66
|
+
### Detailed Results
|
|
67
|
+
|
|
68
|
+
#### Facet 1:
|
|
69
|
+
<aggregated findings with citations>
|
|
70
|
+
|
|
71
|
+
#### Facet 2:
|
|
72
|
+
<aggregated findings with citations>
|
|
73
|
+
|
|
74
|
+
### Sources
|
|
75
|
+
- [Source 1](url)
|
|
76
|
+
- [Source 2](url)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Configuration
|
|
80
|
+
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fastapi
|
|
3
|
+
description: REST API development framework for scientific web services. Use when building HTTP endpoints, serving ML models as APIs, handling file uploads, or creating microservices. Trigger on imports of fastapi, uvicorn, or mentions of API endpoint, REST service, web server, model serving.
|
|
4
|
+
---
|
|
5
|
+
# fastapi
|
|
6
|
+
|
|
7
|
+
Use this skill for building scientific web APIs and microservices.
|
|
8
|
+
|
|
9
|
+
## Core patterns
|
|
10
|
+
|
|
11
|
+
- **App**: `app = FastAPI(title="My API", version="1.0")`.
|
|
12
|
+
- **Route**: `@app.post("/predict")` with type-annotated parameters.
|
|
13
|
+
- **Request model**: `class PredictionRequest(BaseModel):` with Pydantic validation.
|
|
14
|
+
- **File upload**: `UploadFile` parameter for multipart data.
|
|
15
|
+
- **Run**: `uvicorn.run(app, host="0.0.0.0", port=8000)`.
|
|
16
|
+
|
|
17
|
+
## Rules
|
|
18
|
+
|
|
19
|
+
- Always define response models with `response_model=PredictionResponse`.
|
|
20
|
+
- Use `HTTPException(status_code=404, detail="Not found")` for error handling.
|
|
21
|
+
- Add CORS middleware when serving frontend: `CORSMiddleware(allow_origins=["*"])`.
|
|
22
|
+
- Use `BackgroundTasks` for long-running operations.
|
|
23
|
+
|
|
24
|
+
## Anti-patterns
|
|
25
|
+
|
|
26
|
+
- Don't block the event loop — use `async def` with `await` for I/O.
|
|
27
|
+
- Don't load ML models inside route handlers — load at startup with `@app.on_event("startup")`.
|
|
28
|
+
- Don't return raw dicts — use Pydantic response models for documentation.
|
|
29
|
+
|
|
30
|
+
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: finishing-a-development-branch
|
|
3
|
+
description: Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Finishing a Development Branch
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
Guide completion of development work by presenting clear options and handling chosen workflow.
|
|
11
|
+
|
|
12
|
+
**Core principle:** Verify tests → Detect environment → Present options → Execute choice → Clean up.
|
|
13
|
+
|
|
14
|
+
**Announce at start:** "I'm using the finishing-a-development-branch skill to complete this work."
|
|
15
|
+
|
|
16
|
+
## The Process
|
|
17
|
+
|
|
18
|
+
### Step 1: Verify Tests
|
|
19
|
+
|
|
20
|
+
**Before presenting options, verify tests pass:**
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
# Run project's test suite
|
|
24
|
+
npm test / cargo test / pytest / go test ./...
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
**If tests fail:**
|
|
28
|
+
```
|
|
29
|
+
Tests failing (<N> failures). Must fix before completing:
|
|
30
|
+
|
|
31
|
+
[Show failures]
|
|
32
|
+
|
|
33
|
+
Cannot proceed with merge/PR until tests pass.
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Stop. Don't proceed to Step 2.
|
|
37
|
+
|
|
38
|
+
**If tests pass:** Continue to Step 2.
|
|
39
|
+
|
|
40
|
+
### Step 2: Detect Environment
|
|
41
|
+
|
|
42
|
+
**Determine workspace state before presenting options:**
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
|
|
46
|
+
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
This determines which menu to show and how cleanup works:
|
|
50
|
+
|
|
51
|
+
| State | Menu | Cleanup |
|
|
52
|
+
|-------|------|---------|
|
|
53
|
+
| `GIT_DIR == GIT_COMMON` (normal repo) | Standard 4 options | No worktree to clean up |
|
|
54
|
+
| `GIT_DIR != GIT_COMMON`, named branch | Standard 4 options | Provenance-based (see Step 6) |
|
|
55
|
+
| `GIT_DIR != GIT_COMMON`, detached HEAD | Reduced 3 options (no merge) | No cleanup (externally managed) |
|
|
56
|
+
|
|
57
|
+
### Step 3: Determine Base Branch
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Try common base branches
|
|
61
|
+
git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
Or ask: "This branch split from main - is that correct?"
|
|
65
|
+
|
|
66
|
+
### Step 4: Present Options
|
|
67
|
+
|
|
68
|
+
**Normal repo and named-branch worktree — present exactly these 4 options:**
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
Implementation complete. What would you like to do?
|
|
72
|
+
|
|
73
|
+
1. Merge back to <base-branch> locally
|
|
74
|
+
2. Push and create a Pull Request
|
|
75
|
+
3. Keep the branch as-is (I'll handle it later)
|
|
76
|
+
4. Discard this work
|
|
77
|
+
|
|
78
|
+
Which option?
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
### Step 5: Execute Choice
|
|
83
|
+
|
|
84
|
+
#### Option 1: Merge Locally
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
# Get main repo root for CWD safety
|
|
88
|
+
MAIN_ROOT=$(git -C "$(git rev-parse --git-common-dir)/.." rev-parse --show-toplevel)
|
|
89
|
+
cd "$MAIN_ROOT"
|
|
90
|
+
|
|
91
|
+
# Merge first — verify success before removing anything
|
|
92
|
+
git checkout <base-branch>
|
|
93
|
+
git pull
|
|
94
|
+
git merge <feature-branch>
|
|
95
|
+
|
|
96
|
+
# Verify tests on merged result
|
|
97
|
+
<test command>
|
|
98
|
+
|
|
99
|
+
# Only after merge succeeds: cleanup worktree (Step 6), then delete branch
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Then: Cleanup worktree (Step 6), then delete branch:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
git branch -d <feature-branch>
|
|
106
|
+
```
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: flowio
|
|
3
|
+
description: Parse FCS (Flow Cytometry Standard) files v2.0-3.1. Extract events as NumPy arrays, read metadata/channels, convert to CSV/DataFrame, for flow cytometry data preprocessing.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# FlowIO: Flow Cytometry Standard File Handler
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
FlowIO is a lightweight Python library for reading and writing Flow Cytometry Standard (FCS) files. Parse FCS metadata, extract event data, and create new FCS files with minimal dependencies. The library supports FCS versions 2.0, 3.0, and 3.1, making it ideal for backend services, data pipelines, and basic cytometry file operations.
|
|
11
|
+
|
|
12
|
+
## When to Use This Skill
|
|
13
|
+
|
|
14
|
+
This skill should be used when:
|
|
15
|
+
|
|
16
|
+
- FCS files requiring parsing or metadata extraction
|
|
17
|
+
- Flow cytometry data needing conversion to NumPy arrays
|
|
18
|
+
- Event data requiring export to FCS format
|
|
19
|
+
- Multi-dataset FCS files needing separation
|
|
20
|
+
- Channel information extraction (scatter, fluorescence, time)
|
|
21
|
+
- Cytometry file validation or inspection
|
|
22
|
+
- Pre-processing workflows before advanced analysis
|
|
23
|
+
|
|
24
|
+
**Related Tools:** For advanced flow cytometry analysis including compensation, gating, and FlowJo/GatingML support, recommend FlowKit library as a companion to FlowIO.
|
|
25
|
+
|
|
26
|
+
## Quick Start
|
|
27
|
+
|
|
28
|
+
### Basic File Reading
|
|
29
|
+
|
|
30
|
+
```python
|
|
31
|
+
from flowio import FlowData
|
|
32
|
+
|
|
33
|
+
# Read FCS file
|
|
34
|
+
flow_data = FlowData('experiment.fcs')
|
|
35
|
+
|
|
36
|
+
# Get event data as NumPy array
|
|
37
|
+
events = flow_data.as_array() # Shape: (events, channels)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### Creating FCS Files
|
|
41
|
+
|
|
42
|
+
```python
|
|
43
|
+
import numpy as np
|
|
44
|
+
from flowio import create_fcs
|
|
45
|
+
|
|
46
|
+
# Prepare data
|
|
47
|
+
data = np.array([[100, 200, 50], [150, 180, 60]]) # 2 events, 3 channels
|
|
48
|
+
channels = ['FSC-A', 'SSC-A', 'FL1-A']
|
|
49
|
+
|
|
50
|
+
# Create FCS file
|
|
51
|
+
create_fcs('output.fcs', data, channels)
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Core Workflows
|
|
55
|
+
|
|
56
|
+
### Reading and Parsing FCS Files
|
|
57
|
+
|
|
58
|
+
The FlowData class provides the primary interface for reading FCS files.
|
|
59
|
+
|
|
60
|
+
**Standard Reading:**
|
|
61
|
+
|
|
62
|
+
```python
|
|
63
|
+
from flowio import FlowData
|
|
64
|
+
|
|
65
|
+
# Basic reading
|
|
66
|
+
flow = FlowData('sample.fcs')
|
|
67
|
+
|
|
68
|
+
# Access attributes
|
|
69
|
+
version = flow.version # '3.0', '3.1', etc.
|
|
70
|
+
event_count = flow.event_count # Number of events
|
|
71
|
+
channel_count = flow.channel_count # Number of channels
|
|
72
|
+
pnn_labels = flow.pnn_labels # Short channel names
|
|
73
|
+
pns_labels = flow.pns_labels # Descriptive stain names
|
|
74
|
+
|
|
75
|
+
# Get event data
|
|
76
|
+
events = flow.as_array() # Preprocessed (gain, log scaling applied)
|
|
77
|
+
raw_events = flow.as_array(preprocess=False) # Raw data
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Memory-Efficient Metadata Reading:**
|
|
81
|
+
|
|
82
|
+
When only metadata is needed (no event data):
|
|
83
|
+
|
|
84
|
+
```python
|
|
85
|
+
# Only parse TEXT segment, skip DATA and ANALYSIS
|
|
86
|
+
flow = FlowData('sample.fcs', only_text=True)
|
|
87
|
+
|
|
88
|
+
# Access metadata
|
|
89
|
+
metadata = flow.text # Dictionary of TEXT segment keywords
|
|
90
|
+
print(metadata.get('$DATE')) # Acquisition date
|
|
91
|
+
print(metadata.get('$CYT')) # Instrument name
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
**Handling Problematic Files:**
|
|
95
|
+
|
|
96
|
+
Some FCS files have offset discrepancies or errors:
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
# Ignore offset discrepancies between HEADER and TEXT sections
|
|
100
|
+
flow = FlowData('problematic.fcs', ignore_offset_discrepancy=True)
|
|
101
|
+
|
|
102
|
+
# Use HEADER offsets instead of TEXT offsets
|
|
103
|
+
flow = FlowData('problematic.fcs', use_header_offsets=True)
|
|
104
|
+
|
|
105
|
+
# Ignore offset errors entirely
|
|
106
|
+
flow = FlowData('problematic.fcs', ignore_offset_error=True)
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
**Excluding Null Channels:**
|
|
110
|
+
|
|
111
|
+
```python
|
|
112
|
+
# Exclude specific channels during parsing
|
|
113
|
+
flow = FlowData('sample.fcs', null_channel_list=['Time', 'Null'])
|
|
114
|
+
```
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fluidsim
|
|
3
|
+
description: Framework for computational fluid dynamics simulations using Python. Use when running fluid dynamics simulations including Navier-Stokes equations (2D/3D), shallow water equations, stratified flows, or when analyzing turbulence, vortex dynamics, or geophysical flows. Provides pseudospectral methods with FFT, HPC support, and comprehensive output analysis.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# FluidSim
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
FluidSim is an object-oriented Python framework for high-performance computational fluid dynamics (CFD) simulations. It provides solvers for periodic-domain equations using pseudospectral methods with FFT, delivering performance comparable to Fortran/C++ while maintaining Python's ease of use.
|
|
11
|
+
|
|
12
|
+
**Key strengths**:
|
|
13
|
+
- Multiple solvers: 2D/3D Navier-Stokes, shallow water, stratified flows
|
|
14
|
+
- High performance: Pythran/Transonic compilation, MPI parallelization
|
|
15
|
+
- Complete workflow: Parameter configuration, simulation execution, output analysis
|
|
16
|
+
- Interactive analysis: Python-based post-processing and visualization
|
|
17
|
+
|
|
18
|
+
## Core Capabilities
|
|
19
|
+
|
|
20
|
+
# With FFT support (required for most solvers)
|
|
21
|
+
uv pip install "fluidsim[fft]"
|
|
22
|
+
|
|
23
|
+
# With MPI for parallel computing
|
|
24
|
+
uv pip install "fluidsim[fft,mpi]"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Set environment variables for output directories (optional):
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
export FLUIDSIM_PATH=/path/to/simulation/outputs
|
|
31
|
+
export FLUIDDYN_PATH_SCRATCH=/path/to/working/directory
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
No API keys or authentication required.
|
|
35
|
+
|
|
36
|
+
See `(see docs)` for complete installation instructions and environment configuration.
|
|
37
|
+
|
|
38
|
+
### 2. Running Simulations
|
|
39
|
+
|
|
40
|
+
Standard workflow consists of five steps:
|
|
41
|
+
|
|
42
|
+
**Step 1**: Import solver
|
|
43
|
+
```python
|
|
44
|
+
from fluidsim.solvers.ns2d.solver import Simul
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
**Step 2**: Create and configure parameters
|
|
48
|
+
```python
|
|
49
|
+
params = Simul.create_default_params()
|
|
50
|
+
params.oper.nx = params.oper.ny = 256
|
|
51
|
+
params.oper.Lx = params.oper.Ly = 2 * 3.14159
|
|
52
|
+
params.nu_2 = 1e-3
|
|
53
|
+
|
|
54
|
+
### 3. Available Solvers
|
|
55
|
+
|
|
56
|
+
Choose solver based on physical problem:
|
|
57
|
+
|
|
58
|
+
**2D Navier-Stokes** (`ns2d`): 2D turbulence, vortex dynamics
|
|
59
|
+
```python
|
|
60
|
+
from fluidsim.solvers.ns2d.solver import Simul
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**3D Navier-Stokes** (`ns3d`): 3D turbulence, realistic flows
|
|
64
|
+
```python
|
|
65
|
+
from fluidsim.solvers.ns3d.solver import Simul
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**Stratified flows** (`ns2d.strat`, `ns3d.strat`): Oceanic/atmospheric flows
|
|
69
|
+
|
|
70
|
+
### 4. Parameter Configuration
|
|
71
|
+
|
|
72
|
+
Parameters are organized hierarchically and accessed via dot notation:
|
|
73
|
+
|
|
74
|
+
**Domain and resolution**:
|
|
75
|
+
```python
|
|
76
|
+
params.oper.nx = 256 # grid points
|
|
77
|
+
params.oper.Lx = 2 * pi # domain size
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Physical parameters**:
|
|
81
|
+
```python
|
|
82
|
+
params.nu_2 = 1e-3 # viscosity
|
|
83
|
+
params.nu_4 = 0 # hyperviscosity (optional)
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### 5. Output and Analysis
|
|
87
|
+
|
|
88
|
+
FluidSim produces multiple output types automatically saved during simulation:
|
|
89
|
+
|
|
90
|
+
**Physical fields**: Velocity, vorticity in HDF5 format
|
|
91
|
+
```python
|
|
92
|
+
sim.output.phys_fields.plot("vorticity")
|
|
93
|
+
sim.output.phys_fields.plot("vx")
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
**Spatial means**: Time series of volume-averaged quantities
|
|
97
|
+
```python
|
|
98
|
+
sim.output.spatial_means.plot()
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
### 6. Advanced Features
|
|
102
|
+
|
|
103
|
+
**Custom forcing**: Maintain turbulence or drive specific dynamics
|
|
104
|
+
```python
|
|
105
|
+
params.forcing.enable = True
|
|
106
|
+
params.forcing.type = "tcrandom" # time-correlated random forcing
|
|
107
|
+
params.forcing.forcing_rate = 1.0
|
|
108
|
+
```
|