跳转到正文
报告库
用途分类 / 其他用途

Triage Skill 安全审计

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

Move issues and external PRs through a state machine of triage roles, categorise, verify, grill if needed, and write agent-ready briefs.

第三方安全检查结论

先别安装或运行

已检查文件
4
发现的风险
3
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。发现 1 项风险
高风险

验证外部 PR 时会检出并执行贡献者控制的代码

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

该 Skill 明确把外部 PR 纳入分流,并要求在验证阶段检出其差异、运行相关测试或命令。测试脚本、构建钩子及依赖生命周期脚本都可能由 PR 作者修改,因此“运行测试”可能执行贡献者提供的任意代码。

为什么需要注意

恶意 PR 可能读取代理进程可访问的凭据或仓库数据、修改工作区,或使用当前账户的网络与服务权限。AI 声明和后续状态确认不会限制这段代码的执行权限。

该风险有明确依据。外部 PR 会进入发现范围,而验证明确要求检出 PR 并运行相关测试或命令。若 PR 作者修改了测试、构建配置或生命周期脚本,这一步可能在用户环境中执行其代码。文档没有在这些步骤中规定隔离、禁用安装脚本或先审查命令。用户可要求作者增加沙箱、只读检出和逐条命令确认。

SKILL.md:64来自说明文档打开原文件
When PRs are in scope, include external PRs in these buckets and tag each line `[PR]` or `[issue]`. Discovery surfaces only *external* PRs (the tracker config defines who counts as external), so a collaborator's in-flight PR is not triage work. This filter is discovery-only; an explicitly named PR is always triaged regardless of author.
查看另外 1 个位置
SKILL.md:70来自说明文档打开原文件
1. **Gather context.** Read the full issue or PR (body, comments, labels, author, dates; for a PR, the diff too). Parse any prior triage notes so you don't re-ask resolved questions. Explore the codebase using the project's domain glossary, respecting ADRs in the area. Run two checks against the codebase: (a) **redundancy**: search for an existing implementation of the requested behavior by domain concept (not just the request's wording), and report where you looked. If found, it's an already-implemented `wontfix` (step 5). (b) **prior rejection**: read `.out-of-scope/*.md` and surface any that resembles this request.2. **Recommend.** Tell the maintainer your category and state recommendation with reasoning, plus a brief codebase summary relevant to the request (including whether it's already implemented). Wait for direction.3. **Verify the claim.** Before any grilling, check that the claim holds up. For a bug, reproduce it from the reporter's steps. For a PR, confirm the diff does what it claims: check it out, run the relevant tests or commands. Report what happened: confirmed (with code path), failed, or insufficient detail (a strong `needs-info` signal). A confirmed verification makes a much stronger agent brief.
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。未发现风险
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。发现 1 项风险
中风险

分流过程会持久修改或删除项目的决策文档

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

在梳理需求时,流程要求随着决定形成而直接更新 `CONTEXT.md` 和 ADR;拒绝增强请求时会创建或追加 `.out-of-scope/` 文件,重新考虑时还指示删除该文件。这些不是临时分流记录,而是仓库中的持久项目文档。

为什么需要注意

错误分类、提示注入或尚未最终确认的讨论可能改变项目术语和架构记录,或删除既有决策历史;`.out-of-scope/` 又会用于判断未来请求,因此一次错误写入可能持续影响后续议题的关闭决策。

这段代码的正常用途

这些持久修改确实存在,但上下文表明它们是分流流程的预期决策记录,并受维护者决定约束:建议后需等待指示;只有增强请求被决定拒绝时才创建或追加记录;删除发生在维护者改变既有决定时。因此候选描述的是有影响但目的相符、经授权的仓库维护,而非隐蔽文件破坏。用户仍可要求每次仓库写入或删除前展示差异并单独确认。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:76来自说明文档打开原文件
4. **Grill (if needed).** If the request needs fleshing out, call the Skill tool twice, for "grilling" and "domain-modeling", and grill it into shape a round of questions at a time, sharpening domain terms and updating `CONTEXT.md`/ADRs inline as decisions land.
查看另外 5 个位置
SKILL.md:82来自说明文档打开原文件
   - `needs-info`: post triage notes (template below).   - For `wontfix`, close the issue, with the comment depending on *why*:     - **Already implemented**: the change already exists in the codebase. Point to where it lives; do **not** write to `.out-of-scope/` (that KB is for *rejected* requests, not built ones).     - **Rejected (bug)**: give a polite explanation, then close.     - **Rejected (enhancement)**: write to `.out-of-scope/`, link to it from a comment, then close ([OUT-OF-SCOPE.md](OUT-OF-SCOPE.md)).   - `needs-triage`: apply the role. Optional comment if there's partial progress.
OUT-OF-SCOPE.md:90来自说明文档打开原文件
The flow:1. Maintainer decides a feature request is out of scope2. Check if a matching `.out-of-scope/` file already exists3. If yes: append the new issue to the "Prior requests" list4. If no: create a new file with the concept name, decision, reason, and first prior request5. Post a comment on the issue explaining the decision and mentioning the `.out-of-scope/` file6. Close the issue with the `wontfix` label
OUT-OF-SCOPE.md:99来自说明文档打开原文件
## Updating or removing out-of-scope filesIf the maintainer changes their mind about a previously rejected concept:- Delete the `.out-of-scope/` file- The skill does not need to reopen old issues; they're historical records- The new issue that triggered the reconsideration proceeds through normal triage
SKILL.md:72来自说明文档打开原文件
2. **Recommend.** Tell the maintainer your category and state recommendation with reasoning, plus a brief codebase summary relevant to the request (including whether it's already implemented). Wait for direction.3. **Verify the claim.** Before any grilling, check that the claim holds up. For a bug, reproduce it from the reporter's steps. For a PR, confirm the diff does what it claims: check it out, run the relevant tests or commands. Report what happened: confirmed (with code path), failed, or insufficient detail (a strong `needs-info` signal). A confirmed verification makes a much stronger agent brief.4. **Grill (if needed).** If the request needs fleshing out, call the Skill tool twice, for "grilling" and "domain-modeling", and grill it into shape a round of questions at a time, sharpening domain terms and updating `CONTEXT.md`/ADRs inline as decisions land.
OUT-OF-SCOPE.md:84来自说明文档打开原文件
## When to write to `.out-of-scope/`Only when an **enhancement** (not a bug) is *rejected* as `wontfix`. This applies to enhancement PRs exactly as it does to issues: a rejected PR is recorded here so the same request doesn't return as fresh code.Do **not** write here when something is closed as `wontfix` because it's **already implemented**. That's a built feature, not a rejected one; recording it would poison the dedup checks with false rejections. Instead, the closing comment points to where the feature already lives.
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。未发现风险
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。发现 1 项风险
中风险

外部议题、评论和 PR 差异被读入具有写权限的代理流程,但未标明其中指令不可信

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

流程要求读取完整正文、评论和代码差异,随后可发布评论、更改角色、关闭议题及写入仓库。所提供的规则没有要求把贡献者文字、代码注释或测试输出仅当作数据,也没有要求忽略其中面向代理的命令。

为什么需要注意

攻击者可在议题、评论或 PR 中放置提示注入内容,诱导代理偏离维护者意图、泄露其读取到的信息,或错误应用标签、评论和关闭操作。若生成的 agent brief 吸收了这些内容,风险还会传递给后续 AFK 代理。

流程要求把贡献者控制的正文、评论和 PR 差异读入代理上下文,之后代理可发评论、改角色、写仓库文件并关闭议题。虽然推荐阶段要求等待维护者指示,降低了未经确认操作的概率,但材料未要求把议题内容、代码注释和输出仅视为不可信数据;其中伪装成命令的文字因此可能影响后续操作。用户可限制写权限,并要求所有外部内容与操作指令隔离。

SKILL.md:68来自说明文档打开原文件
## Triage a specific issue or PR1. **Gather context.** Read the full issue or PR (body, comments, labels, author, dates; for a PR, the diff too). Parse any prior triage notes so you don't re-ask resolved questions. Explore the codebase using the project's domain glossary, respecting ADRs in the area. Run two checks against the codebase: (a) **redundancy**: search for an existing implementation of the requested behavior by domain concept (not just the request's wording), and report where you looked. If found, it's an already-implemented `wontfix` (step 5). (b) **prior rejection**: read `.out-of-scope/*.md` and surface any that resembles this request.2. **Recommend.** Tell the maintainer your category and state recommendation with reasoning, plus a brief codebase summary relevant to the request (including whether it's already implemented). Wait for direction.3. **Verify the claim.** Before any grilling, check that the claim holds up. For a bug, reproduce it from the reporter's steps. For a PR, confirm the diff does what it claims: check it out, run the relevant tests or commands. Report what happened: confirmed (with code path), failed, or insufficient detail (a strong `needs-info` signal). A confirmed verification makes a much stronger agent brief.4. **Grill (if needed).** If the request needs fleshing out, call the Skill tool twice, for "grilling" and "domain-modeling", and grill it into shape a round of questions at a time, sharpening domain terms and updating `CONTEXT.md`/ADRs inline as decisions land.
查看另外 3 个位置
SKILL.md:78来自说明文档打开原文件
5. **Apply the outcome:**   - `ready-for-agent`: post an agent brief comment ([AGENT-BRIEF.md](AGENT-BRIEF.md)).   - `ready-for-human`: same structure as an agent brief, but note why it can't be delegated (judgment calls, external access, design decisions, manual testing).   - `needs-info`: post triage notes (template below).   - For `wontfix`, close the issue, with the comment depending on *why*:     - **Already implemented**: the change already exists in the codebase. Point to where it lives; do **not** write to `.out-of-scope/` (that KB is for *rejected* requests, not built ones).     - **Rejected (bug)**: give a polite explanation, then close.     - **Rejected (enhancement)**: write to `.out-of-scope/`, link to it from a comment, then close ([OUT-OF-SCOPE.md](OUT-OF-SCOPE.md)).   - `needs-triage`: apply the role. Optional comment if there's partial progress.
AGENT-BRIEF.md:1来自说明文档打开原文件
# Writing Agent BriefsAn agent brief is a structured comment posted on a GitHub issue or PR when it moves to `ready-for-agent`. It is the authoritative specification that an AFK agent will work from. The original body and discussion are context: the agent brief is the contract.The brief states **what the agent should do**, which stretches to both surfaces: for an issue, that's building the change from nothing; for a PR, it's what's left to do *to the existing diff*: finish it, close gaps, address review points. Same principles either way; the PR example below shows the difference.
SKILL.md:70来自说明文档打开原文件
1. **Gather context.** Read the full issue or PR (body, comments, labels, author, dates; for a PR, the diff too). Parse any prior triage notes so you don't re-ask resolved questions. Explore the codebase using the project's domain glossary, respecting ADRs in the area. Run two checks against the codebase: (a) **redundancy**: search for an existing implementation of the requested behavior by domain concept (not just the request's wording), and report where you looked. If found, it's an already-implemented `wontfix` (step 5). (b) **prior rejection**: read `.out-of-scope/*.md` and surface any that resembles this request.2. **Recommend.** Tell the maintainer your category and state recommendation with reasoning, plus a brief codebase summary relevant to the request (including whether it's already implemented). Wait for direction.3. **Verify the claim.** Before any grilling, check that the claim holds up. For a bug, reproduce it from the reporter's steps. For a PR, confirm the diff does what it claims: check it out, run the relevant tests or commands. Report what happened: confirmed (with code path), failed, or insufficient detail (a strong `needs-info` signal). A confirmed verification makes a much stronger agent brief.4. **Grill (if needed).** If the request needs fleshing out, call the Skill tool twice, for "grilling" and "domain-modeling", and grill it into shape a round of questions at a time, sharpening domain terms and updating `CONTEXT.md`/ADRs inline as decisions land.
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。未发现风险

Skill 逻辑拆解

8 个说明模块

该 Skill 只允许显式调用;配置同时关闭模型自动调用和隐式调用,降低其在未被用户主动选择时修改议题的可能性。

查看原文
SKILL.md:2来自说明文档打开原文件
---name: triagedescription: Move issues and external PRs through a state machine of triage roles, categorise, verify, grill if needed, and write agent-ready briefs.disable-model-invocation: true---
agents/openai.yaml:4来自说明文档打开原文件
  short_description: "Move issues through triage roles"policy:  allow_implicit_invocation: false

常规流程先读取议题或 PR、评论、标签、作者、日期及 PR 差异,再向维护者提出分类和状态建议并等待指示。

查看原文
SKILL.md:68来自说明文档打开原文件
## Triage a specific issue or PR1. **Gather context.** Read the full issue or PR (body, comments, labels, author, dates; for a PR, the diff too). Parse any prior triage notes so you don't re-ask resolved questions. Explore the codebase using the project's domain glossary, respecting ADRs in the area. Run two checks against the codebase: (a) **redundancy**: search for an existing implementation of the requested behavior by domain concept (not just the request's wording), and report where you looked. If found, it's an already-implemented `wontfix` (step 5). (b) **prior rejection**: read `.out-of-scope/*.md` and surface any that resembles this request.2. **Recommend.** Tell the maintainer your category and state recommendation with reasoning, plus a brief codebase summary relevant to the request (including whether it's already implemented). Wait for direction.3. **Verify the claim.** Before any grilling, check that the claim holds up. For a bug, reproduce it from the reporter's steps. For a PR, confirm the diff does what it claims: check it out, run the relevant tests or commands. Report what happened: confirmed (with code path), failed, or insufficient detail (a strong `needs-info` signal). A confirmed verification makes a much stronger agent brief.

应用结果时,该 Skill 会发布评论和更改状态;对于某些 `wontfix` 结果,还会写入仓库并关闭议题。所有发布到追踪器的内容必须带 AI 生成声明。

查看原文
SKILL.md:13来自说明文档打开原文件
Every comment or issue posted to the issue tracker during triage **must** start with this disclaimer:```> *This was generated by AI during triage.*```
SKILL.md:78来自说明文档打开原文件
5. **Apply the outcome:**   - `ready-for-agent`: post an agent brief comment ([AGENT-BRIEF.md](AGENT-BRIEF.md)).   - `ready-for-human`: same structure as an agent brief, but note why it can't be delegated (judgment calls, external access, design decisions, manual testing).   - `needs-info`: post triage notes (template below).   - For `wontfix`, close the issue, with the comment depending on *why*:     - **Already implemented**: the change already exists in the codebase. Point to where it lives; do **not** write to `.out-of-scope/` (that KB is for *rejected* requests, not built ones).     - **Rejected (bug)**: give a polite explanation, then close.     - **Rejected (enhancement)**: write to `.out-of-scope/`, link to it from a comment, then close ([OUT-OF-SCOPE.md](OUT-OF-SCOPE.md)).   - `needs-triage`: apply the role. Optional comment if there's partial progress.

`ready-for-agent` 评论被定义为后续无人值守代理的权威规范,而原议题正文和讨论仅作为上下文。

查看原文
AGENT-BRIEF.md:1来自说明文档打开原文件
# Writing Agent BriefsAn agent brief is a structured comment posted on a GitHub issue or PR when it moves to `ready-for-agent`. It is the authoritative specification that an AFK agent will work from. The original body and discussion are context: the agent brief is the contract.The brief states **what the agent should do**, which stretches to both surfaces: for an issue, that's building the change from nothing; for a PR, it's what's left to do *to the existing diff*: finish it, close gaps, address review points. Same principles either way; the PR example below shows the difference.
从这里开始 · 工作说明SKILL.md
triage
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。

文件引用关系图

2 处引用
哪些文件发起引用引用了什么
连线表示真实的文件引用,不是运行顺序。点击节点可高亮相关连线,并查看具体文件和原文位置。虚线表示还有文件需要定位。
文件与检查记录4 个文件

检查范围与遗漏

逐文件查看涉及的内容

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

  • SKILL.md已纳入全文
  • AGENT-BRIEF.md已纳入全文
  • OUT-OF-SCOPE.md已纳入全文
  • agents/openai.yaml已纳入全文

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

  • AGENT-BRIEF.md配套文件
  • OUT-OF-SCOPE.md配套文件
  • SKILL.md工作说明
  • agents/openai.yaml配套文件

代码和说明中提到的操作

连接外部网站
OUT-OF-SCOPE.md:3来自说明文档打开原文件
The `.out-of-scope/` directory in a repo stores persistent records of rejected feature requests. It serves two purposes:
读取文件
OUT-OF-SCOPE.md:72来自说明文档打开原文件
During triage (Step 1: Gather context), read all files in `.out-of-scope/`. When evaluating a new issue:
读取了多少行
433
文件校验值(用于核对版本)
40cbae273fb016dd4b000edfd84a0d8965f1cdb7aa53f3ff1ab0455f15ff4444