Skip to content
Back to skills

Docs

ASecurity

> Step-by-step guide for adding a skill to this kit in all 4 agent formats. From a 5-minute skill to a 30-minute one.

  • 2 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 4, 2026
ai-agentsbashrailsdocumentation

Security analysis

A100/100

Pro scans all 4 files and shows the line behind each finding

Scanned September 4, 2026

npx -y skills add LFTPadilla/agent-dev-kit --skill docs --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Docs?

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

Security grade badge for Docs
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/lftpadilla-docs/badge)](https://www.skillsdirectory.com/skills/lftpadilla-docs)

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
# Adding a new skill — workflow

> Step-by-step guide for adding a skill to this kit in all 4 agent formats. From a 5-minute skill to a 30-minute one.

## Decision tree

When the user says "I keep doing X — make a skill for it":

1. **Is X already covered by a skill in `skills/`?** If yes, update the existing skill; don't add a new one.
2. **Does X need per-agent differences?** (e.g., OpenCode's `tools:` map, Claude's `metadata.openclaw.emoji`) If yes, you need 2 files; otherwise 1.
3. **Does X have lots of supporting data?** (e.g., host lists, command cheatsheets) If yes, use a `references/` subdir.

## The 7 steps

### 1. Pick a name

- Lowercase, hyphenated, max 30 chars.
- Describe the *intent*, not the *implementation*. `overnight-task` not `shutdown-script-runner`.
- Check `skills/` to make sure the name isn't taken.

### 2. Create the directory

```bash
mkdir -p skills/<name>/references
```

### 3. Write the canonical SKILL.md (Claude/Codex/Pi)

```bash
touch skills/<name>/SKILL.md
```

Use the Claude format (see `agent-formats.md`):

```markdown
---
name: <name>
tags: [<intents>]
description: |
  <one-paragraph "Use when..." text>
metadata:
  openclaw:
    emoji: <appropriate>
    side_effect: <what changes>
    invocation: <auto | on-intent-match | manual>
created: <YYYY-MM-DD>
updated: <YYYY-MM-DD>
---

# <Skill Name>

<one-line description>

## When to invoke
- <trigger 1>
- <trigger 2>

## When NOT to invoke
- <anti-trigger 1>

## Process
<numbered steps>

## Guardrails
- <safety rule 1>
- <safety rule 2>

## Output contract
<what the agent should produce>
```

Keep `SKILL.md` under 6KB. Put large content in `references/`.

### 4. Write the OpenCode command variant

```bash
touch skills/<name>/<name>.opencode.md
```

Use the OpenCode format (see `agent-formats.md`):

```markdown
---
description: |
  <same as Claude's description>
argument-hint: "[<args>]"
argument-instructions: |
  <how to parse $ARGUMENTS, or "no arguments">
tools:
  read: true
  write: true
  edit: true
  bash: true
  glob: true
  grep: true
  agent: true
  question: <true|false>   # set false for overnight/autonomous skills
---

<objective>
<what this command does>
</objective>

<context>
$ARGUMENTS (optional)
</context>

<process>
<numbered steps, or "@<path-to-SKILL.md>" for delegation>
</process>
```

The body of the OpenCode command is usually a **directive** to the agent (read the canonical SKILL.md and follow its process) rather than a copy of the same content. This avoids drift.

### 5. Add reference files (optional)

If the skill has supporting data (host lists, command cheatsheets, etc.), put it in `skills/<name>/references/`:

```bash
touch skills/<name>/references/<topic>.md
```

Reference from `SKILL.md`:

```markdown
See `references/<topic>.md` for the full list.
```

### 6. Update `install.sh`

If you used the same filename for Claude/Codex/Pi (just different symlink targets), the existing install.sh already handles it. If you added a custom opencode variant, append:

```bash
ln -sf "$KIT/skills/<name>/<name>.opencode.md" "$HOME/.config/opencode/command/<name>.md"
```

### 7. Test the install

```bash
./install.sh

# Verify symlinks
readlink -f ~/.claude/skills/<name>
readlink -f ~/.agents/skills/<name>
readlink -f ~/.pi/skills/<name>
readlink -f ~/.config/opencode/command/<name>.md
```

All four should resolve to files under `~/programming/agent-dev-kit/overnight-task-kit/skills/<name>/`.

## Tips

- **Keep the canonical SKILL.md the source of truth.** OpenCode's command file is a thin wrapper. Don't duplicate content.
- **Use shared `references/` files** when the same supporting data is needed by multiple skills.
- **Test the symlink before declaring done.** A stale symlink looks fine until the agent tries to read it.
- **Update `docs/why-this-exists.md` if the new skill represents a new pattern.** The kit is documentation-as-museum: every skill is an artifact of a real recurring need.
- **Don't over-formalize.** A 50-line skill that solves a real problem is better than a 500-line skill that's mostly aspirational.

## See also

- `agent-formats.md` — per-agent frontmatter/structure cheatsheet
- `../skills/overnight-task/SKILL.md` — the first skill, exemplifying the pattern
- `../install.sh` — the installer

Files in this skill

  • adding-a-new-skill.md4.2 KB
  • agent-formats.md4.4 KB
  • why-this-exists.md693 B

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.