Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions docs/content/en/4.ai/3.skills.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,18 @@ All files are automatically listed in the `index.json` catalog and served at the
Keep your main `SKILL.md` under 500 lines. Move detailed reference material to separate files in `references/` — agents load these on demand, so smaller files mean less context usage.
::

## Configuration

By default, Docus looks for skills in the `skills/` directory at the root of your project. You can change this with the `skills.dir` option in your `nuxt.config.ts`:

```ts [nuxt.config.ts]
export default defineNuxtConfig({
skills: {
dir: 'agent-skills'
}
})
```

## Skill Name Requirements

Skill names must follow the [Agent Skills naming specification](https://agentskills.io/specification#name-field):
Expand Down
12 changes: 12 additions & 0 deletions docs/content/fr/4.ai/3.skills.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,18 @@ Tous les fichiers sont automatiquement listés dans le catalogue `index.json` et
Gardez votre `SKILL.md` principal sous 500 lignes. Déplacez le matériel de référence détaillé dans des fichiers séparés dans `references/` — les agents les chargent à la demande, donc des fichiers plus petits signifient moins d'utilisation de contexte.
::

## Configuration

Par défaut, Docus cherche les skills dans le dossier `skills/` à la racine de votre projet. Vous pouvez modifier cela avec l'option `skills.dir` dans votre `nuxt.config.ts` :

```ts [nuxt.config.ts]
export default defineNuxtConfig({
skills: {
dir: 'agent-skills'
}
})
```

## Exigences pour les noms

Les noms de skills doivent suivre la [spécification de nommage Agent Skills](https://agentskills.io/specification#name-field) :
Expand Down
13 changes: 10 additions & 3 deletions layer/modules/skills/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,24 @@ interface SkillEntry {
files: string[]
}

interface ModuleOptions {
dir?: string
}

const SKILL_NAME_REGEX = /^[a-z0-9](?:[a-z0-9-]*[a-z0-9])?$/
const MAX_NAME_LENGTH = 64

const log = logger.withTag('Docus')

export default defineNuxtModule({
export default defineNuxtModule<ModuleOptions>({
meta: {
name: 'skills',
},
async setup(_options, nuxt) {
const skillsDir = join(nuxt.options.rootDir, 'skills')
defaults: {
dir: 'skills',
},
async setup(options, nuxt) {
const skillsDir = join(nuxt.options.rootDir, options.dir!)
if (!existsSync(skillsDir)) return

const catalog = await scanSkills(skillsDir)
Expand Down
3 changes: 3 additions & 0 deletions playground/nuxt.config.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,7 @@
export default defineNuxtConfig({
// Explicitly disable i18n for playground testing (enabled by .nuxtrc)
i18n: false,
skills: {
dir: 'skills',
},
})