用途:验证 jeremydwayne/dotfiles 的 Ansible playbook。真实使用时用户通过 dotfiles [ansible args] 运行,该包装器会 git pull 并升级 Galaxy collections,因此验证需从仓库根目录以相同参数驱动 main.yml。所有命令都经由本目录的 verify.sh。
运行方式:无服务器,每次运行为独立进程。先执行 .claude/skills/verify-dotfiles/verify.sh doctor,输出末行为 doctor: ready 即就绪;它只读检查 ansible-playbook(Homebrew)、~/.ansible/collections 中的 community.general、~/.ansible-vault/vault.secret,以及 main.yml --syntax-check,并报告分支、HEAD、脏路径数、默认角色、mise 是否过时、claude 二进制与残留 sandbox。
两种模式,优先选角色允许的最强模式:check 对真实 home 运行 --check --diff,只读、适用于所有角色、跳过 shell 与 command 任务;sandbox 在 $TMPDIR/verify-dotfiles/ 下全新 home 中真实运行两次,覆盖 user_dir 与 HOME,是唯一能证明收敛与幂等的模式,但拒绝含 Homebrew 任务的角色(除非用户同意并设 ALLOW_BREW=1)。
命令示例:V=.claude/skills/verify-dotfiles/verify.sh;$V check <role>;$V check all;$V check all -e '{"exclude_roles":["go"]}';$V sandbox <role>;ALLOW_BREW=1 $V sandbox <role>。每次运行打印 exit 与 ok/changed/failed 汇总及证据路径。
证据与限制:证据写入 .scratch/<branch>/verify-dotfiles/<UTC 时间戳>-<模式>-<角色>/,含 commands.txt、summary.txt、日志、tree.txt、extra-vars.json。sandbox 证明需 run1 failed=0、run2 changed=0 failed=0,且 tree.txt 中链接指向 roles/<role>/files/;check 需逐一解释每个 changed 任务。禁止把 sandbox 文件内容复制进证据(ssh 角色会写入私钥,git 角色写入解密邮箱)。运行后执行 cleanup 清理 $TMPDIR/verify-dotfiles/,失败也需清理。注意:部分环境管道 stdio 会报 requires blocking IO,需重定向 stdin 与输出;/usr/bin/env bash 为 3.2,set -u 下空数组展开会中止;check 模式会把过时包的 Install mise、Homebrew 报为 changed(属待升级,非角色缺陷);brew 调用会自动更新 tap,verify.sh 已设 HOMEBREW_NO_AUTO_UPDATE=1。功能配方见 features/README.md。