npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@vishot/cli

v0.2.0

Published

Unified command line interface for Vishot capture adapters.

Readme

Vishot

Composable screenshot tooling for source capture, browser rendering, and desktop mockup composition.

Vishot separates screenshot production into reusable source adapters, browser renderers, and mockup primitives. Product-specific scenario automation belongs in the product repository. Vishot owns shared capture protocols, artifact behavior, renderers, and generic visual shells.

Table of Contents

Installation and Usage

Install the CLI in a project that owns screenshot scenarios:

pnpm add -D @vishot/cli

Use vishot capture when a scenario needs to collect source screenshots from a running application. The Electron adapter launches the application through Playwright Electron and writes raw capture artifacts:

pnpm exec vishot capture \
  --target electron \
  ./capture/scenario.ts \
  --app-entrypoint ./dist/main.js \
  --output-dir ./screenshots/raw

For a direct Electron window capture, omit the scenario and select a window by URL or title. The artifact name defaults to the window title, then its URL route:

pnpm exec vishot capture \
  --target electron \
  --app-entrypoint ./dist/main.js \
  --window-url '#/' \
  --settle-ms 1000 \
  --output-dir ./screenshots/main

Playwright normally discovers the consumer project's Electron binary. In strict or isolated package layouts, pass --electron-executable /absolute/path/to/electron explicitly.

Capture any locally served web or Capacitor route directly. The artifact name defaults to the final URL path or hash-route segment:

pnpm exec vishot render \
  --target browser \
  http://127.0.0.1:5173/settings \
  --width 1440 \
  --height 900 \
  --settle-ms 1000 \
  --output-dir ./screenshots/settings

Direct URL capture does not click or otherwise interact with the page. Use a product-owned scenario when navigation or state setup requires actions.

Use vishot render with a Vite scene app directory when the page exposes Vishot capture roots and needs final composed artifacts:

pnpm exec vishot render \
  --target browser \
  ./capture/scene-app \
  --output-dir ./screenshots/final

Filter browser capture roots by name when a render entry exposes multiple outputs:

pnpm exec vishot render \
  --target browser \
  ./capture/scene-app \
  --output-dir ./screenshots/final \
  --root hero \
  --root settings

Concepts

Vishot keeps capture concerns split across a small protocol:

  • Source capture collects raw screenshots from an application runtime.
  • Capture roots mark browser-rendered DOM regions that should be exported as final artifacts.
  • Ready signals let scenarios and renderers wait until a scene is stable before taking screenshots.
  • Artifacts describe generated files with kind, stage, format, dimensions, and paths.
  • Mockup primitives provide reusable Vue components for desktop screenshots without owning product routes or product-specific selectors.

Keep application routes, window names, walkthroughs, and AIRI-specific automation outside this repository. Put that logic in the product repository and depend on Vishot packages for the reusable pieces.

Packages

  • @vishot/cli: unified command line interface for source capture and browser rendering.
  • @vishot/core: shared artifact contracts, capture-root selectors, ready signals, and file helpers.
  • @vishot/source-electron: Playwright Electron source capture for raw application screenshots.
  • @vishot/renderer-browser: Playwright Chromium renderer for final browser-composed image artifacts.
  • @vishot/mockup-desktop-vue: Vue components for capture canvases and desktop mockup shells.

Documentation Automation

The table of contents above is generated with doctoc so README navigation is not hand-written. Run this after changing root README headings:

pnpm docs:update

docs:update refreshes the root README TOC and then copies the root README to packages/cli/README.md, keeping the npm README for @vishot/cli in sync with the project overview.

Package-specific READMEs live next to their packages and are maintained independently.

Development

Install dependencies:

pnpm install

Run repository checks:

pnpm typecheck
pnpm test
pnpm lint

Use workspace filters for package-scoped work:

pnpm -F @vishot/core typecheck
pnpm -F @vishot/renderer-browser test:run
pnpm -F @vishot/mockup-desktop-vue story:dev

Build all packages:

pnpm build

Status

Vishot packages are early and may change while the capture protocol settles.

License

MIT