Atomic can create skills. Ask it to build one for your use case.
Skills
Skills are self-contained capability packages that the agent loads on-demand. A skill provides specialized workflows, setup instructions, helper scripts, and reference documentation for specific tasks. Atomic implements the Agent Skills standard, warning about violations but remaining lenient.Table of Contents
- Locations
- How Skills Work
- Skill Commands
- Skill Structure
- Frontmatter
- Validation
- Example
- Skill Repositories
Locations
Security: Skills can instruct the model to perform any action and may include executable code the model invokes. Review skill content before use.Atomic loads skills from:
- Global:
~/.atomic/agent/skills/(legacy~/.pi/agent/skills/)~/.agents/skills/
- Project (only after the project is trusted):
.atomic/skills/(legacy.pi/skills/).agents/skills/incwdand ancestor directories (up to git repo root, or filesystem root when not in a repo)
- Packages:
skills/directories,atomic.skills, or legacypi.skillsentries inpackage.json - Settings:
skillsarray with files or directories - CLI:
--skill <path>(repeatable, additive even with--no-skills)
- In
~/.atomic/agent/skills/and.atomic/skills/(plus legacy~/.pi/agent/skills/and.pi/skills/), direct root.mdfiles are discovered as individual skills - In all skill locations, directories containing
SKILL.mdare discovered recursively - In
~/.agents/skills/and project.agents/skills/, root.mdfiles are ignored
--no-skills (explicit --skill paths still load).
Using Skills from Other Harnesses
To use skills from Claude Code or OpenAI Codex, add their directories to settings:.atomic/settings.json (legacy .pi/settings.json is also supported):
How Skills Work
- At startup, Atomic scans skill locations and extracts names and descriptions
- The system prompt includes available skills in XML format per the specification
- When a task matches, the agent uses
readto load the full SKILL.md (models don’t always do this; use prompting or/skill:nameto force it) - The agent follows the instructions, using relative paths to reference scripts and assets
Built-in prompt engineering guidance
The bundled/skill:prompt-engineer creates, optimizes, evaluates, and troubleshoots prompts for GPT-5.6, Claude Opus 5, and Claude Fable 5. It teaches a delete-first workflow: preserve outcomes, safety, permissions, evidence, output, and stopping contracts while removing repetition, generic self-checks, and obsolete process scaffolding. For autonomous prompts it recommends a compact Role · Goal · Success criteria · Constraints · Tools · Output · Stop rules shape, context-dependent tool routing, explicit effort and response-length controls, restrained delegation, grounded progress claims, and documents-first/query-last ordering for long inputs.
The skill no longer recommends response prefilling, which returns an error on Claude 4.6 and later, or visible chain-of-thought as a primary technique. Use explicit output instructions, schemas, tools, or post-processing instead of prefilling. Request conclusions, citations, commands, and observed results rather than reconstructed private reasoning; such requests can trigger Claude Fable 5’s reasoning_extraction safeguard and force a model fallback.
Skill Commands
Skills register as/skill:name commands:
@project, @user, and @builtin are available only when that family has one candidate in the collision. If a family contains multiple package candidates, Atomic advertises package-qualified aliases instead, such as /skill:review@team-review and /skill:review@company-review; the family selector is ambiguous and reports the exact choices. Autocomplete, pi.getCommands(), and RPC get_commands return the same advertised names.
Qualified selection is exact. An unknown or ambiguous qualified selector reports an error and never falls back to the bare winner. Aliases are recalculated on reload, so a qualified alias disappears when its collision disappears. The model-visible skill list uses the same aliases, while the opaque candidate IDs stored in transcripts and collision diagnostics are internal identity, not command names.
Subagent definitions and per-call skills overrides accept these same selectors. Live in-process children resolve them from their own loader catalog after resource reload; a missing or ambiguous selector is reported in the child result instead of silently selecting the bare skill. The parent-only subagent orchestration skill cannot be injected into a child, including qualified aliases such as subagent@builtin. Extensions can read the same catalog through ctx.getSkillCatalog().
Arguments after the command are appended to the skill content as User: <args>.
Toggle skill commands via /settings in interactive mode or in settings.json:
Skill Structure
A skill is a directory with aSKILL.md file. Everything else is freeform.
SKILL.md Format
ALWAYS/NEVER language. Put detailed or model-specific material in references/ so it loads only when needed. Do not ask models to reproduce private reasoning or repeatedly verify their own work; require evidence or validation results where correctness matters.
Frontmatter
Per the Agent Skills specification:Name Rules
- 1-64 characters
- Lowercase letters, numbers, hyphens only
- No leading/trailing hyphens
- No consecutive hyphens
- Must match parent directory name
pdf-processing, data-analysis, code-review
Invalid: PDF-Processing, -pdf, pdf--processing
Description Best Practices
The description determines when the agent loads the skill. Be specific. Good:Validation
Atomic validates skills against the Agent Skills standard. Most issues produce warnings but still load the skill:- Name doesn’t match parent directory
- Name exceeds 64 characters or contains invalid characters
- Name starts/ends with hyphen or has consecutive hyphens
- Description exceeds 1024 characters
/skill:name. Atomic also retains the other files as source-qualified candidates as described in Skill Commands.
Example
Skill Repositories
- Anthropic Skills - Document processing (docx, pdf, pptx, xlsx), web development
- Pi Skills - Upstream skill examples for web search, browser automation, Google APIs, and transcription