Skills
A skill is a run that worked, saved and made repeatable: named steps, declared tools, and parameters you fill in. Invoke one as a slash command, let the agent call it mid-run, or script it headlessly.
Where skills come from
- Distilled from your runs. After a successful run, Anymo may propose "save this as a skill". Proposals appear in the "From this run" panel and are never auto-approved; you review the steps and accept or reject.
- From plugins. Installed plugins ship skill bundles, listed in the Skills view under "From plugins".
- Starter skill. Setup installs
page-report, which fetches a public page and writes a short Markdown report, a good one to read first.
Under the hood a skill is one YAML file in your workspace (.anymo/skills/): name, description, declared permissions, and steps. Plain text, diffable, versionable.
The Skills view
The sidebar lists skills grouped as Personal and From plugins. A skill's detail pane shows its name, who added it, the trigger ("Slash command + auto"), the description, the full skill body in a document viewer, and an enable toggle top-right. Only enabled skills appear in the palette and are offered to runs. Disabling a skill is instant and reversible, which makes it the rollback switch for a skill you regret approving.
Three ways to run one
-
Slash command
Type
/in the composer to open the palette: rows of name, description, and scope, filter as you type, Enter to insert./page-reportruns the skill as its own recorded run. -
Auto mode, inside runs
Enabled skills are offered to the model during runs and invoked through the policy-gated
skill.invoketool, with the same approvals and the same event log as any tool call. The agent reaches for your skills the way it reaches for built-ins. -
Headless
sh anymo skill list --workspace anymo-demo anymo skill run page-report --param url=https://example.com --workspace anymo-demo
Parameters
Skills are templates; parameters fill the blanks at run time.
- A bare
k=vbinds to every step whose tool acceptsk. - A 1-based
STEP.k=v(for example2.path=out.md) binds to one step only. - Each step receives only the keys its tool's input schema declares.
- If required inputs are missing, the error reports all of them at once, not one per attempt.
Wiring steps together
A step can declare its own inputs, including templates that reference earlier output: {{steps.N.output}} for a whole output, {{steps.N.output.KEY}} for one field. That is how page-report pipes the fetched page body into its write step; you supply only url, and the skill moves data between steps itself. Your --param values override a step's declared inputs when both exist.
Permissions are validated, not trusted
A skill declares the permissions it needs, and that declaration is validated against the tools its steps actually use. A skill can never be quietly more privileged than its steps require, and running one obeys the run's permission mode: a skill step that hits a high-risk tool still asks. Approving a skill proposal grants reuse, not new capability.
Frequently asked questions
My skill doesn't show up as a slash command.
Only enabled skills appear. Check the toggle in the Skills view, confirm it exists with anymo skill list, and remember slash names must match exactly: /<skill-name>.
Can I edit a skill?
Yes. It is a YAML file in .anymo/skills/; edit the steps or description and the next invocation uses the new version. Keep the declared permissions honest; validation will hold you to them.
Can I share skills?
Copy the YAML file, or package skills into a plugin directory; plugin skill bundles are the supported distribution path. See Plugins.