Skills are installable modules under ~/.agent-os/skills/<name>/. Each skill has:
Agents declare skills: ["weather", "memory"]. The loader reads each skill’s YAML and tools, registers tools, and stores per-skill config in ~/.agent-os/configs/<skill_id>.json.
~/.agent-os/skills/weather/
├── skill.yaml # or SKILL.md (Markdown with embedded ```yaml block)
├── tools.yaml # optional
├── config.schema.json # optional
└── SETUP.md # optional
name, description, and optionally credentials, api_base, metadata, etc.tools: array; each entry defines a tool (id, description, method/path for HTTP, or exec). See loader and existing skills in the repo for the exact schema.~/.agent-os/configs/<skill_id>.json. Exposed as GET /api/skills/:id/config/schema.GET /api/skills/:id/setup for dashboard display.mkdir -p ~/.agent-os/skills/hello-world
name: hello-world
description: Use when the user says hello or asks for a greeting.
# Hello World
Use when the user wants a greeting.
```yaml
name: hello-world
description: Use when the user says hello or asks for a greeting.
tools: array. Each tool has at least id and description; for HTTP tools, method, path, and parameters; for exec, the loader may expect a different shape (see repo skills).~/.agent-os/skills/ or use Install system skills / Upload from the dashboard. Restart the server or rely on hot-load if supported. Then assign the skill to an agent in the Agents page.skills and in configs.{{base}} in tools where the agent supplies base at runtime.metadata.clawdbot.requires.env for extra required env vars.Tools are registered in the tool registry when the skill is loaded. Each tool has:
weather_current). Must be unique across all skills.{{base}} if the skill uses a runtime-supplied base URL.See existing skills in data/skills/ in the repo for examples (e.g. weather, memory, web-search). The loader may also support exec-based tools that run a script in the skill dir with skill_id; see skills/loader.ts and tools/exec.ts for the contract.
credentials or metadata.clawdbot.requires.env). Users fill them in the dashboard (Settings → Skills → select skill → Config) or you can document them in SETUP.md.~/.agent-os/configs/<skill_id>.json. The runtime and tools read them when executing; do not put secrets in the skill repo.~/.agent-os/skills/ (or AGENT_OS_SKILLS_DIR). Each subdirectory is one skill (with skill.yaml or SKILL.md).data/skills/ in the repo (or AGENT_OS_SEED_SKILLS_DIR). Use Install system skills (dashboard or POST /api/skills/install-system) to copy them into ~/.agent-os/skills/.POST /api/skills/install can install skills by slug from that registry.If you run or use a skill store (e.g. SulalaHub-style):
slug, name, description, version, url. Then users can install via the dashboard or API with that slug.Agent OS does not require a store; skills can be installed by copying to ~/.agent-os/skills/ or via upload/install-system.
Follow the existing skill layout and naming in the repo. The loader parses YAML and registers tools; invalid YAML or missing name/description may cause the skill to be skipped (check server logs).