Code Review Bot - Exemple complet
Créez un agent IA qui révise automatiquement les changements de code dans vos dépôts GitHub, fournit des retours sur la qualité du code, suggère des améliorations et commit des changements lorsque c’est approprié.
Ce que vous allez construire
Un réviseur de code automatisé qui :
- Surveille les pull requests GitHub
- Analyse les changements de code pour la qualité et les bonnes pratiques
- Fournit des commentaires en ligne et des suggestions
- Peut commiter des corrections pour les problèmes courants
- Génère des résumés de révision
Temps nécessaire : 30-45 minutes
Prérequis
Avant de commencer, vous avez besoin de :
- Un compte TeamDay avec une organisation
- Un compte GitHub avec accès aux dépôts
- Une clé API Anthropic
- Compréhension de base de Git et GitHub
Vue d’ensemble de l’architecture
graph LR
A[GitHub PR] --> B[Code Review Agent]
B --> C[MCP GitHub Plugin]
C --> D[GitHub API]
B --> E[File Analysis]
E --> F[Review Comments]
F --> G[GitHub PR Comments]
B --> H[Auto-fix Agent]
H --> I[Commits]
Étape 1 : Configurer votre organisation
1.1 Créer une organisation
D’abord, assurez-vous d’avoir une organisation configurée dans TeamDay :
# Avec la CLI
teamday auth login
teamday orgs create "My Dev Team"
Ou via l’interface :
- Naviguez vers Settings → Organizations
- Cliquez sur “New Organization”
- Nommez-la et sauvegardez
1.2 Ajouter la clé API Anthropic
Naviguez vers les paramètres de votre organisation et ajoutez votre clé API :
Via l’interface :
- Settings → API Keys
- Cliquez sur “Add API Key”
- Sélectionnez “Anthropic”
- Collez votre clé :
sk-ant-api03-... - Sauvegardez
Via CLI :
teamday secrets set ANTHROPIC_API_KEY "sk-ant-api03-..."
La clé est chiffrée avec AES-256-GCM avant le stockage.
1.3 Connecter GitHub
Vous aurez besoin de l’OAuth GitHub pour accéder aux dépôts privés :
Via l’interface :
- Settings → Integrations
- Cliquez sur “Connect GitHub”
- Autorisez l’application TeamDay
- Accordez l’accès aux dépôts
Scopes requis :
repo(accès complet au dépôt)read:user(informations utilisateur)read:org(informations organisation)
Étape 2 : Créer votre Space
2.1 Créer un Space de développement
Créez un space pour votre travail de révision de code :
# Créer le space
teamday spaces create "Code Review Workspace"
# Obtenir l'ID du space (vous en aurez besoin)
teamday spaces list
# Output: cs_abc123def456...
Ou via l’API :
curl -X POST https://us.teamday.ai/api/v1/spaces \
-H "Authorization: Bearer $TEAMDAY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Code Review Workspace",
"organizationId": "org_xxx"
}'
2.2 Cloner votre dépôt
Dans le space, clonez le dépôt que vous voulez réviser :
Via l’interface :
- Ouvrez votre space
- Cliquez sur le bouton ”+” dans le panneau Files
- Collez l’URL du dépôt :
https://github.com/yourorg/yourrepo.git - Cliquez sur “Clone Repository”
- Attendez la fin du clonage
Via le chat de l’agent :
Vous : Clone the repository https://github.com/yourorg/yourrepo.git
Agent : I'll clone that repository for you...
L’agent utilisera automatiquement votre token OAuth GitHub.
2.3 Vérifier l’accès au dépôt
Vérifiez que le dépôt a été cloné avec succès :
# Dans le chat du space
ls -la
# Devrait afficher le répertoire de votre dépôt
cd yourrepo
git status
# Devrait afficher un arbre de travail propre
Étape 3 : Créer l’agent de révision de code
3.1 Créer l’agent principal
Créez l’agent principal de révision de code :
Via l’interface :
- Agents → New Agent
- Nom : “Code Reviewer”
- Modèle :
claude-sonnet-4-6 - Visibilité :
organization
Via l’API :
curl -X POST https://us.teamday.ai/api/v1/agents \
-H "Authorization: Bearer $TEAMDAY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Code Reviewer",
"systemPrompt": "You are an expert code reviewer...",
"model": "claude-sonnet-4-6",
"visibility": "organization",
"organizationId": "org_xxx"
}'
Sauvegardez l’ID de l’agent : ag_abc123...
3.2 Configurer le System Prompt
Configurez les instructions de l’agent pour la révision de code :
# Code Review Agent System Prompt
You are an expert code reviewer with deep knowledge of:
- Software architecture and design patterns
- Code quality and maintainability
- Security best practices
- Performance optimization
- Testing strategies
## Your Responsibilities
1. **Analyze Code Changes**
- Review pull request diffs
- Identify potential bugs and issues
- Check for security vulnerabilities
- Assess code readability and maintainability
2. **Provide Constructive Feedback**
- Be specific and actionable
- Explain the "why" behind suggestions
- Prioritize issues (critical, important, minor)
- Suggest concrete improvements
3. **Auto-Fix When Appropriate**
- Fix formatting issues automatically
- Correct simple bugs (typos, missing semicolons)
- Update outdated patterns
- Commit fixes with clear messages
4. **Generate Review Summary**
- Overall assessment (approve/request changes)
- Key issues found
- Suggestions for improvement
- Security or performance concerns
## Review Checklist
For each PR, check:
- ✅ Code follows project style guide
- ✅ No obvious bugs or logic errors
- ✅ Error handling is appropriate
- ✅ No security vulnerabilities
- ✅ Performance is acceptable
- ✅ Tests are included/updated
- ✅ Documentation is updated
- ✅ No commented-out code
- ✅ No hardcoded secrets or credentials
## Response Format
Structure your reviews as:
1. **Summary**: Overall assessment (1-2 sentences)
2. **Critical Issues**: Must fix before merge
3. **Important Issues**: Should fix
4. **Minor Issues**: Nice to have
5. **Positive Notes**: What's done well
6. **Recommendation**: Approve, Request Changes, or Comment
Be thorough but efficient. Focus on meaningful feedback.
3.3 Définir les permissions de l’agent
Configurez ce que l’agent peut faire :
Via l’interface :
- Edit agent → Permissions
- Activez :
- ✅ Read files
- ✅ Write files
- ✅ Execute code
- ✅ Commit to git
- ❌ Access secrets (pas nécessaire)
Via l’API :
curl -X PATCH https://us.teamday.ai/api/v1/agents/ag_abc123 \
-H "Authorization: Bearer $TEAMDAY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"permissions": {
"readFiles": true,
"writeFiles": true,
"executeCode": true,
"commitToGit": true,
"accessSecrets": false
}
}'
Étape 4 : Installer les plugins MCP
4.1 Installer le plugin MCP GitHub
Le plugin MCP GitHub permet à votre agent d’interagir avec GitHub :
Configuration :
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_OAUTH_TOKEN}"
}
}
}
}
Installation via l’interface :
- Space Settings → MCP Plugins
- Cliquez sur “Install Plugin”
- Sélectionnez “GitHub” depuis le marketplace
- Configuration auto-remplie
- Cliquez sur “Install”
Installation via l’API :
curl -X POST https://us.teamday.ai/api/plugins/install \
-H "Authorization: Bearer $TEAMDAY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"spaceId": "cs_abc123",
"plugin": "github",
"config": {
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_TOKEN": "${GITHUB_OAUTH_TOKEN}"
}
}
}
}
}'
4.2 Vérifier l’installation du plugin
Testez que le plugin fonctionne :
# Dans le chat du space
Vous : List my GitHub repositories
Agent : I'll use the GitHub MCP to fetch your repositories...
[Liste les dépôts]
Vous : Get pull requests for yourorg/yourrepo
Agent : Here are the open pull requests:
1. PR #42: Add user authentication (by @alice)
2. PR #43: Fix bug in payment processing (by @bob)
...
4.3 Installer le plugin Sequential Thinking (optionnel)
Pour les analyses complexes, ajoutez le plugin sequential thinking :
{
"mcpServers": {
"sequential-thinking": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sequential-thinking"]
}
}
}
Cela aide l’agent à décomposer l’analyse de code complexe en étapes structurées.
Étape 5 : Créer un sous-agent Auto-Fix (optionnel)
Pour les corrections automatiques, créez un sous-agent spécialisé :
5.1 Créer le sous-agent
curl -X POST https://us.teamday.ai/api/v1/agents \
-H "Authorization: Bearer $TEAMDAY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Auto-Fix Bot",
"systemPrompt": "You fix simple code issues automatically...",
"model": "claude-sonnet-4-6",
"visibility": "organization",
"organizationId": "org_xxx",
"type": "subagent"
}'
5.2 System Prompt du Auto-Fix
# Auto-Fix Bot System Prompt
You automatically fix simple code issues:
- Formatting and style violations
- Missing semicolons
- Unused imports
- Simple typos in variable names
- Outdated API usage patterns
## Rules
- Only fix obvious, safe changes
- Never change business logic
- Always commit with descriptive messages
- Run tests if available before committing
- If unsure, report back instead of fixing
## Commit Message Format
fix:
- Fixed
- Applied <formatter/linter> recommendations
Auto-generated by Code Review Bot
5.3 Lier à l’agent principal
Mettez à jour l’agent principal pour déléguer au sous-agent :
curl -X PATCH https://us.teamday.ai/api/v1/agents/ag_abc123 \
-H "Authorization: Bearer $TEAMDAY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"subAgents": ["ag_autofix456"]
}'
Étape 6 : Exemples d’utilisation
6.1 Réviser une Pull Request
Révision de base :
Vous : Review pull request #42
Agent : I'll analyze PR #42: "Add user authentication"
[L'agent lit le diff en utilisant GitHub MCP]
## Code Review Summary
**Overall Assessment:** Request Changes
**Critical Issues:**
1. Line 45: Password stored in plaintext
- Risk: Security vulnerability
- Fix: Use bcrypt or similar hashing
```javascript
// Instead of:
user.password = password;
// Use:
user.password = await bcrypt.hash(password, 10);
- Line 78: SQL injection vulnerability
- Risk: Database compromise
- Fix: Use parameterized queries
// Instead of: db.query(`SELECT * FROM users WHERE id = ${userId}`); // Use: db.query('SELECT * FROM users WHERE id = ?', [userId]);
Important Issues:
- Line 23: Missing error handling for async operation
- Line 56: JWT secret should be in environment variable
Minor Issues:
- Line 12: Inconsistent indentation
- Line 34: Unused import statement
Positive Notes:
- Good test coverage
- Clear function names
- Well-structured code
Recommendation: Request Changes
Critical security issues must be addressed before merging.
### 6.2 Auto-corriger les problèmes simples
Vous : Review PR #43 and auto-fix any simple issues
Agent : Analyzing PR #43…
Found 5 fixable issues:
- Formatting inconsistencies
- Unused imports
- Missing semicolons
- Outdated API usage
Delegating to Auto-Fix Bot…
Auto-Fix Bot: Fixed 5 issues and committed:
- Removed 3 unused imports
- Added missing semicolons (7 locations)
- Reformatted code with prettier
- Updated deprecated API calls
Commit: abc123def “fix: code style and API updates”
Agent: Auto-fixes applied. Remaining review:
Important Issues:
- Line 67: Error not properly handled [details…]
Would you like me to post this review to GitHub?
### 6.3 Poster la révision sur GitHub
Vous : Yes, post the review to GitHub
Agent : Posting review to PR #43…
✅ Review posted successfully ✅ Added 3 inline comments ✅ Set status to “Request Changes”
View on GitHub: https://github.com/yourorg/yourrepo/pull/43
### 6.4 Réviser plusieurs fichiers
Vous : Review all TypeScript files changed in the last commit
Agent : Analyzing changed files from commit abc123…
Files reviewed:
- src/auth/login.ts - ✅ Looks good
- src/auth/register.ts - ⚠️ 2 issues
- src/utils/validation.ts - ❌ 1 critical issue
src/auth/register.ts
- Line 34: Missing input validation
- Line 56: Potential race condition
src/utils/validation.ts
- Line 12: ReDoS vulnerability in regex Pattern: /^(a+)+$/ Fix: Use simpler pattern or timeout
Detailed analysis attached.
## Étape 7 : Automatisation avec révisions planifiées
### 7.1 Créer une mission de révision quotidienne
Configurez des révisions quotidiennes automatiques :
```bash
curl -X POST https://us.teamday.ai/api/missions \
-H "Authorization: Bearer $TEAMDAY_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"name": "Daily PR Review",
"schedule": "0 9 * * *",
"agentId": "ag_abc123",
"action": {
"type": "execute",
"prompt": "Review all open pull requests and post feedback to GitHub"
},
"organizationId": "org_xxx",
"spaceId": "cs_abc123"
}'
Format de planification (cron) :
0 9 * * *= Tous les jours à 9h UTC0 */4 * * *= Toutes les 4 heures0 9 * * 1-5= Jours de semaine à 9h
7.2 Révision sur nouvelle PR (Webhook)
Configurez une révision automatique lors de la création de PRs :
Configuration Webhook GitHub :
- GitHub Repo → Settings → Webhooks
- Ajoutez l’URL du webhook :
https://us.teamday.ai/webhooks/github - Sélectionnez les événements : Pull Requests
- Ajoutez le secret (depuis les paramètres TeamDay)
Mission TeamDay :
{
"name": "Auto Review New PRs",
"trigger": "webhook",
"webhookSource": "github",
"eventType": "pull_request.opened",
"agentId": "ag_abc123",
"action": {
"type": "execute",
"prompt": "Review the pull request that triggered this webhook"
}
}
Résultats attendus
Exemple de commentaire de révision
## Code Review by TeamDay Bot
**PR #42: Add user authentication**
### Summary
This PR adds basic user authentication with login and registration.
Overall good structure, but has critical security issues that must be addressed.
### Critical Issues 🔴
**1. Password Security Vulnerability (src/auth/register.ts:45)**
```javascript
// Current code:
user.password = password;
// Recommended:
const bcrypt = require('bcrypt');
user.password = await bcrypt.hash(password, 10);
Passwords must never be stored in plaintext.
2. SQL Injection Risk (src/auth/login.ts:78)
// Current code:
const user = await db.query(`SELECT * FROM users WHERE email = '${email}'`);
// Recommended:
const user = await db.query('SELECT * FROM users WHERE email = ?', [email]);
Important Issues 🟡
1. Missing Error Handling (src/auth/register.ts:23) The async email validation should have try-catch.
2. JWT Secret in Code (src/auth/token.ts:12)
Move JWT_SECRET to environment variables.
Minor Issues 🟢
- Inconsistent formatting in register.ts
- Unused imports in login.ts
Positive Notes ✨
- Excellent test coverage (95%)
- Clear function naming
- Good separation of concerns
Recommendation: Request Changes
Please address the critical security issues before merging.
Generated by TeamDay Code Review Bot
### Exemple de message de commit (Auto-Fix)
fix: code style and linting issues in auth module
- Removed unused imports from login.ts and register.ts
- Fixed indentation inconsistencies
- Added missing semicolons (7 locations)
- Updated deprecated bcrypt.hashSync to async version
- Reformatted with prettier
Auto-generated by Code Review Bot 🤖 Generated with TeamDay (https://teamday.app)
## Dépannage
### Échec de l'authentification GitHub
**Erreur :**
Error: GitHub authentication failed (401 Unauthorized)
**Solution :**
1. Vérifiez que GitHub est connecté : Settings → Integrations
2. Vérifiez que les scopes du token incluent `repo`
3. Déconnectez et reconnectez GitHub
4. Assurez-vous que l'accès au dépôt est accordé
### L'agent ne peut pas accéder au dépôt
**Erreur :**
Error: Repository not found or access denied
**Solution :**
1. Vérifiez que le dépôt est cloné dans le space : `ls -la`
2. Vérifiez que le token GitHub a accès au dépôt
3. Pour les dépôts privés, assurez-vous que OAuth est connecté
4. Clonez à nouveau avec les permissions correctes
### Le plugin MCP ne fonctionne pas
**Erreur :**
Error: GitHub MCP server not responding
**Solution :**
1. Vérifiez que le plugin est installé : Space Settings → MCP Plugins
2. Vérifiez que les variables d'environnement sont définies
3. Consultez les logs du plugin dans le space
4. Redémarrez l'environnement de développement du space
5. Réinstallez le plugin si nécessaire
### La révision n'est pas postée sur GitHub
**Erreur :**
Error: Failed to post review to GitHub
**Solution :**
1. Vérifiez que l'agent a accès au MCP GitHub
2. Vérifiez que la PR existe et est ouverte
3. Vérifiez les limites de taux (API GitHub)
4. Assurez-vous d'avoir les permissions de révision appropriées
### Échec des commits Auto-Fix
**Erreur :**
Error: Git commit failed (permission denied)
**Solution :**
1. Vérifiez que l'agent a la permission `commitToGit`
2. Vérifiez que git est configuré dans le space
3. Assurez-vous que OAuth GitHub a accès en écriture
4. Vérifiez que git user.name et user.email sont définis
## Configuration avancée
### Règles de révision personnalisées
Créez un fichier `.reviewrc` dans votre dépôt :
```json
{
"rules": {
"maxFileSize": 500,
"maxFunctionLength": 50,
"requireTests": true,
"blockPatterns": [
"console.log",
"debugger",
"TODO",
"FIXME"
],
"securityPatterns": [
"eval(",
"exec(",
"password\\s*=",
"api_key\\s*="
]
},
"autoFix": {
"enabled": true,
"rules": ["formatting", "imports", "semicolons"],
"runTests": true
}
}
Configuration spécifique au langage
TypeScript/JavaScript :
{
"languages": {
"typescript": {
"linter": "eslint",
"formatter": "prettier",
"checkTypes": true
}
}
}
Intégration avec CI/CD
Intégration GitHub Actions :
name: AI Code Review
on: [pull_request]
jobs:
review:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Run TeamDay Review
env:
TEAMDAY_TOKEN: ${{ secrets.TEAMDAY_TOKEN }}
run: |
curl -X POST https://us.teamday.ai/api/v1/agents/ag_abc123/execute \
-H "Authorization: Bearer $TEAMDAY_TOKEN" \
-H "Content-Type: application/json" \
-d '{"prompt": "Review PR #${{ github.event.pull_request.number }}"}'
Prochaines étapes
Maintenant que vous avez un bot de révision de code fonctionnel, explorez :
- Exemple Analytics Reporter - Suivez les métriques de qualité du code
- Exemple BigQuery Insights - Analysez les données historiques du code
- Serveurs MCP personnalisés - Créez des outils d’analyse de code personnalisés
- Guide d’automatisation - Configurez des missions plus complexes
Estimation des coûts
Coûts typiques pour l’agent de révision de code :
Par révision de PR (moyenne) :
- Tokens en entrée : ~10 000 (lecture du code + contexte)
- Tokens en sortie : ~2 000 (commentaires de révision)
- Coût : ~$0.15 par révision
Révisions quotidiennes automatisées (10 PRs) :
- Coût mensuel : ~$45
Conseils pour réduire les coûts :
- Utilisez
claude-haiku-4-5pour les révisions simples - Révisez uniquement les fichiers modifiés, pas toute la base de code
- Mettez en cache les patterns et règles communs
- Définissez des limites de tokens pour les révisions