Token导航 LogoToken导航TokenDH.com
前端设计操作浏览器github未标认证来源可访问clear审计通过

screenshot截图工具

Agent Skill

screenshot 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要围绕仓库状态、代码变更或协作事项进行整理时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

4,643

周安装

186

GitHub Stars

40

下载量

1,503
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

3

许可证

MIT

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:screenshot(截图工具)
来源仓库:https://github.com/bobmatnyc/claude-mpm-skills
仓库路径:skills/screenshot
安装命令:
npx skills add https://github.com/bobmatnyc/claude-mpm-skills --skill screenshot
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/bobmatnyc/claude-mpm-skills --skill screenshot

简介

screenshot 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息。

  • 适合在 Codex、Claude、Cursor、Gemini CLI 中围绕仓库状态和协作事项进行整理。
  • 通过 npx skills add 命令从指定仓库安装并使用。
  • 建议确认权限范围和维护状态,避免触发不必要的联网或文件操作。
  • 具体用法请参考原始 README 和项目文档。

SKILL.md

Screenshot-Based UI Verification

Visual verification workflow for UI changes to accelerate code review and catch responsive design issues early.

When to Use This Skill

Use this skill when:

  • Making any UI changes (components, styling, layout)
  • Implementing responsive design
  • Creating pull requests with visual changes
  • Want to demonstrate UI behavior without reviewers running code locally
  • Need to document visual state before/after bug fixes

Why Screenshot Verification Matters

Benefits

  • Faster Reviews: Reviewers see changes instantly without local setup
  • Documents Design: Creates visual record of design decisions
  • Visual Changelog: Historical record of UI evolution
  • Catches Responsive Issues: Early detection of mobile/tablet problems
  • Reduces Communication: Less back-and-forth about visual changes
  • Quality Gate: Forces conscious review of visual output

Problems It Solves

  • ❌ "I can't reproduce the layout issue locally"
  • ❌ "What does this look like on mobile?"
  • ❌ "Is this the intended design?"
  • ❌ "How does this compare to the old version?"
  • ✅ All answered with screenshots in PR

Required Screenshots

For any PR that changes UI, capture all three viewport sizes:

1. Desktop View (1920x1080)

  • Full page screenshot
  • Key component close-ups if needed
  • Before and after comparisons (for fixes/refactors)
  • Different states (default, hover, active, error, loading)

2. Tablet View (768x1024)

  • Portrait orientation
  • Verify responsive breakpoints
  • Touch interaction targets visible
  • Menu/navigation in tablet mode

3. Mobile View (375x667)

  • Portrait orientation (iPhone 8/SE size - common minimum)
  • Touch target sizes visible (minimum 44x44px)
  • Scrolling behavior documented
  • Mobile menu states

How to Capture Screenshots

Browser DevTools Method

Chrome/Edge DevTools:

  1. Open DevTools (F12 or Cmd+Option+I)
  2. Toggle device toolbar (Cmd+Shift+M or Ctrl+Shift+M)
  3. Select device preset or custom dimensions:

- Desktop: 1920 x 1080 - Tablet: 768 x 1024 - Mobile: 375 x 667

  1. Capture screenshot:

- Full page: Cmd+Shift+P → "Capture full size screenshot" - Viewport only: Cmd+Shift+P → "Capture screenshot"

Firefox DevTools:

  1. Open DevTools (F12)
  2. Toggle Responsive Design Mode (Cmd+Option+M)
  3. Set dimensions
  4. Click screenshot icon in toolbar

CLI Screenshot Tools

Using Playwright (recommended for CI):

// screenshot.js
const { chromium } = require('playwright');

async function captureScreenshots(url) {
  const browser = await chromium.launch();
  const page = await browser.newPage();

  await page.goto(url);

  // Desktop
  await page.setViewportSize({ width: 1920, height: 1080 });
  await page.screenshot({
    path: 'screenshots/desktop.png',
    fullPage: true
  });

  // Tablet
  await page.setViewportSize({ width: 768, height: 1024 });
  await page.screenshot({
    path: 'screenshots/tablet.png',
    fullPage: true
  });

  // Mobile
  await page.setViewportSize({ width: 375, height: 667 });
  await page.screenshot({
    path: 'screenshots/mobile.png',
    fullPage: true
  });

  await browser.close();
}

captureScreenshots('http://localhost:3000');

Run: node screenshot.js

Using Puppeteer:

// screenshot.js
const puppeteer = require('puppeteer');

async function captureScreenshots(url) {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();

  await page.goto(url, { waitUntil: 'networkidle2' });

  // Desktop
  await page.setViewport({ width: 1920, height: 1080 });
  await page.screenshot({
    path: 'screenshots/desktop.png',
    fullPage: true
  });

  // Tablet
  await page.setViewport({ width: 768, height: 1024 });
  await page.screenshot({
    path: 'screenshots/tablet.png',
    fullPage: true
  });

  // Mobile
  await page.setViewport({ width: 375, height: 667 });
  await page.screenshot({
    path: 'screenshots/mobile.png',
    fullPage: true
  });

  await browser.close();
}

captureScreenshots('http://localhost:3000');

PR Description Template

Use this template to document visual changes:

## Visual Changes

### Desktop (1920x1080)
![Desktop view](./screenshots/desktop.png)

**Key changes**:
- Updated header navigation layout
- Improved spacing between sections
- Added hover states to buttons

### Tablet (768x1024)
![Tablet view](./screenshots/tablet.png)

**Key changes**:
- Stacked layout for sidebar
- Touch-friendly button sizes (48x48px)
- Adjusted typography for readability

### Mobile (375x667)
![Mobile view](./screenshots/mobile.png)

**Key changes**:
- Hamburger menu replaces horizontal nav
- Single column layout
- Bottom sticky CTA button

### Before/After Comparison

#### Before (Bug)
![Before fix](./screenshots/before-mobile.png)

**Issue**: Text overflowing container on mobile

#### After (Fixed)
![After fix](./screenshots/after-mobile.png)

**Fix**: Applied word-wrap and max-width constraints

### Interaction States

#### Default State
![Default](./screenshots/state-default.png)

#### Hover State
![Hover](./screenshots/state-hover.png)

#### Active/Selected State
![Active](./screenshots/state-active.png)

#### Error State
![Error](./screenshots/state-error.png)

#### Loading State
![Loading](./screenshots/state-loading.png)

## Responsive Design Notes
- Breakpoints: 768px (tablet), 375px (mobile)
- All touch targets > 44x44px
- Text remains readable at all sizes (min 16px body)
- No horizontal scrolling on any viewport
- Images scale proportionally

## Accessibility Checks
- [ ] Keyboard navigation works
- [ ] Focus states visible
- [ ] Color contrast meets WCAG AA (4.5:1)
- [ ] Alt text on images
- [ ] ARIA labels where needed

Automated Screenshot Testing

Using Playwright Test

// tests/visual.spec.js
const { test, expect } = require('@playwright/test');

test.describe('Visual Regression', () => {
  test('homepage looks correct on desktop', async ({ page }) => {
    await page.goto('http://localhost:3000');
    await page.setViewportSize({ width: 1920, height: 1080 });
    await expect(page).toHaveScreenshot('homepage-desktop.png');
  });

  test('homepage looks correct on mobile', async ({ page }) => {
    await page.goto('http://localhost:3000');
    await page.setViewportSize({ width: 375, height: 667 });
    await expect(page).toHaveScreenshot('homepage-mobile.png');
  });
});

Run: npx playwright test --update-snapshots (first time to generate baselines)

Using Storybook + Chromatic

For component-level visual testing:

  1. Setup Storybook:
// Button.stories.jsx
export default {
  title: 'Components/Button',
  component: Button,
};

export const Primary = () => <Button variant="primary">Click me</Button>;
export const Secondary = () => <Button variant="secondary">Click me</Button>;
  1. Integrate Chromatic:
npm install --save-dev chromatic
npx chromatic --project-token=<token>
  1. CI Integration (GitHub Actions):
# .github/workflows/chromatic.yml
name: Chromatic
on: push
jobs:
  chromatic:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: npm ci
      - run: npx chromatic --project-token=${{ secrets.CHROMATIC_TOKEN }}

Screenshot Checklist

Before submitting PR with UI changes:

Capture Requirements

  • Desktop screenshot (1920x1080) captured
  • Tablet screenshot (768x1024) captured
  • Mobile screenshot (375x667) captured
  • All screenshots uploaded to PR
  • Before/after comparison included (for bug fixes)

Quality Checks

  • Screenshots show full page (not cut off)
  • No localhost URLs visible in screenshots
  • No sensitive data in screenshots (PII, keys, etc.)
  • Screenshots are clear and readable
  • File names are descriptive (e.g., desktop-homepage.png)

Documentation

  • Key changes listed for each viewport
  • Responsive behavior described
  • Accessibility notes included
  • Interaction states documented (if applicable)

Common Issues and Solutions

Issue: Screenshots Too Large

Problem: Screenshots are 5MB+ and slow to load in PR Solution: Compress images before uploading

# Using ImageMagick
convert input.png -quality 85 output.png

# Using pngquant
pngquant input.png --output output.png

Issue: Dynamic Content Changes Between Screenshots

Problem: Timestamps, random data make screenshots inconsistent Solution: Mock data or freeze time in tests

// Mock Date
const mockDate = new Date('2025-01-01T00:00:00Z');
jest.useFakeTimers();
jest.setSystemTime(mockDate);

// Or in Playwright
await page.addInitScript(() => {
  Date.now = () => 1704067200000; // Fixed timestamp
});

Issue: Screenshot Diffs Show Font Rendering Differences

Problem: Same code renders differently on different OS Solution: Use Docker for consistent environment

FROM mcr.microsoft.com/playwright:v1.40.0-jammy
WORKDIR /app
COPY . .
RUN npm ci
CMD ["npm", "run", "screenshot"]

Screenshot Organization

Directory Structure

screenshots/
├── desktop/
│   ├── homepage.png
│   ├── product-list.png
│   └── checkout.png
├── tablet/
│   ├── homepage.png
│   ├── product-list.png
│   └── checkout.png
└── mobile/
    ├── homepage.png
    ├── product-list.png
    └── checkout.png

Naming Convention

  • Use descriptive names: desktop-homepage-logged-in.png
  • Include state if relevant: mobile-form-error-state.png
  • Version comparisons: before-header-fix.png, after-header-fix.png

Integration with CI/CD

GitHub Actions Example

name: Visual Testing
on: pull_request

jobs:
  screenshots:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Setup Node
        uses: actions/setup-node@v4
        with:
          node-version: '20'

      - name: Install dependencies
        run: npm ci

      - name: Build app
        run: npm run build

      - name: Start app
        run: npm start &

      - name: Wait for app
        run: npx wait-on http://localhost:3000

      - name: Capture screenshots
        run: node scripts/screenshot.js

      - name: Upload screenshots
        uses: actions/upload-artifact@v4
        with:
          name: screenshots
          path: screenshots/

Best Practices

Do's

  • ✅ Capture all three viewport sizes
  • ✅ Include before/after for bug fixes
  • ✅ Document interaction states (hover, active, error)
  • ✅ Compress large images
  • ✅ Use descriptive file names
  • ✅ Annotate screenshots with key changes

Don'ts

  • ❌ Skip mobile screenshots ("desktop only" is rare)
  • ❌ Upload screenshots with sensitive data
  • ❌ Use random viewport sizes (stick to standards)
  • ❌ Forget to document responsive breakpoints
  • ❌ Rely solely on screenshots (still need code review)

Related Skills

  • universal-verification-pre-merge - Pre-merge verification checklist
  • universal-testing-webapp-testing - Web application testing patterns
  • toolchains-javascript-testing-playwright - Playwright testing framework
  • universal-debugging-verification-before-completion - Verification workflows

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

04

需要参考平台分布和安装热度时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Claude Code

27.91%
按下载量换算419

OpenCode

21.96%
按下载量换算330

Gemini CLI

17.41%
按下载量换算262

Antigravity

11.27%
按下载量换算169

Cursor

6.37%
按下载量换算96

Codex

3.42%
按下载量换算51

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

操作浏览器

该 Skill 可能涉及浏览器控制能力,使用时可能读取或操作网页内容,需要在受控环境中确认权限边界。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。

来源信息

继续浏览同类 Skills