| name | terminal-screenshot |
| description | Render terminal command outputs as realistic PNG screenshots. Use this skill whenever the user wants to "screenshot" a terminal command, generate terminal output images, visualize CLI results, create terminal-style screenshots for reports or documentation, or any time terminal output needs to be captured as an image. Also trigger proactively when the user is writing experiment reports, technical docs, or lab reports that would benefit from terminal evidence — suggest capturing the output as a screenshot.
|
Terminal Screenshot — 三档渲染架构
把终端命令输出渲染成逼真 PNG。核心原则:让真实终端引擎处理着色与排版,
手写 HTML span 颜色只作最后回退。
决策表
| 内容性质 | 渲染档 | 命令 |
|---|
| 命令可在本机真实执行(git log、python xx.py 等本地操作) | Tier 1 freeze 真实执行 | python scripts/render.py --execute "<cmd>" --name <slug> |
| 伪造内容(GPU 服务器、SSH 远程、不存在的结果) | Tier 2 ANSI + termframe 真模拟器 | 先写 session spec JSON,python scripts/render.py --spec spec.json --name <slug> |
| freeze/termframe 均不可用 | Tier 3 HTML → 无头浏览器 | 按 references/html-templates.md 写 HTML,python scripts/render.py --html page.html --name <slug> |
会话画像(Tier 2/3 用):PS C:\...> → powershell 预设;C:\...> → cmd;
% 结尾提示符/brew → macOS zsh;user@host:path$/nvidia-smi/systemctl → SSH
(实验报告默认);复古/游戏场景 → CRT。完整预设目录见 references/terminal-types.md。
Tier 2 session spec 格式
{
"preset": "ssh", "user": "ubuntu", "host": "gpu-a100-01", "path": "~/train",
"commands": [
{"cmd": "nvidia-smi", "output": ["+-----------------------------------------------------------------------------+", "| ...表格行... |"]}
]
}
preset 取值:ssh / root / zsh / powershell / cmd / crt。
提示符配色由 scripts/ansi_builder.py 按预设自动生成(truecolor 转义序列)。
逼真度要点
- Tier 1 物理真实:freeze 真实执行并捕获 ANSI,字体度量/着色/间距无可挑剔,优先选它。
- Tier 2 引擎真实:termframe 是真正的终端模拟器,ANSI 着色、光标由引擎渲染;
其 SVG 输出会自动用无头浏览器栅格化为 PNG(不可用时交付 SVG)。
- 提示符语法必须精确:PowerShell
PS ...>、zsh %、Linux user@host:path$ / root#。
SSH 场景用本地终端 chrome + 远程提示符,不要凭空造"服务器 GUI"。
- 终端外的背景也要真实:有窗口的截图必须悬浮在桌面壁纸上(见
references/stage-backgrounds.md 的程序化壁纸预设:win11-bloom / macos-gradient /
plain-dark / custom 真实图片),阴影与圆角匹配对应 OS;不要纯色贴边。
- 顶部栏必须符合官方规格:Windows(32px 标题栏、46×32 caption、E721/E922/E923/E8BB/E710/E70D)、
macOS Terminal(28px 标题栏、红绿灯 12px/20px 间距)、GNOME/Ubuntu(47px headerbar、
12px 窗口圆角、汉堡菜单)三类平台规格严格按
references/chrome-spec.md。
图标素材:CC0 红绿灯 SVG(assets/macos-traffic-lights/)、CC0 自绘 GNOME
symbolic 图标(assets/symbolic/),不引入 Apple/Yaru 版权资产。
完成模板后按 references/chrome-validation.md 协议用多模态模型 +
scripts/chrome_probe.py 探针校验通过才算交付。
- 短输出克制:短 Linux/服务器输出渲染为无边框证据片段(无舞台),除非内容含
SSH 登录过程或用户明确要完整终端窗口(Tier 3 质检会警告)。
- 工具缺失不打断流程:render.py 会尝试自动安装(brew/go/scoop/cargo),
全部失败退出码 2 —— 告知用户"本次跳过截图"并继续任务。
跨平台
- 工具安装:freeze → brew / go install / scoop;termframe → brew / cargo / scoop。
无 Windows 官方安装源时提示用户手动安装,Tier 3 回退在所有平台可用
(Playwright → npx → Puppeteer → Edge/Chrome headless → wkhtmltoimage)。
- 字体:HTML 模板用平台专属字体栈(Windows: Cascadia Mono/Consolas + 微软雅黑
回退;macOS: SF Mono/Menlo + PingFang SC;Linux: JetBrains Mono/Ubuntu Mono + Noto Sans CJK),
保证中文输出在任何平台不错位。
- 路径:脚本内部统一 pathlib/
file:/// URL,Windows 反斜杠已处理。
输出
outputs/YYYY-MM-DD/HHMMSS-<slug>/,含 PNG 及对应源文件(.ansi/.svg/.html),
交付时报目录路径。退出码:0 成功 / 1 输入错误 / 2 无工具可跳过。