用途:为不可撤销的操作(删除、覆盖、重写历史、DROP/purge、把调用方提供的名称拼接到基础目录)添加并审查前置条件,发现条件不满足时直接返回错误、不做任何变更。
主要能力与原则:
- 拒绝而非警告,也不提供 --force 之类的逃生开关;若确有需要,应是另一个单独命名的命令。
- 守卫必须放在第一个有副作用的语句之前,包括内存状态清理、分支 checkout、读后重写等;拒绝后工作区应保持字节级不变。
- 对歧义状态(detached HEAD、目标缺失、多个候选)提前拒绝。
- 路径归属判断要结构化,不能用裸字符串前缀:应判断 path == ".state" 或 strings.HasPrefix(path, ".state/"),Python 用 Path(p) == base or base in Path(p).parents。
- 名称校验与解析后包含性检查是两道独立检查:正则挡 .. 与绝对路径,resolve() 加包含性检查挡目录内指向外部的符号链接;所有入口(loader、saver、内部 helper)都要走这两道检查。
- 若 dry-run 提前短路,预览可能描述真实运行会拒绝的操作,需明确说明这是有意设计。
- 注意调用方是否用宽泛的 except Exception 把硬拒绝转成普通结果形状,集成测试应断言 result["error"]。
测试:分别单独削弱正则与包含性检查;显式写兄弟名 fixture(如 .state-backup/old.json)与符号链接 fixture;拒绝测试要断言目标未被修改(分支、跟踪文件列表、内存计数器不变);旧 fixture 可能变成被拒绝形状,需收紧并新增拒绝用例。
限制与仓库说明:本仓库(ffmpeg-skill)实际暴露面较窄,没有 --rebuild/--purge 类命令,也不重写历史,且“保留原文件”已是设计原则(README 设计原则 #9,测试对每次运行后的输入做哈希校验)。最接近的是 -o/output-path 处理:每个工具接受调用方提供的输出路径,ffmpeg_base() 始终传 -y 静默覆盖,无确认步骤。由于这是本地 CLI,边界逃逸风险较低,真正适用的是“首次变更前拒绝”和“输入哈希测试证明未被改动”两部分。来源:wdm0006/python-skills(MIT)。