skill-standardization by akillness/oh-my-gods
npx skills add https://github.com/akillness/oh-my-gods --skill skill-standardizationevals/evals.json)| 字段 | 是否必需 | 约束条件 |
|---|---|---|
name | 是 | 1–64 个字符,小写字母数字 + 连字符,无前导/尾随/连续连字符,必须与父目录名匹配 |
description | 是 | 1–1024 个字符,必须描述技能的作用以及何时触发 |
allowed-tools |
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
| 否 |
| 预先批准的工具列表,以空格分隔 |
compatibility | 否 | 最多 500 个字符,环境要求 |
license | 否 | 许可证名称或引用捆绑文件 |
metadata | 否 | 用于附加字段的任意键值映射 |
skill-name/
├── SKILL.md # 必需
├── scripts/ # 可选:可执行脚本
├── references/ # 可选:详细文档
├── assets/ # 可选:模板、图像、数据
└── evals/ # 可选:评估测试用例
└── evals.json
| 层级 | 加载内容 | 时机 | 令牌预算 |
|---|
在技能目录上运行验证脚本:
bash scripts/validate_skill.sh path/to/skill-directory
验证目录中的所有技能:
bash scripts/validate_skill.sh --all .agent-skills/
脚本检查:
name, description)name 格式:小写,无连续连字符,与目录名匹配description 长度:1–1024 个字符allowed-tools 格式:以空格分隔(非 YAML 列表)description 字段决定了技能何时触发。描述不当意味着技能永远不会激活;描述过于宽泛则会在错误时间触发。
模板:
description: >
[技能的作用 — 列出具体操作。]
当 [触发条件] 时使用。即使用户没有明确提及 [领域关键词] — 也会在以下情况触发:[同义词列表]。
原则(来自 agentskills.io):
优化前 / 优化后:
# 优化前(描述不当 — 从不触发)
description: Helps with PDFs.
# 优化后(优化 — 可靠触发)
description: >
Extract text and tables from PDF files, fill forms, merge and split documents.
Use when the user needs to work with PDF files, even if they don't explicitly
say 'PDF' — triggers on: fill form, extract text from document, merge files,
read scanned pages.
使用此模板作为起点:
---
name: skill-name
description: >
[技能的作用及其处理的具体操作。]
当 [触发条件] 时使用。触发关键词:[关键词列表]。
allowed-tools: Bash Read Write Edit Glob Grep
metadata:
tags: tag1, tag2, tag3
version: "1.0"
---
# 技能标题
## 何时使用此技能
- 场景 1
- 场景 2
## 操作说明
### 步骤 1: [操作]
内容...
### 步骤 2: [操作]
内容...
## 示例
### 示例 1: [场景]
输入: ...
输出: ...
## 最佳实践
1. 实践 1
2. 实践 2
## 参考资料
- [链接](url)
| 旧版标题 | 标准标题 |
|---|---|
## Purpose | ## When to use this skill |
## When to Use | ## When to use this skill |
## Procedure | ## Instructions |
## Best Practices | ## Best practices |
## Reference | ## References |
## Output Format | ## Output format |
创建包含 2–5 个真实测试提示的 evals/evals.json:
{
"skill_name": "your-skill-name",
"evals": [
{
"id": 1,
"prompt": "应触发此技能的真实用户消息",
"expected_output": "成功时的描述",
"assertions": [
"具体的可验证声明(文件存在、计数正确、格式有效)",
"另一个具体声明"
]
}
]
}
好的断言是可验证的:文件存在、JSON 有效、图表有 3 个条形。避免模糊的断言,如"输出良好"。
scripts/validate_skill.sh — 根据 Agent Skills 规范验证 SKILL.mdbash scripts/validate_skill.sh .agent-skills/my-skill/
输出:
Validating: .agent-skills/my-skill/SKILL.md
✓ Required field: name = 'my-skill'
✓ Required field: description present
✗ Description length: 1087 chars (max 1024)
✓ Name format: valid lowercase
✗ Name/directory mismatch: name='myskill' vs dir='my-skill'
✓ Recommended section: When to use this skill
✓ Recommended section: Instructions
⚠ Missing recommended section: Examples
✓ File length: 234 lines (OK)
Issues: 2 errors, 1 warning
bash scripts/validate_skill.sh --all .agent-skills/
# 错误 — 对于某些验证器,metadata 内的 tags 是非标准的
metadata:
tags: [tag1, tag2] # 列表语法
platforms: Claude # 非规范字段
# 正确 — 根据 Agent Skills 规范
metadata:
tags: tag1, tag2 # 字符串值
allowed-tools: Bash Read Write # 以空格分隔,非 YAML 列表
references/uvx ruff@0.8.0 而不仅仅是 ruff 以确保可复现性--flag 输入,切勿使用 TTY 提示每周安装数
1
仓库
首次出现
1 天前
安全审计
安装于
mcpjam1
claude-code1
replit1
junie1
windsurf1
zencoder1
evals/evals.json) to a skill| Field | Required | Constraints |
|---|---|---|
name | Yes | 1–64 chars, lowercase alphanumeric + hyphens, no leading/trailing/consecutive hyphens, must match parent directory name |
description | Yes | 1–1024 chars, must describe what skill does AND when to trigger |
allowed-tools | No | Space-delimited list of pre-approved tools |
compatibility | No | Max 500 chars, environment requirements |
license | No | License name or reference to bundled file |
metadata | No | Arbitrary key-value map for additional fields |
skill-name/
├── SKILL.md # Required
├── scripts/ # Optional: executable scripts
├── references/ # Optional: detailed documentation
├── assets/ # Optional: templates, images, data
└── evals/ # Optional: evaluation test cases
└── evals.json
| Tier | What's loaded | When | Token budget |
|---|---|---|---|
| 1. Catalog | name + description | Session start | ~100 tokens per skill |
| 2. Instructions | Full SKILL.md body | On activation | < 5000 tokens (500 lines max) |
| 3. Resources | scripts/, references/ | When needed | Varies |
Run the validation script on a skill directory:
bash scripts/validate_skill.sh path/to/skill-directory
Validate all skills in a directory:
bash scripts/validate_skill.sh --all .agent-skills/
The script checks:
name, description)name format: lowercase, no consecutive hyphens, matches directory namedescription length: 1–1024 charactersallowed-tools format: space-delimited (not YAML list)The description field determines when a skill triggers. A weak description means the skill never activates; an over-broad one triggers at wrong times.
Template:
description: >
[What the skill does — list specific operations.]
Use when [trigger conditions]. Even if the user doesn't explicitly
mention [domain keyword] — also triggers on: [synonym list].
Principles (from agentskills.io):
Before / After:
# Before (weak — never triggers)
description: Helps with PDFs.
# After (optimized — reliable triggering)
description: >
Extract text and tables from PDF files, fill forms, merge and split documents.
Use when the user needs to work with PDF files, even if they don't explicitly
say 'PDF' — triggers on: fill form, extract text from document, merge files,
read scanned pages.
Use this template as the starting point:
---
name: skill-name
description: >
[What it does and specific operations it handles.]
Use when [trigger conditions]. Triggers on: [keyword list].
allowed-tools: Bash Read Write Edit Glob Grep
metadata:
tags: tag1, tag2, tag3
version: "1.0"
---
# Skill Title
## When to use this skill
- Scenario 1
- Scenario 2
## Instructions
### Step 1: [Action]
Content...
### Step 2: [Action]
Content...
## Examples
### Example 1: [Scenario]
Input: ...
Output: ...
## Best practices
1. Practice 1
2. Practice 2
## References
- [Link](url)
| Legacy heading | Standard heading |
|---|---|
## Purpose | ## When to use this skill |
## When to Use | ## When to use this skill |
## Procedure | ## Instructions |
## Best Practices | ## Best practices |
Create evals/evals.json with 2–5 realistic test prompts:
{
"skill_name": "your-skill-name",
"evals": [
{
"id": 1,
"prompt": "Realistic user message that should trigger this skill",
"expected_output": "Description of what success looks like",
"assertions": [
"Specific verifiable claim (file exists, count is correct, format is valid)",
"Another specific claim"
]
}
]
}
Good assertions are verifiable : file exists, JSON is valid, chart has 3 bars. Avoid vague assertions like "output is good."
scripts/validate_skill.sh — Validates a SKILL.md against the Agent Skills specbash scripts/validate_skill.sh .agent-skills/my-skill/
Output:
Validating: .agent-skills/my-skill/SKILL.md
✓ Required field: name = 'my-skill'
✓ Required field: description present
✗ Description length: 1087 chars (max 1024)
✓ Name format: valid lowercase
✗ Name/directory mismatch: name='myskill' vs dir='my-skill'
✓ Recommended section: When to use this skill
✓ Recommended section: Instructions
⚠ Missing recommended section: Examples
✓ File length: 234 lines (OK)
Issues: 2 errors, 1 warning
bash scripts/validate_skill.sh --all .agent-skills/
# WRONG — tags inside metadata is non-standard for some validators
metadata:
tags: [tag1, tag2] # list syntax
platforms: Claude # non-spec field
# CORRECT — per Agent Skills spec
metadata:
tags: tag1, tag2 # string value
allowed-tools: Bash Read Write # space-delimited, not a YAML list
references/uvx ruff@0.8.0 not just ruff to ensure reproducibility--flag inputs, never TTY promptsWeekly Installs
1
Repository
First Seen
1 day ago
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
mcpjam1
claude-code1
replit1
junie1
windsurf1
zencoder1
Skills CLI 使用指南:AI Agent 技能包管理器安装与管理教程
46,600 周安装
## Reference | ## References |
## Output Format | ## Output format |