openclaw/workspace/skills/skill-creator/SKILL.md
Use when creating a new skill, updating an existing skill, or troubleshooting skill frontmatter, gating, or slash command registration issues in OpenClaw.
npx skillsauth add dragonkid/dotfiles skill-creatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
skill-name/
├── SKILL.md # Required
├── scripts/ # Executable scripts (Python/Bash)
├── references/ # Reference docs (loaded on demand)
└── assets/ # Output files (templates, images, etc.)
init_skill.py (for new skills)~/.openclaw/workspace/skills/ and restartSkills are loaded from three locations (highest to lowest priority):
<workspace>/skills/~/.openclaw/skills/Additional directories can be configured via skills.load.extraDirs in openclaw.json.
---
name: skill-name # Hyphen-case identifier
description: ... # Trigger conditions only (see rules below)
---
user-invocable: true # Expose as slash command (default: true)
command-dispatch: tool # Bypass model, dispatch directly to a tool
command-tool: <tool-name> # Required when command-dispatch: tool
command-arg-mode: raw # Forward raw args without parsing (default: raw)
disable-model-invocation: true # Exclude from model prompt (still user-invocable)
homepage: https://... # "Website" link in macOS Skills UI
version: 1.0.0 # Semver (for distribution)
license: MIT # License info (for distribution)
allowed-tools: [...] # AgentSkills spec field
The metadata value must be a single-line JSON object (parser limitation).
metadata: {"openclaw": {"emoji": "🛠️", "requires": {"bins": ["rg"]}, "install": [{"id": "brew", "kind": "brew", "formula": "ripgrep", "bins": ["rg"]}]}}
Complete sub-fields under metadata.openclaw:
| Field | Type | Description |
|-------|------|-------------|
| always | boolean | Skip all gates, always load |
| emoji | string | Display emoji in macOS Skills UI |
| os | string[] | Platform filter: "darwin", "linux", "win32" |
| skillKey | string | Override config key (instead of name) |
| primaryEnv | string | Env var for skills.entries.<name>.apiKey |
| requires.bins | string[] | All must exist on PATH |
| requires.anyBins | string[] | At least one must exist |
| requires.env | string[] | Env vars that must be set |
| requires.config | string[] | Dot-paths in openclaw.json that must be truthy |
| install | object[] | Installer specs (see below) |
Each entry in the install array supports kind:
| Kind | Key Fields | Notes |
|------|-----------|-------|
| brew | formula, bins | Homebrew formula |
| node | bins | Honors skills.install.nodeManager config |
| go | bins | Auto-installs Go via brew if missing |
| uv | bins | Python package manager |
| download | url, archive, targetDir | Direct download |
metadata must be a single-line JSON object{baseDir} as a template variable to reference the skill folder path at runtimeCore principle: describe trigger conditions only, never summarize the workflow.
When a description contains workflow steps, the model may act on the summary directly and skip reading SKILL.md.
# WRONG: contains workflow summary
description: Create skills - initialize directory, write SKILL.md, package for distribution
# WRONG: too vague
description: A guide for skills
# CORRECT: trigger conditions only
description: Use when creating or updating a skill, or troubleshooting frontmatter issues
Guidelines:
Use when...| Type | Target | |------|--------| | Frequently loaded skills | < 200 words | | General skills | < 500 words | | SKILL.md total lines | < 500 |
Token cost formula: 195 + Σ(97 + len(name) + len(description) + len(location)) chars per eligible skill. Approximately 4 chars per token.
Tips:
references/ for on-demand loading# Skill Name
## Overview (1-2 sentences)
## Workflow / Steps
## Key Parameters / Configuration
## Common Errors
See references/design-patterns.md for detailed patterns.
Skills are filtered at load time based on metadata.openclaw:
always: true → always includedmetadata.openclaw → always eligible (unless disabled in config)os → checked against current platformrequires.bins → all must exist on host PATHrequires.anyBins → at least one must existrequires.env → must exist in environment or configrequires.config → dot-path must be truthy in openclaw.jsonenabled: false in config → disabled regardless of gatesAfter adding a new skill and restarting the gateway, Discord clients cache commands. New commands won't appear immediately — remind users to press Cmd+R (Mac) / Ctrl+R (Windows/Linux) to force refresh.
command-dispatch: tool without command-tool — OpenClaw silently ignores the dispatch; the slash command won't register (logs: Ignoring dispatch)tools
Use when user wants to manage TODO items - adding tasks, listing pending items, marking done, removing, or searching. Triggers on /todo command or TODO-related requests.
tools
手动触发自我改进与记忆维护。分析近期 memory 文件,维护工作区文件,提出改进提案。触发方式:/self_improve 或用户说"自我改进"、"self improve"。
testing
测试 OpenClaw 配置中 LLM provider 的可用性。触发方式:/provider_check 或用户问"测试 provider 可用性"、"检查 provider 状态"、"provider 健康检查"。
tools
Summarize documents (URLs, text, or existing Clippings) and save to Obsidian vault. Triggers on /summary command, document summary requests, URL processing for knowledge base, or when user shares an article/link to process into notes.