apply-tweaks 用于将排队等待的调整变更(存放在 pending.yaml)持久化写回源 HTML 文件,采用“文件即状态、Claude 作为写入者”的模式。
主要流程:先按 tweaks-{slugify(去掉扩展名的 HTML 文件名)}-{当天 YYYYMMDD} 计算 session-id,会话目录为 artifacts/tweaks/<session-id>/;若跨天恢复,可用 Bash(ls artifacts/tweaks/) 找最近匹配前缀。随后读取 state.yaml 与 pending.yaml,若 pending 缺失或为空则报告“no pending tweaks”并停止。接着读取目标 HTML 和其中的 __tweak_schema 块,逐项校验 pending 的键是否存在于 schema、值类型是否匹配(颜色为 hex、数字在 min..max 之间、布尔值)。任一键无效则报告并停止,不做部分应用。应用时优先匹配 :root 上的 CSS 变量 --tweak-<key>,其次匹配 <!-- tweak:<key> -->...<!-- /tweak:<key> --> 标记块并编辑其内容;两种标记都未找到则明确失败。每次 Edit 在 Claude Code 中已是原子操作,无需临时文件重命名。完成后把 pending.yaml 内容连同时间戳写入 artifacts/tweaks/<session-id>/applied/<ts>.yaml,清空 pending.yaml,并更新 state.yaml 的 last_applied_at。
还原路径:用户说“revert last tweaks”时,取 applied 目录中最新的记录,反向恢复各变更,再追加一条 type: revert 的新记录。
限制:依赖 /make-tweakable 生成的标记结构,缺少标记会失败;需要 pending.yaml 与 schema 校验一致才能应用。