Skip to content
Back to skills

Create Skill

ASecurity

Wizard for creating new Agent Zero skills. Guides users through creating well-structured SKILL.md files. Use when users want to create custom skills.

  • 2 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 19, 2026
ai-agentspythongocode-review

Works with

  • terminal

Security analysis

A100/100

Scanned September 19, 2026

npx -y skills add Stranglehold/Exocortex --skill create-skill --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Create Skill?

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

Security grade badge for Create Skill
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/stranglehold-create-skill-exocortex/badge)](https://www.skillsdirectory.com/skills/stranglehold-create-skill-exocortex)

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

Download with Pro
SKILL.md
---
name: "create-skill"
description: "Wizard for creating new Agent Zero skills. Guides users through creating well-structured SKILL.md files. Use when users want to create custom skills."
version: "2.2.0"
author: "Agent Zero Team"
tags: ["meta", "wizard", "creation", "tutorial", "skills"]
trigger_patterns:
  - "create skill"
  - "new skill"
  - "make skill"
  - "add skill"
  - "skill wizard"
  - "build skill"
---
# Create Skill Wizard

## DECISION GATE — Read before doing anything else

**If the user's message contains a skill name, purpose, or description of what the skill should do:**
→ BUILD IMMEDIATELY. Do not ask questions. Use the information provided and fill in any gaps with sensible defaults.
→ Go directly to BUILD STEPS below.

**If the user's message contains no skill details at all (e.g., only "create a skill"):**
→ Ask ONE consolidated question only (see SINGLE QUESTION below).
→ After receiving the answer, BUILD IMMEDIATELY. Do not ask follow-up questions.

---

## SINGLE QUESTION (only if no details provided)

Ask this exact question once:

"What should this skill do? Describe: (1) its purpose, (2) when the agent should use it, (3) what the output should look like."

Then build immediately from the answer. Do not ask for clarification.

---

## BUILD STEPS

Execute these steps in order using code_execution_tool. Do not ask questions between steps.

### Step 1 — Derive skill metadata from user input
From the user's description, determine:
- `skill-name`: lowercase, hyphens only, 1-3 words (e.g., "market-report", "code-review")
- `description`: one sentence — what it does and when to use it
- `success_criterion`: one testable sentence describing what success looks like
- `confidence`: calibrated band the skill reliably achieves its criterion (almost_certain | probable | even_chance | unlikely | remote — default `probable`)
- `tags`: 3-5 relevant keywords
- `trigger_patterns`: 3-5 phrases the user would say to invoke it

### Step 2 — Write the SKILL.md content

Skills are born in **capability-adaptive** format: two layers. The **Conditions**
section is always surfaced (the quality bar — WHAT and HOW GOOD). The **Approach
Guidance** section is scaffolding (HOW) that a capable model in FLOW can skip and
a struggling model in FRICTION/STAGNATION receives. Construct the SKILL.md using
this template:

```
---
name: "{skill-name}"
description: "{description}"
success_criterion: "{one testable sentence describing what this skill accomplishes}"
confidence: probable  # almost_certain | probable | even_chance | unlikely | remote
affects_surfacing: adaptive  # adaptive | always_full | conditions_only
tags: [{tags}]
trigger_patterns:
  - "{trigger1}"
  - "{trigger2}"
  - "{trigger3}"
---
# {Skill Title}

## Purpose
{What this skill does and the problem it solves}

## Conditions (always surfaced)
{Quality criteria that must be met regardless of model capability — WHAT must
happen and HOW GOOD it needs to be. Testable where possible. Always shown.}

## Approach Guidance (surfaced when FRICTION or below)
{Step-by-step scaffolding for HOW to meet the conditions. A model in FLOW skips
this and uses its own reasoning; a model hitting FRICTION/STAGNATION receives it.}

## Output Format
{What the final output should look like — format, structure, length}

## Example Triggers
- "{example user message 1}"
- "{example user message 2}"
```

- `success_criterion` — the pre-registered, testable claim of what the skill accomplishes (one sentence).
- `confidence` — calibrated estimate using Kent's WEP bands (almost_certain | probable | even_chance | unlikely | remote).
- `affects_surfacing` — how the affect layer gates this skill: `adaptive` (Conditions always, Approach Guidance on FRICTION/below), `always_full` (both always), `conditions_only` (never scaffold).

### Step 3 — Create the skill directory and file

Use code_execution_tool with runtime=python and code argument. Both fields are required.

```json
{
  "tool_name": "code_execution_tool",
  "tool_args": {
    "runtime": "python",
    "code": "import os\nskill_name = '{skill-name}'\nskill_dir = f'/a0/usr/skills/{skill_name}'\nos.makedirs(skill_dir, exist_ok=True)\ncontent = '''{full SKILL.md content}'''\nwith open(f'{skill_dir}/SKILL.md', 'w') as f:\n    f.write(content)\nprint(f'Created: {skill_dir}/SKILL.md')"
  }
}
```

CRITICAL: tool_args must contain exactly "runtime" and "code". Never use "script", "command", "cmd", or any other key name.

### Step 4 — Verify the file was written

```json
{
  "tool_name": "code_execution_tool",
  "tool_args": {
    "runtime": "terminal",
    "code": "cat /a0/usr/skills/{skill-name}/SKILL.md | head -20"
  }
}
```

### Step 5 — Load the skill

```json
{
  "tool_name": "skills_tool",
  "tool_args": {
    "method": "load",
    "skill_name": "{skill-name}"
  }
}
```

### Step 6 — Report to user
Confirm:
- Skill name and location
- Trigger patterns (phrases that will activate it)
- Any scripts or dependencies the skill requires to function

---

## SKILL.md Format Reference

```yaml
---
name: "skill-name"               # required: lowercase, hyphens only
description: "..."               # required: when/why to use this skill
success_criterion: "..."         # recommended: one testable sentence
confidence: probable             # recommended: WEP band (default probable)
affects_surfacing: adaptive      # recommended: adaptive | always_full | conditions_only
tags: ["cat1", "cat2"]           # optional
trigger_patterns:                # optional but recommended
  - "phrase that triggers"
---
```

The validator (`helpers/skills.py`) requires only `name` + `description` and
tolerates the additional fields — but keep the YAML well-formed (malformed
frontmatter makes a skill invisible to discovery).

## Required Fields
- `name`: unique identifier, lowercase, hyphens only
- `description`: when and why to use this skill (max 1024 chars)

## Capability-Adaptive Fields (recommended)
- `success_criterion`: testable claim of what the skill accomplishes
- `confidence`: calibrated WEP band the skill reliably hits its criterion
- `affects_surfacing`: how the affect layer gates the skill's Approach Guidance

## Skill Directory Rules
- All skills go in `/a0/usr/skills/{skill-name}/`
- The SKILL.md file must be at `/a0/usr/skills/{skill-name}/SKILL.md`
- Supporting scripts go in the same directory
- Never touch `/a0/requirements.txt` — add skill-specific pip installs inside skill scripts only

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…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.