anymo Docs
Features

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

  1. Slash command

    Type / in the composer to open the palette: rows of name, description, and scope, filter as you type, Enter to insert. /page-report runs the skill as its own recorded run.

  2. Auto mode, inside runs

    Enabled skills are offered to the model during runs and invoked through the policy-gated skill.invoke tool, 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.

  3. 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=v binds to every step whose tool accepts k.
  • A 1-based STEP.k=v (for example 2.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.

Anymo ยท Apache-2.0 GitHub