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…