> Portal Navigation:
> 
> - Append `.md` to any URL under `https://dev.wix.com/docs/` to get its markdown version.
> - Pages are either content pages (article or reference text) or menu pages (a list of links to child pages).
> - To get a menu page, truncate any URL to a parent path and append `.md` (e.g. `https://dev.wix.com/docs/sdk.md`, `https://dev.wix.com/docs/sdk/core-modules.md`).
> - Top-level index of all portals: https://dev.wix.com/docs/llms.txt
> - Full concatenated docs: https://dev.wix.com/docs/llms-full.txt

## Resource: App Skills Extension Config

## Article: App Skills Extension Config

## Article Link: https://dev.wix.com/docs/api-reference/app-management/app-skills/app-skills-extension-config.md

## Article Content:

# App Skills Extension Config

The App Skills extension config declares the skills your app offers to AI agents working on a site, such as [Aria](https://dev.wix.com/docs/overview/ai-the-wix-platform/about-aria.md). Configure a JSON object with a `skills` array of skill objects. Include between 1 and 100 skills. An app can have one App Skills extension.

Skills build on your [App Tools](https://dev.wix.com/docs/build-apps/develop-your-app/extensions/backend-extensions/app-tools/about-app-tools-extensions.md) extension: a skill may only reference tools your own app declares there.

For each skill, provide:

| Name | Type | Description |
| --- | --- | --- |
| `slug` | string | Required. Identifier of the skill, unique within your app. Agents use it to refer to the skill they chose. Use lowercase words separated by hyphens, for example `package-tracking`. Max: 64 characters. |
| `displayName` | string | The name shown to users when they browse the site's skills. Min: 2. Max: 200 characters. |
| `description` | string | Required. What the skill does and when to use it. Agents decide whether a request fits the skill from this text, so write it clearly. Min: 10. Max: 1,024 characters. |
| `guidelines` | string | The instructions an agent follows once the skill is chosen, in Markdown. Required when `activated` is `true`. Max: 20,000 characters. See Writing Skill Guidelines. |
| `toolMethodNames` | array of strings | The `methodName` values of the tools in your App Tools extension that this skill may call. Every name must exist there. A skill without tools is allowed, for example a review or checklist skill. Max: 50 names, each 1 to 30 characters. |
| `activated` | boolean | Whether the skill is available to agents. Set to `true` to enable it. |
| `tags` | array of strings | Keywords describing what the skill does, for agents that pick skills by topic. Lowercase words or short phrases. Max: 10, each 1 to 30 characters. |
| `examples` | array of strings | Example user requests the skill handles. The strongest signal an agent has when matching a request to a skill. Max: 5, each 1 to 200 characters. |
| `inputModes` | array of strings | MIME media types the skill accepts as input, as in the A2A `AgentSkill.inputModes` field. For example, `text/plain`. Leave empty when the skill accepts any input the agent accepts. Max: 10, each 3 to 100 characters. |
| `outputModes` | array of strings | MIME media types the skill produces, as in the A2A `AgentSkill.outputModes` field. For example, `application/json`. Leave empty when the skill produces whatever the agent produces. Max: 10, each 3 to 100 characters. |

## Validation on save

Beyond the limits above, the declaration is checked when you save the extension and is rejected in these cases:

| Rejection | Fix |
| --- | --- |
| `Skill [<slug>] uses tool method [<name>], which is not declared in the app's App Tools extension` | Add the tool to your App Tools extension first, or remove it from `toolMethodNames`. |
| `Skill [<slug>] is activated but has no guidelines` | Write the guidelines, or set `activated` to `false` until they are ready. |
| `Skill [<slug>] guidelines were rejected by the safety check: they may contain instructions that override or manipulate the AI Assistant` | Rephrase the guidelines or the description. See Writing Skill Guidelines for what the check rejects. When several skills fail, the message names the first few and counts the rest. |
| A second App Skills extension on the same app, rejected as already existing | Add the new skill to your existing App Skills extension instead of creating a second one. |

## Example

This example declares an activated package-tracking skill that uses the `getPackageTracking` tool from the app's App Tools extension:

```json
{
  "skills": [
    {
      "slug": "package-tracking",
      "displayName": "Package tracking",
      "description": "Answers questions about where a shipment is and when it will arrive. Use when the user asks about the status, location or delivery date of an order or package, or gives a tracking number.",
      "guidelines": "# Package tracking\n\nYou help the user find out where a shipment is.\n\n1. Ask for the carrier tracking number if the user has not given one. Do not guess it and do not use an order number in its place.\n2. Call `getPackageTracking` with the tracking number exactly as the user wrote it.\n3. Report the status, the last known location and the estimated delivery date from the response. If the estimated delivery date is missing, say that it is not available yet.\n4. If the tool returns an error or an unknown tracking number, tell the user the number could not be found and ask them to check it.\n\nDo not use this skill to place, change or cancel orders.",
      "toolMethodNames": ["getPackageTracking"],
      "activated": true,
      "tags": ["shipping", "package tracking", "delivery status", "order tracking", "tracking number"],
      "examples": [
        "Where is my package?",
        "Track shipment 1Z999AA10123456784",
        "When will order #4521 arrive?",
        "Has the parcel for Dana Levi been delivered yet?",
        "Is the delivery from yesterday delayed?"
      ]
    }
  ]
}
```

## How skills reach agents

Once your app version is released and installed on a site, the skill appears in that site's [List App Skills](https://dev.wix.com/docs/api-reference/app-management/app-skills/list-app-skills.md) response and its guidelines are served by [Get App Skill](https://dev.wix.com/docs/api-reference/app-management/app-skills/get-app-skill.md). Agents see the declaration of the app version each site is on, so a change to a skill reaches a site when that site moves to the new version.

## See also

- [About the App Skills API](https://dev.wix.com/docs/api-reference/app-management/app-skills/introduction.md)
- [Sample Flows](https://dev.wix.com/docs/api-reference/app-management/app-skills/sample-flows.md)
- [App Tools Extension Config](https://dev.wix.com/docs/rest/app-management/app-tools/tools-provider-v1/extension-config.md)