Skip to content
Back to skills

Getting Started

ASecurity

How this Hermes profile is put together — SOUL.md, config.yaml, and the skills directory — and how to add a skill. Read when asked what this agent can do, when someone wants to extend it with a new capability, or as a worked example of the SKILL.md format.

  • 2 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added October 2, 2026
ai-agents

Security analysis

A100/100

Scanned October 2, 2026

npx -y skills add Folken2/nuvel --skill getting-started --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Getting Started?

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

Security grade badge for Getting Started
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/folken2-getting-started-nuvel/badge)](https://www.skillsdirectory.com/skills/folken2-getting-started-nuvel)

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: getting-started
description: How this Hermes profile is put together — SOUL.md, config.yaml, and the skills directory — and how to add a skill. Read when asked what this agent can do, when someone wants to extend it with a new capability, or as a worked example of the SKILL.md format.
---

# This profile, and how to extend it

A Hermes agent is three things in one directory:

```
{{agent_package}}/
├── SOUL.md        identity: who I am, what I'm for, how I speak
├── config.yaml    model, max_turns, platforms, enabled skills
└── skills/
    └── getting-started/
        └── SKILL.md      ← this file
```

`SOUL.md` is loaded every turn — it's short on purpose. `config.yaml` is
operational, not behavioural: changing `model.default` changes which model
answers, never *what* the agent is.

## What the agent sees

At startup only the **frontmatter** of each skill is loaded — the `name` and
`description` above. The body you're reading arrives only when this skill is
actually opened.

That split is the whole design. Fifty skills cost a few hundred prompt tokens
until one becomes relevant, then the full instructions show up exactly when
they're needed. It's also why the description matters more than it looks:
it's the only thing the agent has when deciding whether to read further.

## Adding one

```
skills/
├── getting-started/
│   └── SKILL.md
└── your-new-skill/
    └── SKILL.md          ← add this; nothing else to wire
```

The frontmatter is two keys:

```markdown
---
name: incident-triage
description: Triage a production incident — severity rubric, who to page, and what to capture in the timeline. Read when an alert fires or someone reports an outage.
---
```

Write the `description` for a reader deciding *whether to open the file*: name
the situation, not the topic. "Read when an alert fires" beats "about incidents."

`skills.enabled` in `config.yaml` is a force-load list, not a registry — leave
it empty and every skill in this directory is still discoverable. Add a slug
there only when the skill must be in context from the first token.

## Writing the body

The body is instructions for a capable colleague who hasn't done *this*
particular task before: concrete steps, real examples, the failure modes worth
naming. Skip the background theory — the model already has it.

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.