图片背景板 是做什么的?
桌面仅将模组的背景绘制为模组自身渲染的 scene,内部不绘制任何栅格图像。
因此,图片需要矢量化追踪为路径,在严格且无声的大小限制下打包,并由一个小型模组绘制。
在修改模组的绘制方式之前,请阅读 references/limits.md;该文件列出了测量结果和可能导致静默失败的因素。
工作流程
- 获取图片。 一张图片,或一张浅色(白天)和一张深色(夜晚)的图片。建议使用横向约 1600x1000 的尺寸;
应用会使用
xMidYMid slice裁剪,因此请确保主体远离顶部和底部。带有柔和笔触的绘画性艺术品比轮廓清晰的赛璐璐风格更容易追踪;照片也可行。如果用户自己生成图片,请在此之前告知。 - 在临时文件夹中安装工具(不要在模组内):
python -m pip install --target "$TMP/pb-vtracer" vtracer mkdir -p "$TMP/pb-svgo" && cd "$TMP/pb-svgo" && npm init -y >/dev/null && npm install svgo@4 - 创建模组文件夹 位于
~/.claude/skills/<id>/(每次会话都会加载):复制 assets/mod-template/,然后将make-colors.js和make-colors.d.ts从 插件创作技能复制到其hooks/目录中,保持原样。填写每个__PLACEHOLDER__(__ID__是文件夹名称,小写且带连字符)。对于单张图片,删除其他导入、其场景和外观,并将auto指向该图片。 - 查看图片 并列出其区域(裁剪并查看它们):主体、面部、皮肤区域、每侧。
在模组旁边(而非
hooks/内部)为每张图片编写一个配置,使用 references/tracing.md 确定区域选择和设置,以及 assets/example-night.json(一个坐在入口右侧的女孩)作为模型。对于成对图片,为每个配置赋予"scheme"和两个预算:{"FULL": 259500, "HALF": 129500};对于单张图片,只需FULL且不含scheme。 - 追踪,在后台运行(每次运行需要几分钟):
它会对每个区域在每个选项下追踪一次,满足每个预算(首先满足所有区域,然后按优先级细化细节), 并写入python -I scripts/trace_scene.py night.json --vtracer "$TMP/pb-vtracer" --svgo "$TMP/pb-svgo" --preview "$TMP/pb-preview/night.html"scene-<name>.ts。将配置的out指向模组的hooks/。 - 预览 在浏览器窗格中查看 HTML(使用
python -m http.server托管其文件夹)。检查 2 倍裁剪下的主体, 因为应用会放大图片。使用 tracing.md 中的表格修复错误之处,然后重新追踪。 - 颜色。 从图片中采样表面颜色(主导的墙壁或天空色调;深色模式保持深色)
并运行
makeColors;其问题列表不得包含 "Desktop won't paint" 条目。 - 验证并交付:
claude plugin validate <模组文件夹>。告诉用户重新加载窗口或启动一个新会话, 输入任意消息(主题在第一个提示词时设置),然后尝试/backdrop day|night|auto。 请他们检查特定区域;他们的截图是真正的测试。之后删除临时工具文件夹。
关键规则
- 仅使用单引号包裹的 SVG,不允许在任何 SVG 中出现
"、\或反引号:转义字符会计入总长度。 - 场景中所有 SVG 的总字符数 ≤ 约 259500 个;每个 SVG ≤ 约 98000。超出任一限制,桌面将不显示任何内容且不给出任何提示;模板会在会话开始时记录超大的场景。
- 保持
glass开启;如果外观适用于两种模式,则不要使用tint。 - 不要使用
image、color、gradient或vector背景、<image>或overrideColorScheme:这些都不生效。 - 在
prompt.submit时设置主题,而非session.start。 - 改进某个区域时,保留用户表示喜欢的部分不变:为该区域单独分配区域或优先级,而不是重新调整所有内容。每次更改时都报告影响的范围。