From calendrome
Spin up a throwaway calendrome instance (alt DB + alt port) for testing or demos. Use when the user runs `/calendrome:sandbox`, says they want to "test calendrome safely", "play around without breaking my data", "demo calendrome", or "show calendrome to someone". Optional `demo` argument seeds rich realistic-looking sample data for screen-shares.
How this skill is triggered — by the user, by Claude, or both
Slash command
/calendrome:sandbox [demo] — optional. Pass 'demo' to pre-seed rich sample data.[demo] — optional. Pass 'demo' to pre-seed rich sample data.This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Spin up a calendrome instance that does not touch the user's real DB. Useful for two cases:
Spin up a calendrome instance that does not touch the user's real DB. Useful for two cases:
Two settings make sandbox isolation work:
CALENDROME_DB environment variable — points the MCP server at an alternate sqlite filePORT environment variable — points the GUI server at an alternate port (default 3737 → sandbox 3838)Both servers (src/mcp/server.ts and src/gui/server.ts) already honor these env vars.
Read .claude/calendrome.local.md to find calendrome_repo_path. If no settings file exists, ask the user where calendrome is installed.
<calendrome_repo_path>/sandbox.dbdemo: same path, but seed rich data afterward.If <calendrome_repo_path>/sandbox.db already exists, ask: "Sandbox DB exists from a previous run. Reuse, or wipe and re-seed?"
Do not auto-spawn long-running servers from inside this skill — background processes started from a skill invocation are fragile and easy to leak. Instead, print exact commands the user runs in their own terminal:
cd <calendrome_repo_path>
# Terminal 1 — MCP server (point Claude Code at this if you want it as a separate MCP)
CALENDROME_DB=./sandbox.db npm start
# Terminal 2 — GUI on alt port
CALENDROME_DB=./sandbox.db PORT=3838 npm run gui
# → http://localhost:3838
demo mode)If the user invoked /calendrome:sandbox demo, run the seed script:
CALENDROME_DB=<calendrome_repo_path>/sandbox.db node <calendrome_repo_path>/plugin/skills/sandbox/scripts/seed-demo.mjs
The seed script populates:
(The seed script is the SQL fixtures equivalent of the in-memory tests in tests/.)
Tell the user:
Sandbox up.
- DB: <repo>/sandbox.db
- GUI: http://localhost:3838
- MCP: connect by running `CALENDROME_DB=./sandbox.db npm start` in a separate terminal
Your real calendrome data is untouched.
Print:
# Stop the GUI process (Ctrl-C in its terminal)
# Stop the MCP process (Ctrl-C in its terminal)
# Optional: wipe sandbox state
rm <calendrome_repo_path>/sandbox.db
Do not auto-rm the file.
The demo seed (see scripts/seed-demo.mjs) produces a realistic-feeling fictional setup:
This gives a screen-share viewer enough variety to see budgets, scheduling, and time logs in action.
Real lifecycle management for two background node processes from inside a Claude Code skill is fragile: PID tracking across sessions, port conflicts, and silent failures are all common. Letting the user run npm start and npm run gui themselves keeps responsibility in the right place. The skill's value is configuration + seed data, not process supervision.
scripts/seed-demo.mjs — demo data seeder used by /calendrome:sandbox demonpx claudepluginhub mklute101/calendrome --plugin calendromeCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.