# Adding a Skill

## Overview

Skills are reusable methodologies in `plugins/onex/skills/`. Each skill lives
in its own directory and is defined by a `SKILL.md` file. Skills can include
executable scripts, prompt templates, and supporting files.

Skills are invoked with `/skill-name` in Claude Code (after deploying the
plugin). They can also be referenced by agents and commands.

**Before creating a skill**, decide whether it belongs here or in omnimarket:

| It belongs in omniclaude (as a skill stub) | It belongs in omnimarket (as a node) |
|-------------------------------------------|--------------------------------------|
| Single invocation, no persistent state | Multi-step workflow or FSM |
| Dispatch to an existing Market node | Business logic that runs outside Claude Code |
| Prompt formatting or UX text only | State stored across invocations |
| Claude Code only (no headless/cron use) | Needs retry logic, circuit breakers |

See [Skill Lifecycle](../architecture/skill-lifecycle.md) for the full decision rule and examples.

---

## Create the Skill Directory

```bash
mkdir -p plugins/onex/skills/my-skill
```

Each skill must have a directory under `plugins/onex/skills/`.

---

## Create SKILL.md

Create `plugins/onex/skills/my-skill/SKILL.md`:

```markdown
# My Skill

## Overview

One paragraph describing what this skill does and when to use it.

## Quick Start

\`\`\`bash
# Minimal invocation
/my-skill
\`\`\`

## Methodology

Step-by-step description of how the skill works:

1. First step — what happens and why
2. Second step — what happens and why
3. Third step — what happens and why

## Options

| Option | Description | Default |
|--------|-------------|---------|
| `--flag` | Description of flag | (none) |

## Examples

### Basic Usage

\`\`\`bash
/my-skill
\`\`\`

### With Options

\`\`\`bash
/my-skill --flag value
\`\`\`

## Output

Description of what the skill produces (files, annotations, reports, etc.).

## Notes

- Any important constraints or prerequisites
- Related skills or commands: `/related-skill`
```

**Required sections in SKILL.md:**

| Section | Purpose |
|---------|---------|
| Overview | What the skill does and when to use it |
| Quick Start | Minimal working invocation |
| Methodology | Step-by-step process description |

**Optional sections** (add as needed):
- Options — flags and parameters
- Examples — usage patterns
- Output — what the skill produces
- Notes — constraints, prerequisites, related skills

---

## Add Supporting Files (Optional)

Skills can include:

**`prompt.md`** — Detailed orchestration logic or prompt template used
internally by the skill:

```
plugins/onex/skills/my-skill/
├── SKILL.md         # User-facing documentation (required)
├── prompt.md        # Internal orchestration logic (optional)
└── scripts/         # Executable scripts (optional)
    └── run.sh
```

If your skill executes scripts, make them executable:

```bash
chmod +x plugins/onex/skills/my-skill/scripts/run.sh
```

---

## Invoke the Skill

After deploying (`/deploy-local-plugin`), invoke the skill in Claude Code:

```
/my-skill
```

Claude Code discovers skills from `plugins/onex/skills/` automatically.

If the skill does not appear after deploying:

1. Verify `SKILL.md` exists at `plugins/onex/skills/my-skill/SKILL.md`.
2. Restart Claude Code to pick up the new plugin state.
3. Check that the plugin cache was updated: `ls ~/.claude/plugins/cache/`.

---

## Reference

- Skill definitions: `plugins/onex/skills/*/SKILL.md`
- Existing skills for reference patterns: `plugins/onex/skills/`
- Skill authoring guide: `docs/reference/SKILL_AUTHORING_GUIDE.md`
- Commands (related): `plugins/onex/commands/*.md`
- [Skill Lifecycle](../architecture/skill-lifecycle.md) — when to put logic in omnimarket instead
