用途
Skill Catalog Curator 用于只读的技能目录卫生检查。它报告问题,但不会删除、重命名、安装、更新或覆盖技能。
默认工作流:检查请求的根目录。若未指定,则包含以下现有根目录:
- ~/.agents/skills
- ~/.codex/skills
- ~/TheAngrySkills/skills
主要能力
扫描器
使用 scripts/scan_skill_catalog.py 进行确定性检查。
常用命令:
python3 scripts/scan_skill_catalog.py
python3 scripts/scan_skill_catalog.py --root ~/.agents/skills --root ~/TheAngrySkills/skills
python3 scripts/scan_skill_catalog.py --json
扫描器检查:跨根目录的重复 frontmatter name 值、重复文件夹名、文件夹名与 frontmatter name 不匹配、相同文件夹名的本地/安装副本漂移(按目录哈希)、缺失 agents/openai.yaml、agents/openai.yaml 默认提示未提及 $skill-name、占位符/TODO 模板残留、过短或过于通用的描述。
Frontmatter 审计器
使用 scripts/audit_skill_frontmatter.py 判断技能是否能良好路由、清晰触发、保持紧凑、避免发布本地机器元数据、避免无操作指令文本。默认 profile 为 shared。
python3 <this-skill>/scripts/audit_skill_frontmatter.py <skill-or-root>
python3 <this-skill>/scripts/audit_skill_frontmatter.py <skill-or-root> --profile shared
python3 <this-skill>/scripts/audit_skill_frontmatter.py <skill-or-root> --profile codex
python3 <this-skill>/scripts/audit_skill_frontmatter.py <skill-or-root> --profile agentskills
python3 <this-skill>/scripts/audit_skill_frontmatter.py <skill-or-root> --json
它检查:frontmatter 是否是可解析的真实 YAML、name 有效性及文件夹名匹配、description 长度/词数/触发语言、额外 frontmatter 字段、过大的 SKILL.md、缺失 agents/openai.yaml、SKILL.md 和引用中的本地文件系统路径、可能的无操作指令行。无操作发现是信息性的,保留能通过具体约束改变行为的行。
Profiles:shared(默认,允许跨团队会话的元数据)、codex(更严格的 Codex 风格)、agentskills(增加 Sensei/agentskills 风格提示)。
触发测试夹具
使用 scripts/generate_trigger_tests.py 从技能 frontmatter 创建 Waza 兼容的 trigger_tests.yaml 夹具。优先使用 WHEN: 或 USE FOR: 中的显式引号短语。
python3 scripts/generate_trigger_tests.py <skill-dir>
python3 scripts/generate_trigger_tests.py <skill-dir> --write tests
这些夹具测试预期触发意图,但不证明 Codex 在实时会话中选择了该技能。
安全准入
使用 scripts/security_scan_skill.py 判断技能是否足够安全可准入、安装或更新。这是安全通道,不是质量通道。
python3 scripts/security_scan_skill.py skills/example-skill
python3 scripts/security_scan_skill.py skills/example-skill --json
python3 scripts/security_scan_skill.py scan-root skills --json
python3 scripts/security_scan_skill.py diff /tmp/old-skill /tmp/new-skill --json
python3 scripts/security_admission_pipeline.py update-plan --candidate-root skills --installed-root ~/.agents/skills --json
python3 scripts/security_admission_pipeline.py update-apply --plan /tmp/skill-update-plan.json --only-safe --confirm
python3 scripts/security_admission_pipeline.py quarantine suspicious-skill --root ~/.agents/skills --quarantine-root ~/.agents/quarantine --reason "blocked scan" --confirm
python3 scripts/security_admission_pipeline.py skillspector skills/example-skill --report-dir /tmp/skillspector-report --json
安全扫描器是确定性、离线、只读的。它不执行候选技能代码、不安装依赖、不修改活跃根目录、不替代人工批准。检查项包括:远程下载执行(curl | sh)、内联 shell/运行时执行、凭据路径读取、持久化与全局变更面、提权指令、网络外泄模式、策略绕过或隐藏指令、全局包安装、MCP/插件/hook/Codex 配置变更面、广泛文件系统扫描、捆绑脚本/可执行文件/依赖清单/工作流/Docker 文件/嵌套代理指令文件/符号链接/路径逃逸。
安全裁决:safe_to_install、safe_docs_only、needs_human_review、quarantine、blocked_malicious、blocked_unscannable。
仓库 CLI
在 TheAngrySkills 仓库内工作时,优先使用仓库 CLI 包装器:
scripts/theangry-skills.mjs score skills/core/skill-catalog-curator
scripts/theangry-skills.mjs audit skills/core/skill-catalog-curator
scripts/theangry-skills.mjs check --root skills --profile shared
scripts/theangry-skills.mjs trigger-tests skills/core/skill-catalog-curator --write tests
scripts/theangry-skills.mjs security scan skills/core/skill-catalog-curator --json
scripts/theangry-skills.mjs security scan-root skills --json
scripts/theangry-skills.mjs security diff /tmp/old-skill /tmp/new-skill --json
scripts/theangry-skills.mjs security skillspector skills/core/skill-catalog-curator --report-dir /tmp/skillspector-report --json
scripts/theangry-skills.mjs update-plan --candidate-root skills --installed-root ~/.agents/skills --json
scripts/theangry-skills.mjs update-apply --plan /tmp/skill-update-plan.json --only-safe --confirm
scripts/theangry-skills.mjs quarantine suspicious-skill --root ~/.agents/skills --quarantine-root ~/.agents/quarantine --reason "blocked scan" --confirm
scripts/theangry-skills.mjs check --root skills --strict --emit-proof reports/skill-audit-shared.md
scripts/theangry-skills.mjs sensei-version
仅在操作者需要 PATH 命令时安装包装器:
scripts/install-theangry-skills-cli.sh
使用方式
审查发现结果按严重程度分类:error(可能破坏技能发现或真实的本地-远端漂移)、warning(可能过时元数据、占位符文本或重复目录条目)、info(有用清单或可选清理候选)。在破坏性清理前,要求用户批准确切的路径和操作。
报告输出格式:Scope(扫描的根目录)、Summary(技能数、按严重程度的问题数)、Critical findings(包含确切路径的 error/warning 项目)、Recommended actions(有序、非破坏性的下一步)、Not done(任何需要用户批准的事项)。
不要将重复名称自动视为错误。某些重复在仓库与已安装比较期间是预期的;真正的风险是无法解释的漂移、过时元数据或冲突的 frontmatter。
手动检查外部 Sensei 比较器是否变更:
python3 scripts/check_external_auditors.py
每月或主要技能集发布前运行一次。它只检查版本,不安装 Sensei 或修改技能。
适用场景
- 在批量更新或发布前审计根目录下的每个直接技能目录。
- 在决定更新是否足够安全之前,比较旧安装技能与新候选技能。
- 在更新已安装根目录之前生成更新计划。
- 判断候选技能是否足够安全可准入、安装或更新。
限制
- 只读工具,不会自动执行清理操作。
- 触发测试夹具不证明 Codex 在实时会话中选择了该技能。
- 安全裁决与质量分数分离。
- 外部扫描器(如 SkillSpector)不替代本地确定性拒绝规则。
- 生成的文档技能可能包含高风险命令,阻止裁决应视为硬性推广门槛,而非恶意意图的自动证明。
分类
安全与审计
来源
https://www.skills.sh/theangrypit/theangryskills/skill-catalog-curator