# Adversarial Verification

> 对抗性验证技能 — 验证代码变更/部署/任务交付物的正确性。不是确认"它能工作"，而是尝试"把它搞坏"。用于：(1) 完成非平凡任务后自验 (2) 审查 PR/MR (3) 部署后验证 (4) bobooo 说"验证一下"。灵感源自 Claude Code Verification Agent 设计。

- Skill: `kadaliao/adversarial-verification` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add kadaliao/adversarial-verification`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kadaliao/adversarial-verification/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: kadaliao (https://skillmd.com/u/kadaliao)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/kadaliao/adversarial-verification

---


# Adversarial Verification

## 核心理念

> 你的目标不是确认实现正确 — 而是尝试打破它。

你有两个已知失败模式，时刻警惕：
1. **验证回避** — 读代码、叙述测试计划、写"PASS"，但从未运行任何命令
2. **被前 80% 诱惑** — 看到整洁 UI 或测试通过就放行，没注意一半按钮是空的

## 自我合理化识别

你会想跳过检查。识别这些借口并做相反的事：

| 你脑中的借口 | 正确行动 |
|---|---|
| "代码看起来正确" | 运行它 |
| "测试已经通过了" | 独立验证，测试可能是自证循环 |
| "大概没问题" | "大概"不是验证 |
| "启动服务器看代码吧" | 启动服务器然后 **curl 端点** |
| "没有浏览器" | 检查是否有 browser tool / playwright |
| "这个要花太久" | 不是你决定的 |

**如果你在写解释而不是命令 → 停。运行命令。**

## 验证策略（按变更类型）

### 前端
启动 dev server → 浏览器/curl 检查 → 检查子资源（图片/API/静态文件）→ 运行前端测试

### 后端/API
启动服务器 → curl 端点 → 验证响应结构（不只是状态码）→ 测试错误处理 → 边界用例

### CLI/脚本
用代表性输入运行 → 验证 stdout/stderr/exit code → 边界输入（空、畸形、极端值）

### 基础设施/配置
验证语法 → dry-run → 检查环境变量是否真正被引用

### Bug 修复
复现原 bug → 验证修复 → 运行回归测试 → 检查相关功能副作用

### 重构（无行为变更）
现有测试必须全过 → diff 公共 API 表面 → 抽查行为一致性

## 对抗性探测（选择适用的）

- **并发** — 并行请求创建类路径，检查重复/丢失
- **边界值** — 0, -1, 空字符串, 超长字符串, unicode, MAX_INT
- **幂等性** — 同一个变更请求发两次，结果正确吗？
- **孤儿操作** — 删除/引用不存在的 ID

## 输出格式（强制）

每项检查：
```
### Check: [验证什么]
**Command run:**
  [实际执行的命令]
**Output observed:**
  [终端实际输出 — 复制粘贴，不要转述]
**Result: PASS** (或 FAIL — 附 Expected vs Actual)
```

❌ 坏例子：
```
### Check: POST /api/register 验证
**Result: PASS**
Evidence: 读了 routes/auth.py，逻辑正确地验证了...
```
（没有运行命令。读代码不是验证。）

## 最终判定

报告末尾必须有且仅有一行：
```
VERDICT: PASS
VERDICT: FAIL
VERDICT: PARTIAL
```
- FAIL → 附失败详情 + 复现步骤
- PARTIAL → 仅限环境限制（缺工具/无法启动服务），不是"不确定"
- 报告必须包含至少一个对抗性探测及其结果

## PASS 之前的检查清单

- [ ] 至少运行了一个命令并有输出
- [ ] 至少做了一个对抗性探测
- [ ] 没有"代码看起来正确"式的跳过
- [ ] 验证了非 happy path

