Communitygithub.com

CrziDev/claude-skills

当用户输入 /generate-frame,或提供单张截图/文件夹截图以放入浏览器窗口模拟框,或需要从截图中生成作品集/展示封面图时使用。

claude-skills 是什么?

此技能利用 [frame-kit](https://github.com/CrziDev/frame-kit) 工具,将现有截图转换为带有浏览器框架的 PNG 图片。它支持单张图片和文件夹输入,可自定义分辨率(标准、高、最大)、适配模式(自动、包含、覆盖)以及样式(如收据、打印件)。对于文件夹输入,技能还会智能挑选两张互补的截图生成封面图(一张展示产品总体概览,另一张突出应用核心功能),并确保拒绝登录页、空白状态等不合适的图片。技能会在处理完成后自动验证所有输出 PNG 的完整性和尺寸,检查空白、加载不全、文字过小或样式错误等常见问题,并允许用户重新运行有问题的文件。该技能可在所有支持自定义技能的 AI 代理平台(如 Claude Code、Cursor、Codex)上运行,依赖路径查找机制(环境变量、PATH 或用户指定目录)来定位 frame-kit,并自动处理依赖安装(npm install、Playwright Chromium)。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/CrziDev/claude-skills/tree/HEAD/generate-frame

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

生成框架图

将现有截图转换为带有框架的 PNG 图片,渲染工作由 frame-kit 完成。此技能负责定位工具、运行它、检查结果并挑选封面。如需先截图项目页面,请使用 generate-project-frames。

1. 定位并检查 frame-kit

将文件夹称为 <frame-kit>。使用第一个满足条件的路径:

  1. $FRAME_KIT_DIR
  2. frame-kit 命令在 PATH 中对应的文件夹(readlink -f "$(command -v frame-kit)",取其所在目录)
  3. 在 ~/projects ~/code ~/dev ~ 中搜索,深度 ≤ 4,跳过 node_modules(多匹配时询问用户)
  4. 询问用户;若没有,建议 git clone https://github.com/CrziDev/frame-kit

然后:

  • node_modules 缺失 → 在 <frame-kit> 中运行 npm install
  • 运行 node <frame-kit>/cli.mjs --help,仅依据列出的选项构建命令。若缺少 --resolution 或 --fit,则说明安装版本较旧:省略这些选项并告知用户 git pull。
  • 遇到 "Chromium not found" → 在 <frame-kit> 中运行 npx playwright install chromium,或设置 CHROME_PATH。

不要将路径写入任何技能文件中。

2. 加框处理

node <frame-kit>/cli.mjs single <image|folder> --out <framed dir> [options]

  • --out:始终传递该参数。默认值为 <input dir>/framed/,该目录会嵌套在原始文件夹内部。保持加框后的图片与原始图片分离。
  • --url "<host>/{name}":地址栏文本;{name} 表示去除 NN- 前缀后的文件名。已知应用的实际主机和路径时使用,否则省略。
  • --style paper:用于收据、发票、打印件。文件夹运行使用一种样式,因此仅对单个文件重新运行 --style paper,并使用相同的 --out。
  • --resolution standard|high|max:默认 max(3840×2400)。README 和快速预览用 standard(1920×1200),网页和幻灯片用 high(2560×1600)。更大的输出使边框和文字更清晰,而非增加截图细节。每批处理使用一种分辨率。
  • --fit auto|contain|cover:默认 auto(显示整个截图;过高的页面从顶部裁剪)。仅在需要修复裁剪错误时更改。

退出码 1 表示部分文件失败;其他文件仍会写入,失败列表显示在 stderr 中。修复原因(图片不可读或损坏、类型不支持、超过 50 MB)后仅重新运行这些文件。如果每个文件都失败,则怀疑是 Chromium 的问题。

3. 封面图(仅限文件夹输入)

查看图片,然后挑选两张互补的图片:

  • 背面:产品概览(仪表盘、分析、主页),横向排版,缩略图尺寸下可读。
  • 正面:展示应用功能的屏幕,内容真实,布局与背面不同。
  • 绝不使用:登录页、空白状态、错误页面、过高的全页截图、收据、或同一屏幕出现两次。

node <frame-kit>/cli.mjs cover <back> <front> --back-url "…" --front-url "…" --out <framed dir>/00-cover.png(使用相同的 --resolution)。传递原始截图,而非已加框的图片。如果只有一张图片值得展示,或者用户想要一个标题图,则使用 headline(参见 --help)。

4. 验证与报告

  1. node <this skill>/scripts/verify-frames.mjs <input> <framed dir> --resolution <preset> 检查每个输入文件是否都对应一个尺寸正确的有效 PNG,以及封面图。该命令不判断外观。
  2. 读取每个输出 PNG(以及封面图)。检查是否存在空白或部分加载的截图、内容被裁剪、文字过小无法阅读、样式错误(如收据显示在浏览器窗口中)、地址栏错误。仅重新运行受影响的文件,调整选项后重新验证。如果无法查看图片,请说明。
  3. 报告:加框后的文件夹、失败或重新处理的文件、封面图配对、以及一句话说明这两张图片为何互补。

Individual skills in this repo

This repo contains 1 individual skill — each has its own dedicated page.

相关技能