Each project can have custom skills — packaged .zip bundles you upload through the web UI. They’re loaded alongside the built-in skills whenever the agent runs.
A skill file has two parts: frontmatter (metadata) and body (instructions for the agent).
---name: my-skilldescription: Short description of what this skill does.metadata: tags: tag1, tag2---# My SkillInstructions for the agent when this skill is activated.## When to useDescribe the situations where this skill applies.## How to useStep-by-step guidance for the agent.
The body is free-form Markdown. Write it as if you’re briefing a colleague — the agent reads these instructions when the skill is relevant to the current task.Common sections to include:
Some skill names have special meaning — the agent’s built-in workflows look for them by name. If you create a skill with a reserved name, it plugs directly into the corresponding pipeline.
The video assembly pipeline uses this skill to discover source video content. When the agent needs raw footage for clip selection, it invokes content-lookup to get a list of available content entries with preview URLs.Your content-lookup skill should return structured information about where to find source videos — for example, an API endpoint, a folder path, or a catalog of entries with URLs the agent can fetch.
---name: content-lookupdescription: Returns available source video content for clip selection and assembly.metadata: tags: video, content, source---# Content LookupUse this skill to find source video content for ad assembly.## Available content| Name | Preview URL | Duration | Notes ||------|------------|----------|-------|| App walkthrough | https://example.com/videos/walkthrough.mp4 | 45s | Main product demo || User testimonial | https://example.com/videos/testimonial.mp4 | 30s | Social proof clip || Feature highlight | https://example.com/videos/feature.mp4 | 20s | Key feature demo |
Without a content-lookup skill, the agent won’t know where to find source footage for video assembly. Add this skill first if you’re producing video ads.
Re-upload the skill using the same slug — the new zip replaces the old one.
The agent picks up changes on the next sync (automatic on sandbox wake, or
trigger manually with the sync_skills tool during a session).
Your custom skills run alongside the built-in skills that ship with the agent. These include skills for Remotion video production, ElevenLabs voice synthesis, video assembly, frontend design, and more. Custom skills take the same format and have equal priority.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"MADKITTY","colors":{"primary":"#D7261C","light":"#F26B62","dark":"#A81E15"},"logo":{"light":"https://mintcdn.com/mad-kitty/ZZYTo0sJMZM4EMma/assets/brand/logo-light.svg?fit=max\u0026auto=format\u0026n=ZZYTo0sJMZM4EMma\u0026q=85\u0026s=7477b73af85ba6a06561abdbb27ed3d0","dark":"https://mintcdn.com/mad-kitty/ZZYTo0sJMZM4EMma/assets/brand/logo-dark.svg?fit=max\u0026auto=format\u0026n=ZZYTo0sJMZM4EMma\u0026q=85\u0026s=a8b588ece2e025604ff522f87f6a7f5d"},"favicon":"https://mintcdn.com/mad-kitty/3iAOEAypHEt4gzMH/favicon.ico?fit=max\u0026auto=format\u0026n=3iAOEAypHEt4gzMH\u0026q=85\u0026s=71b52bdfd316b6083fb2c032f33bd6fb","styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"mad-kitty","hasAudioNarration":false,"actualSubdomain":"mad-kitty","customDomains":["docs.mad-kitty.dev"],"gitSource":{"type":"github","owner":"techfb","repo":"mad-kitty","deployBranch":"main","contentDirectory":"apps/docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"collectionId":"89bda576-c7ef-4110-aa4a-d7c81c79a902","liveDeploymentHistoryId":"6ab2407f37e2bc167108729f","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ab2407f37e2bc167108729f"},"feedback":{"thumbs":false},"entitlements":{},"buildId":"6ab2407f37e2bc167108729f","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"Reference","count":11},{"language":"default","tag":"Core Concepts","count":6},{"language":"default","tag":"Facebook setup","count":6},{"language":"default","tag":"The Team","count":4},{"language":"default","tag":"Funnel tracking \u0026 analytics","count":4},{"language":"default","tag":"Developers","count":2},{"language":"default","tag":"Getting Started","count":2}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","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":"workos-sso-scim","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},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"custom-skills","slug":"/custom-skills","pageMetadata":{"title":"Custom Skills","description":"Add your own skills to extend the agent's capabilities per project","icon":"puzzle-piece","href":"/custom-skills"},"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: \"Add your own skills to extend the agent’s capabilities per project\"\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={code:`code`,li:`li`,ol:`ol`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,Table,Tip}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Tip)_missingMdxReference(`Tip`,true);return _jsxs(_Fragment,{children:[_jsx(Heading,{level:`1`,id:`custom-skills`,children:`Custom Skills`}),`\n`,_jsxs(_components.p,{children:[`Each project can have custom skills — packaged `,_jsx(_components.code,{children:`.zip`}),` bundles you upload through the web UI. They’re loaded alongside the built-in skills whenever the agent runs.`]}),`\n`,_jsx(Heading,{level:`2`,id:`getting-started`,children:`Getting started`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Navigate to `,_jsx(_components.strong,{children:`Brand Assets`}),` in your project dashboard`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`Custom Skills`}),` in the sidebar`]}),`\n`,_jsxs(_components.li,{children:[`Click `,_jsx(_components.strong,{children:`+ New skill`}),`, pick a slug, and upload a `,_jsx(_components.code,{children:`.zip`}),` containing `,_jsx(_components.code,{children:`SKILL.md`})]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`skill-package-layout`,children:`Skill package layout`}),`\n`,_jsx(_components.p,{children:`Inside the zip:`}),`\n`,_jsx(CodeBlock,{numberOfLines:`6`,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:`6`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`my-skill.zip`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` SKILL.md # Required — skill definition (at the zip root)`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` rules/ # Optional — additional reference files`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` some-rule.md`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` another-rule.md`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.p,{children:[`The only required file is `,_jsx(_components.code,{children:`SKILL.md`}),` at the root of the zip.`]}),`\n`,_jsx(Heading,{level:`2`,id:`writing-a-skill-md`,children:`Writing a SKILL.md`}),`\n`,_jsxs(_components.p,{children:[`A skill file has two parts: `,_jsx(_components.strong,{children:`frontmatter`}),` (metadata) and `,_jsx(_components.strong,{children:`body`}),` (instructions for the agent).`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`18`,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:`18`,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:`Short description of what this skill does.`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`metadata`}),_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:` tags`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`tag1, tag2`})]}),`\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:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Instructions for the agent when this skill is activated.`})}),`\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`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Describe the situations where this skill applies.`})}),`\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:`## How to use`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Step-by-step guidance for the agent.`})}),`\n`]})})}),`\n`,_jsx(Heading,{level:`3`,id:`frontmatter-fields`,children:`Frontmatter fields`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Field`}),_jsx(_components.th,{children:`Required`}),_jsx(_components.th,{children:`Description`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`name`})}),_jsx(_components.td,{children:`Yes`}),_jsxs(_components.td,{children:[`Unique identifier (kebab-case, e.g. `,_jsx(_components.code,{children:`my-skill`}),`)`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`description`})}),_jsx(_components.td,{children:`Yes`}),_jsx(_components.td,{children:`One-line summary — used to decide when to load the skill`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`metadata.tags`})}),_jsx(_components.td,{children:`No`}),_jsx(_components.td,{children:`Comma-separated tags for categorization`})]})]})]}),`\n`,_jsx(Heading,{level:`3`,id:`body`,children:`Body`}),`\n`,_jsx(_components.p,{children:`The body is free-form Markdown. Write it as if you’re briefing a colleague — the agent reads these instructions when the skill is relevant to the current task.`}),`\n`,_jsx(_components.p,{children:`Common sections to include:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`When to use`}),` — triggers and scenarios`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`How to use`}),` — step-by-step patterns`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Rules`}),` — constraints, gotchas, things to avoid`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Examples`}),` — sample prompts or code snippets`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`adding-reference-files`,children:`Adding reference files`}),`\n`,_jsxs(_components.p,{children:[`For complex skills, break additional context into separate files under a `,_jsx(_components.code,{children:`rules/`}),` subdirectory and reference them from `,_jsx(_components.code,{children:`SKILL.md`}),`:`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,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:`4`,children:[_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:`## Database queries`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`When writing database queries, load the [`}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`./rules/queries.md`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`](`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-light-text-decoration\":`underline`,\"--shiki-dark\":`#D4D4D4`,\"--shiki-dark-text-decoration\":`underline`},children:`./rules/queries.md`}),_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:`file for detailed patterns and examples.`})}),`\n`]})})}),`\n`,_jsx(_components.p,{children:`This keeps the main skill file scannable while allowing deep-dive content when needed.`}),`\n`,_jsx(Heading,{level:`2`,id:`example-brand-voice-skill`,children:`Example: brand voice skill`}),`\n`,_jsx(CodeBlock,{numberOfLines:`4`,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:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`skills/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` brand-voice/`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:` SKILL.md`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`30`,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:`30`,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:`brand-voice`})]}),`\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:`Enforces brand tone, vocabulary, and messaging guidelines for all copy.`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`metadata`}),_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:` tags`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`copywriting, brand, tone`})]}),`\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:`# Brand Voice`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Apply these guidelines whenever writing ad copy, landing pages, or any`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`user-facing text.`})}),`\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:`## Tone`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Conversational but confident`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Short sentences, active voice`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` No jargon — explain benefits, not features`})]}),`\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:`## Vocabulary`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Always use:`})}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` \"Get started\" (not \"Sign up\")`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` \"Free trial\" (not \"Freemium\")`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` \"Your app\" (not \"The application\")`})]}),`\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:`## Avoid`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Exclamation marks in headlines`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Superlatives (\"best\", \"fastest\") without proof points`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#953800`,\"--shiki-dark\":`#6796E6`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:` Generic CTAs (\"Click here\", \"Learn more\")`})]}),`\n`]})})}),`\n`,_jsx(Heading,{level:`2`,id:`reserved-skill-names`,children:`Reserved skill names`}),`\n`,_jsx(_components.p,{children:`Some skill names have special meaning — the agent’s built-in workflows look for them by name. If you create a skill with a reserved name, it plugs directly into the corresponding pipeline.`}),`\n`,_jsx(Heading,{level:`3`,id:`content-lookup`,children:_jsx(_components.code,{children:`content-lookup`})}),`\n`,_jsxs(_components.p,{children:[`The video assembly pipeline uses this skill to discover source video content. When the agent needs raw footage for clip selection, it invokes `,_jsx(_components.code,{children:`content-lookup`}),` to get a list of available content entries with preview URLs.`]}),`\n`,_jsxs(_components.p,{children:[`Your `,_jsx(_components.code,{children:`content-lookup`}),` skill should return structured information about where to find source videos — for example, an API endpoint, a folder path, or a catalog of entries with URLs the agent can fetch.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`18`,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:`18`,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:`content-lookup`})]}),`\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:`Returns available source video content for clip selection and assembly.`})]}),`\n`,_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#116329`,\"--shiki-dark\":`#569CD6`},children:`metadata`}),_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:` tags`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`: `}),_jsx(_components.span,{style:{color:`#0A3069`,\"--shiki-dark\":`#CE9178`},children:`video, content, source`})]}),`\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:`# Content Lookup`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`Use this skill to find source video content for ad assembly.`})}),`\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:`## Available content`})}),`\n`,_jsx(_components.span,{className:`line`}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`| Name | Preview URL | Duration | Notes |`})}),`\n`,_jsx(_components.span,{className:`line`,children:_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:`| App walkthrough | https://example.com/videos/walkthrough.mp4 | 45s | Main product demo |`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`| User testimonial | https://example.com/videos/testimonial.mp4 | 30s | Social proof clip |`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`| Feature highlight | https://example.com/videos/feature.mp4 | 20s | Key feature demo |`})}),`\n`]})})}),`\n`,_jsx(Tip,{children:_jsxs(_components.p,{children:[`Without a `,_jsx(_components.code,{children:`content-lookup`}),` skill, the agent won’t know where to find source footage for video assembly. Add this skill first if you’re producing video ads.`]})}),`\n`,_jsx(Heading,{level:`2`,id:`updating-skills`,children:`Updating skills`}),`\n`,_jsxs(_components.p,{children:[`Re-upload the skill using the same slug — the new zip replaces the old one.\nThe agent picks up changes on the next sync (automatic on sandbox wake, or\ntrigger manually with the `,_jsx(_components.code,{children:`sync_skills`}),` tool during a session).`]}),`\n`,_jsx(Heading,{level:`2`,id:`built-in-skills`,children:`Built-in skills`}),`\n`,_jsx(_components.p,{children:`Your custom skills run alongside the built-in skills that ship with the agent. These include skills for Remotion video production, ElevenLabs voice synthesis, video assembly, frontend design, and more. Custom skills take the same format and have equal priority.`})]})}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":"Custom Skills","description":"Add your own skills to extend the agent's capabilities per project","icon":"puzzle-piece","href":"/custom-skills"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Custom Skills","slug":"custom-skills","depth":1,"children":[]},{"title":"Getting started","slug":"getting-started","depth":2,"children":[]},{"title":"Skill package layout","slug":"skill-package-layout","depth":2,"children":[]},{"title":"Writing a SKILL.md","slug":"writing-a-skill-md","depth":2,"children":[{"title":"Frontmatter fields","slug":"frontmatter-fields","depth":3,"children":[]},{"title":"Body","slug":"body","depth":3,"children":[]}]},{"title":"Adding reference files","slug":"adding-reference-files","depth":2,"children":[]},{"title":"Example: brand voice skill","slug":"example-brand-voice-skill","depth":2,"children":[]},{"title":"Reserved skill names","slug":"reserved-skill-names","depth":2,"children":[{"title":"content-lookup","slug":"content-lookup","depth":3,"children":[]}]},{"title":"Updating skills","slug":"updating-skills","depth":2,"children":[]},{"title":"Built-in skills","slug":"built-in-skills","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"subdomain":"mad-kitty","siteName":"MADKITTY","title":"Custom Skills - MADKITTY","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-07-03T11:31:46.034Z","originalFileLocation":"custom-skills.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=\"Add your own skills to extend the agent\u0026#x27;s capabilities per project\">\u003cmeta data-mint-head name=\"application-name\" content=\"MADKITTY\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/mad-kitty/BEnNYsFLcicpTcn3/_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/mad-kitty/BEnNYsFLcicpTcn3/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/mad-kitty/BEnNYsFLcicpTcn3/_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/mad-kitty/BEnNYsFLcicpTcn3/_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/mad-kitty/BEnNYsFLcicpTcn3/_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/mad-kitty/BEnNYsFLcicpTcn3/_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/mad-kitty/BEnNYsFLcicpTcn3/_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/mad-kitty/BEnNYsFLcicpTcn3/_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/mad-kitty/BEnNYsFLcicpTcn3/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Custom Skills - MADKITTY\">\u003cmeta data-mint-head property=\"og:description\" content=\"Add your own skills to extend the agent\u0026#x27;s capabilities per project\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"MADKITTY\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.mad-kitty.dev/custom-skills\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://mad-kitty.mintlify.app/_mintlify/api/og/v2?division=Developers\u0026amp;title=Custom+Skills\u0026amp;description=Add+your+own+skills+to+extend+the+agent%27s+capabilities+per+project\u0026amp;theme=ae3cdea6dc51802734fa5dbd\u0026amp;signature=5ee7de8538a4f33ab677614bd3ceb34a0cc0d002bdc9b43f20f955b1213354dc\">\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=\"Custom Skills - MADKITTY\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Add your own skills to extend the agent\u0026#x27;s capabilities per project\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://mad-kitty.mintlify.app/_mintlify/api/og/v2?division=Developers\u0026amp;title=Custom+Skills\u0026amp;description=Add+your+own+skills+to+extend+the+agent%27s+capabilities+per+project\u0026amp;theme=ae3cdea6dc51802734fa5dbd\u0026amp;signature=5ee7de8538a4f33ab677614bd3ceb34a0cc0d002bdc9b43f20f955b1213354dc\">\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/mad-kitty/BEnNYsFLcicpTcn3/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"MADKITTY\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#D7261C\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.mad-kitty.dev/custom-skills\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/custom-skills.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.mad-kitty.dev/#organization\",\"name\":\"MADKITTY\",\"url\":\"https://docs.mad-kitty.dev\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/mad-kitty/ZZYTo0sJMZM4EMma/assets/brand/logo-light.svg?fit=max\u0026auto=format\u0026n=ZZYTo0sJMZM4EMma\u0026q=85\u0026s=7477b73af85ba6a06561abdbb27ed3d0\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.mad-kitty.dev#website\",\"name\":\"MADKITTY\",\"url\":\"https://docs.mad-kitty.dev\",\"publisher\":{\"@id\":\"https://docs.mad-kitty.dev/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.mad-kitty.dev/custom-skills#webpage\",\"url\":\"https://docs.mad-kitty.dev/custom-skills\",\"name\":\"Custom Skills\",\"description\":\"Add your own skills to extend the agent's capabilities per project\",\"dateModified\":\"2026-07-03T11:31:46.034Z\",\"isPartOf\":{\"@id\":\"https://docs.mad-kitty.dev#website\"},\"breadcrumb\":{\"@id\":\"https://docs.mad-kitty.dev/custom-skills#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.mad-kitty.dev/custom-skills#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"MADKITTY\",\"item\":\"https://docs.mad-kitty.dev\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Custom Skills\",\"item\":\"https://docs.mad-kitty.dev/custom-skills\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.mad-kitty.dev/custom-skills#article\",\"headline\":\"Custom Skills\",\"name\":\"Custom Skills\",\"description\":\"Add your own skills to extend the agent's capabilities per project\",\"url\":\"https://docs.mad-kitty.dev/custom-skills\",\"mainEntityOfPage\":{\"@id\":\"https://docs.mad-kitty.dev/custom-skills#webpage\"},\"dateModified\":\"2026-07-03T11:31:46.034Z\",\"publisher\":{\"@id\":\"https://docs.mad-kitty.dev/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.mad-kitty.dev#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"MADKITTY\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"MADKITTY","nav":{"global":null,"groups":[{"group":"Core Concepts","icon":"brain","pages":[{"title":"Introduction","icon":"hand-wave","href":"/index"},{"title":"Meet the Team","icon":"users","hidden":true,"href":"/concepts/meet-the-team"},{"title":"The Marketing Loop","icon":"arrows-spin","href":"/concepts/marketing-loop"},{"title":"Audiences \u0026 Angles","icon":"bullseye","href":"/concepts/audiences-and-angles"},{"title":"Working with the Kitties","icon":"comments","href":"/concepts/working-with-kitties"},{"title":"Memory: How the Cats Learn","icon":"brain","href":"/concepts/memory"},{"title":"Reminders: Follow-ups on Your Schedule","icon":"alarm-clock","href":"/concepts/reminders"}]},{"group":"The Team","icon":"cat","pages":[{"title":"Roy — Head of Marketing","sidebarTitle":"Roy — Strategy","icon":"lightbulb","href":"/team/roy"},{"title":"Crea — Ad Creator","sidebarTitle":"Crea — Creative","icon":"palette","href":"/team/crea"},{"title":"Bidder — Media Buyer","sidebarTitle":"Bidder — Media Buying","icon":"money-bill-trend-up","href":"/team/bidder"},{"title":"Opti — Funnel Builder","sidebarTitle":"Opti — Funnels","icon":"filter","href":"/team/opti"}]},{"group":"Getting Started","icon":"rocket","pages":[{"title":"Quickstart","icon":"rocket","href":"/quickstart"},{"title":"My performance is bad — what now?","icon":"chart-line-down","href":"/improving-performance"}]},{"group":"Reference","icon":"book","pages":[{"title":"Metrics Glossary","icon":"book-open","href":"/metrics-glossary"},{"group":"Facebook setup","icon":"facebook","root":{"title":"Facebook setup","icon":"facebook","href":"/team/bidder/facebook-setup"},"pages":[{"title":"Create a Meta business portfolio","icon":"briefcase","href":"/team/bidder/facebook-setup/business-portfolio"},{"title":"Create an ad account and add a payment method","icon":"credit-card","href":"/team/bidder/facebook-setup/ad-account-and-payment"},{"title":"Create a Facebook Page","icon":"flag","href":"/team/bidder/facebook-setup/facebook-page"},{"title":"A dedicated ad account for Bidder","icon":"user-gear","href":"/team/bidder/facebook-setup/dedicated-bidder-account"},{"title":"Install your pixel on an external site","icon":"crosshairs","href":"/team/bidder/facebook-setup/install-your-pixel"},{"title":"Reconnect an expired Facebook login","icon":"rotate","href":"/team/bidder/facebook-setup/reconnect-facebook"}]},{"group":"Funnel tracking \u0026 analytics","icon":"chart-line","root":{"title":"Funnel tracking \u0026 analytics","icon":"chart-line","href":"/team/opti/tracking"},"pages":[{"title":"What's tracked by default","icon":"list-check","href":"/team/opti/tracking/events-and-pixel"},{"title":"Asking Opti for custom tracking","icon":"comments","href":"/team/opti/tracking/custom-tracking"},{"title":"How sales are counted","icon":"calendar-check","href":"/team/opti/tracking/how-sales-are-counted"},{"title":"Facebook numbers vs real sales","description":"Why Meta shows more, fewer, or nothing compared to your real sales — and how to check with Opti whether it's a problem","icon":"scale-unbalanced","href":"/team/opti/tracking/facebook-vs-real-sales"}]}]},{"group":"Developers","icon":"code","pages":[{"title":"Custom Skills","icon":"puzzle-piece","href":"/custom-skills"},{"title":"Webhook Integrations","description":"Receive platform events via outbound webhooks — configure destinations per project and build custom integrations.","icon":"webhook","href":"/webhooks"}]}]},"title":"Custom Skills - MADKITTY","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":[],"chunks":[]}