> Discover all available pages from the documentation index: https://mastra.zisheng.pro/fr/llms.txt # Créer un bot de revue de code Dans ce guide, vous créerez un bot de revue de code qui examine automatiquement les pull requests à l’aide de Skills de Workspace. Le bot charge les normes de programmation depuis les fichiers de Skill et fournit des retours structurés. Vous créerez un Workspace avec un répertoire de Skills et définirez un [Agent Skill](https://agentskills.io) avec des instructions de revue et des fichiers de référence. Vous relierez ensuite ce Skill à un Agent qui effectue les revues automatisées. ## Prérequis - Node.js `v22.13.0` ou version ultérieure est installé - Une clé API d’un [fournisseur de modèles](https://mastra.zisheng.pro/fr/models) pris en charge - Un projet Mastra existant (suivez le [guide d’installation](https://mastra.zisheng.pro/fr/guides/getting-started/quickstart) pour configurer un nouveau projet) ## Créer le Workspace Dans votre fichier `src/mastra/index.ts`, importez les classes [`Workspace`](https://mastra.zisheng.pro/fr/reference/workspace/workspace-class) et [`LocalFilesystem`](https://mastra.zisheng.pro/fr/reference/workspace/local-filesystem). Sur l’instance `Workspace`, configurez l’option `skills` afin qu’elle pointe vers un répertoire de Skills. Le répertoire `skills` se trouve dans le `basePath` du système de fichiers. ```typescript import { Mastra } from '@mastra/core' import { resolve } from 'node:path' import { Workspace, LocalFilesystem } from '@mastra/core/workspace' const workspace = new Workspace({ filesystem: new LocalFilesystem({ basePath: resolve(import.meta.dirname, '../../workspace'), }), skills: ['skills'], }) export const mastra = new Mastra({ workspace, }) ``` À la racine de votre projet, créez un dossier nommé `workspace`. À l’intérieur, créez un dossier `skills`. C’est là que vous définirez le Skill des normes de programmation à l’étape suivante. ## Créer le Skill des normes de programmation Les Skills sont des répertoires structurés qui contiennent un fichier `SKILL.md` avec des instructions destinées à l’Agent. Le Skill des normes de programmation définit le processus de revue et fait référence à un guide de style. Dans `workspace/skills`, créez un dossier nommé `code-standards`. Créez un fichier nommé `SKILL.md` et ajoutez les instructions de revue. ```markdown --- name: code-standards description: Automated code review standards and checks --- # Code Review Standards Review code systematically using these steps: 1. **Critical Issues**: Security vulnerabilities, memory leaks, logic bugs, missing error handling 2. **Code Quality**: Functions over 50 lines, code duplication, confusing names, missing types 3. **Style Guide**: Check references/style-guide.md for naming and organization 4. **Linting**: Flag common issues like use of `var`, leftover `console.log` statements, and `debugger` statements Provide feedback in this format: **Summary**: One sentence overview **Critical Issues**: List with line numbers **Suggestions**: Improvements that would help **Positive Notes**: What the code does well ``` Dans `workspace/skills/code-standards`, créez un dossier `references` qui contiendra les documents de référence du Skill. Rédigez un guide de style qui décrit les conventions de programmation du projet dans le fichier `style-guide.md`. ````markdown # Style Guide ## Naming - Variables/Functions: `camelCase` - Constants: `UPPER_SNAKE_CASE` - Files: `kebab-case.ts` - Booleans: Start with `is`, `has`, `should` ## Code organization ```typescript // 1. Imports import { foo } from 'bar' // 2. Constants const MAX_SIZE = 100 // 3. Types interface User { id: string } // 4. Functions function doSomething() {} // 5. Exports export { doSomething } ``` ## Error handling Always handle errors explicitly - never silently catch. ## Comments Write "why" not "what". ```` ## Créer l’Agent de revue Il est maintenant temps de créer l’Agent de bot de revue de code qui utilise le Skill code-standards. Créez un fichier `src/mastra/agents/code-reviewer.ts` et définissez l’Agent : ```typescript import { Agent } from '@mastra/core/agent' export const codeReviewer = new Agent({ id: 'code-reviewer', name: 'Code Review Bot', instructions: `You are an automated code reviewer. When asked to review code: 1. Activate the 'code-standards' skill 2. Follow the review process from the skill 3. Check against the style guide in skill references 4. Be constructive and specific with line numbers`, model: 'openai/gpt-5.6-sol', }) ``` Définissez l’Agent en l’important dans `src/mastra/index.ts` et en l’enregistrant auprès de l’instance `Mastra` : ```typescript import { Mastra } from '@mastra/core' import { resolve } from 'node:path' import { Workspace, LocalFilesystem } from '@mastra/core/workspace' import { codeReviewer } from './agents/code-reviewer' const workspace = new Workspace({ filesystem: new LocalFilesystem({ basePath: resolve(import.meta.dirname, '../../workspace'), }), skills: ['skills'], }) export const mastra = new Mastra({ workspace, agents: { codeReviewer }, }) ``` ## Tester le bot Démarrez [Studio](https://mastra.zisheng.pro/fr/docs/studio/overview) et interagissez avec le bot de revue de code pour le voir à l’œuvre. **npm**: ```bash npm run dev ``` **pnpm**: ```bash pnpm run dev ``` **Yarn**: ```bash yarn dev ``` **Bun**: ```bash bun run dev ``` Ouvrez [localhost:4111](http://localhost:4111), puis accédez à l’Agent de revue de code. Dans le champ de chat, fournissez un extrait de code à réviser, par exemple : ```text Review this code: function getData(id) { var result = fetch('/api/data/' + id); console.log(result); return result; } ``` Le bot devrait activer le Skill `code-standards` et fournir un retour structuré. Les réponses d’Agent étant non déterministes, votre sortie peut varier, mais vous devriez obtenir un résultat semblable à celui-ci : ```md **Summary**: Function has several issues with variable declaration, debugging statements, and missing error handling. **Critical Issues**: - Missing error handling for fetch (line 2) - No async/await for asynchronous operation (line 2) **Suggestions**: - Use const instead of var (line 2) - Remove console.log before committing (line 3) - Add TypeScript type for id parameter - Use template literals instead of concatenation **Positive Notes**: - Function name is clear and descriptive ``` ## Étapes suivantes Vous pouvez étendre ce bot afin de : - Ajouter des Skills pour différents langages ou frameworks - Créer des Skills pour les contrôles de sécurité et les revues de performances - Intégrer GitHub Actions pour automatiser les revues de PR - Créer un bot de commentaires de PR qui laisse des retours en ligne Pour en savoir plus : - [Spécification Agent Skills](https://agentskills.io)