关于 tarsier
Tarsier 是一项单次创作技能,会生成骑自行车的眼镜猴 SVG、500×500 PNG 和 Markdown 记录,适合希望按固定提示词生成图像并将文件保存到当前工作目录的用户。
主要功能
- 01生成骑自行车的眼镜猴 SVG
- 02栅格化为带留白的 500×500 PNG
- 03编写含元数据的 Markdown 记录
- 04在新文件夹中保存三个文件
适用场景
- 01创作固定提示词对应的图像
- 02同时保存矢量图与栅格图
- 03记录提示词和生成的 SVG 源码
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ jpcaparas/ skills --skill tarsier安装后在 Claude Code 中输入/tarsier确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
metadata.jsonREADME.mdskill-card.prompt.mdagents/.gitkeepassets/.gitkeepevals/evals.jsonreferences/.gitkeepscripts/rasterize.pytest_skill.pyvalidate.pytemplates/transcript.md详细介绍
Tarsier
一次性创意生成器。生成一只骑自行车的眼镜猴的完整 SVG、一张带留白的白底 500×500 PNG 光栅图,以及一份记录创作内容和过程的 Markdown 文字稿。
调用
/tarsier
不接受参数。提示词是静态的,永不改变。模型名称和推理级别由运行环境在提供时传入。
输出内容
在调用方当前工作目录下的新文件夹中生成三个文件:
{DIR}/
├── {BASE}.svg # the raw SVG you authored
├── {BASE}.png # 500x500 raster, 16px padding, white background
└── {BASE}.md # transcript with metadata and the full SVG source
{BASE} 遵循以下模式:tarsier-<model>-<reasoning>-<NZST-timestamp>。
执行
按顺序执行以下步骤。每一步都有一个验证提示——不要跳过。
步骤 1 — 设置
- 模型名称:从运行环境元数据中读取当前模型 ID。去掉方括号中的上下文窗口后缀(例如,
claude-opus-4-6[1m]→claude-opus-4-6)。如果运行环境未提供模型 ID,则使用unknown-model。 - 推理级别:从运行环境元数据或对话中读取当前启用的推理或工作量级别。若不可用,则使用
default。 - 时间戳(NZST):
TZ='Pacific/Auckland' date '+%Y%m%dT%H%M%S' - 构造基础名称:
tarsier-{model}-{reasoning}-{timestamp}——全部使用小写,并以连字符分隔。 - 在当前工作目录中创建输出文件夹:
mkdir -p ./{BASE}
步骤 2 — 生成 SVG
将下方提示词视为唯一指令并据此作答。不要添加修饰,不要协商,也不要向用户询问风格指导:
生成一只骑自行车的眼镜猴的 SVG
将 SVG 写入 {DIR}/{BASE}.svg。
技术要求(仅为确保光栅化兼容性——不限制艺术创作):
- 完整的
<svg>元素,并包含xmlns="http://www.w3.org/2000/svg" - 包含
viewBox属性 - SVG 标记本身之外不得包含文本或说明
- 自包含——不引用外部图像,不导入外部字体
眼镜猴是一种小型夜行灵长类动物,拥有巨大的圆眼、修长的手指、长尾巴和小巧的毛茸茸身躯。请清楚地展现它骑在自行车上。除此之外,艺术方向由你决定——细节程度、风格和颜色均不作限制。
步骤 3 — 光栅化为 PNG
运行此技能 scripts/ 目录中的光栅化脚本。该脚本会将 SVG 放入带 16px 留白的 500×500 白色画布中,确保它在投影仪和博客缩略图上呈现一致:
python3 <skill-dir>/scripts/rasterize.py "{DIR}/{BASE}.svg" "{DIR}/{BASE}.png"
<skill-dir> 是此技能的安装路径。如果运行环境未提供该路径,请根据此 SKILL.md 文件的位置解析 scripts/rasterize.py。
验证 PNG 已创建且非空:
test -s "{DIR}/{BASE}.png" && echo "PNG OK: $(wc -c < "{DIR}/{BASE}.png") bytes"
步骤 4 — 编写文字稿
按以下确切格式编写 {DIR}/{BASE}.md(替换方括号字段,保留结构):
# Tarsier
| Field | Value |
|-------|-------|
| Date | {NZST datetime, e.g. 2026-04-10T14:30:45 NZST} |
| Model | {model} |
| Reasoning | {reasoning} |
| Prompt | Generate an SVG of a tarsier riding a bicycle |
## SVG Output
```svg
{the complete SVG code — verbatim from Step 2}
```
步骤 5 — 报告
告知用户输出文件夹,并列出其中的内容。示例:
./{BASE}/
├── {BASE}.svg
├── {BASE}.png (500x500)
└── {BASE}.md
不要提出上传、部署、分享或托管输出内容。不要询问用户是否想要另一个版本。此技能按设计仅执行一次。
提示词
提示词始终为:
生成一只骑自行车的眼镜猴的 SVG
它是静态的。不要在文字稿中改述它。不要在自己的推理中加入额外指引。一次性生成器的价值在于输入固定;SVG 是唯一变量。
命名约定
tarsier-<model>-<reasoning>-<NZST-timestamp>
- 模型:运行环境报告的模型 ID,使用小写并以连字符分隔。不可用时使用
unknown-model。去掉[1m]这类上下文窗口后缀。 - 推理:本次会话的工作量级别,使用小写(
default、low、standard、high、thinking等)。 - 时间戳:NZST,格式为
YYYYMMDDTHHmmSS(日期和时间部分之间不加标点)。
示例:tarsier-claude-opus-4-6-default-20260410T143045
注意事项
1. 必须安装 rsvg-convert。 光栅化脚本会调用 rsvg-convert(来自 librsvg)。在 macOS 上:brew install librsvg。在 Debian/Ubuntu 上:apt install librsvg2-bin。如果缺少该二进制文件,脚本会在 Step 3 失败并返回非零退出码——请向用户显示此错误,而不是静默跳过 PNG。
2. 没有 viewBox 的 SVG 会被裁切。 光栅化器会提取 viewBox,并在缺少时回退到宽度/高度属性。如果两者都不存在,它会使用 0 0 100 100,这几乎总会导致图形被裁切。务必包含 viewBox——这是导致 PNG 空白或被裁切的最常见原因。
3. 不要在 <svg> 元素外放置任何内容。 光栅化器只会复制 <svg ...> 与 </svg> 之间的内容。SVG 标签前的 HTML 注释、文字或 DOCTYPE 都会被静默丢弃。如需添加注释,请将其放在 SVG 内部,使用 ``。
4. 时间戳必须使用 NZST,而不是 UTC 或本地时间。 TZ='Pacific/Auckland' 前缀是有意设置的,可确保无论运行环境在哪里,输出都能一致排序。省略它会导致不同运行生成不一致的文件夹名称。
5. 提示词是固定的,艺术内容则可变。 一次性生成器的核心在于输入永不改变。不要在自己的解读中添加创意指导(“做得更精细”“使用扁平色彩”等)——不同运行之间的差异应来自模型,而不是你对提示词的编辑。
6. 输出文件夹位于调用者的 CWD 中。 mkdir -p ./{BASE} 会在用户调用命令的位置创建文件夹,而不是在技能目录中。这是有意为之——用户希望文件与当前处理的内容放在一起。
此技能中的文件
scripts/rasterize.py— SVG → 500×500 PNG 封装脚本。在 Step 3 中执行。每次运行时请勿修改。evals/evals.json— 此技能的测试用例(冒烟、边缘、负面、披露)。templates/transcript.md— Step 4 中使用的记录格式,作为可直接填写的模板。