Token导航 LogoToken导航

Agent Skill · 前端设计

screenshot(截图工具)

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

screenshot 是前端设计类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为操作浏览器;许可证为 MIT,第三方扫描已通过,按安装量在前端设计类的 10,216 个 Skill 里排第 1,609。

总安装 4,643周安装 186GitHub Stars 40下载 1,503核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT

安装方式

通过对话安装

复制提示词发给支持本地命令或 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

这个 Skill 是做什么的

前端设计类 Skill 关注页面结构、视觉规范和组件写法,输出通常是可运行的界面代码。

screenshot 用于处理 GitHub 仓库、Issue、Pull Request 和代码协作信息。适合在 Codex、Claude、Cursor、Gemini CLI 中围绕仓库状态和协作事项进行整理。通过 npx skills add 命令从指定仓库安装并使用。

建议确认权限范围和维护状态,避免触发不必要的联网或文件操作。具体用法请参考原始 README 和项目文档。

来源仓库内路径:skills/screenshot

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/bobmatnyc/claude-mpm-skills --skill screenshot;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要操作浏览器,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

screenshot 怎么安装?

在终端执行 npx skills add https://github.com/bobmatnyc/claude-mpm-skills --skill screenshot。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

screenshot 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

screenshot 需要什么权限?

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

screenshot 是免费的吗?

来源标注的许可证是 MIT。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

screenshot 用的人多吗?

公开数据是累计安装 4,643 次,近一周安装 186 次,下载 1,503 次,GitHub 40 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

screenshot 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 3 个目录同时收录,说明这个 Skill 流传比较广。
  • 许可证明确为 MIT,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理前端设计类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

前端设计类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
frontend-design

前端设计 · Codex、Claude

8,823,360126,072只读MIT通过
vercel-composition-patterns

Vercel 组合模式 · Codex、Claude

3,858,81625,893需要联网MIT通过
vercel-react-native-skills

Vercel React native skills 前端 · Codex、Claude

2,468,66425,878只读MIT通过
adapt

adapt 搜索 · Codex、Claude

2,027,04023,125操作浏览器未明确通过
bolder

bolder 分析 · Codex、Claude

2,004,28823,130只读未明确通过
screenshot

截图工具 · 本页

4,64340操作浏览器MIT通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

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

平台分布

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