Hook 政策创建器
把代理行为要求转化为可执行的生命周期 Hook。
技能明确将目标限定为 .github/hooks/,并要求澄清触发事件及阻止、警告或注入模式,具备一定的用户参与和范围意识;但未要求在写入前取得明确确认,未说明钩子或伴随脚本的数据流、敏感信息处理、外部副作用、权限隔离或回滚机制,因此扣分。
步骤逻辑基本一致,涵盖提取需求、澄清、起草和迭代;但依赖未提供的 agent-customization/hooks.md,未给出可验证模板、JSON 校验、脚本失败处理或针对关键路径的具体测试,静态评估不超过10分,故扣分。
名称、目标和主要场景清楚,覆盖 PreToolUse、SessionStart、Stop 等事件,并能处理阻止、警告和上下文注入;但未定义不适用范围、输入输出契约、语义触发边界,也未说明中文支持或中国大陆网络环境适配,因此扣分。
Front Matter、参数提示、路径约定和渐进式步骤较清晰,仓库 README 与 LICENSE 提供了 Microsoft 归属和 MIT 许可证据;但缺少版本、变更记录、维护责任、更新路径、完整安装依赖说明、示例和故障排查信息,因此扣分。
技能能把对 agent 行为的诉求转化为 hook 草案,并要求总结约束和测试方式,核心价值明确;但没有提供可直接使用的模板或代表性输出,脚本与 JSON 的正确性仍需人工修订和验证,静态上限为7分,故扣分。
选定文件本身可审计,相关仓库材料显示存在测试与 CI 基础设施;但没有针对该技能的测试、执行记录或第三方复现证据,且关键 agent-customization 资料未提供,只有有限的静态可追溯性,因此扣分。
- 写入 .github/hooks/ 前应明确确认最终策略、触发事件、阻止条件和文件变更范围。
- 应依据 hooks.md 验证 JSON schema、命令权限、工作目录、脚本输入输出及失败时的安全行为,并设计可恢复的回滚方案。
- 不要将机密、用户内容或不必要的环境信息传入钩子;当前材料未说明数据流和敏感信息处理。
它能做什么 & 适用场景
此技能用于创建 JSON Hook,以约束代理行为或自动化代理生命周期事件。它首先检查对话历史,提取需要阻止、门控、注入上下文或自动处理的行为。若政策需求不明确,它会询问触发事件、处理方式以及是否需要配套脚本。最终文件应创建在 .github/hooks/,并在定稿后说明约束内容、测试方式和后续可创建的定制项。
读取当前对话历史,识别诸如禁止运行某命令、执行某操作前必须检查、或在特定时点注入上下文等需求;在需要时询问 Hook 事件、阻止/警告/注入方式和配套脚本需求;起草并保存 Hook JSON 及相关脚本到 .github/hooks/;检查草案中最含糊或薄弱的部分并向用户提问;完成后总结 Hook 的约束、建议测试方法和相关定制方向。
- 需要限制代理运行某些命令的开发者,可让技能根据对话中的约束起草阻止或门控 Hook。
- 希望在代理使用工具前注入项目上下文的团队,可通过该技能定义相应的上下文注入策略。
- 需要在会话开始或结束时自动执行处理的用户,可用它明确 SessionStart 或 Stop 等事件的自动化需求。
- 只有模糊的代理治理想法、尚未确定触发事件或是否需要脚本的用户,可让技能先提出澄清问题。
优缺点一览
- 专门处理 .github/hooks/ 下的 Hook JSON 和配套脚本。
- 会从对话历史中提炼代理行为约束,而不是只等待用户提供完整规格。
- 覆盖阻止、门控、警告、上下文注入以及会话和工具使用自动化等需求。
- 包含对工作目录和相对路径的明确约定,并禁止在非插件场景下使用环境变量进行路径寻址。
- SKILL.md 没有列出具体 Hook JSON 模板、事件字段或脚本示例,并要求另行加载 agent-customization 的 hooks.md。
- 该技能的 frontmatter 含有 disable-model-invocation,移植到其他客户端可能需要调整元数据或调用方式。
- 来源没有提供独立安装命令、测试套件或已验证的平台清单。
- 如果对话中没有清晰的政策需求,用户必须补充触发事件、处理方式以及是否需要配套脚本。
如何安装
该技能位于 microsoft/vscode 仓库的 extensions/copilot/assets/prompts/skills/create-hook/SKILL.md。README 没有提供单独安装命令;如使用整个技能集合,应从 https://github.com/microsoft/vscode 获取仓库,并保留该相对路径。具体客户端中的安装或注册步骤未在来源中说明。
如何使用
在支持该 SKILL.md 的 Agent Skills 客户端中调用“create-hook”,并说明要强制执行或自动化的行为,例如:“不要运行数据库删除命令,除非先要求我确认。”技能会先检查对话历史;如果无法明确推导政策需求,它会询问触发事件、应阻止/警告/注入的方式,以及是否需要配套脚本。生成内容应保存到工作区的 .github/hooks/。