---
title: "Agent Skills Discovery"
description: "Publish local and externally hosted Agent Skills through the v0.2.0 well-known index."
canonical_url: "https://nuxtseo.com/docs/ai-ready/guides/agent-skills"
last_updated: "2026-08-04T12:24:08.291Z"
---

[Agent Skills Discovery](https://github.com/cloudflare/agent-skills-discovery-rfc) gives agents one URL for finding the skills published by your site:

```text
/.well-known/agent-skills/index.json
```

The index follows the v0.2.0 schema. Every entry includes a SHA-256 digest so clients can verify the artifact before loading it.

## Local SKILL.md files

Use a local entry when the skill consists of one `SKILL.md` file:

```ts [nuxt.config.ts]
export default defineNuxtConfig({
  aiReady: {
    agentSkills: {
      skills: [{
        source: 'local',
        name: 'seo-audit',
        description: 'Audit a site for critical SEO issues.',
        file: './skills/seo-audit/SKILL.md',
      }],
    },
  },
})
```

Nuxt resolves `file` from the project root, reads it once during setup, and computes its digest from the original bytes. The path and its resolved symlink target must stay inside the project root. The index advertises this relative artifact URL:

```text
seo-audit/SKILL.md
```

The relative URL resolves from the index directory. This keeps local artifacts correct when Nuxt redirects discovery into a non-root app base.

The file must start with YAML frontmatter. Its `name` and `description` must exactly match the config:

```md [skills/seo-audit/SKILL.md]
---
name: seo-audit
description: Audit a site for critical SEO issues.
---

# SEO audit

Check indexability, metadata, canonical URLs, and structured data.
```

Local files must contain valid UTF-8 text and Markdown instructions after the frontmatter. Invalid config or unreadable files stop the Nuxt build with the failing entry and field.

## External files and archives

Use an external entry for a `SKILL.md` or archive that you already host:

```ts [nuxt.config.ts]
export default defineNuxtConfig({
  aiReady: {
    agentSkills: {
      skills: [{
        source: 'external',
        name: 'seo-toolkit',
        type: 'archive',
        description: 'Use the complete SEO toolkit and its supporting resources.',
        url: 'https://cdn.example.com/seo-toolkit.tar.gz',
        digest: 'sha256:aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa',
      }],
    },
  },
})
```

External entries accept HTTP(S), path-absolute, and index-relative URLs. Nuxt validates the URL and digest format but does not download the artifact during setup. Calculate the digest from the exact bytes served at `url`.

Use `type: 'skill-md'` for one Markdown file. Use `type: 'archive'` for a `.tar.gz` or `.zip` containing `SKILL.md` plus scripts, references, or assets.

The index and embedded local files support GET and HEAD. Other methods return 405. Responses include public cache headers and `Access-Control-Allow-Origin: *` for browser clients.

For non-root app bases, Nuxt redirects origin-root discovery requests to the base-aware index and artifact routes.
