[{"data":1,"prerenderedAt":713},["ShallowReactive",2],{"navigation_docs":3,"-platform-skills-authoring":151,"-platform-skills-authoring-surround":708},[4,15,75,136],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":14},"Getting Started","i-lucide-rocket","/getting-started","1.getting-started",[10],{"title":11,"path":12,"stem":13,"icon":6},"Quick Start","/getting-started/quick-start","1.getting-started/1.quick-start",false,{"title":16,"icon":17,"path":18,"stem":19,"children":20,"page":14},"Guides","i-lucide-book-open","/guides","2.guides",[21,26,31,36,41,46,51,56,61,66,71],{"title":22,"path":23,"stem":24,"icon":25},"Deployment","/guides/deployment","2.guides/1.deployment","i-lucide-server",{"title":27,"path":28,"stem":29,"icon":30},"Get Help","/guides/get-help","2.guides/10.get-help","i-lucide-message-circle",{"title":32,"path":33,"stem":34,"icon":35},"Glossary","/guides/glossary","2.guides/11.glossary","i-lucide-book-marked",{"title":37,"path":38,"stem":39,"icon":40},"Concepts","/guides/concepts","2.guides/2.concepts","i-lucide-list",{"title":42,"path":43,"stem":44,"icon":45},"Roadmap","/guides/roadmap","2.guides/3.roadmap","i-lucide-map",{"title":47,"path":48,"stem":49,"icon":50},"Contribution Guide","/guides/contribution-guide","2.guides/4.contribution-guide","i-lucide-git-pull-request",{"title":52,"path":53,"stem":54,"icon":55},"Using the Dashboard","/guides/using-the-dashboard","2.guides/5.using-the-dashboard","i-lucide-layout-dashboard",{"title":57,"path":58,"stem":59,"icon":60},"Privacy and Data","/guides/privacy-and-data","2.guides/6.privacy-and-data","i-lucide-shield",{"title":62,"path":63,"stem":64,"icon":65},"Changelog","/guides/changelog","2.guides/7.changelog","i-lucide-history",{"title":67,"path":68,"stem":69,"icon":70},"Limits and Quotas","/guides/limits-and-quotas","2.guides/8.limits-and-quotas","i-lucide-gauge",{"title":72,"path":73,"stem":74,"icon":25},"Self-Hosting","/guides/self-hosting","2.guides/9.self-hosting",{"title":76,"icon":77,"path":78,"stem":79,"children":80,"page":14},"Platform","i-lucide-layers","/platform","3.platform",[81,86,91,96,100,105,110,114,119,123,128,132],{"title":82,"path":83,"stem":84,"icon":85},"Agent OS","/platform/agent","3.platform/1.agent","i-lucide-cpu",{"title":87,"path":88,"stem":89,"icon":90},"Store API Contract (for Agent OS)","/platform/store-api","3.platform/10.store-api","i-lucide-code-2",{"title":92,"path":93,"stem":94,"icon":95},"CLI Reference","/platform/cli-reference","3.platform/11.cli-reference","i-lucide-terminal",{"title":97,"path":98,"stem":99,"icon":25},"MCP Server Integration (optional)","/platform/mcp-server-integration","3.platform/12.mcp-server-integration",{"title":101,"path":102,"stem":103,"icon":104},"Channels (Telegram, Slack, Discord, Signal, Viber)","/platform/integrations","3.platform/2.integrations","i-lucide-plug",{"title":106,"path":107,"stem":108,"icon":109},"Skills Store (optional)","/platform/store","3.platform/3.store","i-lucide-store",{"title":111,"path":112,"stem":113,"icon":17},"Skills Authoring","/platform/skills-authoring","3.platform/4.skills-authoring",{"title":115,"path":116,"stem":117,"icon":118},"Security","/platform/security","3.platform/5.security","i-lucide-shield-check",{"title":120,"path":121,"stem":122,"icon":90},"Agent API Reference","/platform/agent-api","3.platform/6.agent-api",{"title":124,"path":125,"stem":126,"icon":127},"Agent Configuration","/platform/agent-config","3.platform/7.agent-config","i-lucide-settings",{"title":129,"path":130,"stem":131,"icon":127},"Channels Configuration","/platform/integrations-config","3.platform/8.integrations-config",{"title":133,"path":134,"stem":135,"icon":127},"Store Configuration (optional)","/platform/store-config","3.platform/9.store-config",{"title":137,"icon":138,"path":139,"stem":140,"children":141,"page":14},"Troubleshooting","i-lucide-wrench","/troubleshooting","4.troubleshooting",[142,146],{"title":143,"path":144,"stem":145,"icon":138},"Common Issues","/troubleshooting/common-issues","4.troubleshooting/1.common-issues",{"title":147,"path":148,"stem":149,"icon":150},"FAQ","/troubleshooting/faq","4.troubleshooting/2.faq","i-lucide-help-circle",{"id":152,"title":111,"body":153,"description":701,"extension":702,"links":703,"meta":704,"navigation":705,"path":112,"seo":706,"stem":113,"__hash__":707},"docs/3.platform/4.skills-authoring.md",{"type":154,"value":155,"toc":690},"minimark",[156,161,175,207,218,222,232,289,293,443,447,489,493,500,532,554,558,580,584,634,638,645,667,673,677,686],[157,158,160],"h2",{"id":159},"overview","Overview",[162,163,164,165,169,170,174],"p",{},"Skills are ",[166,167,168],"strong",{},"installable modules"," under ",[171,172,173],"code",{},"~/.agent-os/skills/\u003Cname>/",". Each skill has:",[176,177,178,189,195,201],"ul",{},[179,180,181,184,185,188],"li",{},[166,182,183],{},"skill.yaml"," or ",[166,186,187],{},"SKILL.md"," — Name, description, optional metadata; SKILL.md can embed a YAML block for the same.",[179,190,191,194],{},[166,192,193],{},"tools.yaml"," — Optional. Defines tools (HTTP or exec-based) that the skill adds to the tool registry.",[179,196,197,200],{},[166,198,199],{},"config.schema.json"," — Optional. JSON schema for skill config; the dashboard uses it for a config form.",[179,202,203,206],{},[166,204,205],{},"SETUP.md"," — Optional. Setup instructions (e.g. how to get API keys).",[162,208,209,210,213,214,217],{},"Agents declare ",[171,211,212],{},"skills: [\"weather\", \"memory\"]",". The loader reads each skill’s YAML and tools, registers tools, and stores per-skill config in ",[171,215,216],{},"~/.agent-os/configs/\u003Cskill_id>.json",".",[157,219,221],{"id":220},"skill-folder-layout","Skill folder layout",[223,224,229],"pre",{"className":225,"code":227,"language":228},[226],"language-text","~/.agent-os/skills/weather/\n├── skill.yaml       # or SKILL.md (Markdown with embedded ```yaml block)\n├── tools.yaml       # optional\n├── config.schema.json  # optional\n└── SETUP.md         # optional\n","text",[171,230,227],{"__ignoreMap":231},"",[176,233,234,260,269,280],{},[179,235,236,238,239,241,242,245,246,249,250,245,253,245,256,259],{},[166,237,183],{}," (or ",[166,240,187],{},") — Required. Defines ",[171,243,244],{},"name",", ",[171,247,248],{},"description",", and optionally ",[171,251,252],{},"credentials",[171,254,255],{},"api_base",[171,257,258],{},"metadata",", etc.",[179,261,262,264,265,268],{},[166,263,193],{}," — Optional. Top-level ",[171,266,267],{},"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.",[179,270,271,273,274,276,277,217],{},[166,272,199],{}," — Optional. Schema for the key/value config stored in ",[171,275,216],{},". Exposed as ",[171,278,279],{},"GET /api/skills/:id/config/schema",[179,281,282,284,285,288],{},[166,283,205],{}," — Optional. Returned as ",[171,286,287],{},"GET /api/skills/:id/setup"," for dashboard display.",[157,290,292],{"id":291},"create-your-first-skill","Create your first skill",[294,295,296,324,402,425],"ol",{},[179,297,298,301],{},[166,299,300],{},"Create the directory:",[223,302,306],{"className":303,"code":304,"language":305,"meta":231,"style":231},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","mkdir -p ~/.agent-os/skills/hello-world\n","bash",[171,307,308],{"__ignoreMap":231},[309,310,313,317,321],"span",{"class":311,"line":312},"line",1,[309,314,316],{"class":315},"sBMFI","mkdir",[309,318,320],{"class":319},"sfazB"," -p",[309,322,323],{"class":319}," ~/.agent-os/skills/hello-world\n",[179,325,326,329,358,361,362,397],{},[166,327,328],{},"Add skill.yaml (or SKILL.md):",[223,330,334],{"className":331,"code":332,"language":333,"meta":231,"style":231},"language-yaml shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","name: hello-world\ndescription: Use when the user says hello or asks for a greeting.\n","yaml",[171,335,336,348],{"__ignoreMap":231},[309,337,338,341,345],{"class":311,"line":312},[309,339,244],{"class":340},"swJcz",[309,342,344],{"class":343},"sMK4o",":",[309,346,347],{"class":319}," hello-world\n",[309,349,351,353,355],{"class":311,"line":350},2,[309,352,248],{"class":340},[309,354,344],{"class":343},[309,356,357],{"class":319}," Use when the user says hello or asks for a greeting.\n",[359,360],"br",{},"Or in SKILL.md with embedded YAML:",[223,363,367],{"className":364,"code":365,"language":366,"meta":231,"style":231},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# Hello World\nUse when the user wants a greeting.\n```yaml\nname: hello-world\ndescription: Use when the user says hello or asks for a greeting.\n","markdown",[171,368,369,374,379,385,391],{"__ignoreMap":231},[309,370,371],{"class":311,"line":312},[309,372,373],{},"# Hello World\n",[309,375,376],{"class":311,"line":350},[309,377,378],{},"Use when the user wants a greeting.\n",[309,380,382],{"class":311,"line":381},3,[309,383,384],{},"```yaml\n",[309,386,388],{"class":311,"line":387},4,[309,389,390],{},"name: hello-world\n",[309,392,394],{"class":311,"line":393},5,[309,395,396],{},"description: Use when the user says hello or asks for a greeting.\n",[223,398,400],{"className":399,"code":231,"language":228},[226],[171,401,231],{"__ignoreMap":231},[179,403,404,407,408,410,411,414,415,417,418,245,421,424],{},[166,405,406],{},"(Optional) Add tools.yaml"," — If the skill needs tools, add a ",[171,409,267],{}," array. Each tool has at least ",[171,412,413],{},"id"," and ",[171,416,248],{},"; for HTTP tools, ",[171,419,420],{},"method",[171,422,423],{},"path",", and parameters; for exec, the loader may expect a different shape (see repo skills).",[179,426,427,430,431,434,435,438,439,442],{},[166,428,429],{},"Install / load"," — Copy the folder to ",[171,432,433],{},"~/.agent-os/skills/"," or use ",[166,436,437],{},"Install system skills"," / ",[166,440,441],{},"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.",[157,444,446],{"id":445},"skill-format-reference","Skill format (reference)",[176,448,449,458,463,468,480],{},[179,450,451,453,454,457],{},[166,452,244],{}," — Unique skill id (folder name usually matches). Used in agent ",[171,455,456],{},"skills"," and in configs.",[179,459,460,462],{},[166,461,248],{}," — One-line summary; helps the runtime and dashboard know when the skill applies.",[179,464,465,467],{},[166,466,252],{}," — Optional list of env/config key names the skill needs (e.g. API keys). Users set them in Settings → Skills → config for this skill.",[179,469,470,438,472,475,476,479],{},[166,471,255],{},[166,473,474],{},"base_url_env"," — Optional. For HTTP tools, base URL or env var name for the base URL. Integration base URLs are runtime config; skills use placeholders like ",[171,477,478],{},"{{base}}"," in tools where the agent supplies base at runtime.",[179,481,482,484,485,488],{},[166,483,258],{}," — Optional. e.g. ",[171,486,487],{},"metadata.clawdbot.requires.env"," for extra required env vars.",[157,490,492],{"id":491},"tools-toolsyaml","Tools (tools.yaml)",[162,494,495,496,499],{},"Tools are registered in the ",[166,497,498],{},"tool registry"," when the skill is loaded. Each tool has:",[176,501,502,511,516,526],{},[179,503,504,506,507,510],{},[166,505,413],{}," — Unique tool name (e.g. ",[171,508,509],{},"weather_current","). Must be unique across all skills.",[179,512,513,515],{},[166,514,248],{}," — When to call this tool (for the model).",[179,517,518,245,520,522,523,525],{},[166,519,420],{},[166,521,423],{}," — For HTTP tools: method and path (or full URL). Path can use ",[171,524,478],{}," if the skill uses a runtime-supplied base URL.",[179,527,528,531],{},[166,529,530],{},"parameters"," — Input schema for the model (names, types, descriptions).",[162,533,534,535,538,539,542,543,546,547,414,550,553],{},"See existing skills in ",[171,536,537],{},"data/skills/"," in the repo for examples (e.g. weather, memory, web-search). The loader may also support ",[166,540,541],{},"exec","-based tools that run a script in the skill dir with ",[171,544,545],{},"skill_id","; see ",[171,548,549],{},"skills/loader.ts",[171,551,552],{},"tools/exec.ts"," for the contract.",[157,555,557],{"id":556},"config-and-credentials","Config and credentials",[176,559,560,571],{},[179,561,562,565,566,184,568,570],{},[166,563,564],{},"Required env/config"," — Declare in skill YAML (",[171,567,252],{},[171,569,487],{},"). Users fill them in the dashboard (Settings → Skills → select skill → Config) or you can document them in SETUP.md.",[179,572,573,576,577,579],{},[166,574,575],{},"Storage"," — Values are stored in ",[171,578,216],{},". The runtime and tools read them when executing; do not put secrets in the skill repo.",[157,581,583],{"id":582},"where-skills-load-from","Where skills load from",[176,585,586,603,624],{},[179,587,588,591,592,238,594,597,598,184,600,602],{},[166,589,590],{},"Primary:"," ",[171,593,433],{},[171,595,596],{},"AGENT_OS_SKILLS_DIR","). Each subdirectory is one skill (with ",[171,599,183],{},[171,601,187],{},").",[179,604,605,591,608,610,611,614,615,617,618,621,622,217],{},[166,606,607],{},"System/seed:",[171,609,537],{}," in the repo (or ",[171,612,613],{},"AGENT_OS_SEED_SKILLS_DIR","). Use ",[166,616,437],{}," (dashboard or ",[171,619,620],{},"POST /api/skills/install-system",") to copy them into ",[171,623,433],{},[179,625,626,629,630,633],{},[166,627,628],{},"Store:"," Optional. If a store registry URL is configured, the dashboard and ",[171,631,632],{},"POST /api/skills/install"," can install skills by slug from that registry.",[157,635,637],{"id":636},"adding-to-a-store-optional","Adding to a store (optional)",[162,639,640,641,644],{},"If you run or use a ",[166,642,643],{},"skill store"," (e.g. SulalaHub-style):",[176,646,647,650],{},[179,648,649],{},"Publish skill content (README/Markdown + tools.yaml) at a URL.",[179,651,652,653,245,656,245,658,245,660,245,663,666],{},"Add an entry to the store’s registry: ",[171,654,655],{},"slug",[171,657,244],{},[171,659,248],{},[171,661,662],{},"version",[171,664,665],{},"url",". Then users can install via the dashboard or API with that slug.",[162,668,669,670,672],{},"Agent OS does not require a store; skills can be installed by copying to ",[171,671,433],{}," or via upload/install-system.",[157,674,676],{"id":675},"validation","Validation",[162,678,679,680,682,683,685],{},"Follow the existing skill layout and naming in the repo. The loader parses YAML and registers tools; invalid YAML or missing ",[171,681,244],{},"/",[171,684,248],{}," may cause the skill to be skipped (check server logs).",[687,688,689],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}",{"title":231,"searchDepth":350,"depth":350,"links":691},[692,693,694,695,696,697,698,699,700],{"id":159,"depth":350,"text":160},{"id":220,"depth":350,"text":221},{"id":291,"depth":350,"text":292},{"id":445,"depth":350,"text":446},{"id":491,"depth":350,"text":492},{"id":556,"depth":350,"text":557},{"id":582,"depth":350,"text":583},{"id":636,"depth":350,"text":637},{"id":675,"depth":350,"text":676},"How to write a skill for Agent OS — folder layout (skill.yaml or SKILL.md, tools.yaml), config schema, and installation.","md",null,{},{"icon":17},{"title":111,"description":701},"7erxXJ99gAaM8pT7LcQ7KTWMwZXzA4IEOWVwf9OOuk4",[709,711],{"title":106,"path":107,"stem":108,"description":710,"icon":109,"children":-1},"Optional skill store and registry for Agent OS — browse and install skills by slug.",{"title":115,"path":116,"stem":117,"description":712,"icon":118,"children":-1},"How secrets, tokens, and access are handled in Sulala Agent OS.",1773850668598]