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 :

  1. Naviguez vers Settings → Organizations
  2. Cliquez sur “New Organization”
  3. 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 :

  1. Settings → API Keys
  2. Cliquez sur “Add API Key”
  3. Sélectionnez “Anthropic”
  4. Collez votre clé : sk-ant-api03-...
  5. 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 :

  1. Settings → Integrations
  2. Cliquez sur “Connect GitHub”
  3. Autorisez l’application TeamDay
  4. 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 :

  1. Ouvrez votre space
  2. Cliquez sur le bouton ”+” dans le panneau Files
  3. Collez l’URL du dépôt : https://github.com/yourorg/yourrepo.git
  4. Cliquez sur “Clone Repository”
  5. 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 :

  1. Agents → New Agent
  2. Nom : “Code Reviewer”
  3. Modèle : claude-sonnet-4-6
  4. 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 :

  1. Edit agent → Permissions
  2. 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 :

  1. Space Settings → MCP Plugins
  2. Cliquez sur “Install Plugin”
  3. Sélectionnez “GitHub” depuis le marketplace
  4. Configuration auto-remplie
  5. 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);
  1. 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:

  1. Line 23: Missing error handling for async operation
  2. Line 56: JWT secret should be in environment variable

Minor Issues:

  1. Line 12: Inconsistent indentation
  2. 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:

  1. Formatting inconsistencies
  2. Unused imports
  3. Missing semicolons
  4. 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:

  1. 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:

  1. src/auth/login.ts - ✅ Looks good
  2. src/auth/register.ts - ⚠️ 2 issues
  3. 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 UTC
  • 0 */4 * * * = Toutes les 4 heures
  • 0 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 :

  1. GitHub Repo → Settings → Webhooks
  2. Ajoutez l’URL du webhook : https://us.teamday.ai/webhooks/github
  3. Sélectionnez les événements : Pull Requests
  4. 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 :

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-5 pour 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

Ressources