仓库 →

Skills

A skill is a user-defined, reusable command — basically a chunk of markdown with frontmatter telling the AI "here's how to handle this kind of task". Once you've written one, it shows up alongside the built-in slash commands in the menu, or can be invoked on-demand by the use_skill tool.

What skills are good for

Skill file layout

A skill is usually a directory containing at least a SKILL.md:

my-skills/
├── release/
│   └── SKILL.md
├── write-changelog/
│   └── SKILL.md
└── debug-flaky-test/
    ├── SKILL.md
    └── references/
        └── pattern-library.md

A typical SKILL.md:

---
name: release
description: Cut a new release tag, update the changelog, and publish
---

## When to use

When the user says "ship a new version", "cut a release", or "tag it".

## Steps

1. Inspect `git log` for changes since the last release.
2. Ask the user to confirm the semver bump (patch / minor / major).
3. Add the new entry to `CHANGELOG.md`.
4. Run `pnpm build` and ensure it passes.
5. Create the git tag `v<version>` with release notes.
6. Run `pnpm publish` (or the corresponding publish command).

## Rules

- Version numbers must follow semver.
- Never skip tests — fix any failure first.
- If publish fails, roll back the local tag and changelog edits.

Skill directories

AtomCode loads skills from a few well-known locations:

Project-level skills override same-named globals, so you can define the same name with different flows per project.

Invocation

Via slash command

Every successfully loaded skill appears in the slash-command completion menu:

> /release
> /write-changelog
> /debug-flaky-test

Via the $ menu

Type a $ at the start of the input box to pop up a skills menu (the same set of invocable skills that /skills lists); keep typing to filter, press Tab to complete the highlighted name, and submit $<name> [args] to invoke that skill. It's a parallel entry point to slash commands: / drives slash-command completion, while $ is dedicated to picking a skill and can carry arguments inline, e.g. $brainstorming help me design login.

Model-driven invocation

The model can call the use_skill tool itself to run a relevant skill as a sub-flow. If you say "publish a new version", the model may pick this skill on its own without you typing /release.

Tips for writing a good skill

Versus project instructions

ScenarioWhere it belongs
Always-on project conventions (tech stack, code style, commands).atomcode.md
A specific workflow that needs to be triggered explicitlySkill
A one-off ad-hoc requirementJust write it in the prompt

Next steps