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

Ask Matt Skill 安全审计

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

Ask which skill or flow fits your situation. A router over the skills in this repo.

第三方安全检查结论

先别安装或运行

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

推荐的向导会收集凭据并写入本地文件和 GitHub Secrets

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

路由说明要求代理在遇到只有人能完成的步骤时调用 `/wizard`。该向导生成交互式 Bash 脚本,打开网址、捕获用户输入的值,并把它们写入 `.env` 和 GitHub Secrets。材料未说明输入过滤、日志抑制、文件权限或避免把 `.env` 提交到仓库的保护措施。

为什么需要注意

如果捕获的值包含 API 密钥、访问令牌或其他凭据,它们可能留存在工作目录、终端记录或脚本处理路径中;错误提交或不当权限可能使凭据泄露。写入 GitHub Secrets 还会改变仓库或组织的安全配置。

这段证据能说明什么

材料确实说明 `/wizard` 会生成脚本,收集用户提供的值并写入 `.env` 和 GitHub Secrets;若用户随后运行该向导,凭据可能进入本地文件和远程仓库设置。但这里只是路由器对另一个 Skill 的说明,没有提供向导脚本、权限设置、日志行为或输入处理,因此无法确认候选所担忧的保护措施是否缺失。该路由器还明确禁止隐式调用,降低了仅因普通请求而自动触发的可能性。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:83来自说明文档打开原文件
- **`/to-questionnaire`** comes in when the thing blocking you isn't in your head or the codebase but in **someone else's**, and it writes them a questionnaire to fill in. It's the inverse of `/grill-me`: instead of interviewing you about the subject, it interviews you about the **send** (who it's going to, what you need back) and aims the questions at the gap. What comes back is material for `/grill-with-docs` or `/to-spec`.- **`/wizard`** is for the steps only a **human** can take: provisioning infrastructure, setting up credentials or CI secrets, clicking through an unfamiliar third-party dashboard, running a one-off migration or cutover. It generates an interactive bash script that opens each URL, captures each value, and writes it into `.env` and GitHub secrets, so the procedure stops being something you re-explain to an agent every time. Model-invoked, so the agent reaches for it the moment it hits a wall only you can pass. If the agent could just do it itself, it should; this is for where a human is genuinely in the loop.- **`/wait-what`** is the corrective for a message that didn't land. Use it mid-conversation, inside any other skill, and the agent re-pitches what it just said with the context you were missing, in plain English, using the `CONTEXT.md` vocabulary. It works after the fact; `/grill-with-docs` is the upfront cure, because a shared language agreed early is what stops the jargon arriving at all.
查看另外 2 个位置
SKILL.md:2来自说明文档打开原文件
---name: ask-mattdescription: Ask which skill or flow fits your situation. A router over the skills in this repo.disable-model-invocation: true---
agents/openai.yaml:4来自说明文档打开原文件
  short_description: "Find the right skill or workflow"policy:  allow_implicit_invocation: false
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。发现 1 项风险
中风险

仅请求路线建议可能被扩展为修改并提交代码

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

该 Skill 的声明用途是帮助选择技能或流程,但主流程指示对小任务“就在这里”调用 `/implement`,而该流程会在实现和审查后提交更改。选择路线本身不等同于用户授权修改或提交仓库。

为什么需要注意

如果代理把路由建议当作执行授权,用户可能在只想获得建议时看到工作区文件被修改,并生成新的 Git 提交;提交会使更改更持久,也可能混入用户尚未审阅的内容。

这段证据能说明什么

主流程确实把小型任务指向当前会话中的 `/implement`,并称该流程会审查后提交,因此如果代理把“推荐路线”直接当作执行授权,可能修改并提交用户文件。不过本 Skill 自称只是选择 Skill/流程的路由器,并禁用隐式调用;`/implement` 的实际指令也未提供。现有证据无法判定这些文字仅是路线说明,还是会在没有进一步同意时自动执行。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:2来自说明文档打开原文件
---name: ask-mattdescription: Ask which skill or flow fits your situation. A router over the skills in this repo.disable-model-invocation: true---
查看另外 2 个位置
SKILL.md:22来自说明文档打开原文件
   - **`/handoff`** back what you learned, and reference it from the original idea thread.3. **Branch: is this a multi-session build?**   - **Yes** → **`/to-spec`** (turn the thread into a spec), then **`/to-tickets`** to split it into tracer-bullet tickets, each declaring its **blocking edges**. On a local tracker that's one file per ticket under `.scratch/<feature>/issues/`, worked blockers-first by hand; on a real tracker the edges become native blocking links, so any ticket whose blockers are done can be grabbed: kick off **`/implement`** per ticket, **`/clear`ing context between each one**. Each ticket is self-contained, so the last one's context is disposable.   - **No** → **`/implement`** right here, in the same context window.   Either way, **`/implement`** builds each issue by driving **`/tdd`** internally (one red-green slice at a time), then closes out by running **`/code-review`**, a two-axis review (Standards + Spec) of the diff, before committing. Reach for **`/tdd`** on its own when you just want to build a concrete behaviour test-first without a full spec, and **`/code-review`** on its own whenever you want to review a branch or PR against a fixed point.
agents/openai.yaml:1来自说明文档打开原文件
interface:  display_name: "Ask Matt"  short_description: "Find the right skill or workflow"policy:  allow_implicit_invocation: false
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。发现 1 项风险
中风险

前置流程可能在未确认目标的情况下更改问题跟踪器配置

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

文档要求在首次工程流程前运行设置 Skill,以配置问题跟踪器、分类标签和文档布局。路由材料没有列出将修改的跟踪器、仓库、标签或文件,也没有显示确认步骤。

为什么需要注意

若代理把该前置条件当作自动授权,可能在错误的项目或共享问题跟踪器中创建或修改标签,并改变仓库文档结构,影响其他协作者和现有自动化。

这段证据能说明什么

文档把 `/setup-matt-pocock-skills`` 描述为首次工程流程前应运行的前置步骤,并明确说它会配置问题跟踪器、分类标签和文档布局;运行后可能改变仓库文件或外部跟踪器。但该设置 Skill 的实现、具体目标及确认机制均未提供,所以无法确认它会在未确认范围时修改任何系统,也无法判断修改是否已获用户授权。

这项判断针对展示的代码和适用条件,不表示风险已经实际发生。
SKILL.md:88来自说明文档打开原文件
## Precondition**`/setup-matt-pocock-skills`**: run before your first engineering flow to configure the issue tracker, triage labels, and doc layout the other skills assume. Custom issue trackers also work.
查看另外 2 个位置
SKILL.md:2来自说明文档打开原文件
---name: ask-mattdescription: Ask which skill or flow fits your situation. A router over the skills in this repo.disable-model-invocation: true---
agents/openai.yaml:4来自说明文档打开原文件
  short_description: "Find the right skill or workflow"policy:  allow_implicit_invocation: false
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。未发现风险
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。未发现风险

Skill 逻辑拆解

7 个说明模块

该 Skill 本身是工作流路由说明,不包含可执行脚本;其主要作用是根据任务情况推荐其他 Skill。元数据还明确关闭模型自动调用。

查看原文
SKILL.md:2来自说明文档打开原文件
---name: ask-mattdescription: Ask which skill or flow fits your situation. A router over the skills in this repo.disable-model-invocation: true---
agents/openai.yaml:1来自说明文档打开原文件
interface:  display_name: "Ask Matt"  short_description: "Find the right skill or workflow"policy:  allow_implicit_invocation: false

推荐的主流程可能从讨论直接进入实现;实现流程会运行测试驱动开发、代码审查并提交更改。

查看原文
SKILL.md:22来自说明文档打开原文件
   - **`/handoff`** back what you learned, and reference it from the original idea thread.3. **Branch: is this a multi-session build?**   - **Yes** → **`/to-spec`** (turn the thread into a spec), then **`/to-tickets`** to split it into tracer-bullet tickets, each declaring its **blocking edges**. On a local tracker that's one file per ticket under `.scratch/<feature>/issues/`, worked blockers-first by hand; on a real tracker the edges become native blocking links, so any ticket whose blockers are done can be grabbed: kick off **`/implement`** per ticket, **`/clear`ing context between each one**. Each ticket is self-contained, so the last one's context is disposable.   - **No** → **`/implement`** right here, in the same context window.   Either way, **`/implement`** builds each issue by driving **`/tdd`** internally (one red-green slice at a time), then closes out by running **`/code-review`**, a two-axis review (Standards + Spec) of the diff, before committing. Reach for **`/tdd`** on its own when you just want to build a concrete behaviour test-first without a full spec, and **`/code-review`** on its own whenever you want to review a branch or PR against a fixed point.

该路由还介绍了会产生持久文件或分支的流程,包括 CONTEXT.md、ADR、研究 Markdown、原型分支及本地工单文件。

查看原文
SKILL.md:17来自说明文档打开原文件
1. **`/grill-with-docs`** sharpens the idea by interview. Start here whenever you are **working in a working directory**: it's stateful, retaining what it learns in `CONTEXT.md` and ADRs. (No working directory? Use `/grill-me` instead, covered under Standalone. Both run the same `/grilling` primitive; `grill-with-docs` is the one that leaves a paper trail, which makes it the better of the two whenever a repo is there to leave it in.)2. **Branch: can you settle every question in conversation?** If a question needs a runnable answer (state, business logic, a UI you have to see), detour through a prototype, bridged by **`/handoff`** in both directions (a prototype lives in its own directory, which is exactly what `/handoff` is for; see Phase boundaries):
SKILL.md:80来自说明文档打开原文件
- **`/resolving-merge-conflicts`** works an in-progress merge or rebase conflict hunk by hunk, resolving by **intent** traced to each side's primary source rather than by picking lines, then finishes the operation. It never runs `--abort`. Standalone and off every flow: reach for it when you are already mid-conflict.- **`/prototype`** is a small, throwaway program that answers one design question: does this state model feel right, or what should this UI look like. Throwaway is a constraint on how the code is written, not a promise to destroy it: the answer folds into the real code, and the prototype itself is kept as a **primary source** on a `prototype/<name>` branch out of main, pointed at from the implementation issue. It's the detour in step 2 of the main flow, but reach for it any time a design question is hard to settle on paper.- **`/research`**: delegate reading legwork to a **background agent**: it investigates a question against **primary sources**, then leaves a cited Markdown file in the repo. Keep working while it reads. The file it produces is something to take *into* the main flow at `/grill-with-docs`, since research feeds the thinking rather than replacing it.- **`/to-questionnaire`** comes in when the thing blocking you isn't in your head or the codebase but in **someone else's**, and it writes them a questionnaire to fill in. It's the inverse of `/grill-me`: instead of interviewing you about the subject, it interviews you about the **send** (who it's going to, what you need back) and aims the questions at the gap. What comes back is material for `/grill-with-docs` or `/to-spec`.

首次工程流程的前置步骤被描述为配置问题跟踪器、分类标签和文档布局;所提供材料没有展示该配置流程的具体实现。

查看原文
SKILL.md:88来自说明文档打开原文件
## Precondition**`/setup-matt-pocock-skills`**: run before your first engineering flow to configure the issue tracker, triage labels, and doc layout the other skills assume. Custom issue trackers also work.
从这里开始 · 工作说明SKILL.md
ask-matt
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。

文件引用关系图

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

检查范围与遗漏

逐文件查看涉及的内容

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

  • SKILL.md已纳入全文
  • PHASE-BOUNDARIES.md已纳入全文
  • agents/openai.yaml已纳入全文

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

  • PHASE-BOUNDARIES.md配套文件
  • SKILL.md工作说明
  • agents/openai.yaml配套文件

代码和说明中提到的操作

连接外部网站
PHASE-BOUNDARIES.md:21来自说明文档打开原文件
**1. Can you continue in this session?** Two things make the answer yes: the next phase needs this phase as a **primary source**, or you have enough [smart zone](https://www.aihero.dev/ai-coding-dictionary/smart-zone) left (~150k tokens) for the next phase to fit. Grilling → implementation is the standard yes: the implementation wants the reasoning verbatim, not a summary of it. Continue costs nothing and loses nothing, so rule it out before anything else.
SKILL.md:32来自说明文档打开原文件
The limit on this is the **[smart zone](https://www.aihero.dev/ai-coding-dictionary/smart-zone)**: the window (~150k tokens on state-of-the-art models) within which the model still reasons sharply. If a session approaches it before `/to-tickets`, don't push on degraded; `/compact` at the nearest phase boundary and carry on (see Phase boundaries).
读取文件
SKILL.md:81来自说明文档打开原文件
- **`/prototype`** is a small, throwaway program that answers one design question: does this state model feel right, or what should this UI look like. Throwaway is a constraint on how the code is written, not a promise to destroy it: the an - **`/research`**: delegate reading legwork to a **background agent**: it investigates a question against **primary sources**, then leaves a cited Markdown file in the repo. Keep working while it reads. The file it produces is something to take *into* the main flow at `/grill-with-docs`, since research feeds the thinking rather than replacing it.- **`/to-questionnaire`** comes in when the thing blocking you isn't in your head or the codebase but in **someone else's**, and it writes them a questionnaire to fill in. It's the inverse of `/grill-me`: instead of interviewing you about t 
运行命令
SKILL.md:83来自说明文档打开原文件
- **`/to-questionnaire`** comes in when the thing blocking you isn't in your head or the codebase but in **someone else's**, and it writes them a questionnaire to fill in. It's the inverse of `/grill-me`: instead of interviewing you about t - **`/wizard`** is for the steps only a **human** can take: provisioning infrastructure, setting up credentials or CI secrets, clicking through an unfamiliar third-party dashboard, running a one-off migration or cutover. It generates an interactive bash script that opens each URL, captures each value, and writes it into `.env` and GitHub secrets, so the procedure stops being something you re-explain to an agent every time. Model-invoked, so the agent reaches for it the moment it hits a wall only you can pass. If the agent could just do it itself, it should; this is for where a human is genuinely in the loop.- **`/wait-what`** is the corrective for a message that didn't land. Use it mid-conversation, inside any other skill, and the agent re-pitches what it just said with the context you were missing, in plain English, using the `CONTEXT.md` voc 
读取密钥或账号配置
SKILL.md:83来自说明文档打开原文件
- **`/to-questionnaire`** comes in when the thing blocking you isn't in your head or the codebase but in **someone else's**, and it writes them a questionnaire to fill in. It's the inverse of `/grill-me`: instead of interviewing you about t - **`/wizard`** is for the steps only a **human** can take: provisioning infrastructure, setting up credentials or CI secrets, clicking through an unfamiliar third-party dashboard, running a one-off migration or cutover. It generates an interactive bash script that opens each URL, captures each value, and writes it into `.env` and GitHub secrets, so the procedure stops being something you re-explain to an agent every time. Model-invoked, so the agent reaches for it the moment it hits a wall only you can pass. If the agent could just do it itself, it should; this is for where a human is genuinely in the loop.- **`/wait-what`** is the corrective for a message that didn't land. Use it mid-conversation, inside any other skill, and the agent re-pitches what it just said with the context you were missing, in plain English, using the `CONTEXT.md` voc 
读取了多少行
153
文件校验值(用于核对版本)
43304025343ae0713ed397f4a71d60fb65735f72bd02032d372015eae5452766