A skill is the agentic equivalent of a function or a CLI tool: it has a name, a defined input/output contract, and it does one thing well. In the {a}OS workspace, every skill lives in a canonical directory under 0.agentic/Skills/<name>/ with a SKILL.md that specifies its steps, model tier, constraints, and flags.
Skills are invoked — not scheduled, not automatically fired. A human types /sentinel or an orchestrating agent decides to call it as part of a larger plan. This is the key distinction from hooks (which fire on events) and cron jobs (which fire on time).
/slash-command in .claude/commands/. Never give a user a long python path/to/script.py --flags command. The slash command is the interface.
SKILL.md — steps, model tier, constraints, expected inputs/outputs*.py / *.ps1 — implementation script (optional; some skills are pure prompt instructions).claude/commands/<name>.md — slash-command interface0.agentic/Skills/registry.json — canonical path, model tier, description, related skills| Concept | Trigger | Scope | Example |
|---|---|---|---|
| Skill | Manual or agentic (on demand) | Single capability, one step or a few | /sentinel, /humanizer, /close |
| Workflow | Manual or agentic (on demand) | Multi-step, chains skills and decisions | /li-crucible, /acquire-skill |
| Hook | Lifecycle event (automatic) | Side effect at a runtime boundary | Sentinel on Stop, memory capture on PostToolUse |
registry.json and AntiGravity before building custom.