Eigenskill Builder
The meta-skill. This skill teaches AI agents how to build, validate, and publish skills on ClawHub. If you're creating a new skill, this is your blueprint.
When to Use
- - Creating a new skill from scratch
- Validating an existing skill against quality standards
- Publishing a skill to ClawHub
- Designing skill descriptions with proper trigger/exclusion boundaries
- Setting up references/ directories for supplementary material
- Planning skill graphs for large skill libraries (50+)
When NOT to Use
- - Writing prompts or prompt templates (use a prompt-engineering skill)
- Building agent memory systems (use agent-memory-architecture)
- Orchestrating multiple agents (use agent-orchestration)
- Fine-tuning models or training data preparation
- Building MCP servers or tools (that's tool development, not skill development)
1. Skill Anatomy
Every skill is a directory containing at minimum a SKILL.md file. The directory name should be kebab-case and match the skill name.
Directory Structure
CODEBLOCK0
SKILL.md Structure
CODEBLOCK1
2. YAML Frontmatter Specification
The frontmatter block is the machine-readable identity of the skill. It must be valid YAML between --- delimiters.
Required Fields
| Field | Type | Description | Example |
|---|
| INLINECODE2 | string | Kebab-case identifier, unique on ClawHub | INLINECODE3 |
| INLINECODE4 |
string | Single-quoted paragraph. Must include trigger AND exclusion. | See below |
|
license | string | SPDX identifier |
MIT,
Apache-2.0,
CC-BY-4.0 |
Optional Fields
| Field | Type | Description | Example |
|---|
| INLINECODE9 | string | Semver | INLINECODE10 |
| INLINECODE11 |
string | Creator name or handle |
@openclaw |
|
tags | list | Discovery tags |
[finance, analysis, cfp] |
|
depends | list | Other skills this depends on |
[agent-memory-architecture] |
|
metadata.openclaw.emoji | string | Display emoji on ClawHub |
'💰' |
|
metadata.openclaw.tier | string | Complexity tier |
foundational,
intermediate,
advanced |
|
metadata.openclaw.models | list | Models this skill works best with |
[claude-opus-4-6, claude-sonnet-4-6] |
Description Best Practices
The description field is the most important field. It's what agents use to decide whether to load the skill. It must be:
- 1. Specific — list the concrete things the skill covers
- Bounded — say what it does NOT cover
- Trigger-rich — include keywords an agent would search for
Good:
CODEBLOCK2
Bad:
CODEBLOCK3
Bad:
description: 'Comprehensive enterprise-grade financial analysis solution leveraging AI-powered insights for transformative business intelligence.'
3. References Directory Convention
The references/ directory holds supplementary material that the skill can point to but that shouldn't be in the main SKILL.md (to keep it focused).
Rules
- 1. One level deep only —
references/file.md is fine. references/sub/file.md is not. - Never chain references — a reference file should not reference another reference file. References are leaves, not nodes.
- Keep references self-contained — each file should make sense on its own without reading SKILL.md first.
- Name descriptively —
api-authentication.md not ref1.md.
When to Use References vs Inline Content
| Content Type | Location | Rationale |
|---|
| Core methodology | SKILL.md | Agent needs this to execute |
| Quick reference tables |
SKILL.md | Frequently accessed |
| Detailed API docs | references/ | Only needed for specific tasks |
| Extended examples | references/ | Useful but not essential |
| Cheat sheets | references/ | Quick lookup, not learning |
| Historical context | references/ | Background, not action |
Example References Directory
CODEBLOCK5
4. Negative Boundaries
Every skill MUST define what it does NOT do. This is not optional — it's the most important part of skill design after the core content.
Why Negative Boundaries Matter
Without negative boundaries:
- - Agents load wrong skills for tasks → bad output
- Skills overlap silently → conflicts and confusion
- Users don't know where one skill ends and another begins
The Exclusion Checklist
For every skill, explicitly answer:
- 1. Adjacent skills — What similar skills exist that this one is NOT?
- Common misconceptions — What do people assume this covers that it doesn't?
- Scope ceiling — What's the most complex thing this skill can handle? What's above that ceiling?
- Scope floor — What's too simple for this skill? (e.g., "don't use this to add two numbers")
Template
CODEBLOCK6
Example
CODEBLOCK7
5. Description Interview Process
When building a new skill, interview yourself (or the skill author) with these questions to produce a high-quality description.
The Interview
Step 1: Define Triggers
CODEBLOCK8
Step 2: Define Exclusions
CODEBLOCK9
Step 3: Define Dependencies
CODEBLOCK10
Step 4: Write the Description
Combine triggers, exclusions, and dependencies into a single paragraph:
CODEBLOCK11
Step 5: Test the Description
Ask: "If an agent read only this description, would it correctly decide to load or skip this skill for these 10 test queries?"
Test with 5 queries that SHOULD trigger and 5 that should NOT.
6. Scripts Directory
The scripts/ directory holds automation for skill lifecycle operations.
Common Scripts
CODEBLOCK12
CODEBLOCK13
7. ClawHub CLI Workflow
ClawHub is the registry for discovering, installing, and publishing skills.
Commands
CODEBLOCK14
Publishing Checklist (Pre-publish)
Before running clawhub publish:
- 1.
scripts/validate.sh passes - Description includes trigger AND exclusion language
- All examples are tested and working
- References are one level deep only
- No secrets, API keys, or credentials in any file
- License is specified and compatible
- Version is bumped if updating existing skill
Publishing Flow
CODEBLOCK15
8. Quality Checklist
Score every skill against these 10 criteria before publishing.
| # | Criterion | Pass/Fail | Notes |
|---|
| 1 | SKILL.md exists with valid YAML frontmatter | Required | Must parse without errors |
| 2 |
Name is kebab-case and unique | Required | Check
clawhub search first |
| 3 |
Description is specific with triggers AND exclusions | Required | >50 chars, <500 chars |
| 4 |
"When to Use" section with 3+ bullet points | Required | Concrete, not vague |
| 5 |
"When NOT to Use" section with 3+ bullet points | Required | Names alternative skills |
| 6 |
Actionable content — agent can execute, not just read | Required | Include templates, formulas, steps |
| 7 |
Examples for every major concept | Recommended | Show input → output |
| 8 |
References one level deep (if references/ exists) | Required | No nested references |
| 9 |
No secrets or credentials in any file | Required | Scan before publish |
| 10 |
License specified and SPDX-valid | Required | MIT, Apache-2.0, etc. |
Scoring
CODEBLOCK16
9. Version Management
Semver for Skills
CODEBLOCK17
Version Bump Rules
| Change | Bump | Example |
|---|
| Fix a typo in an example | PATCH | 1.0.0 → 1.0.1 |
| Add a new section on ratio analysis |
MINOR | 1.0.1 → 1.1.0 |
| Restructure from 5 sections to 10 | MAJOR | 1.1.0 → 2.0.0 |
| Change the description triggers | MAJOR | 2.0.0 → 3.0.0 |
| Add a reference file | MINOR | 1.0.0 → 1.1.0 |
| Update examples for new API version | MINOR | 1.1.0 → 1.2.0 |
Changelog Convention
Add a ## Changelog section at the bottom of SKILL.md for significant versions:
CODEBLOCK18
10. Skill Graphs
When your skill library grows past ~50 skills, you need a way to discover relationships between skills. Skill graphs solve this.
Concept
Each skill can declare relationships to other skills using two mechanisms:
- 1. YAML
depends field — hard dependencies (skill won't work without these) - Wikilinks in content — soft references (related but not required)
YAML Dependencies
CODEBLOCK19
Wikilinks in Content
Use [[skill-name]] syntax to create soft links:
CODEBLOCK20
Graph Queries
With a skill graph, you can answer:
CODEBLOCK21
Building the Graph
CODEBLOCK22
Visualization
For small libraries (<20), a simple ASCII graph works:
CODEBLOCK23
For larger libraries, export to DOT format and render with Graphviz, or use a JSON graph viewer.
Eigenskill Builder
元技能。本技能教会AI智能体如何在ClawHub上构建、验证和发布技能。如果你正在创建新技能,这就是你的蓝图。
何时使用
- - 从零开始创建新技能
- 根据质量标准验证现有技能
- 向ClawHub发布技能
- 设计带有正确触发/排除边界的技能描述
- 为补充材料设置references/目录
- 为大型技能库(50+)规划技能图谱
何时不使用
- - 编写提示词或提示模板(使用提示工程技能)
- 构建智能体记忆系统(使用智能体记忆架构)
- 编排多个智能体(使用智能体编排)
- 微调模型或准备训练数据
- 构建MCP服务器或工具(那是工具开发,不是技能开发)
1. 技能结构
每个技能是一个目录,至少包含一个SKILL.md文件。目录名应为短横线命名法,并与技能名称匹配。
目录结构
skills/
my-skill-name/
SKILL.md # 必需:技能定义
references/ # 可选:补充材料
api-docs.md
examples.md
cheatsheet.md
scripts/ # 可选:自动化脚本
validate.sh
install.sh
SKILL.md结构
markdown
name: my-skill-name
description: 一段话。它的功能。何时触发。何时不触发。
license: MIT
metadata:
openclaw:
emoji: 🔧
技能标题
[简要概述 — 最多2-3句话]
何时使用
[触发条件列表]
何时不使用
[排除条件列表 — 必需]
第1节:[主题]
[内容及示例]
第2节:[主题]
[内容及示例]
...
2. YAML前置元数据规范
前置元数据块是技能的机器可读标识。它必须是---分隔符之间的有效YAML。
必填字段
| 字段 | 类型 | 描述 | 示例 |
|---|
| name | 字符串 | 短横线命名法标识符,在ClawHub上唯一 | financial-analysis-agent |
| description |
字符串 | 单引号段落。必须包含触发条件和排除条件。 | 见下方 |
| license | 字符串 | SPDX标识符 | MIT、Apache-2.0、CC-BY-4.0 |
可选字段
| 字段 | 类型 | 描述 | 示例 |
|---|
| version | 字符串 | 语义化版本 | 1.0.0 |
| author |
字符串 | 创建者名称或标识 | @openclaw |
| tags | 列表 | 发现标签 | [finance, analysis, cfp] |
| depends | 列表 | 依赖的其他技能 | [agent-memory-architecture] |
| metadata.openclaw.emoji | 字符串 | 在ClawHub上显示的图标 | 💰 |
| metadata.openclaw.tier | 字符串 | 复杂度层级 | foundational、intermediate、advanced |
| metadata.openclaw.models | 列表 | 该技能最佳适配的模型 | [claude-opus-4-6, claude-sonnet-4-6] |
描述最佳实践
描述字段是最重要的字段。智能体用它来决定是否加载该技能。它必须:
- 1. 具体 — 列出技能涵盖的具体内容
- 有边界 — 说明它不涵盖什么
- 触发词丰富 — 包含智能体会搜索的关键词
好的示例:
yaml
description: 面向AI智能体的财务分析技能。涵盖差异分析、现金流预测、月末结账自动化、CFO评论生成。请勿用于税务准备、审计意见或监管申报。
差的示例:
yaml
description: 一个用于财务相关内容的技能。
差的示例:
yaml
description: 利用AI驱动的洞察力实现变革性商业智能的综合企业级财务分析解决方案。
3. 引用目录约定
references/目录存放技能可以指向但不应放在主SKILL.md中的补充材料(以保持其聚焦)。
规则
- 1. 仅限一级深度 — references/file.md可以。references/sub/file.md不行。
- 绝不链式引用 — 引用文件不应引用另一个引用文件。引用是叶子节点,不是中间节点。
- 保持引用自包含 — 每个文件应能独立理解,无需先阅读SKILL.md。
- 描述性命名 — 使用api-authentication.md而非ref1.md。
何时使用引用vs内联内容
| 内容类型 | 位置 | 理由 |
|---|
| 核心方法论 | SKILL.md | 智能体需要此内容来执行 |
| 快速参考表 |
SKILL.md | 频繁访问 |
| 详细API文档 | references/ | 仅特定任务需要 |
| 扩展示例 | references/ | 有用但非必需 |
| 速查表 | references/ | 快速查阅,非学习用途 |
| 历史背景 | references/ | 背景信息,非操作内容 |
引用目录示例
skills/financial-analysis-agent/
SKILL.md
references/
gaap-ifrs-differences.md # 详细对比表
ratio-benchmarks-by-industry.md # 行业特定比率范围
asc-606-checklist.md # 收入确认深度解析
sample-board-package.md # 董事会报告包示例
4. 负边界
每个技能必须定义它不做什么。这不是可选项——这是核心内容之后技能设计中最重要的部分。
为什么负边界很重要
没有负边界:
- - 智能体为任务加载错误技能 → 输出质量差
- 技能悄然重叠 → 冲突和混乱
- 用户不知道一个技能在哪里结束,另一个在哪里开始
排除检查清单
对于每个技能,明确回答:
- 1. 相邻技能 — 存在哪些类似技能,而这个技能不是?
- 常见误解 — 人们认为它涵盖但实际上不涵盖什么?
- 范围上限 — 这个技能能处理的最复杂的事情是什么?上限之上是什么?
- 范围下限 — 什么对这个技能来说太简单?(例如,不要用这个来加两个数字)
模板
markdown
何时不使用
- - [相邻技能1] — 改用[其他技能名称]
- [相邻技能2] — 改用[其他技能名称]
- [常见误解] — 此技能不涵盖[X]
- 需要[超出范围上限的事情]的任务 — 升级至[人类/专家]
- 简单的[低于范围下限的事情] — 直接执行,无需技能
示例
markdown
何时不使用
- - 税务准备或税务咨询 — 改用crypto-tax-agent或咨询注册会计师
- 审计意见或鉴证 — 需要人类注册会计师,而非智能体技能
- 监管申报(SEC 10-K等) — 使用合规专用技能
- 简单算术或单位换算 — 直接计算
- 投资建议或选股 — 这是分析,不是咨询
5. 描述访谈流程
在构建新技能时,用这些问题对自己(或技能作者)进行访谈,以生成高质量的描述。
访谈
第1步:定义触发条件
问:人们说什么具体短语时应激活此技能?
答:列出5-10个触发短语。
示例:
- - 分析预算与实际之间的差异
- 生成13周现金流预测
- 为董事会包撰写CFO评论
- 在结账前审查财务报表
第2步:定义排除条件
问:哪些听起来相似但不应激活此技能的短语?
答:列出5-10个排除短语。
示例:
- - 提交我们的纳税申报表 → 税务技能,不是这个
- 我们应该投资X股票吗? → 不是咨询
- 审计财务报表 → 需要注册会计师
第3步:定义依赖关系
问:此技能假设需要哪些其他技能或知识?
答:列出先决条件。
示例:
- - 基础会计知识(借贷记账法)
- 访问财务数据(总账、子分类账)
- 熟悉Excel/Sheets以格式化输出
第4步:编写描述
将触发条件、排除条件和依赖关系合并为一个段落:
yaml
description: [功能描述 — 1句话]。涵盖[触发关键词]。假设[依赖关系]。请勿用于[排除条件]。
第5步:测试描述
问:如果一个智能体只读了这个描述,它能正确决定对这10个测试查询加载或跳过此技能吗?
用5个