Asta uses an OpenClaw-style skill system: skills are folders under workspace/skills/ with a SKILL.md file. The AI selects the best skill based on the userβs message and loads it on demand.
Every skill needs YAML frontmatter and a markdown body:
---name: my-skilldescription: One-line summary. Use when the user asks for X or mentions Y.metadata: openclaw: emoji: "π§" requires: bins: ["jq", "curl"] env: ["API_KEY"]---# My SkillInstructions, commands, and examples for the AI to follow.
description: Manage Apple Notes via osascript and memo CLI. Use when the user asks to list notes, search notes, create a note, move notes, or delete notes.
β What + when:
description: Notion API for creating, reading, updating, and querying pages and databases. Use when the user mentions Notion, asks to save to Notion, or check a Notion board.
From ~/workspace/source/workspace/skills/apple-notes/SKILL.md:
# Apple NotesFull Apple Notes management via `osascript` (all operations) and `memo` (quick listing).**Key rule:** Always prefer `osascript` over `memo` for any write or move operation.## List & Read**List all notes (all folders):**```bashmemo notes
Read a noteβs content:
osascript -e 'tell application "Notes" to get body of (first note of folder "Notes" whose name contains "Shopping")'
osascript -e 'tell application "Notes" to make new note at folder "Notes" with properties {name:"Title", body:"Content here"}'
This gives the AI:- **Clear commands** it can copy- **Section headers** for quick navigation- **Real examples** (not placeholders)## Complete Example: Weather SkillHere's a minimal skill that uses wttr.in for weather:```markdown---name: weather-wttrdescription: Get weather forecasts using wttr.in. Use when the user asks about weather, temperature, or forecast for a location.metadata: openclaw: emoji: "π€οΈ" requires: bins: ["curl"]---# Weather (wttr.in)Get weather forecasts via wttr.in API.## Current weather```bashcurl "https://wttr.in/Tokyo?format=%l:+%C+%t+%w"
Use %l for location, %C for condition, %t for temperature
Add ?format=3 for a 3-day text forecast
URL-encode location names with spaces: New%20York
Save to `workspace/skills/weather-wttr/SKILL.md` and Asta will auto-detect it.## Skill Discovery & Enabling<Steps><Step title="Create the skill folder">Create a new directory for your skill in the workspace skills directory:- Run: `mkdir -p workspace/skills/myskill`- Navigate: `cd workspace/skills/myskill`</Step><Step title="Write SKILL.md">Use the template above or copy an existing skill as a starting point.</Step><Step title="Restart Asta (or reload skills)">Asta scans workspace/skills at startup. Restart the backend with: `asta.sh restart`</Step><Step title="Enable the skill in Settings">1. Open Asta web panel: http://localhost:80002. Go to Settings β Skills3. Find your skill and toggle it On4. If dependencies are missing, Asta shows installation hints</Step></Steps>## Using Dependencies in Skills### BinariesIf your skill needs a CLI tool, declare it in `requires.bins`:```yamlrequires: bins: ["jq", "curl"]
Asta checks if these binaries are in PATH. If missing, the skill is disabled until the user installs them.