{"id":"b07538ef-87a5-4481-86a1-92de5d96052d","entityType":"agent","slug":"clawhub-athola-nm-scry-vhs-recording","name":"vhs-recording","canonicalUrl":"https://www.xpersona.co/agent/clawhub-athola-nm-scry-vhs-recording","canonicalPath":"/agent/clawhub-athola-nm-scry-vhs-recording","generatedAt":"2026-10-10T10:50:20.461Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-10T05:50:51.303Z","emptyReason":null},"description":"Generates terminal recordings using VHS tape scripts and produces GIF outputs Skill: vhs-recording Owner: athola Summary: Generates terminal recordings using VHS tape scripts and produces GIF outputs Tags: latest:1.9.19 Version history: v1.9.19 | 2026-08-26T13:23:01.870Z | user Release v1.9.19 v1.9.17 | 2026-07-30T05:42:50.861Z | user Release v1.9.17 v1.9.16 | 2026-07-14T19:59:40.011Z | user Release v1.9.16 v1.9.14 | 2026-06-30T18:07:05.693Z | user Release v1.9.14 v1.9.13 | 2026-06-27T16:24:55","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.6K downloads reported by the source. Last updated 10/10/2026.","installCommand":"clawhub skill install s17emme0e2m3cpf7k2jvp3a84984b8z9:nm-scry-vhs-recording","sourceUrl":"https://clawhub.ai/athola/nm-scry-vhs-recording","homepage":"https://clawhub.ai/athola/skills/nm-scry-vhs-recording","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/athola/nm-scry-vhs-recording","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/athola/skills/nm-scry-vhs-recording","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":64,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Generates terminal recordings using VHS tape scripts and produces GIF outputs Skill: vhs-recording Owner: athola Summary: Generates terminal recordings using VH"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-10T05:50:51.303Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T05:50:51.303Z","emptyReason":null},"stars":null,"forks":null,"downloads":1640,"packageName":null,"latestVersion":"1.9.19","tractionLabel":"1.6K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-10T05:50:51.303Z","emptyReason":null},"lastUpdatedAt":"2026-10-10T05:50:51.303Z","lastCrawledAt":"2026-10-10T05:50:51.303Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-11T05:50:51.303Z","lastVerifiedAt":null,"highlights":[{"version":"1.9.19","createdAt":"2026-08-26T13:23:01.870Z","changelog":"Release v1.9.19","fileCount":5,"zipByteSize":6411},{"version":"1.9.17","createdAt":"2026-07-30T05:42:50.861Z","changelog":"Release v1.9.17","fileCount":5,"zipByteSize":6316},{"version":"1.9.16","createdAt":"2026-07-14T19:59:40.011Z","changelog":"Release v1.9.16","fileCount":5,"zipByteSize":6362},{"version":"1.9.14","createdAt":"2026-06-30T18:07:05.693Z","changelog":"Release v1.9.14","fileCount":5,"zipByteSize":6348},{"version":"1.9.13","createdAt":"2026-06-27T16:24:55.984Z","changelog":"Release v1.9.13","fileCount":5,"zipByteSize":6305},{"version":"1.9.12","createdAt":"2026-06-19T03:20:42.578Z","changelog":"Release v1.9.12","fileCount":5,"zipByteSize":6288},{"version":"1.0.2","createdAt":"2026-05-09T02:20:41.380Z","changelog":"Release v1.9.5","fileCount":5,"zipByteSize":6249},{"version":"1.0.1","createdAt":"2026-05-06T14:22:10.988Z","changelog":"Release v1.9.4","fileCount":4,"zipByteSize":5176}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17emme0e2m3cpf7k2jvp3a84984b8z9:nm-scry-vhs-recording","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scry-vhs-recording/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scry-vhs-recording/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scry-vhs-recording/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scry-vhs-recording/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scry-vhs-recording/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scry-vhs-recording/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-10T10:50:20.459Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scry-vhs-recording/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scry-vhs-recording/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scry-vhs-recording/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-athola-nm-scry-vhs-recording/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-10T05:50:51.303Z","emptyReason":null},"readme":"Skill: vhs-recording\n\nOwner: athola\n\nSummary: Generates terminal recordings using VHS tape scripts and produces GIF outputs\n\nTags: latest:1.9.19\n\nVersion history:\n\nv1.9.19 | 2026-08-26T13:23:01.870Z | user\n\nRelease v1.9.19\n\nv1.9.17 | 2026-07-30T05:42:50.861Z | user\n\nRelease v1.9.17\n\nv1.9.16 | 2026-07-14T19:59:40.011Z | user\n\nRelease v1.9.16\n\nv1.9.14 | 2026-06-30T18:07:05.693Z | user\n\nRelease v1.9.14\n\nv1.9.13 | 2026-06-27T16:24:55.984Z | user\n\nRelease v1.9.13\n\nv1.9.12 | 2026-06-19T03:20:42.578Z | user\n\nRelease v1.9.12\n\nv1.0.2 | 2026-05-09T02:20:41.380Z | user\n\nRelease v1.9.5\n\nv1.0.1 | 2026-05-06T14:22:10.988Z | user\n\nRelease v1.9.4\n\nv1.0.0 | 2026-04-20T16:01:37.488Z | auto\n\n- Initial release of the vhs-recording skill.\n- Allows generation of terminal session recordings as GIFs from VHS tape files.\n- Includes workflow for tape file validation, VHS installation check, recording execution, and output verification.\n- Provides troubleshooting tips for installation and output issues.\n- Recommended for terminal demos only (not browser or GUI).\n\nArchive index:\n\nArchive v1.9.19: 5 files, 6411 bytes\n\nFiles: modules/execution.md (3225b), modules/tape-syntax.md (3513b), skill-card.md (2229b), SKILL.md (2887b), _meta.json (141b)\n\nFile v1.9.19:SKILL.md\n\n---\nname: vhs-recording\ndescription: Generates terminal recordings using VHS tape scripts and produces GIF outputs\nversion: 1.9.8\ntriggers:\n  - vhs\n  - terminal\n  - recording\n  - gif\n  - demo\n  - tutorial\n  - creating demo GIFs or documenting CLI workflows for tutorials\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/scry\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: scry\n---\n\n> **Night Market Skill** — ported from [claude-night-market/scry](https://github.com/athola/claude-night-market/tree/master/plugins/scry). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# VHS Recording Skill\n\nGenerate professional terminal recordings from VHS tape files.\n\n\n## When To Use\n\n- Recording terminal sessions with VHS tape scripts\n- Creating terminal demo recordings for documentation\n\n## When NOT To Use\n\n- Browser-based workflows - use scry:browser-recording instead\n- Non-terminal demos or GUI applications\n\n## Overview\n\nVHS converts declarative tape files into animated GIFs of terminal sessions. Tape files define commands, timing, and terminal appearance.\n\n## Required TodoWrite Items\n\n```\n- Locate and validate tape file\n- Check VHS installation status\n- Execute VHS recording\n- Verify output GIF creation\n```\n\n## Module Reference\n\n- See `modules/tape-syntax.md` for VHS tape file directives\n- See `modules/execution.md` for recording workflow details\n\n## Workflow\n\n### Phase 1: Validate Tape File\n\n1. Confirm tape file exists at specified path\n2. Read tape file contents\n3. Verify required directives:\n   - `Output` directive specifies GIF destination\n   - At least one action command (Type, Enter, etc.)\n\n### Phase 2: Check VHS Installation\n\n```bash\nwhich vhs && vhs --version\n```\n\nIf not installed:\n```bash\n# Linux/WSL\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Also requires ttyd and ffmpeg\n```\n\n### Phase 3: Execute Recording\n\n```bash\nvhs <tape-file.tape>\n```\n\nVHS will:\n1. Parse tape file directives\n2. Launch virtual terminal (ttyd)\n3. Execute commands with timing\n4. Capture frames\n5. Encode to GIF using ffmpeg\n\n### Phase 4: Verify Output\n\n1. Check GIF file exists at Output path\n2. Verify file size is non-zero\n3. Report success with output location\n\n## Exit Criteria\n\n- GIF file created at specified Output path\n- File size indicates successful recording (typically >50KB)\n- No error messages from VHS execution\n## Troubleshooting\n\n### Common Issues\n\nIf `vhs` is not found, verify that your Go bin directory is in your `PATH` (typically `~/go/bin`). If the recording fails to start, ensure `ttyd` and `ffmpeg` are installed, as VHS depends on them for terminal emulation and video encoding. For \"permission denied\" errors when writing the GIF, check that the output directory exists and is writable.\n\nFile v1.9.19:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-scry-vhs-recording\",\n  \"version\": \"1.9.19\",\n  \"publishedAt\": 1787750581870\n}\n\nFile v1.9.19:modules/execution.md\n\n# VHS Execution Guide\n\n## Pre-flight Checks\n\n### VHS Installation\n\n```bash\n# Check if installed\nwhich vhs\n\n# Check version\nvhs --version\n```\n\n### Dependencies\n\nVHS requires:\n- **ttyd**: Terminal emulator for web\n- **ffmpeg**: Video/image encoding\n\n```bash\n# Verify dependencies\nwhich ttyd ffmpeg\n```\n\n### Installation\n\n```bash\n# Go (recommended)\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Arch Linux\nyay -S vhs\n\n# Nix\nnix-env -iA nixpkgs.vhs\n```\n\n### Tape File Validation\n\nCheck tape file before execution:\n\n```bash\n# Verify file exists\ntest -f tape-file.tape && echo \"Found\" || echo \"Missing\"\n\n# Check for Output directive\nrg -q \"^Output\" tape-file.tape && echo \"Has output\" || echo \"No output directive\"\n# fallback: grep -q \"^Output\" tape-file.tape\n\n# Validate syntax (dry run)\nvhs validate tape-file.tape\n```\n\n## Environment Setup\n\n### Terminal Environment\n\nVHS creates an isolated terminal. Set environment variables in the tape:\n\n```tape\nSet Env \"HOME\" \"/home/user\"\nSet Env \"PATH\" \"/usr/local/bin:/usr/bin:/bin\"\nSet Env \"TERM\" \"xterm-256color\"\n```\n\n### Working Directory\n\nVHS runs from the directory containing the tape file. For different directories:\n\n```tape\nHide\nType \"cd /path/to/project\"\nEnter\nSleep 500ms\nShow\n```\n\n## Running VHS\n\n### Basic Execution\n\n```bash\nvhs tape-file.tape\n```\n\n### With Options\n\n```bash\n# Publish to vhs.charm.sh (public)\nvhs tape-file.tape --publish\n\n# Output to specific location\nvhs tape-file.tape -o custom-output.gif\n```\n\n### Batch Recording\n\n```bash\n# Record all tape files\nfor tape in *.tape; do\n  vhs \"$tape\"\ndone\n```\n\n## Error Handling\n\n### Common Issues\n\n**ttyd not found**\n```bash\n# Install ttyd\ngo install github.com/aspect-build/aspect-cli/pkg/ttyd@latest\n# Or via package manager\n```\n\n**ffmpeg errors**\n```bash\n# validate ffmpeg is installed with required codecs\nffmpeg -version\n```\n\n**Permission denied**\n```bash\n# Check write permissions for output directory\nls -la \"$(dirname output.gif)\"\n```\n\n**Empty output**\n- Verify commands produce visible output\n- Increase Sleep times after commands\n- Check terminal dimensions fit content\n\n### Debug Mode\n\n```bash\n# Verbose output\nVHS_DEBUG=1 vhs tape-file.tape\n```\n\n## WSL2 Considerations\n\n### Graphics Support\n\nVHS in WSL2 may require:\n- WSLg enabled (Windows 11+)\n- X server for older Windows 10\n\n### Path Handling\n\nUse Linux-style paths in tape files:\n```tape\n# Correct\nOutput /home/user/output.gif\n\n# Avoid Windows paths\n# Output C:\\Users\\...\n```\n\n### Performance\n\nWSL2 disk I/O to Windows filesystem is slow. Keep tapes and outputs on Linux filesystem:\n\n```bash\n# Good: Linux filesystem\n/home/user/recordings/\n\n# Slow: Windows mount\n/mnt/c/Users/...\n```\n\n### Font Availability\n\nInstall fonts in WSL2:\n```bash\nsudo apt install fonts-jetbrains-mono\nfc-cache -fv\n```\n\n## Output Verification\n\nAfter recording:\n\n```bash\n# Check file exists and has content\nls -la output.gif\n\n# Verify file type\nfile output.gif\n\n# Check dimensions (requires ImageMagick)\nidentify output.gif | head -1\n```\n\n## Integration with Documentation\n\nMove outputs to documentation directories:\n\n```bash\n# Move to docs\nmv output.gif docs/images/\n\n# Update markdown references\n# ![Demo](images/output.gif)\n```\n\nFile v1.9.19:modules/tape-syntax.md\n\n# VHS Tape Syntax Reference\n\n## Metadata Comments\n\nCustom metadata annotations for documentation integration:\n\n```tape\n# @title: Command Demo\n# @description: Demonstrates the CLI workflow\n# @step: 1\n# @docs-brief: Quick overview for documentation\n# @book-detail: Extended explanation for book chapters\n```\n\n## Output Directive\n\nSpecifies the output file path (required):\n\n```tape\nOutput demo.gif\n```\n\nSupported formats: `.gif`, `.mp4`, `.webm`\n\n## Set Directives\n\nConfigure terminal appearance and behavior:\n\n```tape\n# Typography\nSet FontSize 14\nSet FontFamily \"JetBrains Mono\"\n\n# Dimensions\nSet Width 1200\nSet Height 600\n\n# Appearance\nSet Theme \"Dracula\"\nSet Padding 20\nSet Margin 10\nSet MarginFill \"#674EFF\"\nSet BorderRadius 8\n\n# Timing\nSet TypingSpeed 50ms\nSet Framerate 60\n\n# Environment\nSet Env \"TERM\" \"xterm-256color\"\nSet Env \"PS1\" \"$ \"\n\n# Window\nSet Shell \"bash\"\nSet WindowBar Colorful\nSet WindowBarSize 40\n```\n\n## Action Commands\n\n### Type\n\nTypes text into the terminal:\n\n```tape\nType \"echo 'Hello World'\"\nType@50ms \"slower typing\"\n```\n\n### Enter\n\nSends Enter key (execute command):\n\n```tape\nEnter\n```\n\n### Sleep\n\nPause for duration:\n\n```tape\nSleep 500ms\nSleep 2s\n```\n\n### Key Combinations\n\n```tape\nCtrl+C\nCtrl+D\nCtrl+L\nEscape\nTab\nBackspace\nUp\nDown\nLeft\nRight\nSpace\n```\n\n### Screenshot\n\nCapture a still frame:\n\n```tape\nScreenshot output.png\n```\n\n### Hide/Show\n\nControl visibility of actions:\n\n```tape\nHide\nType \"secret setup commands\"\nEnter\nShow\n```\n\n## Best Practices\n\n### Echo vs Commands\n\n**NEVER use `echo` to simulate or replace real command output.** Echo should only be used for:\n\n- Printing explanatory messages or headers\n- Simple text output demonstrations\n- Comments that need to appear in the terminal\n\n**ALWAYS prefer actual commands** that demonstrate functionality:\n\n```tape\n# BAD: Simulating output with echo\nType \"echo 'tool-a, tool-b, tool-c'\"\nEnter\n\n# GOOD: Using the actual command\nType \"my-cli --list-tools\"\nEnter\n```\n\nIf a command doesn't exist to show what you need, consider:\n1. Adding a flag or subcommand to the CLI being demonstrated\n2. Using the actual data source (file, API, etc.)\n3. Rethinking what the demo should show\n\n**Rationale**: Tutorials should demonstrate real functionality. Echoing data teaches users nothing about the actual tool and may become stale as the tool evolves.\n\n### MCP Tool Demonstrations\n\nWhen demonstrating MCP (Model Context Protocol) functionality, show how tools are used within the host environment (e.g., Claude Code) rather than calling CLI equivalents:\n\n```tape\n# POOR: Using CLI instead of MCP\nType \"skrills metrics\"\n\n# BETTER: Explain MCP tool usage\nType \"# In Claude Code, ask: 'Show me skill statistics'\"\nType \"# Claude calls the skill-metrics MCP tool automatically\"\n```\n\n## Advanced Features\n\n### Split Panes\n\nCreate multi-pane layouts:\n\n```tape\nSplit\nType@left \"echo 'Left pane'\"\nEnter@left\nType@right \"echo 'Right pane'\"\nEnter@right\n```\n\n### Source\n\nInclude other tape files:\n\n```tape\nSource common-setup.tape\n```\n\n### Require\n\nvalidate programs are available:\n\n```tape\nRequire echo\nRequire git\n```\n\n## Complete Example\n\n```tape\n# @title: Git Status Demo\n# @description: Shows git status workflow\n# @step: 1\n\nOutput git-demo.gif\n\nSet FontSize 16\nSet Width 1000\nSet Height 400\nSet Theme \"Catppuccin Mocha\"\nSet TypingSpeed 75ms\n\nHide\nType \"cd ~/project\"\nEnter\nSleep 500ms\nShow\n\nType \"git status\"\nSleep 500ms\nEnter\nSleep 2s\n\nType \"git add .\"\nSleep 500ms\nEnter\nSleep 1s\n\nType \"git commit -m 'Update docs'\"\nSleep 500ms\nEnter\nSleep 2s\n```\n\nFile v1.9.19:skill-card.md\n\n## Description:\n\nGenerates terminal recordings using VHS tape scripts and produces GIF outputs.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[athola](https://clawhub.ai/user/athola)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and documentation authors use this skill to validate VHS tape files, run terminal recording workflows, and produce GIF demos for CLI documentation and tutorials.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: VHS tape files can execute terminal commands and include other Source files.\n\nMitigation: Review each tape and included Source file before running it, and avoid untrusted tapes.\n\nRisk: Terminal recordings can expose secrets, environment values, or sensitive command output.\n\nMitigation: Use disposable demo projects where practical and sanitize terminal output before sharing recordings.\n\nRisk: Using the publish option can make recordings public.\n\nMitigation: Use --publish only for recordings that are intended to be publicly accessible.\n\nRisk: Mutable install examples can change the installed tool behavior over time.\n\nMitigation: Review the toolchain before use and prefer pinned dependency versions for repeatable production workflows.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/athola/skills/nm-scry-vhs-recording)\n- [Project homepage](https://github.com/athola/claude-night-market/tree/master/plugins/scry)\n- [VHS execution guide](modules/execution.md)\n- [VHS tape syntax reference](modules/tape-syntax.md)\n\n## Skill Output:\n\n**Output Type(s):** [shell commands, guidance, files]\n\n**Output Format:** [Markdown guidance with bash and tape code blocks]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces or verifies GIF outputs from VHS tape execution when the required local tools are installed.]\n\n## Skill Version(s):\n\n1.9.19 (source: server release evidence; artifact frontmatter says 1.9.8)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.9.17: 5 files, 6316 bytes\n\nFiles: modules/execution.md (3225b), modules/tape-syntax.md (3513b), skill-card.md (2007b), SKILL.md (2887b), _meta.json (141b)\n\nFile v1.9.17:SKILL.md\n\n---\nname: vhs-recording\ndescription: Generates terminal recordings using VHS tape scripts and produces GIF outputs\nversion: 1.9.8\ntriggers:\n  - vhs\n  - terminal\n  - recording\n  - gif\n  - demo\n  - tutorial\n  - creating demo GIFs or documenting CLI workflows for tutorials\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/scry\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: scry\n---\n\n> **Night Market Skill** — ported from [claude-night-market/scry](https://github.com/athola/claude-night-market/tree/master/plugins/scry). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# VHS Recording Skill\n\nGenerate professional terminal recordings from VHS tape files.\n\n\n## When To Use\n\n- Recording terminal sessions with VHS tape scripts\n- Creating terminal demo recordings for documentation\n\n## When NOT To Use\n\n- Browser-based workflows - use scry:browser-recording instead\n- Non-terminal demos or GUI applications\n\n## Overview\n\nVHS converts declarative tape files into animated GIFs of terminal sessions. Tape files define commands, timing, and terminal appearance.\n\n## Required TodoWrite Items\n\n```\n- Locate and validate tape file\n- Check VHS installation status\n- Execute VHS recording\n- Verify output GIF creation\n```\n\n## Module Reference\n\n- See `modules/tape-syntax.md` for VHS tape file directives\n- See `modules/execution.md` for recording workflow details\n\n## Workflow\n\n### Phase 1: Validate Tape File\n\n1. Confirm tape file exists at specified path\n2. Read tape file contents\n3. Verify required directives:\n   - `Output` directive specifies GIF destination\n   - At least one action command (Type, Enter, etc.)\n\n### Phase 2: Check VHS Installation\n\n```bash\nwhich vhs && vhs --version\n```\n\nIf not installed:\n```bash\n# Linux/WSL\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Also requires ttyd and ffmpeg\n```\n\n### Phase 3: Execute Recording\n\n```bash\nvhs <tape-file.tape>\n```\n\nVHS will:\n1. Parse tape file directives\n2. Launch virtual terminal (ttyd)\n3. Execute commands with timing\n4. Capture frames\n5. Encode to GIF using ffmpeg\n\n### Phase 4: Verify Output\n\n1. Check GIF file exists at Output path\n2. Verify file size is non-zero\n3. Report success with output location\n\n## Exit Criteria\n\n- GIF file created at specified Output path\n- File size indicates successful recording (typically >50KB)\n- No error messages from VHS execution\n## Troubleshooting\n\n### Common Issues\n\nIf `vhs` is not found, verify that your Go bin directory is in your `PATH` (typically `~/go/bin`). If the recording fails to start, ensure `ttyd` and `ffmpeg` are installed, as VHS depends on them for terminal emulation and video encoding. For \"permission denied\" errors when writing the GIF, check that the output directory exists and is writable.\n\nFile v1.9.17:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-scry-vhs-recording\",\n  \"version\": \"1.9.17\",\n  \"publishedAt\": 1785390170861\n}\n\nFile v1.9.17:modules/execution.md\n\n# VHS Execution Guide\n\n## Pre-flight Checks\n\n### VHS Installation\n\n```bash\n# Check if installed\nwhich vhs\n\n# Check version\nvhs --version\n```\n\n### Dependencies\n\nVHS requires:\n- **ttyd**: Terminal emulator for web\n- **ffmpeg**: Video/image encoding\n\n```bash\n# Verify dependencies\nwhich ttyd ffmpeg\n```\n\n### Installation\n\n```bash\n# Go (recommended)\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Arch Linux\nyay -S vhs\n\n# Nix\nnix-env -iA nixpkgs.vhs\n```\n\n### Tape File Validation\n\nCheck tape file before execution:\n\n```bash\n# Verify file exists\ntest -f tape-file.tape && echo \"Found\" || echo \"Missing\"\n\n# Check for Output directive\nrg -q \"^Output\" tape-file.tape && echo \"Has output\" || echo \"No output directive\"\n# fallback: grep -q \"^Output\" tape-file.tape\n\n# Validate syntax (dry run)\nvhs validate tape-file.tape\n```\n\n## Environment Setup\n\n### Terminal Environment\n\nVHS creates an isolated terminal. Set environment variables in the tape:\n\n```tape\nSet Env \"HOME\" \"/home/user\"\nSet Env \"PATH\" \"/usr/local/bin:/usr/bin:/bin\"\nSet Env \"TERM\" \"xterm-256color\"\n```\n\n### Working Directory\n\nVHS runs from the directory containing the tape file. For different directories:\n\n```tape\nHide\nType \"cd /path/to/project\"\nEnter\nSleep 500ms\nShow\n```\n\n## Running VHS\n\n### Basic Execution\n\n```bash\nvhs tape-file.tape\n```\n\n### With Options\n\n```bash\n# Publish to vhs.charm.sh (public)\nvhs tape-file.tape --publish\n\n# Output to specific location\nvhs tape-file.tape -o custom-output.gif\n```\n\n### Batch Recording\n\n```bash\n# Record all tape files\nfor tape in *.tape; do\n  vhs \"$tape\"\ndone\n```\n\n## Error Handling\n\n### Common Issues\n\n**ttyd not found**\n```bash\n# Install ttyd\ngo install github.com/aspect-build/aspect-cli/pkg/ttyd@latest\n# Or via package manager\n```\n\n**ffmpeg errors**\n```bash\n# validate ffmpeg is installed with required codecs\nffmpeg -version\n```\n\n**Permission denied**\n```bash\n# Check write permissions for output directory\nls -la \"$(dirname output.gif)\"\n```\n\n**Empty output**\n- Verify commands produce visible output\n- Increase Sleep times after commands\n- Check terminal dimensions fit content\n\n### Debug Mode\n\n```bash\n# Verbose output\nVHS_DEBUG=1 vhs tape-file.tape\n```\n\n## WSL2 Considerations\n\n### Graphics Support\n\nVHS in WSL2 may require:\n- WSLg enabled (Windows 11+)\n- X server for older Windows 10\n\n### Path Handling\n\nUse Linux-style paths in tape files:\n```tape\n# Correct\nOutput /home/user/output.gif\n\n# Avoid Windows paths\n# Output C:\\Users\\...\n```\n\n### Performance\n\nWSL2 disk I/O to Windows filesystem is slow. Keep tapes and outputs on Linux filesystem:\n\n```bash\n# Good: Linux filesystem\n/home/user/recordings/\n\n# Slow: Windows mount\n/mnt/c/Users/...\n```\n\n### Font Availability\n\nInstall fonts in WSL2:\n```bash\nsudo apt install fonts-jetbrains-mono\nfc-cache -fv\n```\n\n## Output Verification\n\nAfter recording:\n\n```bash\n# Check file exists and has content\nls -la output.gif\n\n# Verify file type\nfile output.gif\n\n# Check dimensions (requires ImageMagick)\nidentify output.gif | head -1\n```\n\n## Integration with Documentation\n\nMove outputs to documentation directories:\n\n```bash\n# Move to docs\nmv output.gif docs/images/\n\n# Update markdown references\n# ![Demo](images/output.gif)\n```\n\nFile v1.9.17:modules/tape-syntax.md\n\n# VHS Tape Syntax Reference\n\n## Metadata Comments\n\nCustom metadata annotations for documentation integration:\n\n```tape\n# @title: Command Demo\n# @description: Demonstrates the CLI workflow\n# @step: 1\n# @docs-brief: Quick overview for documentation\n# @book-detail: Extended explanation for book chapters\n```\n\n## Output Directive\n\nSpecifies the output file path (required):\n\n```tape\nOutput demo.gif\n```\n\nSupported formats: `.gif`, `.mp4`, `.webm`\n\n## Set Directives\n\nConfigure terminal appearance and behavior:\n\n```tape\n# Typography\nSet FontSize 14\nSet FontFamily \"JetBrains Mono\"\n\n# Dimensions\nSet Width 1200\nSet Height 600\n\n# Appearance\nSet Theme \"Dracula\"\nSet Padding 20\nSet Margin 10\nSet MarginFill \"#674EFF\"\nSet BorderRadius 8\n\n# Timing\nSet TypingSpeed 50ms\nSet Framerate 60\n\n# Environment\nSet Env \"TERM\" \"xterm-256color\"\nSet Env \"PS1\" \"$ \"\n\n# Window\nSet Shell \"bash\"\nSet WindowBar Colorful\nSet WindowBarSize 40\n```\n\n## Action Commands\n\n### Type\n\nTypes text into the terminal:\n\n```tape\nType \"echo 'Hello World'\"\nType@50ms \"slower typing\"\n```\n\n### Enter\n\nSends Enter key (execute command):\n\n```tape\nEnter\n```\n\n### Sleep\n\nPause for duration:\n\n```tape\nSleep 500ms\nSleep 2s\n```\n\n### Key Combinations\n\n```tape\nCtrl+C\nCtrl+D\nCtrl+L\nEscape\nTab\nBackspace\nUp\nDown\nLeft\nRight\nSpace\n```\n\n### Screenshot\n\nCapture a still frame:\n\n```tape\nScreenshot output.png\n```\n\n### Hide/Show\n\nControl visibility of actions:\n\n```tape\nHide\nType \"secret setup commands\"\nEnter\nShow\n```\n\n## Best Practices\n\n### Echo vs Commands\n\n**NEVER use `echo` to simulate or replace real command output.** Echo should only be used for:\n\n- Printing explanatory messages or headers\n- Simple text output demonstrations\n- Comments that need to appear in the terminal\n\n**ALWAYS prefer actual commands** that demonstrate functionality:\n\n```tape\n# BAD: Simulating output with echo\nType \"echo 'tool-a, tool-b, tool-c'\"\nEnter\n\n# GOOD: Using the actual command\nType \"my-cli --list-tools\"\nEnter\n```\n\nIf a command doesn't exist to show what you need, consider:\n1. Adding a flag or subcommand to the CLI being demonstrated\n2. Using the actual data source (file, API, etc.)\n3. Rethinking what the demo should show\n\n**Rationale**: Tutorials should demonstrate real functionality. Echoing data teaches users nothing about the actual tool and may become stale as the tool evolves.\n\n### MCP Tool Demonstrations\n\nWhen demonstrating MCP (Model Context Protocol) functionality, show how tools are used within the host environment (e.g., Claude Code) rather than calling CLI equivalents:\n\n```tape\n# POOR: Using CLI instead of MCP\nType \"skrills metrics\"\n\n# BETTER: Explain MCP tool usage\nType \"# In Claude Code, ask: 'Show me skill statistics'\"\nType \"# Claude calls the skill-metrics MCP tool automatically\"\n```\n\n## Advanced Features\n\n### Split Panes\n\nCreate multi-pane layouts:\n\n```tape\nSplit\nType@left \"echo 'Left pane'\"\nEnter@left\nType@right \"echo 'Right pane'\"\nEnter@right\n```\n\n### Source\n\nInclude other tape files:\n\n```tape\nSource common-setup.tape\n```\n\n### Require\n\nvalidate programs are available:\n\n```tape\nRequire echo\nRequire git\n```\n\n## Complete Example\n\n```tape\n# @title: Git Status Demo\n# @description: Shows git status workflow\n# @step: 1\n\nOutput git-demo.gif\n\nSet FontSize 16\nSet Width 1000\nSet Height 400\nSet Theme \"Catppuccin Mocha\"\nSet TypingSpeed 75ms\n\nHide\nType \"cd ~/project\"\nEnter\nSleep 500ms\nShow\n\nType \"git status\"\nSleep 500ms\nEnter\nSleep 2s\n\nType \"git add .\"\nSleep 500ms\nEnter\nSleep 1s\n\nType \"git commit -m 'Update docs'\"\nSleep 500ms\nEnter\nSleep 2s\n```\n\nFile v1.9.17:skill-card.md\n\n## Description: <br>\nGenerates terminal recordings using VHS tape scripts and produces GIF outputs. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and technical writers use this skill to create terminal demo recordings for documentation, tutorials, and CLI workflow walkthroughs. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Tape files can execute terminal commands and may hide setup actions during recording. <br>\nMitigation: Review tape files before running them and avoid hiding important or sensitive actions. <br>\nRisk: Published recordings can expose commands, output, paths, or environment details. <br>\nMitigation: Sanitize terminal content and use public publishing only when the captured details are safe to disclose. <br>\n\n\n## Reference(s): <br>\n- [VHS Execution Guide](modules/execution.md) <br>\n- [VHS Tape Syntax Reference](modules/tape-syntax.md) <br>\n- [ClawHub Skill Page](https://clawhub.ai/athola/skills/nm-scry-vhs-recording) <br>\n- [Clawdis Homepage](https://github.com/athola/claude-night-market/tree/master/plugins/scry) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown with inline bash and VHS tape code blocks] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Guides agents through validating tape files, checking VHS dependencies, running recordings, and verifying generated GIF outputs.] <br>\n\n## Skill Version(s): <br>\n1.9.17 (source: server release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.9.16: 5 files, 6362 bytes\n\nFiles: modules/execution.md (3225b), modules/tape-syntax.md (3513b), skill-card.md (2101b), SKILL.md (2887b), _meta.json (141b)\n\nFile v1.9.16:SKILL.md\n\n---\nname: vhs-recording\ndescription: Generates terminal recordings using VHS tape scripts and produces GIF outputs\nversion: 1.9.8\ntriggers:\n  - vhs\n  - terminal\n  - recording\n  - gif\n  - demo\n  - tutorial\n  - creating demo GIFs or documenting CLI workflows for tutorials\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/scry\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: scry\n---\n\n> **Night Market Skill** — ported from [claude-night-market/scry](https://github.com/athola/claude-night-market/tree/master/plugins/scry). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# VHS Recording Skill\n\nGenerate professional terminal recordings from VHS tape files.\n\n\n## When To Use\n\n- Recording terminal sessions with VHS tape scripts\n- Creating terminal demo recordings for documentation\n\n## When NOT To Use\n\n- Browser-based workflows - use scry:browser-recording instead\n- Non-terminal demos or GUI applications\n\n## Overview\n\nVHS converts declarative tape files into animated GIFs of terminal sessions. Tape files define commands, timing, and terminal appearance.\n\n## Required TodoWrite Items\n\n```\n- Locate and validate tape file\n- Check VHS installation status\n- Execute VHS recording\n- Verify output GIF creation\n```\n\n## Module Reference\n\n- See `modules/tape-syntax.md` for VHS tape file directives\n- See `modules/execution.md` for recording workflow details\n\n## Workflow\n\n### Phase 1: Validate Tape File\n\n1. Confirm tape file exists at specified path\n2. Read tape file contents\n3. Verify required directives:\n   - `Output` directive specifies GIF destination\n   - At least one action command (Type, Enter, etc.)\n\n### Phase 2: Check VHS Installation\n\n```bash\nwhich vhs && vhs --version\n```\n\nIf not installed:\n```bash\n# Linux/WSL\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Also requires ttyd and ffmpeg\n```\n\n### Phase 3: Execute Recording\n\n```bash\nvhs <tape-file.tape>\n```\n\nVHS will:\n1. Parse tape file directives\n2. Launch virtual terminal (ttyd)\n3. Execute commands with timing\n4. Capture frames\n5. Encode to GIF using ffmpeg\n\n### Phase 4: Verify Output\n\n1. Check GIF file exists at Output path\n2. Verify file size is non-zero\n3. Report success with output location\n\n## Exit Criteria\n\n- GIF file created at specified Output path\n- File size indicates successful recording (typically >50KB)\n- No error messages from VHS execution\n## Troubleshooting\n\n### Common Issues\n\nIf `vhs` is not found, verify that your Go bin directory is in your `PATH` (typically `~/go/bin`). If the recording fails to start, ensure `ttyd` and `ffmpeg` are installed, as VHS depends on them for terminal emulation and video encoding. For \"permission denied\" errors when writing the GIF, check that the output directory exists and is writable.\n\nFile v1.9.16:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-scry-vhs-recording\",\n  \"version\": \"1.9.16\",\n  \"publishedAt\": 1784059180011\n}\n\nFile v1.9.16:modules/execution.md\n\n# VHS Execution Guide\n\n## Pre-flight Checks\n\n### VHS Installation\n\n```bash\n# Check if installed\nwhich vhs\n\n# Check version\nvhs --version\n```\n\n### Dependencies\n\nVHS requires:\n- **ttyd**: Terminal emulator for web\n- **ffmpeg**: Video/image encoding\n\n```bash\n# Verify dependencies\nwhich ttyd ffmpeg\n```\n\n### Installation\n\n```bash\n# Go (recommended)\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Arch Linux\nyay -S vhs\n\n# Nix\nnix-env -iA nixpkgs.vhs\n```\n\n### Tape File Validation\n\nCheck tape file before execution:\n\n```bash\n# Verify file exists\ntest -f tape-file.tape && echo \"Found\" || echo \"Missing\"\n\n# Check for Output directive\nrg -q \"^Output\" tape-file.tape && echo \"Has output\" || echo \"No output directive\"\n# fallback: grep -q \"^Output\" tape-file.tape\n\n# Validate syntax (dry run)\nvhs validate tape-file.tape\n```\n\n## Environment Setup\n\n### Terminal Environment\n\nVHS creates an isolated terminal. Set environment variables in the tape:\n\n```tape\nSet Env \"HOME\" \"/home/user\"\nSet Env \"PATH\" \"/usr/local/bin:/usr/bin:/bin\"\nSet Env \"TERM\" \"xterm-256color\"\n```\n\n### Working Directory\n\nVHS runs from the directory containing the tape file. For different directories:\n\n```tape\nHide\nType \"cd /path/to/project\"\nEnter\nSleep 500ms\nShow\n```\n\n## Running VHS\n\n### Basic Execution\n\n```bash\nvhs tape-file.tape\n```\n\n### With Options\n\n```bash\n# Publish to vhs.charm.sh (public)\nvhs tape-file.tape --publish\n\n# Output to specific location\nvhs tape-file.tape -o custom-output.gif\n```\n\n### Batch Recording\n\n```bash\n# Record all tape files\nfor tape in *.tape; do\n  vhs \"$tape\"\ndone\n```\n\n## Error Handling\n\n### Common Issues\n\n**ttyd not found**\n```bash\n# Install ttyd\ngo install github.com/aspect-build/aspect-cli/pkg/ttyd@latest\n# Or via package manager\n```\n\n**ffmpeg errors**\n```bash\n# validate ffmpeg is installed with required codecs\nffmpeg -version\n```\n\n**Permission denied**\n```bash\n# Check write permissions for output directory\nls -la \"$(dirname output.gif)\"\n```\n\n**Empty output**\n- Verify commands produce visible output\n- Increase Sleep times after commands\n- Check terminal dimensions fit content\n\n### Debug Mode\n\n```bash\n# Verbose output\nVHS_DEBUG=1 vhs tape-file.tape\n```\n\n## WSL2 Considerations\n\n### Graphics Support\n\nVHS in WSL2 may require:\n- WSLg enabled (Windows 11+)\n- X server for older Windows 10\n\n### Path Handling\n\nUse Linux-style paths in tape files:\n```tape\n# Correct\nOutput /home/user/output.gif\n\n# Avoid Windows paths\n# Output C:\\Users\\...\n```\n\n### Performance\n\nWSL2 disk I/O to Windows filesystem is slow. Keep tapes and outputs on Linux filesystem:\n\n```bash\n# Good: Linux filesystem\n/home/user/recordings/\n\n# Slow: Windows mount\n/mnt/c/Users/...\n```\n\n### Font Availability\n\nInstall fonts in WSL2:\n```bash\nsudo apt install fonts-jetbrains-mono\nfc-cache -fv\n```\n\n## Output Verification\n\nAfter recording:\n\n```bash\n# Check file exists and has content\nls -la output.gif\n\n# Verify file type\nfile output.gif\n\n# Check dimensions (requires ImageMagick)\nidentify output.gif | head -1\n```\n\n## Integration with Documentation\n\nMove outputs to documentation directories:\n\n```bash\n# Move to docs\nmv output.gif docs/images/\n\n# Update markdown references\n# ![Demo](images/output.gif)\n```\n\nFile v1.9.16:modules/tape-syntax.md\n\n# VHS Tape Syntax Reference\n\n## Metadata Comments\n\nCustom metadata annotations for documentation integration:\n\n```tape\n# @title: Command Demo\n# @description: Demonstrates the CLI workflow\n# @step: 1\n# @docs-brief: Quick overview for documentation\n# @book-detail: Extended explanation for book chapters\n```\n\n## Output Directive\n\nSpecifies the output file path (required):\n\n```tape\nOutput demo.gif\n```\n\nSupported formats: `.gif`, `.mp4`, `.webm`\n\n## Set Directives\n\nConfigure terminal appearance and behavior:\n\n```tape\n# Typography\nSet FontSize 14\nSet FontFamily \"JetBrains Mono\"\n\n# Dimensions\nSet Width 1200\nSet Height 600\n\n# Appearance\nSet Theme \"Dracula\"\nSet Padding 20\nSet Margin 10\nSet MarginFill \"#674EFF\"\nSet BorderRadius 8\n\n# Timing\nSet TypingSpeed 50ms\nSet Framerate 60\n\n# Environment\nSet Env \"TERM\" \"xterm-256color\"\nSet Env \"PS1\" \"$ \"\n\n# Window\nSet Shell \"bash\"\nSet WindowBar Colorful\nSet WindowBarSize 40\n```\n\n## Action Commands\n\n### Type\n\nTypes text into the terminal:\n\n```tape\nType \"echo 'Hello World'\"\nType@50ms \"slower typing\"\n```\n\n### Enter\n\nSends Enter key (execute command):\n\n```tape\nEnter\n```\n\n### Sleep\n\nPause for duration:\n\n```tape\nSleep 500ms\nSleep 2s\n```\n\n### Key Combinations\n\n```tape\nCtrl+C\nCtrl+D\nCtrl+L\nEscape\nTab\nBackspace\nUp\nDown\nLeft\nRight\nSpace\n```\n\n### Screenshot\n\nCapture a still frame:\n\n```tape\nScreenshot output.png\n```\n\n### Hide/Show\n\nControl visibility of actions:\n\n```tape\nHide\nType \"secret setup commands\"\nEnter\nShow\n```\n\n## Best Practices\n\n### Echo vs Commands\n\n**NEVER use `echo` to simulate or replace real command output.** Echo should only be used for:\n\n- Printing explanatory messages or headers\n- Simple text output demonstrations\n- Comments that need to appear in the terminal\n\n**ALWAYS prefer actual commands** that demonstrate functionality:\n\n```tape\n# BAD: Simulating output with echo\nType \"echo 'tool-a, tool-b, tool-c'\"\nEnter\n\n# GOOD: Using the actual command\nType \"my-cli --list-tools\"\nEnter\n```\n\nIf a command doesn't exist to show what you need, consider:\n1. Adding a flag or subcommand to the CLI being demonstrated\n2. Using the actual data source (file, API, etc.)\n3. Rethinking what the demo should show\n\n**Rationale**: Tutorials should demonstrate real functionality. Echoing data teaches users nothing about the actual tool and may become stale as the tool evolves.\n\n### MCP Tool Demonstrations\n\nWhen demonstrating MCP (Model Context Protocol) functionality, show how tools are used within the host environment (e.g., Claude Code) rather than calling CLI equivalents:\n\n```tape\n# POOR: Using CLI instead of MCP\nType \"skrills metrics\"\n\n# BETTER: Explain MCP tool usage\nType \"# In Claude Code, ask: 'Show me skill statistics'\"\nType \"# Claude calls the skill-metrics MCP tool automatically\"\n```\n\n## Advanced Features\n\n### Split Panes\n\nCreate multi-pane layouts:\n\n```tape\nSplit\nType@left \"echo 'Left pane'\"\nEnter@left\nType@right \"echo 'Right pane'\"\nEnter@right\n```\n\n### Source\n\nInclude other tape files:\n\n```tape\nSource common-setup.tape\n```\n\n### Require\n\nvalidate programs are available:\n\n```tape\nRequire echo\nRequire git\n```\n\n## Complete Example\n\n```tape\n# @title: Git Status Demo\n# @description: Shows git status workflow\n# @step: 1\n\nOutput git-demo.gif\n\nSet FontSize 16\nSet Width 1000\nSet Height 400\nSet Theme \"Catppuccin Mocha\"\nSet TypingSpeed 75ms\n\nHide\nType \"cd ~/project\"\nEnter\nSleep 500ms\nShow\n\nType \"git status\"\nSleep 500ms\nEnter\nSleep 2s\n\nType \"git add .\"\nSleep 500ms\nEnter\nSleep 1s\n\nType \"git commit -m 'Update docs'\"\nSleep 500ms\nEnter\nSleep 2s\n```\n\nFile v1.9.16:skill-card.md\n\n## Description: <br>\nGenerates terminal recordings using VHS tape scripts and produces GIF outputs. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and technical writers use this skill to create terminal demo recordings from VHS tape scripts for documentation, tutorials, and CLI workflow demonstrations. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: VHS tape files can execute commands and record terminal output, which may expose secrets, private paths, hostnames, or sensitive command results. <br>\nMitigation: Review tape files before execution, redact sensitive output, and avoid recording commands that reveal credentials or private data. <br>\nRisk: Publishing with VHS can upload recordings publicly. <br>\nMitigation: Use publishing options only when public disclosure is intended and the generated recording has been reviewed. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/athola/skills/nm-scry-vhs-recording) <br>\n- [OpenClaw Homepage](https://github.com/athola/claude-night-market/tree/master/plugins/scry) <br>\n- [VHS Execution Guide](modules/execution.md) <br>\n- [VHS Tape Syntax Reference](modules/tape-syntax.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Markdown, Shell commands, Configuration, Files] <br>\n**Output Format:** [Markdown with inline bash and tape code blocks] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May guide creation of GIF, MP4, WebM, or screenshot files through VHS tape directives.] <br>\n\n## Skill Version(s): <br>\n1.9.16 (source: server release evidence; artifact frontmatter lists 1.9.8) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.9.14: 5 files, 6348 bytes\n\nFiles: modules/execution.md (3225b), modules/tape-syntax.md (3513b), skill-card.md (2175b), SKILL.md (2887b), _meta.json (141b)\n\nFile v1.9.14:SKILL.md\n\n---\nname: vhs-recording\ndescription: Generates terminal recordings using VHS tape scripts and produces GIF outputs\nversion: 1.9.8\ntriggers:\n  - vhs\n  - terminal\n  - recording\n  - gif\n  - demo\n  - tutorial\n  - creating demo GIFs or documenting CLI workflows for tutorials\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/scry\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: scry\n---\n\n> **Night Market Skill** — ported from [claude-night-market/scry](https://github.com/athola/claude-night-market/tree/master/plugins/scry). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# VHS Recording Skill\n\nGenerate professional terminal recordings from VHS tape files.\n\n\n## When To Use\n\n- Recording terminal sessions with VHS tape scripts\n- Creating terminal demo recordings for documentation\n\n## When NOT To Use\n\n- Browser-based workflows - use scry:browser-recording instead\n- Non-terminal demos or GUI applications\n\n## Overview\n\nVHS converts declarative tape files into animated GIFs of terminal sessions. Tape files define commands, timing, and terminal appearance.\n\n## Required TodoWrite Items\n\n```\n- Locate and validate tape file\n- Check VHS installation status\n- Execute VHS recording\n- Verify output GIF creation\n```\n\n## Module Reference\n\n- See `modules/tape-syntax.md` for VHS tape file directives\n- See `modules/execution.md` for recording workflow details\n\n## Workflow\n\n### Phase 1: Validate Tape File\n\n1. Confirm tape file exists at specified path\n2. Read tape file contents\n3. Verify required directives:\n   - `Output` directive specifies GIF destination\n   - At least one action command (Type, Enter, etc.)\n\n### Phase 2: Check VHS Installation\n\n```bash\nwhich vhs && vhs --version\n```\n\nIf not installed:\n```bash\n# Linux/WSL\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Also requires ttyd and ffmpeg\n```\n\n### Phase 3: Execute Recording\n\n```bash\nvhs <tape-file.tape>\n```\n\nVHS will:\n1. Parse tape file directives\n2. Launch virtual terminal (ttyd)\n3. Execute commands with timing\n4. Capture frames\n5. Encode to GIF using ffmpeg\n\n### Phase 4: Verify Output\n\n1. Check GIF file exists at Output path\n2. Verify file size is non-zero\n3. Report success with output location\n\n## Exit Criteria\n\n- GIF file created at specified Output path\n- File size indicates successful recording (typically >50KB)\n- No error messages from VHS execution\n## Troubleshooting\n\n### Common Issues\n\nIf `vhs` is not found, verify that your Go bin directory is in your `PATH` (typically `~/go/bin`). If the recording fails to start, ensure `ttyd` and `ffmpeg` are installed, as VHS depends on them for terminal emulation and video encoding. For \"permission denied\" errors when writing the GIF, check that the output directory exists and is writable.\n\nFile v1.9.14:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-scry-vhs-recording\",\n  \"version\": \"1.9.14\",\n  \"publishedAt\": 1782842825693\n}\n\nFile v1.9.14:modules/execution.md\n\n# VHS Execution Guide\n\n## Pre-flight Checks\n\n### VHS Installation\n\n```bash\n# Check if installed\nwhich vhs\n\n# Check version\nvhs --version\n```\n\n### Dependencies\n\nVHS requires:\n- **ttyd**: Terminal emulator for web\n- **ffmpeg**: Video/image encoding\n\n```bash\n# Verify dependencies\nwhich ttyd ffmpeg\n```\n\n### Installation\n\n```bash\n# Go (recommended)\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Arch Linux\nyay -S vhs\n\n# Nix\nnix-env -iA nixpkgs.vhs\n```\n\n### Tape File Validation\n\nCheck tape file before execution:\n\n```bash\n# Verify file exists\ntest -f tape-file.tape && echo \"Found\" || echo \"Missing\"\n\n# Check for Output directive\nrg -q \"^Output\" tape-file.tape && echo \"Has output\" || echo \"No output directive\"\n# fallback: grep -q \"^Output\" tape-file.tape\n\n# Validate syntax (dry run)\nvhs validate tape-file.tape\n```\n\n## Environment Setup\n\n### Terminal Environment\n\nVHS creates an isolated terminal. Set environment variables in the tape:\n\n```tape\nSet Env \"HOME\" \"/home/user\"\nSet Env \"PATH\" \"/usr/local/bin:/usr/bin:/bin\"\nSet Env \"TERM\" \"xterm-256color\"\n```\n\n### Working Directory\n\nVHS runs from the directory containing the tape file. For different directories:\n\n```tape\nHide\nType \"cd /path/to/project\"\nEnter\nSleep 500ms\nShow\n```\n\n## Running VHS\n\n### Basic Execution\n\n```bash\nvhs tape-file.tape\n```\n\n### With Options\n\n```bash\n# Publish to vhs.charm.sh (public)\nvhs tape-file.tape --publish\n\n# Output to specific location\nvhs tape-file.tape -o custom-output.gif\n```\n\n### Batch Recording\n\n```bash\n# Record all tape files\nfor tape in *.tape; do\n  vhs \"$tape\"\ndone\n```\n\n## Error Handling\n\n### Common Issues\n\n**ttyd not found**\n```bash\n# Install ttyd\ngo install github.com/aspect-build/aspect-cli/pkg/ttyd@latest\n# Or via package manager\n```\n\n**ffmpeg errors**\n```bash\n# validate ffmpeg is installed with required codecs\nffmpeg -version\n```\n\n**Permission denied**\n```bash\n# Check write permissions for output directory\nls -la \"$(dirname output.gif)\"\n```\n\n**Empty output**\n- Verify commands produce visible output\n- Increase Sleep times after commands\n- Check terminal dimensions fit content\n\n### Debug Mode\n\n```bash\n# Verbose output\nVHS_DEBUG=1 vhs tape-file.tape\n```\n\n## WSL2 Considerations\n\n### Graphics Support\n\nVHS in WSL2 may require:\n- WSLg enabled (Windows 11+)\n- X server for older Windows 10\n\n### Path Handling\n\nUse Linux-style paths in tape files:\n```tape\n# Correct\nOutput /home/user/output.gif\n\n# Avoid Windows paths\n# Output C:\\Users\\...\n```\n\n### Performance\n\nWSL2 disk I/O to Windows filesystem is slow. Keep tapes and outputs on Linux filesystem:\n\n```bash\n# Good: Linux filesystem\n/home/user/recordings/\n\n# Slow: Windows mount\n/mnt/c/Users/...\n```\n\n### Font Availability\n\nInstall fonts in WSL2:\n```bash\nsudo apt install fonts-jetbrains-mono\nfc-cache -fv\n```\n\n## Output Verification\n\nAfter recording:\n\n```bash\n# Check file exists and has content\nls -la output.gif\n\n# Verify file type\nfile output.gif\n\n# Check dimensions (requires ImageMagick)\nidentify output.gif | head -1\n```\n\n## Integration with Documentation\n\nMove outputs to documentation directories:\n\n```bash\n# Move to docs\nmv output.gif docs/images/\n\n# Update markdown references\n# ![Demo](images/output.gif)\n```\n\nFile v1.9.14:modules/tape-syntax.md\n\n# VHS Tape Syntax Reference\n\n## Metadata Comments\n\nCustom metadata annotations for documentation integration:\n\n```tape\n# @title: Command Demo\n# @description: Demonstrates the CLI workflow\n# @step: 1\n# @docs-brief: Quick overview for documentation\n# @book-detail: Extended explanation for book chapters\n```\n\n## Output Directive\n\nSpecifies the output file path (required):\n\n```tape\nOutput demo.gif\n```\n\nSupported formats: `.gif`, `.mp4`, `.webm`\n\n## Set Directives\n\nConfigure terminal appearance and behavior:\n\n```tape\n# Typography\nSet FontSize 14\nSet FontFamily \"JetBrains Mono\"\n\n# Dimensions\nSet Width 1200\nSet Height 600\n\n# Appearance\nSet Theme \"Dracula\"\nSet Padding 20\nSet Margin 10\nSet MarginFill \"#674EFF\"\nSet BorderRadius 8\n\n# Timing\nSet TypingSpeed 50ms\nSet Framerate 60\n\n# Environment\nSet Env \"TERM\" \"xterm-256color\"\nSet Env \"PS1\" \"$ \"\n\n# Window\nSet Shell \"bash\"\nSet WindowBar Colorful\nSet WindowBarSize 40\n```\n\n## Action Commands\n\n### Type\n\nTypes text into the terminal:\n\n```tape\nType \"echo 'Hello World'\"\nType@50ms \"slower typing\"\n```\n\n### Enter\n\nSends Enter key (execute command):\n\n```tape\nEnter\n```\n\n### Sleep\n\nPause for duration:\n\n```tape\nSleep 500ms\nSleep 2s\n```\n\n### Key Combinations\n\n```tape\nCtrl+C\nCtrl+D\nCtrl+L\nEscape\nTab\nBackspace\nUp\nDown\nLeft\nRight\nSpace\n```\n\n### Screenshot\n\nCapture a still frame:\n\n```tape\nScreenshot output.png\n```\n\n### Hide/Show\n\nControl visibility of actions:\n\n```tape\nHide\nType \"secret setup commands\"\nEnter\nShow\n```\n\n## Best Practices\n\n### Echo vs Commands\n\n**NEVER use `echo` to simulate or replace real command output.** Echo should only be used for:\n\n- Printing explanatory messages or headers\n- Simple text output demonstrations\n- Comments that need to appear in the terminal\n\n**ALWAYS prefer actual commands** that demonstrate functionality:\n\n```tape\n# BAD: Simulating output with echo\nType \"echo 'tool-a, tool-b, tool-c'\"\nEnter\n\n# GOOD: Using the actual command\nType \"my-cli --list-tools\"\nEnter\n```\n\nIf a command doesn't exist to show what you need, consider:\n1. Adding a flag or subcommand to the CLI being demonstrated\n2. Using the actual data source (file, API, etc.)\n3. Rethinking what the demo should show\n\n**Rationale**: Tutorials should demonstrate real functionality. Echoing data teaches users nothing about the actual tool and may become stale as the tool evolves.\n\n### MCP Tool Demonstrations\n\nWhen demonstrating MCP (Model Context Protocol) functionality, show how tools are used within the host environment (e.g., Claude Code) rather than calling CLI equivalents:\n\n```tape\n# POOR: Using CLI instead of MCP\nType \"skrills metrics\"\n\n# BETTER: Explain MCP tool usage\nType \"# In Claude Code, ask: 'Show me skill statistics'\"\nType \"# Claude calls the skill-metrics MCP tool automatically\"\n```\n\n## Advanced Features\n\n### Split Panes\n\nCreate multi-pane layouts:\n\n```tape\nSplit\nType@left \"echo 'Left pane'\"\nEnter@left\nType@right \"echo 'Right pane'\"\nEnter@right\n```\n\n### Source\n\nInclude other tape files:\n\n```tape\nSource common-setup.tape\n```\n\n### Require\n\nvalidate programs are available:\n\n```tape\nRequire echo\nRequire git\n```\n\n## Complete Example\n\n```tape\n# @title: Git Status Demo\n# @description: Shows git status workflow\n# @step: 1\n\nOutput git-demo.gif\n\nSet FontSize 16\nSet Width 1000\nSet Height 400\nSet Theme \"Catppuccin Mocha\"\nSet TypingSpeed 75ms\n\nHide\nType \"cd ~/project\"\nEnter\nSleep 500ms\nShow\n\nType \"git status\"\nSleep 500ms\nEnter\nSleep 2s\n\nType \"git add .\"\nSleep 500ms\nEnter\nSleep 1s\n\nType \"git commit -m 'Update docs'\"\nSleep 500ms\nEnter\nSleep 2s\n```\n\nFile v1.9.14:skill-card.md\n\n## Description: <br>\nGenerates terminal recordings using VHS tape scripts and produces GIF outputs. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers, engineers, and technical writers use this skill to validate VHS tape files, run terminal recording workflows, and produce documentation-ready terminal demo media. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: VHS tape scripts can execute the commands they contain. <br>\nMitigation: Review tape files before running them and only execute tapes from trusted or inspected sources. <br>\nRisk: Terminal recordings may capture secrets, private paths, or sensitive command output. <br>\nMitigation: Sanitize commands, environment variables, and visible output before recording or sharing generated media. <br>\nRisk: Using VHS publish mode can upload recordings publicly. <br>\nMitigation: Use local output by default and only publish after confirming the recording contains no sensitive information. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/athola/skills/nm-scry-vhs-recording) <br>\n- [ClawHub Publisher Profile](https://clawhub.ai/user/athola) <br>\n- [Clawdis Homepage](https://github.com/athola/claude-night-market/tree/master/plugins/scry) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Shell commands, Configuration, Markdown] <br>\n**Output Format:** [Markdown with inline shell commands and VHS tape examples] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Produces guidance for creating GIF, MP4, WebM, and screenshot outputs through VHS tape files.] <br>\n\n## Skill Version(s): <br>\n1.9.14 (source: server release metadata; artifact frontmatter reports 1.9.8) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.9.13: 5 files, 6305 bytes\n\nFiles: modules/execution.md (3225b), modules/tape-syntax.md (3513b), skill-card.md (2025b), SKILL.md (2887b), _meta.json (141b)\n\nFile v1.9.13:SKILL.md\n\n---\nname: vhs-recording\ndescription: Generates terminal recordings using VHS tape scripts and produces GIF outputs\nversion: 1.9.8\ntriggers:\n  - vhs\n  - terminal\n  - recording\n  - gif\n  - demo\n  - tutorial\n  - creating demo GIFs or documenting CLI workflows for tutorials\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/scry\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: scry\n---\n\n> **Night Market Skill** — ported from [claude-night-market/scry](https://github.com/athola/claude-night-market/tree/master/plugins/scry). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# VHS Recording Skill\n\nGenerate professional terminal recordings from VHS tape files.\n\n\n## When To Use\n\n- Recording terminal sessions with VHS tape scripts\n- Creating terminal demo recordings for documentation\n\n## When NOT To Use\n\n- Browser-based workflows - use scry:browser-recording instead\n- Non-terminal demos or GUI applications\n\n## Overview\n\nVHS converts declarative tape files into animated GIFs of terminal sessions. Tape files define commands, timing, and terminal appearance.\n\n## Required TodoWrite Items\n\n```\n- Locate and validate tape file\n- Check VHS installation status\n- Execute VHS recording\n- Verify output GIF creation\n```\n\n## Module Reference\n\n- See `modules/tape-syntax.md` for VHS tape file directives\n- See `modules/execution.md` for recording workflow details\n\n## Workflow\n\n### Phase 1: Validate Tape File\n\n1. Confirm tape file exists at specified path\n2. Read tape file contents\n3. Verify required directives:\n   - `Output` directive specifies GIF destination\n   - At least one action command (Type, Enter, etc.)\n\n### Phase 2: Check VHS Installation\n\n```bash\nwhich vhs && vhs --version\n```\n\nIf not installed:\n```bash\n# Linux/WSL\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Also requires ttyd and ffmpeg\n```\n\n### Phase 3: Execute Recording\n\n```bash\nvhs <tape-file.tape>\n```\n\nVHS will:\n1. Parse tape file directives\n2. Launch virtual terminal (ttyd)\n3. Execute commands with timing\n4. Capture frames\n5. Encode to GIF using ffmpeg\n\n### Phase 4: Verify Output\n\n1. Check GIF file exists at Output path\n2. Verify file size is non-zero\n3. Report success with output location\n\n## Exit Criteria\n\n- GIF file created at specified Output path\n- File size indicates successful recording (typically >50KB)\n- No error messages from VHS execution\n## Troubleshooting\n\n### Common Issues\n\nIf `vhs` is not found, verify that your Go bin directory is in your `PATH` (typically `~/go/bin`). If the recording fails to start, ensure `ttyd` and `ffmpeg` are installed, as VHS depends on them for terminal emulation and video encoding. For \"permission denied\" errors when writing the GIF, check that the output directory exists and is writable.\n\nFile v1.9.13:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-scry-vhs-recording\",\n  \"version\": \"1.9.13\",\n  \"publishedAt\": 1782577495984\n}\n\nFile v1.9.13:modules/execution.md\n\n# VHS Execution Guide\n\n## Pre-flight Checks\n\n### VHS Installation\n\n```bash\n# Check if installed\nwhich vhs\n\n# Check version\nvhs --version\n```\n\n### Dependencies\n\nVHS requires:\n- **ttyd**: Terminal emulator for web\n- **ffmpeg**: Video/image encoding\n\n```bash\n# Verify dependencies\nwhich ttyd ffmpeg\n```\n\n### Installation\n\n```bash\n# Go (recommended)\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Arch Linux\nyay -S vhs\n\n# Nix\nnix-env -iA nixpkgs.vhs\n```\n\n### Tape File Validation\n\nCheck tape file before execution:\n\n```bash\n# Verify file exists\ntest -f tape-file.tape && echo \"Found\" || echo \"Missing\"\n\n# Check for Output directive\nrg -q \"^Output\" tape-file.tape && echo \"Has output\" || echo \"No output directive\"\n# fallback: grep -q \"^Output\" tape-file.tape\n\n# Validate syntax (dry run)\nvhs validate tape-file.tape\n```\n\n## Environment Setup\n\n### Terminal Environment\n\nVHS creates an isolated terminal. Set environment variables in the tape:\n\n```tape\nSet Env \"HOME\" \"/home/user\"\nSet Env \"PATH\" \"/usr/local/bin:/usr/bin:/bin\"\nSet Env \"TERM\" \"xterm-256color\"\n```\n\n### Working Directory\n\nVHS runs from the directory containing the tape file. For different directories:\n\n```tape\nHide\nType \"cd /path/to/project\"\nEnter\nSleep 500ms\nShow\n```\n\n## Running VHS\n\n### Basic Execution\n\n```bash\nvhs tape-file.tape\n```\n\n### With Options\n\n```bash\n# Publish to vhs.charm.sh (public)\nvhs tape-file.tape --publish\n\n# Output to specific location\nvhs tape-file.tape -o custom-output.gif\n```\n\n### Batch Recording\n\n```bash\n# Record all tape files\nfor tape in *.tape; do\n  vhs \"$tape\"\ndone\n```\n\n## Error Handling\n\n### Common Issues\n\n**ttyd not found**\n```bash\n# Install ttyd\ngo install github.com/aspect-build/aspect-cli/pkg/ttyd@latest\n# Or via package manager\n```\n\n**ffmpeg errors**\n```bash\n# validate ffmpeg is installed with required codecs\nffmpeg -version\n```\n\n**Permission denied**\n```bash\n# Check write permissions for output directory\nls -la \"$(dirname output.gif)\"\n```\n\n**Empty output**\n- Verify commands produce visible output\n- Increase Sleep times after commands\n- Check terminal dimensions fit content\n\n### Debug Mode\n\n```bash\n# Verbose output\nVHS_DEBUG=1 vhs tape-file.tape\n```\n\n## WSL2 Considerations\n\n### Graphics Support\n\nVHS in WSL2 may require:\n- WSLg enabled (Windows 11+)\n- X server for older Windows 10\n\n### Path Handling\n\nUse Linux-style paths in tape files:\n```tape\n# Correct\nOutput /home/user/output.gif\n\n# Avoid Windows paths\n# Output C:\\Users\\...\n```\n\n### Performance\n\nWSL2 disk I/O to Windows filesystem is slow. Keep tapes and outputs on Linux filesystem:\n\n```bash\n# Good: Linux filesystem\n/home/user/recordings/\n\n# Slow: Windows mount\n/mnt/c/Users/...\n```\n\n### Font Availability\n\nInstall fonts in WSL2:\n```bash\nsudo apt install fonts-jetbrains-mono\nfc-cache -fv\n```\n\n## Output Verification\n\nAfter recording:\n\n```bash\n# Check file exists and has content\nls -la output.gif\n\n# Verify file type\nfile output.gif\n\n# Check dimensions (requires ImageMagick)\nidentify output.gif | head -1\n```\n\n## Integration with Documentation\n\nMove outputs to documentation directories:\n\n```bash\n# Move to docs\nmv output.gif docs/images/\n\n# Update markdown references\n# ![Demo](images/output.gif)\n```\n\nFile v1.9.13:modules/tape-syntax.md\n\n# VHS Tape Syntax Reference\n\n## Metadata Comments\n\nCustom metadata annotations for documentation integration:\n\n```tape\n# @title: Command Demo\n# @description: Demonstrates the CLI workflow\n# @step: 1\n# @docs-brief: Quick overview for documentation\n# @book-detail: Extended explanation for book chapters\n```\n\n## Output Directive\n\nSpecifies the output file path (required):\n\n```tape\nOutput demo.gif\n```\n\nSupported formats: `.gif`, `.mp4`, `.webm`\n\n## Set Directives\n\nConfigure terminal appearance and behavior:\n\n```tape\n# Typography\nSet FontSize 14\nSet FontFamily \"JetBrains Mono\"\n\n# Dimensions\nSet Width 1200\nSet Height 600\n\n# Appearance\nSet Theme \"Dracula\"\nSet Padding 20\nSet Margin 10\nSet MarginFill \"#674EFF\"\nSet BorderRadius 8\n\n# Timing\nSet TypingSpeed 50ms\nSet Framerate 60\n\n# Environment\nSet Env \"TERM\" \"xterm-256color\"\nSet Env \"PS1\" \"$ \"\n\n# Window\nSet Shell \"bash\"\nSet WindowBar Colorful\nSet WindowBarSize 40\n```\n\n## Action Commands\n\n### Type\n\nTypes text into the terminal:\n\n```tape\nType \"echo 'Hello World'\"\nType@50ms \"slower typing\"\n```\n\n### Enter\n\nSends Enter key (execute command):\n\n```tape\nEnter\n```\n\n### Sleep\n\nPause for duration:\n\n```tape\nSleep 500ms\nSleep 2s\n```\n\n### Key Combinations\n\n```tape\nCtrl+C\nCtrl+D\nCtrl+L\nEscape\nTab\nBackspace\nUp\nDown\nLeft\nRight\nSpace\n```\n\n### Screenshot\n\nCapture a still frame:\n\n```tape\nScreenshot output.png\n```\n\n### Hide/Show\n\nControl visibility of actions:\n\n```tape\nHide\nType \"secret setup commands\"\nEnter\nShow\n```\n\n## Best Practices\n\n### Echo vs Commands\n\n**NEVER use `echo` to simulate or replace real command output.** Echo should only be used for:\n\n- Printing explanatory messages or headers\n- Simple text output demonstrations\n- Comments that need to appear in the terminal\n\n**ALWAYS prefer actual commands** that demonstrate functionality:\n\n```tape\n# BAD: Simulating output with echo\nType \"echo 'tool-a, tool-b, tool-c'\"\nEnter\n\n# GOOD: Using the actual command\nType \"my-cli --list-tools\"\nEnter\n```\n\nIf a command doesn't exist to show what you need, consider:\n1. Adding a flag or subcommand to the CLI being demonstrated\n2. Using the actual data source (file, API, etc.)\n3. Rethinking what the demo should show\n\n**Rationale**: Tutorials should demonstrate real functionality. Echoing data teaches users nothing about the actual tool and may become stale as the tool evolves.\n\n### MCP Tool Demonstrations\n\nWhen demonstrating MCP (Model Context Protocol) functionality, show how tools are used within the host environment (e.g., Claude Code) rather than calling CLI equivalents:\n\n```tape\n# POOR: Using CLI instead of MCP\nType \"skrills metrics\"\n\n# BETTER: Explain MCP tool usage\nType \"# In Claude Code, ask: 'Show me skill statistics'\"\nType \"# Claude calls the skill-metrics MCP tool automatically\"\n```\n\n## Advanced Features\n\n### Split Panes\n\nCreate multi-pane layouts:\n\n```tape\nSplit\nType@left \"echo 'Left pane'\"\nEnter@left\nType@right \"echo 'Right pane'\"\nEnter@right\n```\n\n### Source\n\nInclude other tape files:\n\n```tape\nSource common-setup.tape\n```\n\n### Require\n\nvalidate programs are available:\n\n```tape\nRequire echo\nRequire git\n```\n\n## Complete Example\n\n```tape\n# @title: Git Status Demo\n# @description: Shows git status workflow\n# @step: 1\n\nOutput git-demo.gif\n\nSet FontSize 16\nSet Width 1000\nSet Height 400\nSet Theme \"Catppuccin Mocha\"\nSet TypingSpeed 75ms\n\nHide\nType \"cd ~/project\"\nEnter\nSleep 500ms\nShow\n\nType \"git status\"\nSleep 500ms\nEnter\nSleep 2s\n\nType \"git add .\"\nSleep 500ms\nEnter\nSleep 1s\n\nType \"git commit -m 'Update docs'\"\nSleep 500ms\nEnter\nSleep 2s\n```\n\nFile v1.9.13:skill-card.md\n\n## Description: <br>\nGenerates terminal recordings using VHS tape scripts and produces GIF outputs. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and technical writers use this skill to create terminal demo recordings for documentation, tutorials, and CLI workflow demonstrations. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Tape files execute terminal commands and may perform unintended actions if they are untrusted or not reviewed. <br>\nMitigation: Review tape files before running them and execute only trusted recordings. <br>\nRisk: Published recordings can expose secrets, private paths, credentials, or proprietary workflow details. <br>\nMitigation: Prefer local GIF output by default and use the publish option only after reviewing the recording content. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/athola/skills/nm-scry-vhs-recording) <br>\n- [OpenClaw homepage](https://github.com/athola/claude-night-market/tree/master/plugins/scry) <br>\n- [VHS Execution Guide](modules/execution.md) <br>\n- [VHS Tape Syntax Reference](modules/tape-syntax.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Markdown, Shell commands, Configuration] <br>\n**Output Format:** [Markdown with inline bash and tape code blocks] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Guides local VHS tape validation and recording, with GIF output verification and optional public publishing guidance.] <br>\n\n## Skill Version(s): <br>\n1.9.13 (source: ClawHub release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.9.12: 5 files, 6288 bytes\n\nFiles: modules/execution.md (3225b), modules/tape-syntax.md (3513b), skill-card.md (2005b), SKILL.md (2887b), _meta.json (141b)\n\nFile v1.9.12:SKILL.md\n\n---\nname: vhs-recording\ndescription: Generates terminal recordings using VHS tape scripts and produces GIF outputs\nversion: 1.9.8\ntriggers:\n  - vhs\n  - terminal\n  - recording\n  - gif\n  - demo\n  - tutorial\n  - creating demo GIFs or documenting CLI workflows for tutorials\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/scry\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: scry\n---\n\n> **Night Market Skill** — ported from [claude-night-market/scry](https://github.com/athola/claude-night-market/tree/master/plugins/scry). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# VHS Recording Skill\n\nGenerate professional terminal recordings from VHS tape files.\n\n\n## When To Use\n\n- Recording terminal sessions with VHS tape scripts\n- Creating terminal demo recordings for documentation\n\n## When NOT To Use\n\n- Browser-based workflows - use scry:browser-recording instead\n- Non-terminal demos or GUI applications\n\n## Overview\n\nVHS converts declarative tape files into animated GIFs of terminal sessions. Tape files define commands, timing, and terminal appearance.\n\n## Required TodoWrite Items\n\n```\n- Locate and validate tape file\n- Check VHS installation status\n- Execute VHS recording\n- Verify output GIF creation\n```\n\n## Module Reference\n\n- See `modules/tape-syntax.md` for VHS tape file directives\n- See `modules/execution.md` for recording workflow details\n\n## Workflow\n\n### Phase 1: Validate Tape File\n\n1. Confirm tape file exists at specified path\n2. Read tape file contents\n3. Verify required directives:\n   - `Output` directive specifies GIF destination\n   - At least one action command (Type, Enter, etc.)\n\n### Phase 2: Check VHS Installation\n\n```bash\nwhich vhs && vhs --version\n```\n\nIf not installed:\n```bash\n# Linux/WSL\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Also requires ttyd and ffmpeg\n```\n\n### Phase 3: Execute Recording\n\n```bash\nvhs <tape-file.tape>\n```\n\nVHS will:\n1. Parse tape file directives\n2. Launch virtual terminal (ttyd)\n3. Execute commands with timing\n4. Capture frames\n5. Encode to GIF using ffmpeg\n\n### Phase 4: Verify Output\n\n1. Check GIF file exists at Output path\n2. Verify file size is non-zero\n3. Report success with output location\n\n## Exit Criteria\n\n- GIF file created at specified Output path\n- File size indicates successful recording (typically >50KB)\n- No error messages from VHS execution\n## Troubleshooting\n\n### Common Issues\n\nIf `vhs` is not found, verify that your Go bin directory is in your `PATH` (typically `~/go/bin`). If the recording fails to start, ensure `ttyd` and `ffmpeg` are installed, as VHS depends on them for terminal emulation and video encoding. For \"permission denied\" errors when writing the GIF, check that the output directory exists and is writable.\n\nFile v1.9.12:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-scry-vhs-recording\",\n  \"version\": \"1.9.12\",\n  \"publishedAt\": 1781839242578\n}\n\nFile v1.9.12:modules/execution.md\n\n# VHS Execution Guide\n\n## Pre-flight Checks\n\n### VHS Installation\n\n```bash\n# Check if installed\nwhich vhs\n\n# Check version\nvhs --version\n```\n\n### Dependencies\n\nVHS requires:\n- **ttyd**: Terminal emulator for web\n- **ffmpeg**: Video/image encoding\n\n```bash\n# Verify dependencies\nwhich ttyd ffmpeg\n```\n\n### Installation\n\n```bash\n# Go (recommended)\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Arch Linux\nyay -S vhs\n\n# Nix\nnix-env -iA nixpkgs.vhs\n```\n\n### Tape File Validation\n\nCheck tape file before execution:\n\n```bash\n# Verify file exists\ntest -f tape-file.tape && echo \"Found\" || echo \"Missing\"\n\n# Check for Output directive\nrg -q \"^Output\" tape-file.tape && echo \"Has output\" || echo \"No output directive\"\n# fallback: grep -q \"^Output\" tape-file.tape\n\n# Validate syntax (dry run)\nvhs validate tape-file.tape\n```\n\n## Environment Setup\n\n### Terminal Environment\n\nVHS creates an isolated terminal. Set environment variables in the tape:\n\n```tape\nSet Env \"HOME\" \"/home/user\"\nSet Env \"PATH\" \"/usr/local/bin:/usr/bin:/bin\"\nSet Env \"TERM\" \"xterm-256color\"\n```\n\n### Working Directory\n\nVHS runs from the directory containing the tape file. For different directories:\n\n```tape\nHide\nType \"cd /path/to/project\"\nEnter\nSleep 500ms\nShow\n```\n\n## Running VHS\n\n### Basic Execution\n\n```bash\nvhs tape-file.tape\n```\n\n### With Options\n\n```bash\n# Publish to vhs.charm.sh (public)\nvhs tape-file.tape --publish\n\n# Output to specific location\nvhs tape-file.tape -o custom-output.gif\n```\n\n### Batch Recording\n\n```bash\n# Record all tape files\nfor tape in *.tape; do\n  vhs \"$tape\"\ndone\n```\n\n## Error Handling\n\n### Common Issues\n\n**ttyd not found**\n```bash\n# Install ttyd\ngo install github.com/aspect-build/aspect-cli/pkg/ttyd@latest\n# Or via package manager\n```\n\n**ffmpeg errors**\n```bash\n# validate ffmpeg is installed with required codecs\nffmpeg -version\n```\n\n**Permission denied**\n```bash\n# Check write permissions for output directory\nls -la \"$(dirname output.gif)\"\n```\n\n**Empty output**\n- Verify commands produce visible output\n- Increase Sleep times after commands\n- Check terminal dimensions fit content\n\n### Debug Mode\n\n```bash\n# Verbose output\nVHS_DEBUG=1 vhs tape-file.tape\n```\n\n## WSL2 Considerations\n\n### Graphics Support\n\nVHS in WSL2 may require:\n- WSLg enabled (Windows 11+)\n- X server for older Windows 10\n\n### Path Handling\n\nUse Linux-style paths in tape files:\n```tape\n# Correct\nOutput /home/user/output.gif\n\n# Avoid Windows paths\n# Output C:\\Users\\...\n```\n\n### Performance\n\nWSL2 disk I/O to Windows filesystem is slow. Keep tapes and outputs on Linux filesystem:\n\n```bash\n# Good: Linux filesystem\n/home/user/recordings/\n\n# Slow: Windows mount\n/mnt/c/Users/...\n```\n\n### Font Availability\n\nInstall fonts in WSL2:\n```bash\nsudo apt install fonts-jetbrains-mono\nfc-cache -fv\n```\n\n## Output Verification\n\nAfter recording:\n\n```bash\n# Check file exists and has content\nls -la output.gif\n\n# Verify file type\nfile output.gif\n\n# Check dimensions (requires ImageMagick)\nidentify output.gif | head -1\n```\n\n## Integration with Documentation\n\nMove outputs to documentation directories:\n\n```bash\n# Move to docs\nmv output.gif docs/images/\n\n# Update markdown references\n# ![Demo](images/output.gif)\n```\n\nFile v1.9.12:modules/tape-syntax.md\n\n# VHS Tape Syntax Reference\n\n## Metadata Comments\n\nCustom metadata annotations for documentation integration:\n\n```tape\n# @title: Command Demo\n# @description: Demonstrates the CLI workflow\n# @step: 1\n# @docs-brief: Quick overview for documentation\n# @book-detail: Extended explanation for book chapters\n```\n\n## Output Directive\n\nSpecifies the output file path (required):\n\n```tape\nOutput demo.gif\n```\n\nSupported formats: `.gif`, `.mp4`, `.webm`\n\n## Set Directives\n\nConfigure terminal appearance and behavior:\n\n```tape\n# Typography\nSet FontSize 14\nSet FontFamily \"JetBrains Mono\"\n\n# Dimensions\nSet Width 1200\nSet Height 600\n\n# Appearance\nSet Theme \"Dracula\"\nSet Padding 20\nSet Margin 10\nSet MarginFill \"#674EFF\"\nSet BorderRadius 8\n\n# Timing\nSet TypingSpeed 50ms\nSet Framerate 60\n\n# Environment\nSet Env \"TERM\" \"xterm-256color\"\nSet Env \"PS1\" \"$ \"\n\n# Window\nSet Shell \"bash\"\nSet WindowBar Colorful\nSet WindowBarSize 40\n```\n\n## Action Commands\n\n### Type\n\nTypes text into the terminal:\n\n```tape\nType \"echo 'Hello World'\"\nType@50ms \"slower typing\"\n```\n\n### Enter\n\nSends Enter key (execute command):\n\n```tape\nEnter\n```\n\n### Sleep\n\nPause for duration:\n\n```tape\nSleep 500ms\nSleep 2s\n```\n\n### Key Combinations\n\n```tape\nCtrl+C\nCtrl+D\nCtrl+L\nEscape\nTab\nBackspace\nUp\nDown\nLeft\nRight\nSpace\n```\n\n### Screenshot\n\nCapture a still frame:\n\n```tape\nScreenshot output.png\n```\n\n### Hide/Show\n\nControl visibility of actions:\n\n```tape\nHide\nType \"secret setup commands\"\nEnter\nShow\n```\n\n## Best Practices\n\n### Echo vs Commands\n\n**NEVER use `echo` to simulate or replace real command output.** Echo should only be used for:\n\n- Printing explanatory messages or headers\n- Simple text output demonstrations\n- Comments that need to appear in the terminal\n\n**ALWAYS prefer actual commands** that demonstrate functionality:\n\n```tape\n# BAD: Simulating output with echo\nType \"echo 'tool-a, tool-b, tool-c'\"\nEnter\n\n# GOOD: Using the actual command\nType \"my-cli --list-tools\"\nEnter\n```\n\nIf a command doesn't exist to show what you need, consider:\n1. Adding a flag or subcommand to the CLI being demonstrated\n2. Using the actual data source (file, API, etc.)\n3. Rethinking what the demo should show\n\n**Rationale**: Tutorials should demonstrate real functionality. Echoing data teaches users nothing about the actual tool and may become stale as the tool evolves.\n\n### MCP Tool Demonstrations\n\nWhen demonstrating MCP (Model Context Protocol) functionality, show how tools are used within the host environment (e.g., Claude Code) rather than calling CLI equivalents:\n\n```tape\n# POOR: Using CLI instead of MCP\nType \"skrills metrics\"\n\n# BETTER: Explain MCP tool usage\nType \"# In Claude Code, ask: 'Show me skill statistics'\"\nType \"# Claude calls the skill-metrics MCP tool automatically\"\n```\n\n## Advanced Features\n\n### Split Panes\n\nCreate multi-pane layouts:\n\n```tape\nSplit\nType@left \"echo 'Left pane'\"\nEnter@left\nType@right \"echo 'Right pane'\"\nEnter@right\n```\n\n### Source\n\nInclude other tape files:\n\n```tape\nSource common-setup.tape\n```\n\n### Require\n\nvalidate programs are available:\n\n```tape\nRequire echo\nRequire git\n```\n\n## Complete Example\n\n```tape\n# @title: Git Status Demo\n# @description: Shows git status workflow\n# @step: 1\n\nOutput git-demo.gif\n\nSet FontSize 16\nSet Width 1000\nSet Height 400\nSet Theme \"Catppuccin Mocha\"\nSet TypingSpeed 75ms\n\nHide\nType \"cd ~/project\"\nEnter\nSleep 500ms\nShow\n\nType \"git status\"\nSleep 500ms\nEnter\nSleep 2s\n\nType \"git add .\"\nSleep 500ms\nEnter\nSleep 1s\n\nType \"git commit -m 'Update docs'\"\nSleep 500ms\nEnter\nSleep 2s\n```\n\nFile v1.9.12:skill-card.md\n\n## Description: <br>\nGenerates terminal recordings using VHS tape scripts and produces GIF outputs. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and technical writers use this skill to validate VHS tape files, run terminal recording workflows, and produce GIF outputs for documentation and CLI tutorials. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: VHS tape files can execute local shell commands during recording. <br>\nMitigation: Read each tape like a shell script before running VHS, and verify output paths before recording. <br>\nRisk: Published recordings can expose sensitive terminal content. <br>\nMitigation: Avoid `--publish` unless the recording is sanitized and safe to share publicly. <br>\n\n\n## Reference(s): <br>\n- [VHS Execution Guide](modules/execution.md) <br>\n- [VHS Tape Syntax Reference](modules/tape-syntax.md) <br>\n- [ClawHub Skill Page](https://clawhub.ai/athola/nm-scry-vhs-recording) <br>\n- [Clawdis Homepage](https://github.com/athola/claude-night-market/tree/master/plugins/scry) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Guidance, Markdown, Shell commands, Configuration] <br>\n**Output Format:** [Markdown guidance with inline shell commands and VHS tape snippets] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Outputs recording workflow guidance for local VHS execution; generated recordings may create GIF, MP4, WebM, or screenshot files depending on the tape.] <br>\n\n## Skill Version(s): <br>\n1.9.12 (source: ClawHub release evidence) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.2: 5 files, 6249 bytes\n\nFiles: modules/execution.md (3225b), modules/tape-syntax.md (3513b), skill-card.md (1948b), SKILL.md (2815b), _meta.json (140b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: vhs-recording\ndescription: Generate terminal recordings using VHS tape files, produces GIF outputs\nversion: 1.9.5\ntriggers:\n  - vhs\n  - terminal\n  - recording\n  - gif\n  - demo\n  - tutorial\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/scry\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: scry\n---\n\n> **Night Market Skill** — ported from [claude-night-market/scry](https://github.com/athola/claude-night-market/tree/master/plugins/scry). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# VHS Recording Skill\n\nGenerate professional terminal recordings from VHS tape files.\n\n\n## When To Use\n\n- Recording terminal sessions with VHS tape scripts\n- Creating terminal demo recordings for documentation\n\n## When NOT To Use\n\n- Browser-based workflows - use scry:browser-recording instead\n- Non-terminal demos or GUI applications\n\n## Overview\n\nVHS converts declarative tape files into animated GIFs of terminal sessions. Tape files define commands, timing, and terminal appearance.\n\n## Required TodoWrite Items\n\n```\n- Locate and validate tape file\n- Check VHS installation status\n- Execute VHS recording\n- Verify output GIF creation\n```\n\n## Module Reference\n\n- See `modules/tape-syntax.md` for VHS tape file directives\n- See `modules/execution.md` for recording workflow details\n\n## Workflow\n\n### Phase 1: Validate Tape File\n\n1. Confirm tape file exists at specified path\n2. Read tape file contents\n3. Verify required directives:\n   - `Output` directive specifies GIF destination\n   - At least one action command (Type, Enter, etc.)\n\n### Phase 2: Check VHS Installation\n\n```bash\nwhich vhs && vhs --version\n```\n\nIf not installed:\n```bash\n# Linux/WSL\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Also requires ttyd and ffmpeg\n```\n\n### Phase 3: Execute Recording\n\n```bash\nvhs <tape-file.tape>\n```\n\nVHS will:\n1. Parse tape file directives\n2. Launch virtual terminal (ttyd)\n3. Execute commands with timing\n4. Capture frames\n5. Encode to GIF using ffmpeg\n\n### Phase 4: Verify Output\n\n1. Check GIF file exists at Output path\n2. Verify file size is non-zero\n3. Report success with output location\n\n## Exit Criteria\n\n- GIF file created at specified Output path\n- File size indicates successful recording (typically >50KB)\n- No error messages from VHS execution\n## Troubleshooting\n\n### Common Issues\n\nIf `vhs` is not found, verify that your Go bin directory is in your `PATH` (typically `~/go/bin`). If the recording fails to start, ensure `ttyd` and `ffmpeg` are installed, as VHS depends on them for terminal emulation and video encoding. For \"permission denied\" errors when writing the GIF, check that the output directory exists and is writable.\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-scry-vhs-recording\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1778293241380\n}\n\nFile v1.0.2:modules/execution.md\n\n# VHS Execution Guide\n\n## Pre-flight Checks\n\n### VHS Installation\n\n```bash\n# Check if installed\nwhich vhs\n\n# Check version\nvhs --version\n```\n\n### Dependencies\n\nVHS requires:\n- **ttyd**: Terminal emulator for web\n- **ffmpeg**: Video/image encoding\n\n```bash\n# Verify dependencies\nwhich ttyd ffmpeg\n```\n\n### Installation\n\n```bash\n# Go (recommended)\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Arch Linux\nyay -S vhs\n\n# Nix\nnix-env -iA nixpkgs.vhs\n```\n\n### Tape File Validation\n\nCheck tape file before execution:\n\n```bash\n# Verify file exists\ntest -f tape-file.tape && echo \"Found\" || echo \"Missing\"\n\n# Check for Output directive\nrg -q \"^Output\" tape-file.tape && echo \"Has output\" || echo \"No output directive\"\n# fallback: grep -q \"^Output\" tape-file.tape\n\n# Validate syntax (dry run)\nvhs validate tape-file.tape\n```\n\n## Environment Setup\n\n### Terminal Environment\n\nVHS creates an isolated terminal. Set environment variables in the tape:\n\n```tape\nSet Env \"HOME\" \"/home/user\"\nSet Env \"PATH\" \"/usr/local/bin:/usr/bin:/bin\"\nSet Env \"TERM\" \"xterm-256color\"\n```\n\n### Working Directory\n\nVHS runs from the directory containing the tape file. For different directories:\n\n```tape\nHide\nType \"cd /path/to/project\"\nEnter\nSleep 500ms\nShow\n```\n\n## Running VHS\n\n### Basic Execution\n\n```bash\nvhs tape-file.tape\n```\n\n### With Options\n\n```bash\n# Publish to vhs.charm.sh (public)\nvhs tape-file.tape --publish\n\n# Output to specific location\nvhs tape-file.tape -o custom-output.gif\n```\n\n### Batch Recording\n\n```bash\n# Record all tape files\nfor tape in *.tape; do\n  vhs \"$tape\"\ndone\n```\n\n## Error Handling\n\n### Common Issues\n\n**ttyd not found**\n```bash\n# Install ttyd\ngo install github.com/aspect-build/aspect-cli/pkg/ttyd@latest\n# Or via package manager\n```\n\n**ffmpeg errors**\n```bash\n# validate ffmpeg is installed with required codecs\nffmpeg -version\n```\n\n**Permission denied**\n```bash\n# Check write permissions for output directory\nls -la \"$(dirname output.gif)\"\n```\n\n**Empty output**\n- Verify commands produce visible output\n- Increase Sleep times after commands\n- Check terminal dimensions fit content\n\n### Debug Mode\n\n```bash\n# Verbose output\nVHS_DEBUG=1 vhs tape-file.tape\n```\n\n## WSL2 Considerations\n\n### Graphics Support\n\nVHS in WSL2 may require:\n- WSLg enabled (Windows 11+)\n- X server for older Windows 10\n\n### Path Handling\n\nUse Linux-style paths in tape files:\n```tape\n# Correct\nOutput /home/user/output.gif\n\n# Avoid Windows paths\n# Output C:\\Users\\...\n```\n\n### Performance\n\nWSL2 disk I/O to Windows filesystem is slow. Keep tapes and outputs on Linux filesystem:\n\n```bash\n# Good: Linux filesystem\n/home/user/recordings/\n\n# Slow: Windows mount\n/mnt/c/Users/...\n```\n\n### Font Availability\n\nInstall fonts in WSL2:\n```bash\nsudo apt install fonts-jetbrains-mono\nfc-cache -fv\n```\n\n## Output Verification\n\nAfter recording:\n\n```bash\n# Check file exists and has content\nls -la output.gif\n\n# Verify file type\nfile output.gif\n\n# Check dimensions (requires ImageMagick)\nidentify output.gif | head -1\n```\n\n## Integration with Documentation\n\nMove outputs to documentation directories:\n\n```bash\n# Move to docs\nmv output.gif docs/images/\n\n# Update markdown references\n# ![Demo](images/output.gif)\n```\n\nFile v1.0.2:modules/tape-syntax.md\n\n# VHS Tape Syntax Reference\n\n## Metadata Comments\n\nCustom metadata annotations for documentation integration:\n\n```tape\n# @title: Command Demo\n# @description: Demonstrates the CLI workflow\n# @step: 1\n# @docs-brief: Quick overview for documentation\n# @book-detail: Extended explanation for book chapters\n```\n\n## Output Directive\n\nSpecifies the output file path (required):\n\n```tape\nOutput demo.gif\n```\n\nSupported formats: `.gif`, `.mp4`, `.webm`\n\n## Set Directives\n\nConfigure terminal appearance and behavior:\n\n```tape\n# Typography\nSet FontSize 14\nSet FontFamily \"JetBrains Mono\"\n\n# Dimensions\nSet Width 1200\nSet Height 600\n\n# Appearance\nSet Theme \"Dracula\"\nSet Padding 20\nSet Margin 10\nSet MarginFill \"#674EFF\"\nSet BorderRadius 8\n\n# Timing\nSet TypingSpeed 50ms\nSet Framerate 60\n\n# Environment\nSet Env \"TERM\" \"xterm-256color\"\nSet Env \"PS1\" \"$ \"\n\n# Window\nSet Shell \"bash\"\nSet WindowBar Colorful\nSet WindowBarSize 40\n```\n\n## Action Commands\n\n### Type\n\nTypes text into the terminal:\n\n```tape\nType \"echo 'Hello World'\"\nType@50ms \"slower typing\"\n```\n\n### Enter\n\nSends Enter key (execute command):\n\n```tape\nEnter\n```\n\n### Sleep\n\nPause for duration:\n\n```tape\nSleep 500ms\nSleep 2s\n```\n\n### Key Combinations\n\n```tape\nCtrl+C\nCtrl+D\nCtrl+L\nEscape\nTab\nBackspace\nUp\nDown\nLeft\nRight\nSpace\n```\n\n### Screenshot\n\nCapture a still frame:\n\n```tape\nScreenshot output.png\n```\n\n### Hide/Show\n\nControl visibility of actions:\n\n```tape\nHide\nType \"secret setup commands\"\nEnter\nShow\n```\n\n## Best Practices\n\n### Echo vs Commands\n\n**NEVER use `echo` to simulate or replace real command output.** Echo should only be used for:\n\n- Printing explanatory messages or headers\n- Simple text output demonstrations\n- Comments that need to appear in the terminal\n\n**ALWAYS prefer actual commands** that demonstrate functionality:\n\n```tape\n# BAD: Simulating output with echo\nType \"echo 'tool-a, tool-b, tool-c'\"\nEnter\n\n# GOOD: Using the actual command\nType \"my-cli --list-tools\"\nEnter\n```\n\nIf a command doesn't exist to show what you need, consider:\n1. Adding a flag or subcommand to the CLI being demonstrated\n2. Using the actual data source (file, API, etc.)\n3. Rethinking what the demo should show\n\n**Rationale**: Tutorials should demonstrate real functionality. Echoing data teaches users nothing about the actual tool and may become stale as the tool evolves.\n\n### MCP Tool Demonstrations\n\nWhen demonstrating MCP (Model Context Protocol) functionality, show how tools are used within the host environment (e.g., Claude Code) rather than calling CLI equivalents:\n\n```tape\n# POOR: Using CLI instead of MCP\nType \"skrills metrics\"\n\n# BETTER: Explain MCP tool usage\nType \"# In Claude Code, ask: 'Show me skill statistics'\"\nType \"# Claude calls the skill-metrics MCP tool automatically\"\n```\n\n## Advanced Features\n\n### Split Panes\n\nCreate multi-pane layouts:\n\n```tape\nSplit\nType@left \"echo 'Left pane'\"\nEnter@left\nType@right \"echo 'Right pane'\"\nEnter@right\n```\n\n### Source\n\nInclude other tape files:\n\n```tape\nSource common-setup.tape\n```\n\n### Require\n\nvalidate programs are available:\n\n```tape\nRequire echo\nRequire git\n```\n\n## Complete Example\n\n```tape\n# @title: Git Status Demo\n# @description: Shows git status workflow\n# @step: 1\n\nOutput git-demo.gif\n\nSet FontSize 16\nSet Width 1000\nSet Height 400\nSet Theme \"Catppuccin Mocha\"\nSet TypingSpeed 75ms\n\nHide\nType \"cd ~/project\"\nEnter\nSleep 500ms\nShow\n\nType \"git status\"\nSleep 500ms\nEnter\nSleep 2s\n\nType \"git add .\"\nSleep 500ms\nEnter\nSleep 1s\n\nType \"git commit -m 'Update docs'\"\nSleep 500ms\nEnter\nSleep 2s\n```\n\nFile v1.0.2:skill-card.md\n\n## Description: <br>\nGenerate terminal recordings from VHS tape files and produce GIF outputs. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[athola](https://clawhub.ai/user/athola) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nDevelopers and documentation authors use this skill to validate VHS tape files, check required tools, run terminal recordings, and verify generated GIF outputs for demos and tutorials. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Tape files can execute shell commands during recording, including hidden setup steps or sourced tape content. <br>\nMitigation: Inspect tape commands, Hide/Show blocks, and Source includes before running recordings; use test or sanitized data. <br>\nRisk: Recordings may write to unexpected output paths or expose terminal content if published publicly. <br>\nMitigation: Confirm the Output path before execution and avoid --publish unless the resulting recording is safe to share. <br>\n\n\n## Reference(s): <br>\n- [ClawHub release page](https://clawhub.ai/athola/nm-scry-vhs-recording) <br>\n- [Metadata homepage](https://github.com/athola/claude-night-market/tree/master/plugins/scry) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [guidance, shell commands, configuration] <br>\n**Output Format:** [Markdown with inline bash and tape code blocks] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Instructions cover tape validation, dependency checks, recording execution, and output verification.] <br>\n\n## Skill Version(s): <br>\n1.0.2 (source: release metadata) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.1: 4 files, 5176 bytes\n\nFiles: modules/execution.md (3225b), modules/tape-syntax.md (3513b), SKILL.md (2815b), _meta.json (140b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: vhs-recording\ndescription: Generate terminal recordings using VHS tape files, produces GIF outputs\nversion: 1.9.4\ntriggers:\n  - vhs\n  - terminal\n  - recording\n  - gif\n  - demo\n  - tutorial\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/scry\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: scry\n---\n\n> **Night Market Skill** — ported from [claude-night-market/scry](https://github.com/athola/claude-night-market/tree/master/plugins/scry). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# VHS Recording Skill\n\nGenerate professional terminal recordings from VHS tape files.\n\n\n## When To Use\n\n- Recording terminal sessions with VHS tape scripts\n- Creating terminal demo recordings for documentation\n\n## When NOT To Use\n\n- Browser-based workflows - use scry:browser-recording instead\n- Non-terminal demos or GUI applications\n\n## Overview\n\nVHS converts declarative tape files into animated GIFs of terminal sessions. Tape files define commands, timing, and terminal appearance.\n\n## Required TodoWrite Items\n\n```\n- Locate and validate tape file\n- Check VHS installation status\n- Execute VHS recording\n- Verify output GIF creation\n```\n\n## Module Reference\n\n- See `modules/tape-syntax.md` for VHS tape file directives\n- See `modules/execution.md` for recording workflow details\n\n## Workflow\n\n### Phase 1: Validate Tape File\n\n1. Confirm tape file exists at specified path\n2. Read tape file contents\n3. Verify required directives:\n   - `Output` directive specifies GIF destination\n   - At least one action command (Type, Enter, etc.)\n\n### Phase 2: Check VHS Installation\n\n```bash\nwhich vhs && vhs --version\n```\n\nIf not installed:\n```bash\n# Linux/WSL\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Also requires ttyd and ffmpeg\n```\n\n### Phase 3: Execute Recording\n\n```bash\nvhs <tape-file.tape>\n```\n\nVHS will:\n1. Parse tape file directives\n2. Launch virtual terminal (ttyd)\n3. Execute commands with timing\n4. Capture frames\n5. Encode to GIF using ffmpeg\n\n### Phase 4: Verify Output\n\n1. Check GIF file exists at Output path\n2. Verify file size is non-zero\n3. Report success with output location\n\n## Exit Criteria\n\n- GIF file created at specified Output path\n- File size indicates successful recording (typically >50KB)\n- No error messages from VHS execution\n## Troubleshooting\n\n### Common Issues\n\nIf `vhs` is not found, verify that your Go bin directory is in your `PATH` (typically `~/go/bin`). If the recording fails to start, ensure `ttyd` and `ffmpeg` are installed, as VHS depends on them for terminal emulation and video encoding. For \"permission denied\" errors when writing the GIF, check that the output directory exists and is writable.\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-scry-vhs-recording\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1778077330988\n}\n\nFile v1.0.1:modules/execution.md\n\n# VHS Execution Guide\n\n## Pre-flight Checks\n\n### VHS Installation\n\n```bash\n# Check if installed\nwhich vhs\n\n# Check version\nvhs --version\n```\n\n### Dependencies\n\nVHS requires:\n- **ttyd**: Terminal emulator for web\n- **ffmpeg**: Video/image encoding\n\n```bash\n# Verify dependencies\nwhich ttyd ffmpeg\n```\n\n### Installation\n\n```bash\n# Go (recommended)\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Arch Linux\nyay -S vhs\n\n# Nix\nnix-env -iA nixpkgs.vhs\n```\n\n### Tape File Validation\n\nCheck tape file before execution:\n\n```bash\n# Verify file exists\ntest -f tape-file.tape && echo \"Found\" || echo \"Missing\"\n\n# Check for Output directive\nrg -q \"^Output\" tape-file.tape && echo \"Has output\" || echo \"No output directive\"\n# fallback: grep -q \"^Output\" tape-file.tape\n\n# Validate syntax (dry run)\nvhs validate tape-file.tape\n```\n\n## Environment Setup\n\n### Terminal Environment\n\nVHS creates an isolated terminal. Set environment variables in the tape:\n\n```tape\nSet Env \"HOME\" \"/home/user\"\nSet Env \"PATH\" \"/usr/local/bin:/usr/bin:/bin\"\nSet Env \"TERM\" \"xterm-256color\"\n```\n\n### Working Directory\n\nVHS runs from the directory containing the tape file. For different directories:\n\n```tape\nHide\nType \"cd /path/to/project\"\nEnter\nSleep 500ms\nShow\n```\n\n## Running VHS\n\n### Basic Execution\n\n```bash\nvhs tape-file.tape\n```\n\n### With Options\n\n```bash\n# Publish to vhs.charm.sh (public)\nvhs tape-file.tape --publish\n\n# Output to specific location\nvhs tape-file.tape -o custom-output.gif\n```\n\n### Batch Recording\n\n```bash\n# Record all tape files\nfor tape in *.tape; do\n  vhs \"$tape\"\ndone\n```\n\n## Error Handling\n\n### Common Issues\n\n**ttyd not found**\n```bash\n# Install ttyd\ngo install github.com/aspect-build/aspect-cli/pkg/ttyd@latest\n# Or via package manager\n```\n\n**ffmpeg errors**\n```bash\n# validate ffmpeg is installed with required codecs\nffmpeg -version\n```\n\n**Permission denied**\n```bash\n# Check write permissions for output directory\nls -la \"$(dirname output.gif)\"\n```\n\n**Empty output**\n- Verify commands produce visible output\n- Increase Sleep times after commands\n- Check terminal dimensions fit content\n\n### Debug Mode\n\n```bash\n# Verbose output\nVHS_DEBUG=1 vhs tape-file.tape\n```\n\n## WSL2 Considerations\n\n### Graphics Support\n\nVHS in WSL2 may require:\n- WSLg enabled (Windows 11+)\n- X server for older Windows 10\n\n### Path Handling\n\nUse Linux-style paths in tape files:\n```tape\n# Correct\nOutput /home/user/output.gif\n\n# Avoid Windows paths\n# Output C:\\Users\\...\n```\n\n### Performance\n\nWSL2 disk I/O to Windows filesystem is slow. Keep tapes and outputs on Linux filesystem:\n\n```bash\n# Good: Linux filesystem\n/home/user/recordings/\n\n# Slow: Windows mount\n/mnt/c/Users/...\n```\n\n### Font Availability\n\nInstall fonts in WSL2:\n```bash\nsudo apt install fonts-jetbrains-mono\nfc-cache -fv\n```\n\n## Output Verification\n\nAfter recording:\n\n```bash\n# Check file exists and has content\nls -la output.gif\n\n# Verify file type\nfile output.gif\n\n# Check dimensions (requires ImageMagick)\nidentify output.gif | head -1\n```\n\n## Integration with Documentation\n\nMove outputs to documentation directories:\n\n```bash\n# Move to docs\nmv output.gif docs/images/\n\n# Update markdown references\n# ![Demo](images/output.gif)\n```\n\nFile v1.0.1:modules/tape-syntax.md\n\n# VHS Tape Syntax Reference\n\n## Metadata Comments\n\nCustom metadata annotations for documentation integration:\n\n```tape\n# @title: Command Demo\n# @description: Demonstrates the CLI workflow\n# @step: 1\n# @docs-brief: Quick overview for documentation\n# @book-detail: Extended explanation for book chapters\n```\n\n## Output Directive\n\nSpecifies the output file path (required):\n\n```tape\nOutput demo.gif\n```\n\nSupported formats: `.gif`, `.mp4`, `.webm`\n\n## Set Directives\n\nConfigure terminal appearance and behavior:\n\n```tape\n# Typography\nSet FontSize 14\nSet FontFamily \"JetBrains Mono\"\n\n# Dimensions\nSet Width 1200\nSet Height 600\n\n# Appearance\nSet Theme \"Dracula\"\nSet Padding 20\nSet Margin 10\nSet MarginFill \"#674EFF\"\nSet BorderRadius 8\n\n# Timing\nSet TypingSpeed 50ms\nSet Framerate 60\n\n# Environment\nSet Env \"TERM\" \"xterm-256color\"\nSet Env \"PS1\" \"$ \"\n\n# Window\nSet Shell \"bash\"\nSet WindowBar Colorful\nSet WindowBarSize 40\n```\n\n## Action Commands\n\n### Type\n\nTypes text into the terminal:\n\n```tape\nType \"echo 'Hello World'\"\nType@50ms \"slower typing\"\n```\n\n### Enter\n\nSends Enter key (execute command):\n\n```tape\nEnter\n```\n\n### Sleep\n\nPause for duration:\n\n```tape\nSleep 500ms\nSleep 2s\n```\n\n### Key Combinations\n\n```tape\nCtrl+C\nCtrl+D\nCtrl+L\nEscape\nTab\nBackspace\nUp\nDown\nLeft\nRight\nSpace\n```\n\n### Screenshot\n\nCapture a still frame:\n\n```tape\nScreenshot output.png\n```\n\n### Hide/Show\n\nControl visibility of actions:\n\n```tape\nHide\nType \"secret setup commands\"\nEnter\nShow\n```\n\n## Best Practices\n\n### Echo vs Commands\n\n**NEVER use `echo` to simulate or replace real command output.** Echo should only be used for:\n\n- Printing explanatory messages or headers\n- Simple text output demonstrations\n- Comments that need to appear in the terminal\n\n**ALWAYS prefer actual commands** that demonstrate functionality:\n\n```tape\n# BAD: Simulating output with echo\nType \"echo 'tool-a, tool-b, tool-c'\"\nEnter\n\n# GOOD: Using the actual command\nType \"my-cli --list-tools\"\nEnter\n```\n\nIf a command doesn't exist to show what you need, consider:\n1. Adding a flag or subcommand to the CLI being demonstrated\n2. Using the actual data source (file, API, etc.)\n3. Rethinking what the demo should show\n\n**Rationale**: Tutorials should demonstrate real functionality. Echoing data teaches users nothing about the actual tool and may become stale as the tool evolves.\n\n### MCP Tool Demonstrations\n\nWhen demonstrating MCP (Model Context Protocol) functionality, show how tools are used within the host environment (e.g., Claude Code) rather than calling CLI equivalents:\n\n```tape\n# POOR: Using CLI instead of MCP\nType \"skrills metrics\"\n\n# BETTER: Explain MCP tool usage\nType \"# In Claude Code, ask: 'Show me skill statistics'\"\nType \"# Claude calls the skill-metrics MCP tool automatically\"\n```\n\n## Advanced Features\n\n### Split Panes\n\nCreate multi-pane layouts:\n\n```tape\nSplit\nType@left \"echo 'Left pane'\"\nEnter@left\nType@right \"echo 'Right pane'\"\nEnter@right\n```\n\n### Source\n\nInclude other tape files:\n\n```tape\nSource common-setup.tape\n```\n\n### Require\n\nvalidate programs are available:\n\n```tape\nRequire echo\nRequire git\n```\n\n## Complete Example\n\n```tape\n# @title: Git Status Demo\n# @description: Shows git status workflow\n# @step: 1\n\nOutput git-demo.gif\n\nSet FontSize 16\nSet Width 1000\nSet Height 400\nSet Theme \"Catppuccin Mocha\"\nSet TypingSpeed 75ms\n\nHide\nType \"cd ~/project\"\nEnter\nSleep 500ms\nShow\n\nType \"git status\"\nSleep 500ms\nEnter\nSleep 2s\n\nType \"git add .\"\nSleep 500ms\nEnter\nSleep 1s\n\nType \"git commit -m 'Update docs'\"\nSleep 500ms\nEnter\nSleep 2s\n```\n\nArchive v1.0.0: 4 files, 5176 bytes\n\nFiles: modules/execution.md (3225b), modules/tape-syntax.md (3513b), SKILL.md (2815b), _meta.json (140b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: vhs-recording\ndescription: Generate terminal recordings using VHS tape files, produces GIF outputs\nversion: 1.8.2\ntriggers:\n  - vhs\n  - terminal\n  - recording\n  - gif\n  - demo\n  - tutorial\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/scry\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: scry\n---\n\n> **Night Market Skill** — ported from [claude-night-market/scry](https://github.com/athola/claude-night-market/tree/master/plugins/scry). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# VHS Recording Skill\n\nGenerate professional terminal recordings from VHS tape files.\n\n\n## When To Use\n\n- Recording terminal sessions with VHS tape scripts\n- Creating terminal demo recordings for documentation\n\n## When NOT To Use\n\n- Browser-based workflows - use scry:browser-recording instead\n- Non-terminal demos or GUI applications\n\n## Overview\n\nVHS converts declarative tape files into animated GIFs of terminal sessions. Tape files define commands, timing, and terminal appearance.\n\n## Required TodoWrite Items\n\n```\n- Locate and validate tape file\n- Check VHS installation status\n- Execute VHS recording\n- Verify output GIF creation\n```\n\n## Module Reference\n\n- See `modules/tape-syntax.md` for VHS tape file directives\n- See `modules/execution.md` for recording workflow details\n\n## Workflow\n\n### Phase 1: Validate Tape File\n\n1. Confirm tape file exists at specified path\n2. Read tape file contents\n3. Verify required directives:\n   - `Output` directive specifies GIF destination\n   - At least one action command (Type, Enter, etc.)\n\n### Phase 2: Check VHS Installation\n\n```bash\nwhich vhs && vhs --version\n```\n\nIf not installed:\n```bash\n# Linux/WSL\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Also requires ttyd and ffmpeg\n```\n\n### Phase 3: Execute Recording\n\n```bash\nvhs <tape-file.tape>\n```\n\nVHS will:\n1. Parse tape file directives\n2. Launch virtual terminal (ttyd)\n3. Execute commands with timing\n4. Capture frames\n5. Encode to GIF using ffmpeg\n\n### Phase 4: Verify Output\n\n1. Check GIF file exists at Output path\n2. Verify file size is non-zero\n3. Report success with output location\n\n## Exit Criteria\n\n- GIF file created at specified Output path\n- File size indicates successful recording (typically >50KB)\n- No error messages from VHS execution\n## Troubleshooting\n\n### Common Issues\n\nIf `vhs` is not found, verify that your Go bin directory is in your `PATH` (typically `~/go/bin`). If the recording fails to start, ensure `ttyd` and `ffmpeg` are installed, as VHS depends on them for terminal emulation and video encoding. For \"permission denied\" errors when writing the GIF, check that the output directory exists and is writable.\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-scry-vhs-recording\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1776700897488\n}\n\nFile v1.0.0:modules/execution.md\n\n# VHS Execution Guide\n\n## Pre-flight Checks\n\n### VHS Installation\n\n```bash\n# Check if installed\nwhich vhs\n\n# Check version\nvhs --version\n```\n\n### Dependencies\n\nVHS requires:\n- **ttyd**: Terminal emulator for web\n- **ffmpeg**: Video/image encoding\n\n```bash\n# Verify dependencies\nwhich ttyd ffmpeg\n```\n\n### Installation\n\n```bash\n# Go (recommended)\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Arch Linux\nyay -S vhs\n\n# Nix\nnix-env -iA nixpkgs.vhs\n```\n\n### Tape File Validation\n\nCheck tape file before execution:\n\n```bash\n# Verify file exists\ntest -f tape-file.tape && echo \"Found\" || echo \"Missing\"\n\n# Check for Output directive\nrg -q \"^Output\" tape-file.tape && echo \"Has output\" || echo \"No output directive\"\n# fallback: grep -q \"^Output\" tape-file.tape\n\n# Validate syntax (dry run)\nvhs validate tape-file.tape\n```\n\n## Environment Setup\n\n### Terminal Environment\n\nVHS creates an isolated terminal. Set environment variables in the tape:\n\n```tape\nSet Env \"HOME\" \"/home/user\"\nSet Env \"PATH\" \"/usr/local/bin:/usr/bin:/bin\"\nSet Env \"TERM\" \"xterm-256color\"\n```\n\n### Working Directory\n\nVHS runs from the directory containing the tape file. For different directories:\n\n```tape\nHide\nType \"cd /path/to/project\"\nEnter\nSleep 500ms\nShow\n```\n\n## Running VHS\n\n### Basic Execution\n\n```bash\nvhs tape-file.tape\n```\n\n### With Options\n\n```bash\n# Publish to vhs.charm.sh (public)\nvhs tape-file.tape --publish\n\n# Output to specific location\nvhs tape-file.tape -o custom-output.gif\n```\n\n### Batch Recording\n\n```bash\n# Record all tape files\nfor tape in *.tape; do\n  vhs \"$tape\"\ndone\n```\n\n## Error Handling\n\n### Common Issues\n\n**ttyd not found**\n```bash\n# Install ttyd\ngo install github.com/aspect-build/aspect-cli/pkg/ttyd@latest\n# Or via package manager\n```\n\n**ffmpeg errors**\n```bash\n# validate ffmpeg is installed with required codecs\nffmpeg -version\n```\n\n**Permission denied**\n```bash\n# Check write permissions for output directory\nls -la \"$(dirname output.gif)\"\n```\n\n**Empty output**\n- Verify commands produce visible output\n- Increase Sleep times after commands\n- Check terminal dimensions fit content\n\n### Debug Mode\n\n```bash\n# Verbose output\nVHS_DEBUG=1 vhs tape-file.tape\n```\n\n## WSL2 Considerations\n\n### Graphics Support\n\nVHS in WSL2 may require:\n- WSLg enabled (Windows 11+)\n- X server for older Windows 10\n\n### Path Handling\n\nUse Linux-style paths in tape files:\n```tape\n# Correct\nOutput /home/user/output.gif\n\n# Avoid Windows paths\n# Output C:\\Users\\...\n```\n\n### Performance\n\nWSL2 disk I/O to Windows filesystem is slow. Keep tapes and outputs on Linux filesystem:\n\n```bash\n# Good: Linux filesystem\n/home/user/recordings/\n\n# Slow: Windows mount\n/mnt/c/Users/...\n```\n\n### Font Availability\n\nInstall fonts in WSL2:\n```bash\nsudo apt install fonts-jetbrains-mono\nfc-cache -fv\n```\n\n## Output Verification\n\nAfter recording:\n\n```bash\n# Check file exists and has content\nls -la output.gif\n\n# Verify file type\nfile output.gif\n\n# Check dimensions (requires ImageMagick)\nidentify output.gif | head -1\n```\n\n## Integration with Documentation\n\nMove outputs to documentation directories:\n\n```bash\n# Move to docs\nmv output.gif docs/images/\n\n# Update markdown references\n# ![Demo](images/output.gif)\n```\n\nFile v1.0.0:modules/tape-syntax.md\n\n# VHS Tape Syntax Reference\n\n## Metadata Comments\n\nCustom metadata annotations for documentation integration:\n\n```tape\n# @title: Command Demo\n# @description: Demonstrates the CLI workflow\n# @step: 1\n# @docs-brief: Quick overview for documentation\n# @book-detail: Extended explanation for book chapters\n```\n\n## Output Directive\n\nSpecifies the output file path (required):\n\n```tape\nOutput demo.gif\n```\n\nSupported formats: `.gif`, `.mp4`, `.webm`\n\n## Set Directives\n\nConfigure terminal appearance and behavior:\n\n```tape\n# Typography\nSet FontSize 14\nSet FontFamily \"JetBrains Mono\"\n\n# Dimensions\nSet Width 1200\nSet Height 600\n\n# Appearance\nSet Theme \"Dracula\"\nSet Padding 20\nSet Margin 10\nSet MarginFill \"#674EFF\"\nSet BorderRadius 8\n\n# Timing\nSet TypingSpeed 50ms\nSet Framerate 60\n\n# Environment\nSet Env \"TERM\" \"xterm-256color\"\nSet Env \"PS1\" \"$ \"\n\n# Window\nSet Shell \"bash\"\nSet WindowBar Colorful\nSet WindowBarSize 40\n```\n\n## Action Commands\n\n### Type\n\nTypes text into the terminal:\n\n```tape\nType \"echo 'Hello World'\"\nType@50ms \"slower typing\"\n```\n\n### Enter\n\nSends Enter key (execute command):\n\n```tape\nEnter\n```\n\n### Sleep\n\nPause for duration:\n\n```tape\nSleep 500ms\nSleep 2s\n```\n\n### Key Combinations\n\n```tape\nCtrl+C\nCtrl+D\nCtrl+L\nEscape\nTab\nBackspace\nUp\nDown\nLeft\nRight\nSpace\n```\n\n### Screenshot\n\nCapture a still frame:\n\n```tape\nScreenshot output.png\n```\n\n### Hide/Show\n\nControl visibility of actions:\n\n```tape\nHide\nType \"secret setup commands\"\nEnter\nShow\n```\n\n## Best Practices\n\n### Echo vs Commands\n\n**NEVER use `echo` to simulate or replace real command output.** Echo should only be used for:\n\n- Printing explanatory messages or headers\n- Simple text output demonstrations\n- Comments that need to appear in the terminal\n\n**ALWAYS prefer actual commands** that demonstrate functionality:\n\n```tape\n# BAD: Simulating output with echo\nType \"echo 'tool-a, tool-b, tool-c'\"\nEnter\n\n# GOOD: Using the actual command\nType \"my-cli --list-tools\"\nEnter\n```\n\nIf a command doesn't exist to show what you need, consider:\n1. Adding a flag or subcommand to the CLI being demonstrated\n2. Using the actual data source (file, API, etc.)\n3. Rethinking what the demo should show\n\n**Rationale**: Tutorials should demonstrate real functionality. Echoing data teaches users nothing about the actual tool and may become stale as the tool evolves.\n\n### MCP Tool Demonstrations\n\nWhen demonstrating MCP (Model Context Protocol) functionality, show how tools are used within the host environment (e.g., Claude Code) rather than calling CLI equivalents:\n\n```tape\n# POOR: Using CLI instead of MCP\nType \"skrills metrics\"\n\n# BETTER: Explain MCP tool usage\nType \"# In Claude Code, ask: 'Show me skill statistics'\"\nType \"# Claude calls the skill-metrics MCP tool automatically\"\n```\n\n## Advanced Features\n\n### Split Panes\n\nCreate multi-pane layouts:\n\n```tape\nSplit\nType@left \"echo 'Left pane'\"\nEnter@left\nType@right \"echo 'Right pane'\"\nEnter@right\n```\n\n### Source\n\nInclude other tape files:\n\n```tape\nSource common-setup.tape\n```\n\n### Require\n\nvalidate programs are available:\n\n```tape\nRequire echo\nRequire git\n```\n\n## Complete Example\n\n```tape\n# @title: Git Status Demo\n# @description: Shows git status workflow\n# @step: 1\n\nOutput git-demo.gif\n\nSet FontSize 16\nSet Width 1000\nSet Height 400\nSet Theme \"Catppuccin Mocha\"\nSet TypingSpeed 75ms\n\nHide\nType \"cd ~/project\"\nEnter\nSleep 500ms\nShow\n\nType \"git status\"\nSleep 500ms\nEnter\nSleep 2s\n\nType \"git add .\"\nSleep 500ms\nEnter\nSleep 1s\n\nType \"git commit -m 'Update docs'\"\nSleep 500ms\nEnter\nSleep 2s\n```","readmeExcerpt":"Skill: vhs-recording Owner: athola Summary: Generates terminal recordings using VHS tape scripts and produces GIF outputs Tags: latest:1.9.19 Version history: v1.9.19 | 2026-08-26T13:23:01.870Z | user Release v1.9.19 v1.9.17 | 2026-07-30T05:42:50.861Z | user Release v1.9.17 v1.9.16 | 2026-07-14T19:59:40.011Z | user Release v1.9.16 v1.9.14 | 2026-06-30T18:07:05.693Z | user Release v1.9.14 v1.9.13 | 2026-06-27T16:24:55","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"- Locate and validate tape file\n- Check VHS installation status\n- Execute VHS recording\n- Verify output GIF creation"},{"language":"bash","snippet":"which vhs && vhs --version"},{"language":"bash","snippet":"# Linux/WSL\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Also requires ttyd and ffmpeg"},{"language":"bash","snippet":"vhs <tape-file.tape>"},{"language":"bash","snippet":"# Check if installed\nwhich vhs\n\n# Check version\nvhs --version"},{"language":"bash","snippet":"# Verify dependencies\nwhich ttyd ffmpeg"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: vhs-recording\ndescription: Generates terminal recordings using VHS tape scripts and produces GIF outputs\nversion: 1.9.8\ntriggers:\n  - vhs\n  - terminal\n  - recording\n  - gif\n  - demo\n  - tutorial\n  - creating demo GIFs or documenting CLI workflows for tutorials\nmetadata: {\"openclaw\": {\"homepage\": \"https://github.com/athola/claude-night-market/tree/master/plugins/scry\", \"emoji\": \"\\ud83e\\udd9e\"}}\nsource: claude-night-market\nsource_plugin: scry\n---\n\n> **Night Market Skill** — ported from [claude-night-market/scry](https://github.com/athola/claude-night-market/tree/master/plugins/scry). For the full experience with agents, hooks, and commands, install the Claude Code plugin.\n\n\n# VHS Recording Skill\n\nGenerate professional terminal recordings from VHS tape files.\n\n\n## When To Use\n\n- Recording terminal sessions with VHS tape scripts\n- Creating terminal demo recordings for documentation\n\n## When NOT To Use\n\n- Browser-based workflows - use scry:browser-recording instead\n- Non-terminal demos or GUI applications\n\n## Overview\n\nVHS converts declarative tape files into animated GIFs of terminal sessions. Tape files define commands, timing, and terminal appearance.\n\n## Required TodoWrite Items\n\n```\n- Locate and validate tape file\n- Check VHS installation status\n- Execute VHS recording\n- Verify output GIF creation\n```\n\n## Module Reference\n\n- See `modules/tape-syntax.md` for VHS tape file directives\n- See `modules/execution.md` for recording workflow details\n\n## Workflow\n\n### Phase 1: Validate Tape File\n\n1. Confirm tape file exists at specified path\n2. Read tape file contents\n3. Verify required directives:\n   - `Output` directive specifies GIF destination\n   - At least one action command (Type, Enter, etc.)\n\n### Phase 2: Check VHS Installation\n\n```bash\nwhich vhs && vhs --version\n```\n\nIf not installed:\n```bash\n# Linux/WSL\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Also requires ttyd and ffmpeg\n```\n\n### Phase 3: Execute Recording\n\n```bash\nvhs <tape-file.tape>\n```\n\nVHS will:\n1. Parse tape file directives\n2. Launch virtual terminal (ttyd)\n3. Execute commands with timing\n4. Capture frames\n5. Encode to GIF using ffmpeg\n\n### Phase 4: Verify Output\n\n1. Check GIF file exists at Output path\n2. Verify file size is non-zero\n3. Report success with output location\n\n## Exit Criteria\n\n- GIF file created at specified Output path\n- File size indicates successful recording (typically >50KB)\n- No error messages from VHS execution\n## Troubleshooting\n\n### Common Issues\n\nIf `vhs` is not found, verify that your Go bin directory is in your `PATH` (typically `~/go/bin`). If the recording fails to start, ensure `ttyd` and `ffmpeg` are installed, as VHS depends on them for terminal emulation and video encoding. For \"permission denied\" errors when writing the GIF, check that the output directory exists and is writable."},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7d107jg9jv602h9ytsegydq184a42s\",\n  \"slug\": \"nm-scry-vhs-recording\",\n  \"version\": \"1.9.19\",\n  \"publishedAt\": 1787750581870\n}"},{"path":"modules/execution.md","content":"# VHS Execution Guide\n\n## Pre-flight Checks\n\n### VHS Installation\n\n```bash\n# Check if installed\nwhich vhs\n\n# Check version\nvhs --version\n```\n\n### Dependencies\n\nVHS requires:\n- **ttyd**: Terminal emulator for web\n- **ffmpeg**: Video/image encoding\n\n```bash\n# Verify dependencies\nwhich ttyd ffmpeg\n```\n\n### Installation\n\n```bash\n# Go (recommended)\ngo install github.com/charmbracelet/vhs@latest\n\n# macOS\nbrew install charmbracelet/tap/vhs\n\n# Arch Linux\nyay -S vhs\n\n# Nix\nnix-env -iA nixpkgs.vhs\n```\n\n### Tape File Validation\n\nCheck tape file before execution:\n\n```bash\n# Verify file exists\ntest -f tape-file.tape && echo \"Found\" || echo \"Missing\"\n\n# Check for Output directive\nrg -q \"^Output\" tape-file.tape && echo \"Has output\" || echo \"No output directive\"\n# fallback: grep -q \"^Output\" tape-file.tape\n\n# Validate syntax (dry run)\nvhs validate tape-file.tape\n```\n\n## Environment Setup\n\n### Terminal Environment\n\nVHS creates an isolated terminal. Set environment variables in the tape:\n\n```tape\nSet Env \"HOME\" \"/home/user\"\nSet Env \"PATH\" \"/usr/local/bin:/usr/bin:/bin\"\nSet Env \"TERM\" \"xterm-256color\"\n```\n\n### Working Directory\n\nVHS runs from the directory containing the tape file. For different directories:\n\n```tape\nHide\nType \"cd /path/to/project\"\nEnter\nSleep 500ms\nShow\n```\n\n## Running VHS\n\n### Basic Execution\n\n```bash\nvhs tape-file.tape\n```\n\n### With Options\n\n```bash\n# Publish to vhs.charm.sh (public)\nvhs tape-file.tape --publish\n\n# Output to specific location\nvhs tape-file.tape -o custom-output.gif\n```\n\n### Batch Recording\n\n```bash\n# Record all tape files\nfor tape in *.tape; do\n  vhs \"$tape\"\ndone\n```\n\n## Error Handling\n\n### Common Issues\n\n**ttyd not found**\n```bash\n# Install ttyd\ngo install github.com/aspect-build/aspect-cli/pkg/ttyd@latest\n# Or via package manager\n```\n\n**ffmpeg errors**\n```bash\n# validate ffmpeg is installed with required codecs\nffmpeg -version\n```\n\n**Permission denied**\n```bash\n# Check write permissions for output directory\nls -la \"$(dirname output.gif)\"\n```\n\n**Empty output**\n- Verify commands produce visible output\n- Increase Sleep times after commands\n- Check terminal dimensions fit content\n\n### Debug Mode\n\n```bash\n# Verbose output\nVHS_DEBUG=1 vhs tape-file.tape\n```\n\n## WSL2 Considerations\n\n### Graphics Support\n\nVHS in WSL2 may require:\n- WSLg enabled (Windows 11+)\n- X server for older Windows 10\n\n### Path Handling\n\nUse Linux-style paths in tape files:\n```tape\n# Correct\nOutput /home/user/output.gif\n\n# Avoid Windows paths\n# Output C:\\Users\\...\n```\n\n### Performance\n\nWSL2 disk I/O to Windows filesystem is slow. Keep tapes and outputs on Linux filesystem:\n\n```bash\n# Good: Linux filesystem\n/home/user/recordings/\n\n# Slow: Windows mount\n/mnt/c/Users/...\n```\n\n### Font Availability\n\nInstall fonts in WSL2:\n```bash\nsudo apt install fonts-jetbrains-mono\nfc-cache -fv\n```\n\n## Output Verification\n\nAfter recording:\n\n```bash\n# Check file exists and has content\nls -la output.gif\n\n# Verify file type\nfile output.gif\n\n# Check dimensions (requires ImageMagick)\nid"},{"path":"modules/tape-syntax.md","content":"# VHS Tape Syntax Reference\n\n## Metadata Comments\n\nCustom metadata annotations for documentation integration:\n\n```tape\n# @title: Command Demo\n# @description: Demonstrates the CLI workflow\n# @step: 1\n# @docs-brief: Quick overview for documentation\n# @book-detail: Extended explanation for book chapters\n```\n\n## Output Directive\n\nSpecifies the output file path (required):\n\n```tape\nOutput demo.gif\n```\n\nSupported formats: `.gif`, `.mp4`, `.webm`\n\n## Set Directives\n\nConfigure terminal appearance and behavior:\n\n```tape\n# Typography\nSet FontSize 14\nSet FontFamily \"JetBrains Mono\"\n\n# Dimensions\nSet Width 1200\nSet Height 600\n\n# Appearance\nSet Theme \"Dracula\"\nSet Padding 20\nSet Margin 10\nSet MarginFill \"#674EFF\"\nSet BorderRadius 8\n\n# Timing\nSet TypingSpeed 50ms\nSet Framerate 60\n\n# Environment\nSet Env \"TERM\" \"xterm-256color\"\nSet Env \"PS1\" \"$ \"\n\n# Window\nSet Shell \"bash\"\nSet WindowBar Colorful\nSet WindowBarSize 40\n```\n\n## Action Commands\n\n### Type\n\nTypes text into the terminal:\n\n```tape\nType \"echo 'Hello World'\"\nType@50ms \"slower typing\"\n```\n\n### Enter\n\nSends Enter key (execute command):\n\n```tape\nEnter\n```\n\n### Sleep\n\nPause for duration:\n\n```tape\nSleep 500ms\nSleep 2s\n```\n\n### Key Combinations\n\n```tape\nCtrl+C\nCtrl+D\nCtrl+L\nEscape\nTab\nBackspace\nUp\nDown\nLeft\nRight\nSpace\n```\n\n### Screenshot\n\nCapture a still frame:\n\n```tape\nScreenshot output.png\n```\n\n### Hide/Show\n\nControl visibility of actions:\n\n```tape\nHide\nType \"secret setup commands\"\nEnter\nShow\n```\n\n## Best Practices\n\n### Echo vs Commands\n\n**NEVER use `echo` to simulate or replace real command output.** Echo should only be used for:\n\n- Printing explanatory messages or headers\n- Simple text output demonstrations\n- Comments that need to appear in the terminal\n\n**ALWAYS prefer actual commands** that demonstrate functionality:\n\n```tape\n# BAD: Simulating output with echo\nType \"echo 'tool-a, tool-b, tool-c'\"\nEnter\n\n# GOOD: Using the actual command\nType \"my-cli --list-tools\"\nEnter\n```\n\nIf a command doesn't exist to show what you need, consider:\n1. Adding a flag or subcommand to the CLI being demonstrated\n2. Using the actual data source (file, API, etc.)\n3. Rethinking what the demo should show\n\n**Rationale**: Tutorials should demonstrate real functionality. Echoing data teaches users nothing about the actual tool and may become stale as the tool evolves.\n\n### MCP Tool Demonstrations\n\nWhen demonstrating MCP (Model Context Protocol) functionality, show how tools are used within the host environment (e.g., Claude Code) rather than calling CLI equivalents:\n\n```tape\n# POOR: Using CLI instead of MCP\nType \"skrills metrics\"\n\n# BETTER: Explain MCP tool usage\nType \"# In Claude Code, ask: 'Show me skill statistics'\"\nType \"# Claude calls the skill-metrics MCP tool automatically\"\n```\n\n## Advanced Features\n\n### Split Panes\n\nCreate multi-pane layouts:\n\n```tape\nSplit\nType@left \"echo 'Left pane'\"\nEnter@left\nType@right \"echo 'Right pane'\"\nEnter@right\n```\n\n### Source\n\nInclude other tape files:\n\n```tape\nSource common-setup.tape\n```\n\n### R"},{"path":"skill-card.md","content":"## Description:\n\nGenerates terminal recordings using VHS tape scripts and produces GIF outputs.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[athola](https://clawhub.ai/user/athola)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and documentation authors use this skill to validate VHS tape files, run terminal recording workflows, and produce GIF demos for CLI documentation and tutorials.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: VHS tape files can execute terminal commands and include other Source files.\n\nMitigation: Review each tape and included Source file before running it, and avoid untrusted tapes.\n\nRisk: Terminal recordings can expose secrets, environment values, or sensitive command output.\n\nMitigation: Use disposable demo projects where practical and sanitize terminal output before sharing recordings.\n\nRisk: Using the publish option can make recordings public.\n\nMitigation: Use --publish only for recordings that are intended to be publicly accessible.\n\nRisk: Mutable install examples can change the installed tool behavior over time.\n\nMitigation: Review the toolchain before use and prefer pinned dependency versions for repeatable production workflows.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/athola/skills/nm-scry-vhs-recording)\n- [Project homepage](https://github.com/athola/claude-night-market/tree/master/plugins/scry)\n- [VHS execution guide](modules/execution.md)\n- [VHS tape syntax reference](modules/tape-syntax.md)\n\n## Skill Output:\n\n**Output Type(s):** [shell commands, guidance, files]\n\n**Output Format:** [Markdown guidance with bash and tape code blocks]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Produces or verifies GIF outputs from VHS tape execution when the required local tools are installed.]\n\n## Skill Version(s):\n\n1.9.19 (source: server release evidence; artifact frontmatter says 1.9.8)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Generates terminal recordings using VHS tape scripts and produces GIF outputs Skill: vhs-recording Owner: athola Summary: Generates terminal recordings using VHS tape scripts and produces GIF outputs Tags: latest:1.9.19 Version history: v1.9.19 | 2026-08-26T13:23:01.870Z | user Release v1.9.19 v1.9.17 | 2026-07-30T05:42:50.861Z | user Release v1.9.17 v1.9.16 | 2026-07-14T19:59:40.011Z | user Release v1.9.16 v1.9.14 | 2026-06-30T18:07:05.693Z | user Release v1.9.14 v1.9.13 | 2026-06-27T16:24:55","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1388,"uniquenessScore":51,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-10T05:50:51.303Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-10T05:50:51.303Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-10T10:50:20.461Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}