src/osprey/templates/claude_code/claude/skills/sim-scenarios/SKILL.md
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).
npx skillsauth add als-apg/osprey sim-scenariosInstall 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.
The mock control system and mock archiver can be driven by a data-driven simulation engine. Its machine model defines named scenarios (fault states, nominal operation) that change channel values and archiver history. This skill manages which scenario is active.
Read the project config.yml and find the simulation file path:
control_system.connector.mock.simulation_file (and usually the same path
under archiver.mock_archiver.simulation_file)The path is relative to the project root (typically
data/simulation/machine.json). If the key is absent, this project does not
use the simulation engine — say so and stop.
Read the machine file (JSON). The top-level scenarios object maps scenario
names to definitions; each has a description. Present a table:
| Scenario | Description | |----------|-------------| | ... | ... |
The active scenario is stored as plain text in a file named
active_scenario sitting NEXT TO the machine file (e.g.
data/simulation/active_scenario). Read it and report the name. A missing
file or an unknown name means the engine runs the nominal scenario.
scenarios
(exact match). If it doesn't, list the valid names instead of writing.active_scenario file next to the machine file.Important: switching scenarios resets the simulated machine — any setpoint changes written during the session are cleared and channels return to the new scenario's state. Warn the user before switching if writes were made this session.
Do NOT:
active_scenario
file controls the active scenariodevelopment
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.
development
Guides a contributor through the OSPREY GitHub Flow contribution journey from a working-tree change to a merged PR on main. Use when someone says "I want to contribute X to osprey", "help me commit/push this", "prep this branch for a PR", "open a PR", "my CI is failing on this branch", "rebase onto main", or wants help following the contributing workflow. Auto-detects whether they have push access to als-apg/osprey or are contributing from a fork. Composes with the osprey-pre-commit, commit-organize, and osprey-release skills — invoke this whenever someone is contributing code to OSPREY, even if they haven't named the workflow explicitly.