stitched-full-page-capture — Claude Code skill: full-page screenshots
Stitches a full-page screenshot from settled viewport slices when a one-shot fullPage capture comes back blank. Built for Framer, WebGL and lazy-loaded pages.
npx skills add MengTo/Skills --skill stitched-full-page-capture -a claude-codeWhat stitched-full-page-capture does
A native fullPage screenshot often lies. On lazy-loaded, scroll-animated and canvas-heavy pages it returns gray bands, white gaps or a thin strip of content. This skill scrolls the page top to bottom in viewport-sized steps, waits about 2 seconds after each stop, captures the settled viewport and stitches the slices vertically into one image.
The skill ships a Node script at scripts/stitch_full_page_capture.mjs. It reads a manifest with items[].pageUrl, fullPageImage and sectionImages, opens each live page in Playwright Chromium, warms lazy content with a scroll pass, then regenerates section crops from the stitched image instead of the native fullPage shot. The manifest gets the capture method, viewport, step, segment count and corrected crop coordinates. Options include --item, --viewport, --step, --wait and --quality.
You need Node and Playwright Chromium, plus ffmpeg for JPEG quality. Open the real page URL, not a marketplace thumbnail or an asset link. If the stitched image disagrees with the scroll video or still has blank bands, the candidate is rejected.
What it helps with
- capture a Framer page without gray bands in the full-page shot
- repair a full-page image that came out blank
- cut article section crops from a trustworthy image instead of a broken fullPage shot
- warm lazy media and reveal sections before capturing
- check the stitched image against the scroll video and reject mismatches
Example prompts for the agent
- stitch a full-page screenshot from viewport slices and update the manifest
- repair item 4 only, its full-page came out gray
- regenerate the section crops from the stitched image
How to install stitched-full-page-capture
1Skills CLI (Vercel)
npx skills add MengTo/Skills --skill stitched-full-page-capture -a claude-code2Manually: put the files in place
~/.claude/skills/stitched-full-page-capture/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/stitched-full-page-capture/
1Skills CLI (Vercel)
npx skills add MengTo/Skills --skill stitched-full-page-capture -a codex2Manually: put the files in place
.agents/skills/stitched-full-page-capture/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add MengTo/Skills --skill stitched-full-page-capture -a cursor2Manually: put the files in place
.cursor/skills/stitched-full-page-capture/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install MengTo/Skills stitched-full-page-capture2Manually: put the files in place
.github/skills/stitched-full-page-capture/SKILL.md1Skills CLI (Vercel)
npx skills add MengTo/Skills --skill stitched-full-page-capture -a gemini-cli2Platform CLI
gemini skills install https://github.com/MengTo/Skills --path agent-skills/codex/stitched-full-page-captureManually: put the files in place
.devin/skills/stitched-full-page-capture/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add MengTo/Skills --skill stitched-full-page-capture -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about stitched-full-page-capture
How do I install stitched-full-page-capture in Claude?
Run npx skills add MengTo/Skills --skill stitched-full-page-capture -a claude-code. The skill lands at ~/.claude/skills/stitched-full-page-capture/SKILL.md.
What does stitched-full-page-capture do?
It scrolls the page in steps, waits for content to settle, captures the viewport and stitches the slices into one full-page image. Section crops are cut from that image.
What do I need to run it?
Node and Playwright Chromium for capture, ffmpeg for JPEG quality. Open the real page URL rather than a thumbnail or asset link.
Source text
SKILL.md · MIT
--- name: stitched-full-page-capture description: Capture or repair reliable full-page screenshots for lazy-loaded, scroll-animated, Framer, WebGL/canvas, or reveal-heavy web pages. Use when full-page screenshots are blank, gray, white, sparse, show a tiny content strip, disagree with a working scroll video, or when article evidence/section crops must be derived from a trustworthy full-page image. --- # Stitched Full-Page Capture ## Overview Use settled viewport screenshots instead of trusting one-shot browser `fullPage` captures. This is especially important for Framer pages and other lazy/scroll-animated sites where the MP4 can look correct while the tall screenshot is mostly blank. ## Core Workflow 1. Open the real page URL, not a marketplace thumbnail, cover image, remix page, or asset URL. 2. Warm the page by scrolling from top to bottom once so lazy media and reveal sections mount. 3. Return to the top. 4. Scroll downward in viewport-sized or slightly-overlapping steps. 5. Wait about 2 seconds after each scroll stop. 6. Capture the settled viewport. 7. Stitch the viewport captures vertically into one full-page image. 8. Cut section crops from that stitched image, not from the native browser `fullPage` screenshot. 9. Validate the stitched image against the representative still, MP4, and motion frames. Reject a full-page candidate when it has blank/gray/white bands, very low visual content, missing lazy-loaded sections, an extremely narrow content column, or obvious disagreement with the scroll video. ## Script For daily UI inspiration articles, use the helper script from this skill directory when available: ```bash node <skills-root>/stitched-full-page-capture/scripts/stitch_full_page_capture.mjs \ --manifest articles/YYYY-MM-DD-ui-inspiration-capture/manifest.json ``` The script: - reads `items[].pageUrl`, `fullPageImage`, and `sectionImages`; - opens each live page in Playwright Chromium; - warms lazy content by scrolling once; - captures settled viewport slices; - stitches slices into `fullPageImage`; - regenerates each existing section crop from the stitched image; - updates `manifest.json` with `fullPageCaptureMethod: "stitchedViewportScreenshots"`, viewport, step, segment count, and corrected crop coordinates. Useful options: ```bash --item 4 # repair only item 4, 1-based --viewport 1440x1100 # default --step 950 # default; use less than viewport height for overlap --wait 2000 # ms to wait after each scroll stop --quality 3 # ffmpeg JPEG quality, lower is better ``` ## Validation After capture or repair: - Inspect at least the page that was visibly wrong before. - Confirm `sips -g pixelWidth -g pixelHeight full-page/*.jpg` reports expected wide/tall dimensions. - Confirm the full-page image is not mostly blank and includes lower-page content. - Confirm section crop coordinates are contiguous and end at the full-page image height. - Run the project’s normal checks, for example: ```bash git diff --check -- articles/YYYY-MM-DD-ui-inspiration-capture/content.md articles/YYYY-MM-DD-ui-inspiration-capture/manifest.json node scripts/check-ui-inspiration-duplicates.mjs articles/YYYY-MM-DD-ui-inspiration-capture/manifest.json for f in articles/YYYY-MM-DD-ui-inspiration-capture/videos/*.mp4; do ffprobe -v error "$f" >/dev/null; done ``` ## Notes - The scroll video is evidence that the page can render during real scrolling, but it is not a substitute for full-page still evidence. - Native `fullPage` screenshots can still be saved as comparison candidates, but do not use them as source of truth unless they visually match the stitched capture. - For daily UI articles, update the manifest and commit only the repaired article assets and metadata.
© MengTo · MIT · MengTo/Skills