Matt Pocock 技能集
安全使用 Matt Pocock Skills:文本权限、工单写入与本地文件
把指令更新当作行为变化审查,限制工单操作,并区分分流状态规则与真正强制执行的授权系统。
你将学会
- 纯文本也能请求重要操作
- 接触真实工单系统前先映射角色
- 让改动可检查,也可恢复
开始前需要
- 理解基础仓库、工单系统与测试概念
- 能够区分指令内容和执行权限
选择采用方式,并追踪相关文件、权限边界和验证证据。
先看结论
- 指令更新可能改变 Agent 尝试执行的操作。
- 规范分流角色需要显式映射到实际标签。
- 角色数量检查不等于授权或完整状态机。
纯文本也能请求重要操作
Markdown 技能不是二进制文件,但并不因此天然无害。它可以要求 Agent 借助宿主工具创建任务、关闭工单、修改项目指令或提交代码。技能更新应作为潜在行为变化审查,工具权限必须与指令文字分开;安装不等于批准包内描述的一切操作。
开发链接脚本展示了另一类风险:维护代码会替换本地目录。固定实现操作用户级技能位置,并在建立链接前删除同名非符号链接目标。验证文章论断不需要真的运行它;源码已经能说明该操作,本系列特意保留未执行状态。
接触真实工单系统前先映射角色
triage 定义了两个分类角色和五个状态角色,完成分流后预期各有一个。真实系统的标签文字可以不同,因此 setup 需要记录映射;状态角色冲突时应交给维护者处理。这些是文档表达的流程规则,不是保证每条工单都遵守的数据库约束。
源码还区分评估请求与应用结果。结果可能包括发布说明、索要信息或关闭工单,AI 生成的分流沟通需要披露来源。首次试验应使用本地样例并检查拟议修改。外部工单和 PR 正文是请求证据,不是扩大 Agent 权限的可信指令。
让改动可检查,也可恢复
记录哪个源码版本引入了指令变化,以及受影响的项目约定。启用新行为之前,检查工单目标、标签映射和上下文文档的差异;保留可恢复的本地定制,避免上游更新抹掉团队依赖的决策。这些工作并不要求文章生成器获得生产工单权限。
下方教学校验器只检查输入的规范角色是否恰好包含一个分类和一个状态。它不认证用户、不转换标签名称、不批准状态迁移,也不调用 API。边界刻意保持很小,用来演示如何验证一个不变量,而不是把简短示例包装成完整安全的工单分流系统。
实施步骤
- 1
检查固定版本中会触发实际操作的指令。
- 2
让首次试验只接触本地工单夹具。
- 3
任何外部写入前先检查目标与标签映射。
- 4
保留指令变更差异和回退路径。
可复制示例
function validRoles(roles) {
const categories = new Set(["bug", "enhancement"]);
const states = new Set(["needs-triage", "needs-info", "ready-for-agent", "ready-for-human", "wontfix"]);
const unique = new Set(roles);
return [...unique].filter(x => categories.has(x)).length === 1
&& [...unique].filter(x => states.has(x)).length === 1;
}
console.log(validRoles(["bug", "needs-info"]));
console.log(validRoles(["bug", "needs-info", "ready-for-agent"]));常见问题
调用标记能构成完整安全边界吗?
不能。它为兼容宿主表达调用策略,实际工具权限与用户授权仍需单独执行。
示例校验器会批准关闭工单吗?
不会。它只检查角色数量,不进行任何工单操作。
资料来源
- scripts/link-skills.sh来源核查 2026-09-08
- .agents/invocation.md来源核查 2026-09-08
- skills/engineering/triage/SKILL.md来源核查 2026-09-08