vhs-analyzer is a language tooling project for
VHS .tape files. It combines a Rust language server with a VS Code / Cursor extension so that authoring tape files feels closer to working with a modern programming language.
- A Rust LSP server for hover, completion, diagnostics, formatting, and safety checks.
- A VS Code / Cursor extension for editor activation, CodeLens actions, live preview, and packaged VSIX distribution.
- Cross-platform packaging and CI workflows for bundled and universal extension builds.
This project complements the official vhs CLI. vhs remains the renderer and runtime for .tape scripts. vhs-analyzer adds authoring-time tooling, validation, and editor workflows around that runtime.
Preview and Run features still depend on local vhs, ttyd, and ffmpeg installations.
All planned implementation phases are complete.
- Machine-readable status:
STATUS.yaml - Specification index:
spec/README.md - Extension usage and packaging details:
editors/code/README.md
crates/vhs-analyzer-core: lexer, parser, AST, formatting, and shared language logiccrates/vhs-analyzer-lsp:tower-lsp-serverbinary for editor integrationeditors/code: VS Code / Cursor extensionprompt: archived phase kick files from the project's role-scoped Architect / Builder workflowspec: frozen behavior and packaging contractstrace: per-phase execution records and closeout historypublish-helper: public-release and release-day checklists
The repository intentionally keeps some process artifacts visible:
prompt/preserves the role-scoped kick files used during the project's contract-first AI workflow. They are useful if you want to understand or reuse the delivery method, but they are not required to use the software.trace/preserves the per-phase execution archive that backs the thin root status indexes. It exists for auditability, historical context, and phase closeout traceability.
If you want to understand the project quickly, start here:
- Read this file.
- Open
editors/code/README.mdfor the extension feature set and packaging model. - Open
spec/README.mdif you want the contract-level view.
If you want to develop locally:
cargo build --release -p vhs-analyzer-lsp --locked
pnpm --dir editors/code install --frozen-lockfile
pnpm --dir editors/code buildFor extension development, open the repository with vhs-analyzer.code-workspace instead of opening the repo root folder directly.
Rust workspace:
cargo fmt --all -- --check
cargo clippy --workspace --all-targets --all-features --locked -- -D warnings
cargo test --workspace --all-targets --lockedExtension:
pnpm --dir editors/code install --frozen-lockfile
pnpm --dir editors/code typecheck
pnpm --dir editors/code lint
pnpm --dir editors/code test
pnpm --dir editors/code build- Contribution guide:
CONTRIBUTING.md - Security policy:
SECURITY.md - Non-security bugs and feature requests should go through GitHub issues once the repository is public.
MIT. See LICENSE.