跳转到正文
报告库
用途分类 / 开发辅助

Doubt Driven Development Skill 安全审计

作者说它能做什么(原文)

Subjects every non-trivial decision to a fresh-context adversarial review before it stands. Use when correctness matters more than speed, when working in unfamiliar code, when stakes are high (production, security-sensitive logic, irreversible operations), or any time a confident output would be cheaper to verify now than to debug later.

第三方安全检查结论

发现安全风险

已检查文件
1
发现的风险
3
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。未发现风险
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。发现 1 项风险
中风险

跨模型复核会把代码或决策材料发送给外部模型服务

原文依据:3 处
发现了什么

用户选择 Gemini 或 Codex CLI 后,Skill 明确要求把 ARTIFACT 和 CONTRACT 传给该工具。只读沙箱限制的是工作区写入,并不阻止 CLI 将输入发往其模型提供商。

为什么需要注意

专有代码、客户信息、内部架构、未公开决策或嵌入材料中的凭据可能进入另一服务商的系统,并受其日志、保留和账户政策约束。

仅当用户选择并逐次授权 Gemini/Codex CLI 时,Skill 才要求把 ARTIFACT 和 CONTRACT 交给该工具。若 CLI 连接托管模型,这些材料可能离开本机;只读沙箱只限制写入工作区,不能证明它阻止网络传输。用户可要求作者明确说明各 CLI 的数据去向、保留政策,并仅提交已脱敏材料或禁止外部 CLI。

SKILL.md:130来自说明文档打开原文件
2. Test it works (`gemini --version` or equivalent) before passing the full prompt — a stale or broken binary may pass `which` but fail on real input.3. Confirm the exact invocation with the user, including required flags, auth, and env vars (e.g., API keys). Implementations vary; never assume.4. Pass ARTIFACT + CONTRACT + the adversarial prompt **only**. No session context, no CLAIM.5. Mind shell escaping. If the artifact contains quotes, `$(...)`, or backticks, prefer stdin (`echo … | gemini`) or a heredoc over inline `-p "…"`. When in doubt, ask the user to confirm the invocation before running it.6. Take the output into Step 4 (RECONCILE).
查看另外 2 个位置
SKILL.md:143来自说明文档打开原文件
# Codex (read-only sandbox keeps the CLI from writing to your workspace):codex exec --sandbox read-only -C <repo-path> - < /tmp/doubt-prompt.md# Gemini ('--approval-mode plan' is read-only; '-p ""' triggers non-interactive# mode and the prompt is read from stdin):gemini --approval-mode plan -p "" < /tmp/doubt-prompt.md```
SKILL.md:163来自说明文档打开原文件
- Cross-model is **skipped**, and the skip must be **announced** in the output: *"Cross-model skipped: non-interactive context."*- **Never invoke an external CLI without explicit user authorization** — this is a load-bearing safety property.
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。发现 1 项风险
中风险

审查材料会被写入临时文件,但没有规定安全权限或清理

原文依据:3 处
发现了什么

Skill 要求把完整提示、ARTIFACT 和 CONTRACT 写入文件,并示例使用固定的 `/tmp/doubt-prompt.md`。材料可能包含源代码或内部决策;说明中没有要求使用唯一的私有临时文件或在调用后删除它。

为什么需要注意

同一设备上的其他进程或用户可能读取遗留材料。照搬固定路径还可能覆盖既有临时文件;在存在恶意符号链接的环境中,固定路径尤其危险。

活跃说明要求先把完整提示写入文件,示例使用固定的 `/tmp/doubt-prompt.md`,但可见文本没有要求唯一文件名、仅限当前用户的权限或调用后清理。如果材料含私有代码或内部决策,它可能残留在临时存储中,固定路径也可能产生覆盖或本机其他进程读取的风险,具体取决于系统权限。用户可要求使用权限受限的唯一临时文件、拒绝落盘敏感材料并确认自动清理。

SKILL.md:135来自说明文档打开原文件
**Never interpolate the artifact into a shell-quoted argument.** Code, markdown, and review prompts routinely contain backticks, `$(...)`, and quote characters that will either truncate the prompt or execute embedded shell. Write the full prompt to a file and pipe it through stdin.
查看另外 2 个位置
SKILL.md:140来自说明文档打开原文件
```bash# Write the adversarial prompt + ARTIFACT + CONTRACT to a temp file first.# Then pipe via stdin so shell metacharacters in the artifact stay inert.# Codex (read-only sandbox keeps the CLI from writing to your workspace):codex exec --sandbox read-only -C <repo-path> - < /tmp/doubt-prompt.md
SKILL.md:146来自说明文档打开原文件
# Gemini ('--approval-mode plan' is read-only; '-p ""' triggers non-interactive# mode and the prompt is read from stdin):gemini --approval-mode plan -p "" < /tmp/doubt-prompt.md```
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。未发现风险
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。未发现风险
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。发现 1 项风险
低风险

每轮可选的外部复核可能消耗付费账户额度

原文依据:5 处
发现了什么

Skill 要求每个交互式怀疑周期都提供跨模型选择,并明确承认它增加成本和延迟。若用户授权 CLI,调用会使用所配置账户的模型额度。

为什么需要注意

反复选择跨模型复核可能产生 API 或订阅用量费用,并延长交付时间;最多三轮的本地循环并不自动限制外部服务的单次价格或额度消耗。

Skill 要求每个交互式周期都展示跨模型选项,并承认这会增加成本;但“提供选项”本身不会扣费。只有用户选择 CLI、确认具体调用并对该次调用明确授权后,所配置账户才可能产生用量或费用,而且每次调用都须重新确认。用户可选择 skip,并在授权前要求显示模型、命令及预计费用。

SKILL.md:116来自说明文档打开原文件
**Interactive sessions: always offer. Never silently skip.****Step 1: Ask the user**After the single-model review in Step 3 above, but before RECONCILE, pause and ask:> *"Single-model review complete. Want a cross-model second opinion? Options: Gemini CLI, Codex CLI, manual external review (you paste it elsewhere), or skip."*This question is mandatory in every interactive doubt cycle — even on artifacts that feel low-stakes. The user — not the agent — decides whether the cost is worth it. The agent's job is to surface the choice.
查看另外 4 个位置
SKILL.md:166来自说明文档打开原文件
Cross-model adds cost, latency, and tool fragility. The agent surfaces the choice every cycle; the user decides whether this artifact warrants it.
SKILL.md:205来自说明文档打开原文件
| "Cross-model is always better" | Cross-model catches blind spots a single model shares with itself, but it adds cost and tool fragility. Offer it every interactive doubt cycle — the user decides whether the artifact warrants it. The agent's job is to surface the choice, not to gate it. || "User said yes once, so I can keep invoking the CLI" | Each invocation is its own authorization. The artifact, the prompt, and the flags change between calls — re-confirm the exact command with the user before every run. |
SKILL.md:126来自说明文档打开原文件
**Step 2: If the user picks a CLI — verify, then invoke**1. Check the tool is in PATH (`which gemini`, `which codex`).2. Test it works (`gemini --version` or equivalent) before passing the full prompt — a stale or broken binary may pass `which` but fail on real input.3. Confirm the exact invocation with the user, including required flags, auth, and env vars (e.g., API keys). Implementations vary; never assume.4. Pass ARTIFACT + CONTRACT + the adversarial prompt **only**. No session context, no CLAIM.5. Mind shell escaping. If the artifact contains quotes, `$(...)`, or backticks, prefer stdin (`echo … | gemini`) or a heredoc over inline `-p "…"`. When in doubt, ask the user to confirm the invocation before running it.
SKILL.md:163来自说明文档打开原文件
- Cross-model is **skipped**, and the skip must be **announced** in the output: *"Cross-model skipped: non-interactive context."*- **Never invoke an external CLI without explicit user authorization** — this is a load-bearing safety property.Cross-model adds cost, latency, and tool fragility. The agent surfaces the choice every cycle; the user decides whether this artifact warrants it.

Skill 逻辑拆解

8 个说明模块

该 Skill 要求主会话把非简单决策拆成最小的“产物 + 约束”,交给新上下文审查者进行以找错为目标的审查;不会把原作者的结论传给审查者。

查看原文
SKILL.md:77来自说明文档打开原文件
A fresh-context reviewer needs the **artifact** and the **contract**, not the journey.- Code: the diff or the function — not the whole file- Decision: the proposal in 3–5 sentences plus the constraints it has to satisfy- Assertion: the claim plus the evidence that supposedly supports it (kept distinct from the Step 1 CLAIM block, which is the orchestrator's hypothesis under scrutiny)Strip your reasoning. If you hand over conclusions, you'll get back validation of your conclusions. The unit must be small enough that a reviewer can hold it in mind in one read — if it's a 500-line PR, decompose first.
SKILL.md:99来自说明文档打开原文件
Do NOT validate. Do NOT summarize. Find issues, or stateexplicitly that you cannot find any after thorough examination.ARTIFACT: <paste artifact>CONTRACT: <paste contract>```**Pass ARTIFACT + CONTRACT only. Do NOT pass the CLAIM.** Handing the reviewer your conclusion biases it toward agreement. The reviewer must independently determine whether the artifact satisfies the contract.

在交互会话中,Skill 强制提供跨模型复核选项;只有用户选择并确认具体命令、认证和环境变量后,才应调用 Gemini 或 Codex CLI。非交互环境明确禁止未经授权调用。

查看原文
SKILL.md:116来自说明文档打开原文件
**Interactive sessions: always offer. Never silently skip.****Step 1: Ask the user**After the single-model review in Step 3 above, but before RECONCILE, pause and ask:> *"Single-model review complete. Want a cross-model second opinion? Options: Gemini CLI, Codex CLI, manual external review (you paste it elsewhere), or skip."*This question is mandatory in every interactive doubt cycle — even on artifacts that feel low-stakes. The user — not the agent — decides whether the cost is worth it. The agent's job is to surface the choice.
SKILL.md:128来自说明文档打开原文件
1. Check the tool is in PATH (`which gemini`, `which codex`).2. Test it works (`gemini --version` or equivalent) before passing the full prompt — a stale or broken binary may pass `which` but fail on real input.3. Confirm the exact invocation with the user, including required flags, auth, and env vars (e.g., API keys). Implementations vary; never assume.4. Pass ARTIFACT + CONTRACT + the adversarial prompt **only**. No session context, no CLAIM.5. Mind shell escaping. If the artifact contains quotes, `$(...)`, or backticks, prefer stdin (`echo … | gemini`) or a heredoc over inline `-p "…"`. When in doubt, ask the user to confirm the invocation before running it.6. Take the output into Step 4 (RECONCILE).
SKILL.md:161来自说明文档打开原文件
**Non-interactive contexts** (CI, `/loop`, autonomous-loop, scheduled runs):- Cross-model is **skipped**, and the skip must be **announced** in the output: *"Cross-model skipped: non-interactive context."*- **Never invoke an external CLI without explicit user authorization** — this is a load-bearing safety property.

Skill 不把审查意见当作最终裁决:主会话必须逐项对照原产物分类,并在仅剩简单问题、完成三轮或用户要求交付时停止。

查看原文
SKILL.md:170来自说明文档打开原文件
The reviewer's output is data, not verdict. **You are still the orchestrator.** Re-read the artifact text against each finding before classifying — rubber-stamping the reviewer is the same failure mode as ignoring it.For each finding, classify in this **precedence order** (first matching class wins):1. **Contract misread** — reviewer flagged something specifically because the CONTRACT you provided was unclear or incomplete. Fix the contract first, re-classify on the next cycle.2. **Valid + actionable** — real issue requiring a change to the artifact. Change it, re-loop.3. **Valid trade-off** — issue is real but cost of fixing exceeds cost of accepting. Document the trade-off explicitly so the user sees it.4. **Noise** — reviewer flagged something that's actually correct under context the reviewer didn't have. Note it, move on, and ask: would adding that context to the contract have prevented the false flag?
SKILL.md:183来自说明文档打开原文件
Stop when:- Next iteration returns only trivial or already-considered findings, **or**- 3 cycles completed (escalate to user, don't grind a fourth alone), **or**- User explicitly says "ship it"If after 3 cycles the reviewer still surfaces substantive issues, the artifact may not be ready. Surface this to the user — three unresolved cycles is information about the artifact, not a reason to keep looping.
从这里开始 · 工作说明SKILL.md
doubt-driven-development
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。
文件与检查记录1 个文件

检查范围与遗漏

逐文件查看涉及的内容

下方列出本次涉及的原文范围;纳入检查不代表已查清所有问题。

  • SKILL.md已纳入全文

这份报告只针对上方版本。我们看了拿到的代码和说明文件,没有实际运行 Skill,也没有检查它另外安装的软件包。因此,这不是“保证安全”的承诺;换了版本或使用环境,结果也可能不同。

  • SKILL.md工作说明

代码和说明中提到的操作

运行命令
SKILL.md:139来自说明文档打开原文件
```bash# Write the adversarial prompt + ARTIFACT + CONTRACT to a temp file first.
读取了多少行
244
文件校验值(用于核对版本)
2ade8492d86cbe822b6930efd7e7088b95c548cccb372769474ecdc4e72aac4a