AgentStack
SKILL verified MIT Self-run

Clickshot

skill-codingmydna-clickshot-clickshot · by codingmydna

Freeze a live web app at a point in time into one self-contained, offline, clickable HTML file — a board of every captured screen plus interactive modals wired by the site's own navigation. Use when the user wants to archive, share, demo, document, or study a web UI offline (including apps behind a login), or turn a user flow into a shareable single file. It captures rendered screens and the clic…

No reviews yet
0 installs
0 views
view→install

Install

$ agentstack add skill-codingmydna-clickshot-clickshot

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Clickshot? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

clickshot — screenshots you can click

clickshot captures discrete screens of a running web app and stitches them into a single offline .html. The output has two views:

  • Board — every captured screen as a thumbnail, laid out by the real navigation graph, with

arrows for each click-transition and a "▶ start" badge on each entry point. Grasp the whole product at a glance; click any frame to open it.

  • Screen — the chosen screen rendered live in a near-fullscreen modal (the board stays dimmed

behind, so it reads as one screen among many). Spots that lead to another captured screen are marked with a pulsing blue box; click one to move there.

It is not a live clone (the captured app's JavaScript is dead) and not a source exporter. It freezes rendered states plus the clicks between them.

When to use

  • Archive or share a UI as one file — send it, commit it, open it years later, no server needed.
  • Turn a walkthrough / user flow into a clickable artifact for a demo or a bug report.
  • Study or document a product's UX offline.

Pipeline: capture → build → open

1. Capture → a capture dir (state-*.json, state-*.png, resources.json, manifest.json)

Two modes, identical output format:

  • Human / logged-in (BYO login): you drive a real browser, log in yourself, browse normally.

Screens auto-capture on route change; a floating button captures URL-unchanged states (modals, expanded panels). ``bash node capture-live.mjs ` Credentials are never stored — only the browser session persists locally in pw-profile/` (gitignored), so you log in once.

  • Scripted / agent-driven (no login): give a flow of selectors to click. Headless, reproducible.

``bash node capture.mjs # flow.json = [{ "click": "", "label": "…", "wait": 500 }, …] ``

2. Build → one offline .html

node build.mjs  

Fonts / images / CSS are inlined and de-duplicated across screens; a metadata stamp (source URL + capture date) is added automatically.

3. Open

Just open the .html. Start on the board, click a frame to explore, follow the blue markers to move between screens. Esc / the backdrop / returns to the board; ◀ ▶ (or arrow keys) step through screens.

Guardrails (important)

  • Never store or ask for credentials. Human capture means the person logs in on their own

browser. clickshot only keeps a local browser session, never a password.

  • A capture contains whatever was on screen — possibly real data. Keep capture dirs and built

files out of version control unless you know the data is safe (the shipped .gitignore already excludes them). For anything you plan to share publicly, capture with dummy accounts / test data.

  • Every output is stamped with source URL + capture date so a viewer can't mistake it for the

live site. Don't remove the stamp.

  • Only capture apps you are authorized to use.

How it works (for maintainers)

  • Capture primitive is rrweb-snapshot (not outerHTML) so shadow DOM, adoptedStyleSheets,

canvas, and inline images survive. The clicked element per transition is recorded by rrweb node id.

  • build.mjs rebuilds each snapshot into an iframe document, tags hotspots (data-cs-goto), injects

a tiny navigation shim (the captured JS is dead), serializes with declarative shadow DOM, inlines and de-duplicates assets, then emits the board + modal shell.

  • Verify offline: open the file in an offline browser context and confirm **0 console and network

errors** — that proves it is truly self-contained.

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.