src/osprey/templates/claude_code/claude/skills/demo-gallery/SKILL.md
Generate a showcase set of diverse artifacts to demonstrate the OSPREY Artifact Gallery. Produces interactive Plotly plots, matplotlib figures, a LaTeX-rich markdown report, and a computed data table — all in parallel. Use for demos, onboarding, or verifying that the gallery pipeline works end-to-end.
npx skillsauth add als-apg/osprey demo-galleryInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate a diverse set of high-quality artifacts to demonstrate every capability of the OSPREY Artifact Gallery. The artifacts should be visually striking, scientifically themed, and exercise all rendering paths.
Follow these two phases in order.
Launch all four artifact groups below in parallel. Each group uses a different creation pathway to showcase the gallery's full range.
create_interactive_plotUse the create_interactive_plot MCP tool to produce a multi-panel Plotly figure with at least two subplots. The plot should be visually rich and interactive.
Suggested content (pick one or combine creatively):
Use plotly.subplots.make_subplots for multi-panel layout. Apply a clean template (plotly_white or plotly_dark). Add descriptive axis labels and a figure title. Call save_artifact(fig, "Title") at the end.
executeUse the execute MCP tool to create a publication-quality matplotlib figure and save it as an artifact. The figure should demonstrate matplotlib's strengths (colormaps, contours, annotations).
Suggested content (pick one):
Use plt.subplots(), apply plt.style.use("seaborn-v0_8-whitegrid") or similar, and call save_artifact(fig, "Title", "description").
artifact_saveUse the artifact_save MCP tool to create a rich markdown document that exercises KaTeX rendering and table formatting.
The report MUST include:
$$...$$ blocks — at least two, such as:
Use content_type: "markdown". Give it an informative title like "Accelerator Physics Reference Card" or "Beam Dynamics Summary".
executeUse the execute MCP tool to compute a numeric result and save a markdown table as an artifact.
Suggested content:
Use save_artifact(summary_string, "Title", "description") where the string is a formatted markdown table. Include descriptive column headers and realistic numeric values.
After all artifacts are created:
artifact_focus| # | Title | Type | Pathway |
|---|-------|------|---------|
| 1 | ... | Interactive plot | create_interactive_plot |
| 2 | ... | Static plot | execute + matplotlib |
| 3 | ... | Markdown report | artifact_save |
| 4 | ... | Data table | execute + save_artifact() |
execute callnumpy. Use realistic parameter ranges (e.g., beam energies 1-8 GeV, tunes 10-30, beta functions 1-30 m).$...$ for inline and $$...$$ for display math. Inside Python string literals in execute, escape backslashes (\\\\) for LaTeX commands.Do NOT:
artifact_focus — the demo should open to the most striking visualdata-ai
List, inspect, and switch the simulated machine scenarios that drive the mock control system and mock archiver. Use when the user asks which scenarios are available, which scenario is active, or wants to switch the simulated machine into a different state (e.g. a fault demo or back to nominal).
development
Interactive interview to create a custom OSPREY build profile for a new accelerator, detector, or beamline application. Use when someone says "interview me", "create a build profile", "set up my agent", "configure my detector", "onboard me", or needs to create an OSPREY project tailored to their specific control system. Also handles migration from existing OSPREY projects (including LangGraph-era projects) — trigger on "migrate my project", "I have an existing project", "upgrade from old OSPREY", "upgrade from langgraph", "legacy migration", "bring my project forward", "convert my project", "extract profile from existing project", "reverse-engineer build profile". Also use for /osprey-build-interview feedback to collect post-use feedback. Also trigger when onboarding a new colleague or when anyone needs help figuring out what their OSPREY agent should look like.
testing
Guides a maintainer through cutting an OSPREY release on the GitHub Flow workflow: open a version-bump PR, merge it to main, tag the merge commit, push the tag, verify the automated PyPI publish. Use when someone says "create a release", "bump the version", "cut v2026.X.Y", "publish to PyPI", "tag a release", or asks about the release process. Composes with `osprey-contribute` for the bump PR. Versions follow CalVer (vYYYY.M.P) and the source of truth is `src/osprey/__init__.py` — Hatch derives the pyproject.toml version dynamically.
development
Validates code before committing using OSPREY's three-tier check scripts. Runs linting, formatting, and tests to catch issues early. Use when ready to commit, before pushing, before opening a PR, or when the user asks to run checks, validate, or verify their changes. For the full contribution journey (branching, commits, push, PR, merge), use `osprey-contribute` instead — this skill is the focused validation step.