Skills des agents
Les skills sont des instructions réutilisables qui apprennent aux agents à effectuer des tâches précises. Elles suivent la spécification des skills d’agent.
Vous pouvez associer des skills directement à un agent au moyen de sa configuration skills, ou les configurer dans un workspace. Associez-les à l’agent lorsqu’elles sont propres à cet agent et que vous souhaitez les définir dans le code sans avoir besoin d’un workspace. Utilisez un workspace si vous souhaitez découvrir les skills depuis le système de fichiers et les partager entre tous les agents qui l’utilisent. Cette page présente l’approche au niveau de l’agent : définition des skills dans le code, chargement depuis des fichiers et résolution pour chaque requête.
Quand utiliser des skills au niveau de l’agentLien direct vers Quand utiliser des skills au niveau de l’agent
Utilisez des skills au niveau de l’agent dans les cas suivants :
- Vous souhaitez des agents autonomes qui ne dépendent pas d’un workspace
- Les skills sont définies dans le code et ne nécessitent pas de découverte dans le système de fichiers
- Vous créez des packages ou des bibliothèques qui contiennent des capacités d’agent
- Vous avez besoin de résoudre les skills pour chaque requête en fonction du contexte
Pour découvrir des skills dans le système de fichiers à l’échelle d’un projet, utilisez plutôt les skills de workspace.
Démarrage rapideLien direct vers Démarrage rapide
Définissez une skill en ligne et associez-la à un agent :
import { Agent } from '@mastra/core/agent'
import { createSkill } from '@mastra/core/skills'
const codeReview = createSkill({
name: 'code-review',
description: 'Use when reviewing code changes.',
instructions: `
When reviewing code:
1. Check for correctness and edge cases
2. Verify style consistency
3. Look for potential bugs
`,
})
export const reviewer = new Agent({
id: 'reviewer',
model: 'openai/gpt-5.6-sol',
instructions: 'You are a code review assistant.',
skills: [codeReview],
})
L’agent obtient automatiquement les outils skill, skill_read et skill_search, qui lui permettent de découvrir et de charger des skills pendant les conversations.
Définir des skills en ligneLien direct vers Définir des skills en ligne
Utilisez createSkill() pour créer des skills entièrement dans le code :
import { createSkill } from '@mastra/core/skills'
export const releaseChecklist = createSkill({
name: 'release-checklist',
description: 'Use when preparing a release.',
instructions: `
## Release Checklist
1. Run the full test suite
2. Update CHANGELOG.md
3. Bump version numbers
4. Create a git tag
`,
references: {
'changelog-format.md': '# Changelog Format\nUse Keep a Changelog...',
},
})
Le champ references regroupe les documents complémentaires que l’agent peut lire avec l’outil skill_read, à la manière des fichiers references/ d’une skill présente dans le système de fichiers. Consultez la référence de createSkill() pour découvrir l’API complète.
Skills issues de chemins du système de fichiersLien direct vers Skills issues de chemins du système de fichiers
Pointez vers des répertoires de skills sur le disque sans utiliser de workspace :
import { Agent } from '@mastra/core/agent'
import { createSkill } from '@mastra/core/skills'
export const agent = new Agent({
id: 'my-agent',
model: 'openai/gpt-5.6-sol',
skills: [
'./skills/code-review', // path to a SKILL.md directory
'./skills/testing', // another filesystem skill
createSkill({/* ... */}), // inline skill
],
})
Les chemins du système de fichiers utilisent LocalSkillSource en interne, qui lit les fichiers SKILL.md respectant le même format que les skills de workspace.
Skills dynamiquesLien direct vers Skills dynamiques
Pour résoudre les skills à chaque requête, transmettez une fonction :
import { Agent } from '@mastra/core/agent'
import { createSkill } from '@mastra/core/skills'
const devSkill = createSkill({
name: 'dev-tools',
description: 'Developer productivity tools.',
instructions: '...',
})
const supportSkill = createSkill({
name: 'support-guide',
description: 'Customer support guidelines.',
instructions: '...',
})
export const agent = new Agent({
id: 'dynamic-agent',
model: 'openai/gpt-5.6-sol',
skills: ({ requestContext }) => {
const role = requestContext.get('userRole')
if (role === 'developer') return [devSkill]
return [supportSkill]
},
})
La fonction de résolution reçoit { requestContext, tracingContext } et renvoie un tableau SkillInput[] ou une Promise<SkillInput[]>.
La fonction de résolution s’exécute une fois par RequestContext. Pendant l’exécution d’un agent, elle s’exécute dans un span resolve-skills, et tracingContext.currentSpan vous permet de créer des spans enfants pour votre propre traitement, comme le font les outils. Elle s’exécute également lors des lectures de métadonnées telles que agent.listSkills() et sur les endpoints d’agent du serveur. Dans ces cas, aucun span n’existe et tracingContext.currentSpan vaut undefined ; veillez donc à ce qu’elle soit rapide et protégez toute utilisation d’un span :
skills: async ({ requestContext, tracingContext }) => {
const span = tracingContext?.currentSpan?.createChildSpan({
type: 'generic',
name: 'entitlements-lookup',
})
const skills = await fetchSkillsFor(requestContext.get('userId'))
span?.end()
return skills
}
Consultez la page Contexte de requête pour en savoir plus sur l’utilisation du contexte de requête avec les agents et les workflows.
Fusionner avec les skills du workspaceLien direct vers Fusionner avec les skills du workspace
Lorsqu’un agent possède à la fois des skills et un workspace dans lequel des skills sont configurées, celles-ci sont fusionnées. En cas de conflit de noms, les skills définies au niveau de l’agent sont prioritaires :
import { Agent } from '@mastra/core/agent'
import { Workspace, LocalFilesystem } from '@mastra/core/workspace'
import { createSkill } from '@mastra/core/skills'
const workspace = new Workspace({
filesystem: new LocalFilesystem({ basePath: './workspace' }),
skills: ['skills'], // provides "code-review" skill
})
const customReview = createSkill({
name: 'code-review', // same name as workspace skill
description: 'Custom review process.',
instructions: '...',
})
export const reviewer = new Agent({
id: 'reviewer',
model: 'openai/gpt-5.6-sol',
workspace,
skills: [customReview], // agent-level "code-review" wins
})
Accéder aux skills par programmationLien direct vers Accéder aux skills par programmation
Utilisez agent.getSkill() et agent.listSkills() pour accéder aux skills depuis le code de l’application, par exemple dans des workflows ou des routes d’API :
import { reviewer } from '../mastra/agents'
// Get a specific skill by name
const skill = await reviewer.getSkill('code-review')
if (skill) {
console.log(skill.instructions)
}
// List all available skills
const allSkills = await reviewer.listSkills()
for (const meta of allSkills) {
console.log(`${meta.name}: ${meta.description}`)
}
Consultez la référence de .getSkill() et la référence de .listSkills() pour découvrir l’API complète.