Biomedical Analysis Dispatch
Purpose
Bridge between the OpenClaw conversational interface and Claude Code's
scientific execution environment (K-Dense Scientific Skills).
When to use
- Any bioinformatics task: RNA-seq, scRNA-seq, variant calling, sequence analysis
- Drug discovery: molecular docking, virtual screening, ADMET prediction
- Clinical data: survival analysis, variant interpretation, clinical trials search
- Multi-omics: proteomics, metabolomics, pathway enrichment
- Medical imaging: DICOM processing, digital pathology
- Scientific communication: literature review, scientific writing, figure generation
- Any request mentioning specific tools: DESeq2, Seurat, Scanpy, RDKit, BioPython, etc.
Workflow
- Identify task type from the user's request
- Locate data files — check if user mentioned a file path; if not, list
/workspace/data/ and confirm with user
- Set up Dashboard — every analysis task must have a live dashboard:
TASK_DIR=data/<task_name>
mkdir -p "$TASK_DIR/dashboard" "$TASK_DIR/output"
cp skills/dashboard/dashboard.html "$TASK_DIR/dashboard/"
cp skills/dashboard/dashboard_serve.py "$TASK_DIR/dashboard/"
# Write initial state.json with: progress(0%), 研究概要, 分析计划(list), empty steps
# Start server
python "$TASK_DIR/dashboard/dashboard_serve.py" --port <free_port> &
# Tell user the URL immediately: http://localhost:<port>/dashboard/dashboard.html
- 拆分长任务 — 如果任务包含多个阶段(如:文献搜索 + 写大纲 + 写正文 + 做图 + 编译),必须拆成多个 Claude Code session,每个 session 只做一件事:
- Phase 1: 文献搜索 + 大纲
- Phase 2: 写正文(或分章节)
- Phase 3: 生成图表
- Phase 4: 编译 PDF
- 原因: 单次 CC session 超过 10 分钟大概率卡住(上下文窗口满、API 超时、生成超长文本)
- Construct the Claude Code prompt — 短而聚焦,包含 dashboard 更新指令:
- Which scientific skill(s) to use(明确指定 skill 路径,如
先读 ~/next-medgeai/MedgeClaw/scientific-skills/scientific-skills/scientific-writing/SKILL.md)
- Input file path(s)
- Output directory: always
$TASK_DIR/output/
- Dashboard state.json path and update expectations:
- Update progress after each step
- Use
step panels with desc, code, code_file, outputs
- Use
{"src": "/output/file.csv"} for table references (NOT inline data)
- Image paths absolute:
/output/fig1.png
- Expected output format (table, figure, report)
- Execute via Claude Code CLI(推荐 stream-json + hooks):
# 推荐:stream-json 模式(可观测)
cd "$TASK_DIR" && claude -p "短任务描述。先读 skill 文件。完成后: openclaw system event --text 'Done: 摘要' --mode now" \
--output-format stream-json \
--verbose \
--dangerously-skip-permissions \
2>/dev/null | tail -1
# 旧方式(不推荐,无可观测性)
claude --dangerously-skip-permissions -p "Use available scientific skills. [TASK]. Input: [PATH]. Outputs: $TASK_DIR/output/. Update dashboard at $TASK_DIR/dashboard/state.json after each step (step panels with code + outputs). Completion: openclaw system event --text 'Done: summary' --mode now"
- Monitor — 用 hooks 的
progress.json 判断进度:
- 如果
last_update 超过 5 分钟没变 → 大概率卡了,kill 掉重来
- 如果任务 >30s,告知用户后台运行中
- Report back — 总结结果,指向 dashboard URL
科学写作任务的特殊处理
文献综述 / 论文写作必须拆分:
# Phase 1: 文献搜索 + 大纲(5-10 分钟)
cd writing_outputs/<task_name> && claude -p "读 ~/next-medgeai/MedgeClaw/scientific-skills/scientific-skills/literature-review/SKILL.md 和 scientific-writing/SKILL.md。按 literature-review 流程搜索文献,创建 outline.md(Stage 1)。" \
--output-format stream-json --verbose --dangerously-skip-permissions 2>/dev/null | tail -1
# Phase 2: 写正文(分章节,每章 5-10 分钟)
cd writing_outputs/<task_name> && claude -p "读 outline.md 的第 1-3 节。用 Edit 工具在 manuscript.tex 中补充这些章节的正文。写完整的学术散文。" \
--output-format stream-json --verbose --dangerously-skip-permissions 2>/dev/null | tail -1
# Phase 3: 创建 BibTeX + 添加引用(5 分钟)
cd writing_outputs/<task_name> && claude -p "读 manuscript.tex 和 outline.md。创建 references/references.bib(至少 30 篇),在 tex 中添加 \cite{}(每节至少 5 处),在 \end{document} 前加 \bibliographystyle{unsrt} 和 \bibliography{references}。" \
--output-format stream-json --verbose --dangerously-skip-permissions 2>/dev/null | tail -1
# Phase 4: 生成图表(5-10 分钟)
cd writing_outputs/<task_name> && claude -p "在 figures/ 下创建 5 个 Python 脚本生成图表 PDF。中文标签用 Noto Sans CJK SC 字体。" \
--output-format stream-json --verbose --dangerously-skip-permissions 2>/dev/null | tail -1
# Phase 5: 编译 PDF(手动或简单 CC)
cd writing_outputs/<task_name>/drafts && xelatex -output-directory=../final manuscript.tex
cd ../final && bibtex manuscript && cd ../drafts && xelatex -output-directory=../final manuscript.tex && xelatex -output-directory=../final manuscript.tex
为什么必须拆分:
- 单次让 CC 做完所有步骤(搜文献 + 写大纲 + 写正文 + 做图 + 编译)会导致:
- 上下文窗口满(74 篇摘要 + task.md + skill 文件 + LaTeX 模板 = 超大上下文)
- Opus 生成超长 LaTeX 文本(数千 token)需要 10+ 分钟,容易超时
- 中途卡住后无法恢复,只能重来
- 拆分后每个 phase 独立,失败了只需重跑该 phase
Output handling
- Tables → summarize top rows, mention full file path
- Figures → send the image file to the user directly
- Reports → send the PDF/HTML file to the user directly
- Errors → show the error message and suggest a fix
Example dispatches
Clinical data analysis (complete flow with dashboard):
# 1. Setup
TASK_DIR=data/charls_ace
mkdir -p "$TASK_DIR/dashboard" "$TASK_DIR/output"
cp skills/dashboard/dashboard.html "$TASK_DIR/dashboard/"
cp skills/dashboard/dashboard_serve.py "$TASK_DIR/dashboard/"
# 2. Write initial state.json
# 3. Start dashboard server
python "$TASK_DIR/dashboard/dashboard_serve.py" --port 7790 &
# 4. Dispatch to Claude Code
claude --dangerously-skip-permissions -p "分析 CHARLS 队列中 ACE 与 CVD 的关联。Input: data/charls_ace/charls.dta. Output: data/charls_ace/output/. 每步更新 dashboard state.json(step panels with code + outputs)。完成后: openclaw system event --text 'Done: ACE-CVD分析完成' --mode now"
RNA-seq differential expression:
claude --dangerously-skip-permissions -p "Use DESeq2 scientific skill. Run differential expression. Counts: /workspace/data/counts.csv, metadata: /workspace/data/meta.csv, contrast: treatment vs control. Save to /workspace/data/rnaseq/output/. Update dashboard at /workspace/data/rnaseq/dashboard/state.json."
Single-cell RNA-seq:
claude --dangerously-skip-permissions -p "Use Scanpy scientific skill. Analyze 10X data at /workspace/data/10x/. QC, clustering, markers. Save to /workspace/data/10x/output/. Update dashboard state.json with step panels."
输出路径约束(重要)
所有任务输出必须写入指定目录:
| 任务类型 |
输出路径 |
说明 |
| 数据分析 |
data/<task_name>/output/ |
CSV、图表、报告 |
| Dashboard |
data/<task_name>/dashboard/ |
state.json, dashboard.html, serve.py |
| 科学写作 |
writing_outputs/<date>_<topic>/ |
LaTeX、PDF、BibTeX、figures/ |
| 临时文件 |
data/<task_name>/temp/ |
中间产物 |
禁止写入:
- ❌ 项目根目录(
~/next-medgeai/MedgeClaw/)
- ❌
/workspace/outputs/(已废弃)
- ❌
/workspace/data/(只读,用户输入数据)
Important rules
- Never modify raw data files in
/workspace/data/
- If the user's request is ambiguous, ask one clarifying question before dispatching
- If Claude Code returns an error about a missing package, retry with
uv pip install [package] prepended to the command
- 涉及中文可视化时,在 prompt 中加入:绘图前先导入
skills/cjk-viz/scripts/setup_cjk_font.py 执行字体检测,不要硬编码字体名
1---2name: biomed-dispatch3description: Dispatch biomedical research and data analysis tasks to Claude Code with K-Dense Scientific Skills. Use this skill when the user asks to run any bioinformatics, genomics, drug discovery, clinical data analysis, proteomics, multi-omics, medical imaging, or scientific computation task. Also use for literature search (PubMed, bioRxiv), pathway analysis, protein structure prediction, or scientific writing tasks.4---5
6# Biomedical Analysis Dispatch
7
8## Purpose
9Bridge between the OpenClaw conversational interface and Claude Code's
10scientific execution environment (K-Dense Scientific Skills).
11
12## When to use
13- Any bioinformatics task: RNA-seq, scRNA-seq, variant calling, sequence analysis
14- Drug discovery: molecular docking, virtual screening, ADMET prediction
15- Clinical data: survival analysis, variant interpretation, clinical trials search
16- Multi-omics: proteomics, metabolomics, pathway enrichment
17- Medical imaging: DICOM processing, digital pathology
18- Scientific communication: literature review, scientific writing, figure generation
19- Any request mentioning specific tools: DESeq2, Seurat, Scanpy, RDKit, BioPython, etc.
20
21## Workflow
22
231. **Identify task type** from the user's request
242. **Locate data files** — check if user mentioned a file path; if not, list `/workspace/data/` and confirm with user
253. **Set up Dashboard** — every analysis task must have a live dashboard:
26 ```bash
27 TASK_DIR=data/<task_name>
28 mkdir -p "$TASK_DIR/dashboard" "$TASK_DIR/output"
29 cp skills/dashboard/dashboard.html "$TASK_DIR/dashboard/"
30 cp skills/dashboard/dashboard_serve.py "$TASK_DIR/dashboard/"
31 # Write initial state.json with: progress(0%), 研究概要, 分析计划(list), empty steps
32 # Start server
33 python "$TASK_DIR/dashboard/dashboard_serve.py" --port <free_port> &
34 # Tell user the URL immediately: http://localhost:<port>/dashboard/dashboard.html
35 ```
364. **拆分长任务** — 如果任务包含多个阶段(如:文献搜索 + 写大纲 + 写正文 + 做图 + 编译),**必须拆成多个 Claude Code session**,每个 session 只做一件事:
37 - Phase 1: 文献搜索 + 大纲
38 - Phase 2: 写正文(或分章节)
39 - Phase 3: 生成图表
40 - Phase 4: 编译 PDF
41 - **原因:** 单次 CC session 超过 10 分钟大概率卡住(上下文窗口满、API 超时、生成超长文本)
425. **Construct the Claude Code prompt** — 短而聚焦,包含 dashboard 更新指令:
43 - Which scientific skill(s) to use(**明确指定 skill 路径**,如 `先读 ~/next-medgeai/MedgeClaw/scientific-skills/scientific-skills/scientific-writing/SKILL.md`)
44 - Input file path(s)
45 - Output directory: always `$TASK_DIR/output/`
46 - **Dashboard state.json path** and update expectations:
47 - Update progress after each step
48 - Use `step` panels with `desc`, `code`, `code_file`, `outputs`
49 - Use `{"src": "/output/file.csv"}` for table references (NOT inline data)
50 - Image paths absolute: `/output/fig1.png`
51 - Expected output format (table, figure, report)
526. **Execute** via Claude Code CLI(推荐 stream-json + hooks):
53 ```bash
54 # 推荐:stream-json 模式(可观测)
55 cd "$TASK_DIR" && claude -p "短任务描述。先读 skill 文件。完成后: openclaw system event --text 'Done: 摘要' --mode now" \
56 --output-format stream-json \
57 --verbose \
58 --dangerously-skip-permissions \
59 2>/dev/null | tail -1
60
61 # 旧方式(不推荐,无可观测性)
62 claude --dangerously-skip-permissions -p "Use available scientific skills. [TASK]. Input: [PATH]. Outputs: $TASK_DIR/output/. Update dashboard at $TASK_DIR/dashboard/state.json after each step (step panels with code + outputs). Completion: openclaw system event --text 'Done: summary' --mode now"
63 ```
647. **Monitor** — 用 hooks 的 `progress.json` 判断进度:
65 - 如果 `last_update` 超过 5 分钟没变 → 大概率卡了,kill 掉重来
66 - 如果任务 >30s,告知用户后台运行中
678. **Report back** — 总结结果,指向 dashboard URL
68
69## 科学写作任务的特殊处理
70
71**文献综述 / 论文写作必须拆分:**
72
73```bash
74# Phase 1: 文献搜索 + 大纲(5-10 分钟)
75cd writing_outputs/<task_name> && claude -p "读 ~/next-medgeai/MedgeClaw/scientific-skills/scientific-skills/literature-review/SKILL.md 和 scientific-writing/SKILL.md。按 literature-review 流程搜索文献,创建 outline.md(Stage 1)。" \
76 --output-format stream-json --verbose --dangerously-skip-permissions 2>/dev/null | tail -1
77
78# Phase 2: 写正文(分章节,每章 5-10 分钟)
79cd writing_outputs/<task_name> && claude -p "读 outline.md 的第 1-3 节。用 Edit 工具在 manuscript.tex 中补充这些章节的正文。写完整的学术散文。" \
80 --output-format stream-json --verbose --dangerously-skip-permissions 2>/dev/null | tail -1
81
82# Phase 3: 创建 BibTeX + 添加引用(5 分钟)
83cd writing_outputs/<task_name> && claude -p "读 manuscript.tex 和 outline.md。创建 references/references.bib(至少 30 篇),在 tex 中添加 \cite{}(每节至少 5 处),在 \end{document} 前加 \bibliographystyle{unsrt} 和 \bibliography{references}。" \
84 --output-format stream-json --verbose --dangerously-skip-permissions 2>/dev/null | tail -1
85
86# Phase 4: 生成图表(5-10 分钟)
87cd writing_outputs/<task_name> && claude -p "在 figures/ 下创建 5 个 Python 脚本生成图表 PDF。中文标签用 Noto Sans CJK SC 字体。" \
88 --output-format stream-json --verbose --dangerously-skip-permissions 2>/dev/null | tail -1
89
90# Phase 5: 编译 PDF(手动或简单 CC)
91cd writing_outputs/<task_name>/drafts && xelatex -output-directory=../final manuscript.tex
92cd ../final && bibtex manuscript && cd ../drafts && xelatex -output-directory=../final manuscript.tex && xelatex -output-directory=../final manuscript.tex
93```
94
95**为什么必须拆分:**
96- 单次让 CC 做完所有步骤(搜文献 + 写大纲 + 写正文 + 做图 + 编译)会导致:
97 - 上下文窗口满(74 篇摘要 + task.md + skill 文件 + LaTeX 模板 = 超大上下文)
98 - Opus 生成超长 LaTeX 文本(数千 token)需要 10+ 分钟,容易超时
99 - 中途卡住后无法恢复,只能重来
100- 拆分后每个 phase 独立,失败了只需重跑该 phase
101
102## Output handling
103- Tables → summarize top rows, mention full file path
104- Figures → send the image file to the user directly
105- Reports → send the PDF/HTML file to the user directly
106- Errors → show the error message and suggest a fix
107
108## Example dispatches
109
110**Clinical data analysis (complete flow with dashboard):**
111```bash
112# 1. Setup
113TASK_DIR=data/charls_ace
114mkdir -p "$TASK_DIR/dashboard" "$TASK_DIR/output"
115cp skills/dashboard/dashboard.html "$TASK_DIR/dashboard/"
116cp skills/dashboard/dashboard_serve.py "$TASK_DIR/dashboard/"
117# 2. Write initial state.json
118# 3. Start dashboard server
119python "$TASK_DIR/dashboard/dashboard_serve.py" --port 7790 &
120# 4. Dispatch to Claude Code
121claude --dangerously-skip-permissions -p "分析 CHARLS 队列中 ACE 与 CVD 的关联。Input: data/charls_ace/charls.dta. Output: data/charls_ace/output/. 每步更新 dashboard state.json(step panels with code + outputs)。完成后: openclaw system event --text 'Done: ACE-CVD分析完成' --mode now"
122```
123
124**RNA-seq differential expression:**
125```bash
126claude --dangerously-skip-permissions -p "Use DESeq2 scientific skill. Run differential expression. Counts: /workspace/data/counts.csv, metadata: /workspace/data/meta.csv, contrast: treatment vs control. Save to /workspace/data/rnaseq/output/. Update dashboard at /workspace/data/rnaseq/dashboard/state.json."
127```
128
129**Single-cell RNA-seq:**
130```bash
131claude --dangerously-skip-permissions -p "Use Scanpy scientific skill. Analyze 10X data at /workspace/data/10x/. QC, clustering, markers. Save to /workspace/data/10x/output/. Update dashboard state.json with step panels."
132```
133
134## 输出路径约束(重要)
135
136**所有任务输出必须写入指定目录:**
137
138| 任务类型 | 输出路径 | 说明 |
139|---------|---------|------|
140| 数据分析 | `data/<task_name>/output/` | CSV、图表、报告 |
141| Dashboard | `data/<task_name>/dashboard/` | state.json, dashboard.html, serve.py |
142| 科学写作 | `writing_outputs/<date>_<topic>/` | LaTeX、PDF、BibTeX、figures/ |
143| 临时文件 | `data/<task_name>/temp/` | 中间产物 |
144
145**禁止写入:**
146- ❌ 项目根目录(`~/next-medgeai/MedgeClaw/`)
147- ❌ `/workspace/outputs/`(已废弃)
148- ❌ `/workspace/data/`(只读,用户输入数据)
149
150## Important rules
151- Never modify raw data files in `/workspace/data/`
152- If the user's request is ambiguous, ask one clarifying question before dispatching
153- If Claude Code returns an error about a missing package, retry with `uv pip install [package]` prepended to the command
154- **涉及中文可视化时**,在 prompt 中加入:绘图前先导入 `skills/cjk-viz/scripts/setup_cjk_font.py` 执行字体检测,不要硬编码字体名