---
name: Screenshot Assets
slug: screenshot-assets
category: Automation
description: "Screenshot Assets captures authenticated product screenshots through a Playwright CDP script and archives them in the invoking loop's Memory for truthful UI evidence. Use when you need reusable product screenshots, a specific component, or a full-page browser capture without MCP tools."
github: "https://github.com/tsingyuai/growth-lab/tree/main/executors/screenshot-assets"
language: Python
stars: 1734
forks: 150
install: "npx degit https://github.com/tsingyuai/growth-lab/tree/main/executors/screenshot-assets ~/.claude/skills/screenshot-assets"
installs_to: ~/.claude/skills/screenshot-assets
source_path: executors/screenshot-assets/SKILL.md
collection_size: 19
category_size: 1523
collection_url: "https://dirskills.com/collections/tsingyuai/growth-lab"
added: 2026-08-19T07:25:51.179Z
last_synced: 2026-08-19T07:25:51.179Z
canonical_url: "https://dirskills.com/skills/screenshot-assets"
---

# Screenshot Assets

Screenshot Assets captures authenticated product screenshots through a Playwright CDP script and archives them in the invoking loop's Memory for truthful UI evidence. Use when you need reusable product screenshots, a specific component, or a full-page browser capture without MCP tools.

**Install:**

```bash
npx degit https://github.com/tsingyuai/growth-lab/tree/main/executors/screenshot-assets ~/.claude/skills/screenshot-assets
```

## README

# Screenshot assets

Use [`scripts/capture.py`](scripts/capture.py). It connects to the user's already-running Chrome through CDP, so the user completes login in their own browser and retains control of authentication.

## Preconditions

If `uv`, Chrome, CDP, or the target login is unavailable, invoke [onboard-growth-lab](../../models/onboard-growth-lab/SKILL.md). Do not look for credentials in another repository and do not inject copied tokens or cookies.

Ask for the target URL, what UI fact the screenshot must prove, output path under the invoking Model's Memory, viewport, and optional CSS selector. Never infer a staging URL or test account.

## Capture

Start Chrome with remote debugging as directed by onboarding, let the user log in, then run:

```bash
uv run --with playwright python executors/screenshot-assets/scripts/capture.py \
  --cdp http://127.0.0.1:9222 \
  --url "https://product.example/workspace/..." \
  --out memory/<loop>/assets/screenshots/<descriptive-name>.png \
  --width 1440 --height 900
```

For one stable component, add `--selector '<css-selector>'`. Add `--wait-selector` for a loading boundary and `--delay-ms` only when the application needs a short settling interval.

## Quality and privacy

- Capture only the minimum region needed to support the claim.
- Inspect the output at full size. Reject loading, error, stale, clipped, blurred, or wrong-account states.
- Redact personal data before distribution; do not capture secrets, cookies, tokens, admin panels, or unrelated user content.
- Record source URL, capture time, viewport, selector, product version/environment, and what the screenshot demonstrates in a neighboring metadata file.
- Do not use AI-generated UI as product evidence.
- Store reusable screenshots once in the loop's Memory; outputs may reference them without duplicating the source asset.
