Skip to content
Back to skills

003 Name Skill Bc827437

ASecurity

This skill should be used when the user asks to "create an OpenClaw skill", "make a claw skill", "build a skill for OpenClaw", "write a SKILL.md for openclaw", "add a skill to openclaw", "generate openclaw skill frontmatter", "create a clawhub skill", or wants to author a new skill for the pi-coding-agent / OpenClaw ecosystem.

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added October 11, 2026
toolspythonbashexpressdocumentation

Works with

  • claude code
  • terminal
  • cli

Security analysis

A100/100

Scanned October 11, 2026

npx -y skills add tools-only/X-Skills --skill 003-name-skill_bc827437 --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of 003 Name Skill Bc827437?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for 003 Name Skill Bc827437
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/tools-only-003-name-skill-bc827437/badge)](https://www.skillsdirectory.com/skills/tools-only-003-name-skill-bc827437)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

SKILL.md
---
name: create-claw-skill
description: >
  This skill should be used when the user asks to "create an OpenClaw skill",
  "make a claw skill", "build a skill for OpenClaw", "write a SKILL.md for openclaw",
  "add a skill to openclaw", "generate openclaw skill frontmatter", "create a clawhub skill",
  or wants to author a new skill for the pi-coding-agent / OpenClaw ecosystem.
argument-hint: "[skill|command] [name] - or leave empty to interview"
---

# OpenClaw Skill & Command Generator

Generate well-structured OpenClaw skills or slash commands. Both are SKILL.md files with YAML frontmatter — they share the same structure but differ in how they're triggered and described. OpenClaw uses the AgentSkills spec (pi-coding-agent) with its own frontmatter fields, tool names, and path conventions distinct from Claude Code.

## Phase 0: Fetch Current Documentation

**Before generating**, retrieve the latest OpenClaw skill documentation:

```bash
clawdocs get "tools/skills" --no-header -q
```

Capture any frontmatter fields or options not already listed in `{baseDir}/references/frontmatter-options.md`. If `clawdocs` is unavailable, proceed with current references — they are sufficient. If new fields appear, use them and note the update.

## Phase 1: Understand Requirements

Parse `$ARGUMENTS` for type hint. Users are often unclear on OpenClaw-specific conventions. Interview to gather:

1. **Primary objective** — What should this skill do?
2. **Trigger scenarios** — When should it activate? What exact phrases would a user say?
3. **Inputs/outputs** — What does it receive and produce?
4. **Complexity** — Simple, standard, or complex workflow?
5. **Gating needs** — Does it require specific binaries, env vars, or config keys? (drives `metadata.openclaw.requires.*`)
6. **Execution needs** — Sub-agent delegation via `sessions_spawn`? Command dispatch (bypass model)?

Proceed to Phase 2 when at minimum Objective and Trigger Scenarios are established.

## Phase 2: Generate

Apply throughout generation: use imperative voice and terse phrasing because every token in a generated skill body costs budget on every invocation. Prefer instruction over example — state the rule with its reasoning so it generalizes to every input.

**Initialize directory first (when creating a new skill directory, not editing an existing file):**

```bash
python3 {baseDir}/scripts/init_claw_skill.py <name> --path <dir> [--resources scripts,references,assets]
```

Exit 0 = directory scaffolded, proceed to Step 1. Exit 1 = naming collision; ask user whether to overwrite or rename.

### Step 1 — Choose type

- **Skills:** Trigger-rich, third-person description ("This skill should be used when..."); auto-triggered by routing
- **Commands:** Concise, verb-first description, under 60 chars; user-invoked via `/` menu
- **Dispatch commands:** `command-dispatch: tool` with `command-tool` — bypasses model entirely, routes directly to a named tool (rare; for pure pass-through cases)

### Step 2 — Write frontmatter

Read `{baseDir}/references/frontmatter-options.md` for the full OpenClaw field catalog, description patterns, and the `metadata` single-line JSON constraint.

Key constraint: **`metadata` must be a single-line JSON object on one line.** Multi-line YAML mappings under `metadata` are not valid in OpenClaw.

**Intensional over extensional** — state the rule with its reasoning rather than listing examples that imply the rule. An intensional rule generalizes to every input the skill will encounter; an extensional list only covers the shapes shown.

### Step 3 — Write body

**Construction rules:**
- State objective explicitly in first sentence
- Use imperative voice ("Analyze", "Generate", "Identify") — no first-person ("I will", "I am")
- Context only when necessary for understanding
- XML tags only for complex structured data
- No "When to Use This Skill" section — body loads only after triggering; routing guidance there is never read by the routing decision
- Avoid headers deeper than H3 — deep nesting signals content that belongs in `references/`, not `SKILL.md`
- `{baseDir}` is the path variable for skill-relative file references (substituted before model sees the skill body)

Both skills and commands follow the same body pattern:

```markdown
# Name

Brief overview (1-2 sentences).

## Process
1. Step one (imperative voice)
2. Step two
3. Step three
```

**Dynamic Content:**

| Syntax | Purpose |
|--------|---------|
| `$ARGUMENTS` | All arguments as string |
| `$1`, `$2`, `$3` | Positional arguments |
| `{baseDir}` | Absolute path to skill directory (substituted at load time) |

Note: `@file` injection and bang-backtick command expansion are Claude Code features specific to Claude Code's skill loader implementation — the pi-coding-agent skill loader only supports `{baseDir}` path substitution and does not implement these extensions. Do not use them in generated OpenClaw skills.

### Step 4 — Script opportunity scan

Read `{baseDir}/references/script-patterns.md` and apply the five signal patterns to every workflow step in the skill being generated:

| Signal | Question | If yes → |
|--------|----------|----------|
| **Repeated Generation** | Does any step produce the same structure with different params across invocations? | Parameterized script in `scripts/` |
| **Unclear Tool Choice** | Does any step combine multiple operations in a fragile sequence naturally expressible as one function? | Script the procedure |
| **Rigid Contract** | Can you write `--help` text for this step right now without ambiguity? | CLI candidate |
| **Dual-Use Potential** | Would a user want to run this step from the terminal, outside the skill workflow? | Design as proper CLI from the start |
| **Consistency Critical** | Must this step produce bit-for-bit identical output for identical inputs? | Script — never LLM generation |

For each identified script candidate:
1. Choose the archetype from `{baseDir}/references/script-patterns.md` (init/validate/transform/package/query)
2. Scaffold the script in `scripts/` using the Python template from `{baseDir}/references/script-patterns.md`
3. Wire it into SKILL.md with: trigger condition, exact invocation using `exec` tool, output interpretation

**Wiring rule:** A script reference must state *when* to invoke (trigger condition), *how* to invoke (exact command with flags), and *what to do* with the result (exit code handling, which output fields matter).

Scripts are invoked via the `exec` tool (not `Bash`). Reference paths using `{baseDir}/scripts/script.py`.

### Step 5 — Check delegation

Read `{baseDir}/references/claw-patterns.md` for delegation patterns, `sessions_spawn` usage, cross-skill reference conventions, and tool group translations (Claude Code → OpenClaw tool name mapping).

Scan for existing resources before finalizing:

```
Review available OpenClaw skills (check ~/.openclaw/skills/ and workspace/skills/)
For each workflow step, ask: "Do we already have this?"
```

**Common delegation patterns:**
- To invoke another OpenClaw skill: tell the model to read `{baseDir}/../<other-skill>/SKILL.md` via the `read` tool, or instruct the user to type `/<other-skill-name>`
- For background delegation: use `sessions_spawn` (non-blocking; result announced back to chat)
- Documentation lookups: `exec: clawdocs get "<slug>" --no-header -q`

There is no `Skill` tool in OpenClaw — skills are invoked by the routing model, not programmatically from within another skill.

### Step 6 — Validate

When generating a new skill directory (not editing an existing single file):

```bash
python3 {baseDir}/scripts/validate_claw_skill.py <skill-directory> --output json
```

Exit 0 = proceed to Phase 3. Exit 1 = parse the `errors` array; each entry has `field`, `message`, `severity`. Resolve all `critical` and `major` items before writing to disk.

### Explain Your Choices

When presenting the generated skill/command to the user, briefly explain:
- **What you set and why** — "Added `metadata.openclaw.requires.bins: [jq]` because the skill calls jq in a subprocess"
- **What you excluded and why** — "Left `user-invocable` at default (true), `command-dispatch` omitted (skill routes through model)"
- **Add more trigger phrases if routing misses expected inputs**

## Phase 3: Deliver

### Output Paths

| Type | Location | When active |
|------|----------|-------------|
| Workspace skill | `<workspace>/skills/<name>/` | Next session in that workspace |
| Managed skill | `~/.openclaw/skills/<name>/` | Shared across all agents on this machine |

Skills are session-snapshotted — changes take effect on the next new session, not the current one.

### Write and Confirm

Before writing:
```
Writing to: [path]
This will [create new / overwrite existing] file.
Proceed?
```

### After Creation

Summarize what was created:
- Name and type
- Path and when it takes effect
- How to invoke/trigger
- Suggested test scenario

### Publish to ClawHub

Invoke only when the user explicitly requests distribution:

```bash
clawhub publish <skill-directory> --slug <slug> --version X.Y.Z --tags latest
```

Exit 0 = published. Exit 1 = validation or auth failure; read stdout for details.

## Phase 4: Evaluate

Score the generated skill/command:

| Dimension | Criteria |
|-----------|----------|
| **Clarity (0-10)** | Instructions unambiguous, objective clear |
| **Precision (0-10)** | Appropriate specificity without over-constraint |
| **Efficiency (0-10)** | Token economy — maximum value per token |
| **Completeness (0-10)** | Covers requirements without gaps or excess |
| **Usability (0-10)** | Practical, actionable, appropriate for target use |

**Target: 9.0/10.0.** If below, refine once addressing the weakest dimension, then deliver.

Re-run `validate_claw_skill.py` after any revisions and verify the validation checklist below before finalizing.

## Degrees of Freedom

| Level | When to Use | Format |
|-------|-------------|--------|
| **High freedom** | Multiple valid approaches, context-dependent decisions | Text instructions, heuristics |
| **Medium freedom** | Preferred pattern exists, some variation acceptable | Pseudocode, scripts with parameters |
| **Low freedom** | Fragile operations, consistency critical, specific sequence required | Exact scripts, few parameters |

## Quality Standards

**Format Economy:**
- Simple task → direct instruction, no sections
- Moderate task → light organization with headers
- Complex task → full semantic structure

**Remove ruthlessly:** Filler phrases, obvious implications, redundant framing, excessive politeness

## Validation Checklist

Before finalizing an OpenClaw skill or command:

**Structure:**
- [ ] SKILL.md exists with valid YAML frontmatter
- [ ] Frontmatter has `name` and `description` fields
- [ ] `metadata` field (if present) is single-line JSON on one line
- [ ] Markdown body is present and substantial
- [ ] Referenced files actually exist

**Description Quality:**
- [ ] Uses third person ("This skill should be used when...")
- [ ] Includes specific trigger phrases users would say (verbatim)
- [ ] Lists concrete scenarios ("create X", "configure Y")
- [ ] Not vague or generic

**OpenClaw Correctness:**
- [ ] No Claude Code-only fields: no `model`, `context`, `agent`, `allowed-tools`, `hooks`, `license`
- [ ] No Claude Code tool names referenced in body: no `Bash`, `WebSearch`, `WebFetch`, `Read`, `Write`, `Edit`, `Glob`, `Grep`, `Task`, `Skill`, `AskUserQuestion`, `EnterPlanMode`, `ExitPlanMode`
- [ ] Uses OpenClaw tool names: `exec`, `read`, `write`, `edit`, `web_search`, `web_fetch`, `sessions_spawn`
- [ ] Uses `{baseDir}` for skill-relative paths (not `$CLAUDE_PLUGIN_ROOT`)
- [ ] Output path is OpenClaw workspace (`<workspace>/skills/`) or managed (`~/.openclaw/skills/`)

**Content Quality:**
- [ ] Body uses imperative/infinitive form, not second person
- [ ] Body is focused and lean (1,500–2,000 words ideal, <5k max)
- [ ] Detailed content moved to `references/`
- [ ] Scripts are executable and documented
- [ ] Script opportunities identified via five signal patterns
- [ ] Script references in SKILL.md include trigger condition, invocation (`exec`), output handling
- [ ] Consistency-critical steps are scripted, not left to LLM re-generation

**Progressive Disclosure:**
- [ ] Core concepts in SKILL.md
- [ ] Detailed docs in `references/`
- [ ] Utilities in `scripts/`
- [ ] SKILL.md references these resources
- [ ] `examples/` present if skill produces user-adaptable output (see `{baseDir}/examples/sample-command/SKILL.md` for a minimal command example)

## Error Handling

| Issue | Action |
|-------|--------|
| Unclear requirements | Ask clarifying questions before generating |
| Missing context | Request usage examples or target scenarios from user |
| Path issues | Verify target directory exists; let `init_claw_skill.py` create it |
| Type unclear | Default to skill (auto-triggered) if user hasn't specified |
| `clawdocs` unavailable | Proceed with current references — they are sufficient |

---

Execute phases sequentially. Always fetch current documentation first.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…