Controls the local ShowMeHow app via CLI, manages projects, pushes scripts into the running app, and writes SMH scripts for code walkthroughs. Use when authoring or operating ShowMeHow demos.
Use this skill when you need to:
.smh walkthrough scripts for code-focused demosopen_code()..smh open flow and will try to auto-play after opening when project selection is already resolved.From the repository root:
node app/bin/smh-cli.mjs health
If that fails, ask the user to open the ShowMeHow app first.
bundle-output/mac-arm64/ShowMeHow.appcd app && npm run distcd app && npm run buildIf testing packaged behavior after a rebuild, fully quit the app and reopen the packaged app.
node app/bin/smh-cli.mjs health
node app/bin/smh-cli.mjs projects
node app/bin/smh-cli.mjs projects --json
node app/bin/smh-cli.mjs open-project eyj
node app/bin/smh-cli.mjs open-project 1
node app/bin/smh-cli.mjs get-script
node app/bin/smh-cli.mjs get-script --json
From a file:
node app/bin/smh-cli.mjs push-script path/to/demo.smh
From stdin:
cat path/to/demo.smh | node app/bin/smh-cli.mjs push-script --stdin
node app/bin/smh-cli.mjs load-sample
node app/bin/smh-cli.mjs validate
node app/bin/smh-cli.mjs play
node app/bin/smh-cli.mjs pause
node app/bin/smh-cli.mjs resume
node app/bin/smh-cli.mjs restart
node app/bin/smh-cli.mjs stop
node app/bin/smh-cli.mjs next-step
Note: play can still be less reliable from the CLI on long-running or interrupted sessions. If it times out, validate/push via CLI and press Play in the app manually.
node app/bin/smh-cli.mjs state
node app/bin/smh-cli.mjs state --json
node app/bin/smh-cli.mjs health
node app/bin/smh-cli.mjs projects
node app/bin/smh-cli.mjs open-project eyj
.smh script in the repo or a temp file.node app/bin/smh-cli.mjs push-script my-script.smh
node app/bin/smh-cli.mjs validate
node app/bin/smh-cli.mjs play
When editing UI code or adding any new visual control while working on ShowMeHow itself, also keep the dev-mode overlay labels up to date.
Read the DSL notes in references/smh-dsl.md.
meta({...})layout("two-column")new_panel(id, "code")focus_panel(id)open_code(id, "relative/path.php", line)highlight_lines(id, startLine, endLine)select_code_line(id, line, startCol?)select_code(id, line, startCol, endCol) only when you need a precise subrangeclear_code_selection(id)pause(seconds)tts(text)note(text)highlight_lines() to move attention between blocks.select_code_line() for important single-line callouts.pause() between major moments.node app/bin/smh-cli.mjs open-project eyj
node app/bin/smh-cli.mjs push-script auth-walkthrough.smh
node app/bin/smh-cli.mjs validate
node app/bin/smh-cli.mjs play