skill-creator
Critical — invalid files are skipped at load
SKILL.md must start with the bytes --- then a newline, YAML mapping, closing --- line, then markdown body.
If the file starts with # Title or prose without that frontmatter block, the runtime drops the skill (parse error); it will not appear in ### skills.
Minimal valid template (copy and edit)
---
name: my-skill-name
description: One line when to load this skill and what it does (English ok).
version: 1.0.0
requires_tools: []
requires_scripts: []
dangerous: false
platforms:
- darwin
- linux
- win32
---
# my-skill-name
Body here. Use real Atomic Chat Agent tool names such as `skill.view`,
`os.http.request`, and `os.web.search`.
Rules:
name— kebab-case, same string as the parent folder (my-skill-name/SKILL.md→name: my-skill-name).descriptionandversion— required non-empty strings.requires_tools— tools used by the skill body, such asos.shell.run.requires_scripts— exact bundled filenames located under<skill>/scripts/;skill.run_script.scriptmay contain only one of these filenames. External commands such asmemo,gh, ordockerare not scripts: invoke them throughos.shell.runwith separatecmdandargs. Omit empty keys if you prefer.
Where to write files
| Scope | Path |
|---|---|
| Global | <Atomic Chat data folder>/agent-skills/<name>/SKILL.md |
Atomic Chat currently loads only this global root. One folder per skill;
single SKILL.md at folder root.
Workflow
- Create folder +
SKILL.mdusing the template above (frontmatter first). - Keep
descriptionshort; put procedures in the body (visible only afterskill.view). - Open Agent → Skills and refresh so the registry rescans disk.
- Verify that the skill appears in the Skills list without an error.
Do not
- Skip YAML — ever.
- Put secrets in the file or instruct bypassing approvals / HTTP allowlists.