Folder layout, SKILL.md format, and how to publish skills to the registry.
The fastest way to author a skill is to use the bundled skill-creator skill from Claude Code inside a sandbox terminal. It walks you through the folder layout, writes a well-formed SKILL.md, scaffolds scripts, and tests it end-to-end.
---name: my-skilldescription: Brief one-line description — this is what the AI sees in <available_skills>---# My Skill## When to useDescribe the task signal that should make the AI reach for this skill.## Workflow1. ...2. ...## Scripts- `scripts/process.py` — what it does, how to call it.## Output formatBe explicit about where files should land and what shape the user expects.
Keep SKILL.md short. The AI reads it once per invocation — walls of text eat context. Use references/ for long docs, and tell the AI in SKILL.md when to consult them.
Custom skills are stored in the Settings Wrapper registry. Zip your skill, upload it via the dashboard (or let the AI do it via the settings-manager skill), and it becomes available on your account.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Yambr","colors":{"primary":"#65A30D","light":"#A3E635","dark":"#3F6212"},"logo":{"light":"https://mintcdn.com/yambr/b_GH1xc1e1O0xxjD/logo/yambr.png?fit=max\u0026auto=format\u0026n=b_GH1xc1e1O0xxjD\u0026q=85\u0026s=86eaec0a14414049dfb9a1068cd73bcd","dark":"https://mintcdn.com/yambr/b_GH1xc1e1O0xxjD/logo/yambr.png?fit=max\u0026auto=format\u0026n=b_GH1xc1e1O0xxjD\u0026q=85\u0026s=86eaec0a14414049dfb9a1068cd73bcd"},"favicon":"https://mintcdn.com/yambr/b_GH1xc1e1O0xxjD/favicon.png?fit=max\u0026auto=format\u0026n=b_GH1xc1e1O0xxjD\u0026q=85\u0026s=8212a5dc1f6ddce62a776b01959c2a29","navbar":{"links":[{"href":"https://github.com/Yambr/open-computer-use","label":"GitHub"},{"href":"https://t.me/yambrcom","label":"Telegram"}],"primary":{"type":"button","label":"Dashboard","href":"https://app.yambr.com/"}},"footer":{"socials":{"github":"https://github.com/Yambr/open-computer-use","telegram":"https://t.me/yambrcom"}},"seo":{"metatags":{"og:image":"https://yambr.com/og-image.svg","og:site_name":"Yambr Docs","twitter:card":"summary_large_image","twitter:image":"https://yambr.com/og-image.svg"}},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"Try on chat.yambr.com","icon":"comments","href":"https://chat.yambr.com/"},{"anchor":"Get API key","icon":"key","href":"https://app.yambr.com/"},{"anchor":"GitHub","icon":"github","href":"https://github.com/Yambr/open-computer-use"},{"anchor":"Telegram","icon":"telegram","href":"https://t.me/yambrcom"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"yambr","hasAudioNarration":false,"actualSubdomain":"yambr","customDomains":["docs.yambr.com"],"gitSource":{"type":"github","owner":"yambr","repo":"docs","deployBranch":"main","isPrivate":false,"contentDirectory":"","mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6a21dd7a29c7042dd5f5eeb7","collectionId":"fe7c0671-4c95-40b6-b349-8d4464c33b14","schemaVersion":"v2"},"feedback":{"thumbs":true,"edits":true,"issues":true},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6a21dd7a29c7042dd5f5eeb7:success","clientVersion":"0.0.3966","searchFilterCounts":[{"language":"default","tag":"Guides","count":47},{"language":"default","tag":"Demo course","count":10},{"language":"default","tag":"Yambr Platform","count":7},{"language":"default","tag":"API reference","count":6},{"language":"default","tag":"Integrations","count":6},{"language":"default","tag":"Features","count":5},{"language":"default","tag":"Self-hosting","count":5},{"language":"default","tag":"Reference","count":5},{"language":"default","tag":"Skills","count":5},{"language":"default","tag":"MCP methods","count":4}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"skills/creating","slug":"/skills/creating","pageMetadata":{"title":"Creating skills","description":"Folder layout, SKILL.md format, and how to publish skills to the registry.","href":"/skills/creating"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Folder layout, SKILL.md format, and how to publish skills to the registry.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`The fastest way to author a skill is to use the bundled `,_jsx(_components.code,{children:`skill-creator`}),` skill from Claude Code inside a sandbox terminal. It walks you through the folder layout, writes a well-formed `,_jsx(_components.code,{children:`SKILL.md`}),`, scaffolds scripts, and tests it end-to-end.`]}),`\n`,_jsx(Heading,{level:`2`,id:`folder-layout`,children:`Folder layout`}),`\n`,_jsx(CodeBlock,{numberOfLines:`7`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`7`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`my-skill/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`├── SKILL.md # Required — what the AI reads`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`├── scripts/ # Optional — runnable helpers`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`│ └── process.py`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`└── references/ # Optional — longer-form docs`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` └── guide.md`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(Heading,{level:`2`,id:`skill-md`,children:_jsx(_components.code,{children:`SKILL.md`})}),`\n`,_jsx(_components.p,{children:`Frontmatter + prose instructions:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`19`,language:`markdown`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`markdown`,children:_jsxs(_components.code,{language:`markdown`,numberOfLines:`19`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`---`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`name`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`my-skill`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`description`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`Brief one-line description — this is what the AI sees in \u003cavailable_skills>`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`---`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-light-font-weight\":`bold`,\"--shiki-dark\":`#569CD6`,\"--shiki-dark-font-weight\":`bold`},children:`# My Skill`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-light-font-weight\":`bold`,\"--shiki-dark\":`#569CD6`,\"--shiki-dark-font-weight\":`bold`},children:`## When to use`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Describe the task signal that should make the AI reach for this skill.`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-light-font-weight\":`bold`,\"--shiki-dark\":`#569CD6`,\"--shiki-dark-font-weight\":`bold`},children:`## Workflow`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`1.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ...`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`2.`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ...`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-light-font-weight\":`bold`,\"--shiki-dark\":`#569CD6`,\"--shiki-dark-font-weight\":`bold`},children:`## Scripts`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#CE9178`},children:\" `scripts/process.py`\"}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` — what it does, how to call it.`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-light-font-weight\":`bold`,\"--shiki-dark\":`#569CD6`,\"--shiki-dark-font-weight\":`bold`},children:`## Output format`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Be explicit about where files should land and what shape the user expects.`})}),`\n`]})})}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Keep `,_jsx(_components.code,{children:`SKILL.md`}),` short. The AI reads it once per invocation — walls of text eat context. Use `,_jsx(_components.code,{children:`references/`}),` for long docs, and tell the AI in `,_jsx(_components.code,{children:`SKILL.md`}),` when to consult them.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`scripts`,children:`Scripts`}),`\n`,_jsxs(_components.p,{children:[`Scripts live under `,_jsx(_components.code,{children:`scripts/`}),` and are invoked via `,_jsx(_components.code,{children:`bash_tool`}),`. Typical shape:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`13`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`13`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:`# scripts/process.py`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`import`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` argparse, sys, json`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#569CD6`},children:`def`}),_jsx(_components.span,{style:{color:`#8250DF`,\"--shiki-dark\":`#DCDCAA`},children:` main`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`():`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ap `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` argparse.ArgumentParser()`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ap.add_argument(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"--input\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`required`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`True`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ap.add_argument(`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"--output\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#9CDCFE`},children:`required`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`True`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`)`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` args `}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`=`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` ap.parse_args()`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#6E7781`,\"--shiki-dark\":`#6A9955`},children:` # ...`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#DCDCAA`},children:` print`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`(json.dumps({`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"ok\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#569CD6`},children:`True`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`, `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`\"path\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: args.output}))`})]}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#C586C0`},children:`if`}),_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#9CDCFE`},children:` __name__`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:` ==`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:` \"__main__\"`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`:`})]}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` main()`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`Design for unix: one job, parseable output, non-zero exit on failure.`}),`\n`,_jsx(Heading,{level:`2`,id:`testing`,children:`Testing`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Drop your skill into `,_jsx(_components.code,{children:`/mnt/skills/public/my-skill/`}),` inside a sandbox (bind-mount or temporary copy).`]}),`\n`,_jsx(_components.li,{children:`Start a fresh chat.`}),`\n`,_jsx(_components.li,{children:`Ask for the thing — the AI should pick the skill automatically.`}),`\n`,_jsxs(_components.li,{children:[`Iterate on `,_jsx(_components.code,{children:`SKILL.md`}),` if the AI keeps reaching for the wrong tool.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`publishing`,children:`Publishing`}),`\n`,_jsx(Heading,{level:`3`,id:`managed-yambr`,children:`Managed Yambr`}),`\n`,_jsxs(_components.p,{children:[`Custom skills are stored in the Settings Wrapper registry. Zip your skill, upload it via the dashboard (or let the AI do it via the `,_jsx(_components.code,{children:`settings-manager`}),` skill), and it becomes available on your account.`]}),`\n`,_jsx(Heading,{level:`3`,id:`self-hosted`,children:`Self-hosted`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Bake into the image.`}),` Drop the folder under `,_jsx(_components.code,{children:`skills/public/my-skill/`}),` in your fork of the repo and rebuild. Everyone on that deployment gets it.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Bind-mount at runtime.`}),` Use the Settings Wrapper’s ZIP-upload flow, or mount a host directory into `,_jsx(_components.code,{children:`/mnt/skills/user/my-skill/`}),`.`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`related`,children:`Related`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/skills/reference`,children:`skill-creator reference`}),` — the meta-skill itself`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`/skills/dynamic`,children:`Dynamic skills`}),` — how user skills get mounted`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.a,{href:`https://github.com/Yambr/open-computer-use/tree/main/settings-wrapper`,children:`Settings Wrapper`}),` — mock registry + API contract`]}),`\n`]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Creating skills","description":"Folder layout, SKILL.md format, and how to publish skills to the registry.","href":"/skills/creating"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Folder layout","slug":"folder-layout","depth":2,"children":[]},{"title":"SKILL.md","slug":"skill-md","depth":2,"children":[]},{"title":"Scripts","slug":"scripts","depth":2,"children":[]},{"title":"Testing","slug":"testing","depth":2,"children":[]},{"title":"Publishing","slug":"publishing","depth":2,"children":[{"title":"Managed Yambr","slug":"managed-yambr","depth":3,"children":[]},{"title":"Self-hosted","slug":"self-hosted","depth":3,"children":[]}]},{"title":"Related","slug":"related","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"yambr","siteName":"Yambr","title":"Creating skills - Yambr","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-04-19T15:59:30.864Z","originalFileLocation":"skills/creating.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Folder layout, SKILL.md format, and how to publish skills to the registry.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Yambr\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/yambr/c0eEsQsYs_9x07u-/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/yambr/c0eEsQsYs_9x07u-/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/yambr/c0eEsQsYs_9x07u-/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/yambr/c0eEsQsYs_9x07u-/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/yambr/c0eEsQsYs_9x07u-/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/yambr/c0eEsQsYs_9x07u-/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/yambr/c0eEsQsYs_9x07u-/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/yambr/c0eEsQsYs_9x07u-/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/yambr/c0eEsQsYs_9x07u-/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Creating skills - Yambr\">\u003cmeta data-mint-head property=\"og:description\" content=\"Folder layout, SKILL.md format, and how to publish skills to the registry.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Yambr Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.yambr.com/skills/creating\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://yambr.com/og-image.svg\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Creating skills - Yambr\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Folder layout, SKILL.md format, and how to publish skills to the registry.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://yambr.com/og-image.svg\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/yambr/c0eEsQsYs_9x07u-/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Yambr\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#65A30D\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.yambr.com/skills/creating\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/skills/creating.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.yambr.com/#organization\",\"name\":\"Yambr\",\"url\":\"https://docs.yambr.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/yambr/b_GH1xc1e1O0xxjD/logo/yambr.png?fit=max\u0026auto=format\u0026n=b_GH1xc1e1O0xxjD\u0026q=85\u0026s=86eaec0a14414049dfb9a1068cd73bcd\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.yambr.com#website\",\"name\":\"Yambr\",\"url\":\"https://docs.yambr.com\",\"publisher\":{\"@id\":\"https://docs.yambr.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.yambr.com/skills/creating#webpage\",\"url\":\"https://docs.yambr.com/skills/creating\",\"name\":\"Creating skills\",\"description\":\"Folder layout, SKILL.md format, and how to publish skills to the registry.\",\"dateModified\":\"2026-04-19T15:59:30.864Z\",\"isPartOf\":{\"@id\":\"https://docs.yambr.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.yambr.com/skills/creating#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.yambr.com/skills/creating#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Skills\",\"item\":\"https://docs.yambr.com/skills/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Creating skills\",\"item\":\"https://docs.yambr.com/skills/creating\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.yambr.com/skills/creating#article\",\"headline\":\"Creating skills\",\"name\":\"Creating skills\",\"description\":\"Folder layout, SKILL.md format, and how to publish skills to the registry.\",\"url\":\"https://docs.yambr.com/skills/creating\",\"mainEntityOfPage\":{\"@id\":\"https://docs.yambr.com/skills/creating#webpage\"},\"image\":\"https://yambr.com/og-image.svg\",\"dateModified\":\"2026-04-19T15:59:30.864Z\",\"publisher\":{\"@id\":\"https://docs.yambr.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.yambr.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Yambr\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"Yambr","nav":{"global":{"anchors":[{"anchor":"Try on chat.yambr.com","icon":"comments","href":"https://chat.yambr.com/"},{"anchor":"Get API key","icon":"key","href":"https://app.yambr.com/"},{"anchor":"GitHub","icon":"github","href":"https://github.com/Yambr/open-computer-use"},{"anchor":"Telegram","icon":"telegram","href":"https://t.me/yambrcom"}]},"tabs":[{"tab":"Guides","groups":[{"group":"Getting started","pages":[{"title":"Yambr Open Computer Use","href":""},{"title":"Quickstart","href":"/quickstart"},{"title":"Introduction","href":"/introduction"},{"title":"Architecture","href":"/architecture"}]},{"group":"Demo course","pages":[{"title":"Demo course","href":"/demo-course/overview"},{"title":"1. Investor pitch deck","href":"/demo-course/01-presentation"},{"title":"2. Project proposal (Word)","href":"/demo-course/02-document"},{"title":"3. Marketing budget tracker (Excel)","href":"/demo-course/03-spreadsheet"},{"title":"4. Freelance invoice (PDF)","href":"/demo-course/04-pdf"},{"title":"5. Data → chart","href":"/demo-course/05-data-chart"},{"title":"6. Roasthaus landing page","href":"/demo-course/06-frontend"},{"title":"7. Hacker News AI digest","href":"/demo-course/07-browser"},{"title":"8. Building the invoice-builder skill","href":"/demo-course/08-skill-creator"},{"title":"9. What's next","href":"/demo-course/09-whats-next"}]},{"group":"Yambr Platform","pages":[{"title":"Yambr Platform","href":"/platform/overview"},{"title":"Access model — MCP only","href":"/platform/access-model"},{"title":"Dashboard tour","href":"/platform/dashboard"},{"title":"API keys","href":"/platform/api-keys"},{"title":"LiteLLM gateway","href":"/platform/litellm"},{"title":"chat.yambr.com","href":"/platform/hosted-chat"},{"title":"cu.yambr.com","href":"/platform/cu-endpoint"}]},{"group":"Self-hosting","pages":[{"title":"Requirements","href":"/install/requirements"},{"title":"Self-host quickstart","href":"/install/quickstart"},{"title":"Configuration","href":"/install/configuration"},{"title":"Docker details","href":"/install/docker"},{"title":"Model settings","href":"/install/model-settings"}]},{"group":"Features","pages":[{"title":"Live browser","href":"/features/browser"},{"title":"Terminal tab","href":"/features/terminal"},{"title":"Code execution","href":"/features/code-execution"},{"title":"Sub-agents (Claude Code)","href":"/features/sub-agents"},{"title":"File preview","href":"/features/file-preview"}]},{"group":"Skills","pages":[{"title":"Skills overview","href":"/skills/overview"},{"title":"Skills user guide","href":"/skills/user-guide"},{"title":"Skills reference","href":"/skills/reference"},{"title":"Dynamic skills","description":"Per-user skill resolution — cache layers, fallbacks, and bind-mounts.","href":"/skills/dynamic"},{"title":"Creating skills","href":"/skills/creating"}]},{"group":"Integrations","pages":[{"title":"Open WebUI","description":"The primary tested frontend — how the tool, filter, and patches fit together, and four traps when embedding Open WebUI in your own stack.","href":"/integrations/open-webui"},{"title":"Open WebUI filter","href":"/integrations/open-webui-filter"},{"title":"Claude Desktop","href":"/integrations/claude-desktop"},{"title":"LiteLLM","href":"/integrations/litellm"},{"title":"n8n","href":"/integrations/n8n"},{"title":"Custom MCP clients","href":"/integrations/custom"}]},{"group":"Reference","pages":[{"title":"Comparison","href":"/reference/comparison"},{"title":"System prompt — six MCP-native tiers","href":"/reference/system-prompt"},{"title":"Known bugs","href":"/reference/known-bugs"},{"title":"Changelog","href":"/reference/changelog"},{"title":"Contributing","href":"/reference/contributing"}]}]},{"tab":"API reference","pages":[{"title":"API reference","href":"/api-reference/introduction"}]}]},"title":"Creating skills - Yambr","buildId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","deploymentId":"dpl_cadrRc5H9XQiJQbDFN5mcYRs2PAj","dynamics":[],"chunks":[]}