Add CLAUDE.md and Claude Code skills for MS webapp development#357
Add CLAUDE.md and Claude Code skills for MS webapp development#357t0mdavid-m merged 2 commits intomainfrom
Conversation
Adds project documentation (CLAUDE.md) and 6 skills to help developers scaffold and extend OpenMS web applications built from this template: - /create-page: add a new Streamlit page with proper registration - /create-workflow: scaffold a full TOPP workflow (class + 4 pages) - /add-python-tool: add a custom Python analysis script with auto-UI - /add-presets: add parameter presets for workflows - /configure-deployment: set up Docker and CI/CD for a new app - /add-visualization: add pyopenms-viz or OpenMS-Insight visualizations https://claude.ai/code/session_01WYotmLfqRtB8WJXj1Eosiz
📝 WalkthroughWalkthroughAdds seven documentation/skill files describing presets, custom Python tools, visualizations, deployment, Streamlit pages, TOPP workflows, and a repository overview for the OpenMS Streamlit WebApp Template. Changes
Possibly related PRs
Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
CLAUDE.md (1)
15-36: Consider adding language specifier to fenced code block.The ASCII art architecture diagram is missing a language specifier. While this works fine, adding
```textwould satisfy the linter and make the intent clearer.📝 Proposed improvement
-``` +```text app.py # Entry point — registers pages via st.Page() in a dict settings.json # App config: name, version, deployment mode, threading🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@CLAUDE.md` around lines 15 - 36, Update the fenced ASCII-art block in CLAUDE.md to include a language specifier by changing the opening fence from ``` to ```text so the architecture diagram (the block containing app.py, settings.json, src/, Dockerfile, etc.) is marked as plain text and satisfies the linter.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@CLAUDE.md`:
- Around line 15-36: Update the fenced ASCII-art block in CLAUDE.md to include a
language specifier by changing the opening fence from ``` to ```text so the
architecture diagram (the block containing app.py, settings.json, src/,
Dockerfile, etc.) is marked as plain text and satisfies the linter.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 30f4e374-82ba-4170-960a-49b274b24993
📒 Files selected for processing (7)
.claude/skills/add-presets.md.claude/skills/add-python-tool.md.claude/skills/add-visualization.md.claude/skills/configure-deployment.md.claude/skills/create-page.md.claude/skills/create-workflow.mdCLAUDE.md
Make it clear to Claude that this is THE framework for building mass spectrometry web applications for proteomics and metabolomics research. Add domain-specific context about MS data types, TOPP tool pipelines, and scientific visualization needs. https://claude.ai/code/session_01WYotmLfqRtB8WJXj1Eosiz
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@CLAUDE.md`:
- Around line 26-47: The fenced code block in CLAUDE.md listing project files is
missing a language tag; update that opening triple-backtick (the block that
begins with the lines showing app.py, settings.json, etc.) to include a language
identifier such as text (e.g., ```text) so markdownlint MD040 is satisfied—no
other changes to the block contents are needed.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: daf2dbe4-54f7-4b5e-9c3a-8c610437c2af
📒 Files selected for processing (4)
.claude/skills/add-python-tool.md.claude/skills/add-visualization.md.claude/skills/create-workflow.mdCLAUDE.md
✅ Files skipped from review due to trivial changes (2)
- .claude/skills/create-workflow.md
- .claude/skills/add-python-tool.md
🚧 Files skipped from review as they are similar to previous changes (1)
- .claude/skills/add-visualization.md
| ``` | ||
| app.py # Entry point — registers pages via st.Page() in a dict | ||
| settings.json # App config: name, version, deployment mode, threading | ||
| default-parameters.json # Default workspace parameters (tracked via widget keys) | ||
| presets.json # Parameter presets for TOPP workflows | ||
| content/ # Streamlit pages (one .py per page) | ||
| src/ | ||
| common/common.py # Utilities: page_setup(), save_params(), show_fig(), show_table() | ||
| Workflow.py # Example WorkflowManager subclass (TOPP workflow) | ||
| workflow/ | ||
| WorkflowManager.py # Base class: upload/configure/execution/results pattern | ||
| StreamlitUI.py # Widget library: upload_widget, input_TOPP, input_python, etc. | ||
| ParameterManager.py # JSON parameter persistence + TOPP .ini generation | ||
| CommandExecutor.py # Runs TOPP tools and Python scripts as subprocesses | ||
| FileManager.py # Workspace file organization | ||
| Logger.py # Structured workflow logging | ||
| QueueManager.py # Redis queue for online deployments | ||
| python-tools/ # Custom Python analysis scripts (with DEFAULTS dicts) | ||
| Dockerfile # Full build: OpenMS + TOPP tools + pyOpenMS | ||
| Dockerfile_simple # Lightweight: pyOpenMS only | ||
| docker-compose.yml # Deployment config | ||
| ``` |
There was a problem hiding this comment.
Add a language tag to the fenced code block.
The fence starting at Line 26 is missing a language identifier, which triggers markdownlint MD040.
Proposed fix
-```
+```text
app.py # Entry point — registers pages via st.Page() in a dict
settings.json # App config: name, version, deployment mode, threading
default-parameters.json # Default workspace parameters (tracked via widget keys)
@@
docker-compose.yml # Deployment config</details>
<!-- suggestion_start -->
<details>
<summary>📝 Committable suggestion</summary>
> ‼️ **IMPORTANT**
> Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
```suggestion
🧰 Tools
🪛 markdownlint-cli2 (0.22.0)
[warning] 26-26: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@CLAUDE.md` around lines 26 - 47, The fenced code block in CLAUDE.md listing
project files is missing a language tag; update that opening triple-backtick
(the block that begins with the lines showing app.py, settings.json, etc.) to
include a language identifier such as text (e.g., ```text) so markdownlint MD040
is satisfied—no other changes to the block contents are needed.
Summary
Adds Claude Code project documentation and skills to help developers build and modify mass spectrometry web applications using this template.
CLAUDE.md — MS domain framing
The
CLAUDE.mdestablishes this as the standard framework for building MS web applications for proteomics and metabolomics research. It documents:.plot()extension) and OpenMS-Insight (Vue.js interactive components)6 Claude Code skills (
.claude/skills/)/create-page/create-workflow/add-python-tool/add-presets/configure-deployment/add-visualizationSkills reference derived apps (quantms-web, umetaflow, FLASHApp) as real-world examples so Claude can learn from and modify them.
Recommendations for other repos (not in this PR)
.plot()API, plot types, backends. Consider/add-plot-typeskill./add-componentskill.Test plan
python -m pytest tests/streamlit run app.pystill workshttps://claude.ai/code/session_01WYotmLfqRtB8WJXj1Eosiz