name: agent_rh description: Scan et analyse des candidatures via le MCP Agent RH. Lance un scan complet ou par poste, formate les résultats en tableaux par poste avec score géo, score skills et verdict GO/PARTIAL/NO GO. Permet aussi d'envoyer des mails de prise de contact aux candidats. trigger: /agent_rh
agent_rh — Skill Agent RH
Déclenchement
Ce skill est invoqué via /agent_rh avec un argument optionnel :
/agent_rh→ scan de tous les postes actifs/agent_rh <job_id>→ scan d'un seul poste (ex:/agent_rh 7758411)/agent_rh jobs→ affiche la liste des postes configurés sans lancer de scan
Workflow obligatoire
Étape 1 — Appel MCP
Si l'utilisateur demande la liste des postes (jobs) :
mcp__agent-rh__get_jobs_config()
→ Afficher la liste formatée (id, titre, critères géo, skills required/bonus) puis STOP.
Sinon (scan), appeler :
mcp__agent-rh__run_scan(job_id="<id>" | job_id="")
job_id=""= scan complet de tous les postes actifsjob_id="7758411"= scan d'un poste précis
Étape 2 — Rendu formaté
Pour chaque poste retourné dans jobs[], générer le bloc suivant :
📋 [job_title] — Poste [job_id]
[N] candidat(s) analysé(s)
| Candidat | Géo | Résumé géo | Skills | Compétences matchées | Verdict | Lien |
|---|---|---|---|---|---|---|
| ... | ... | ... | ... | ... | ... | ... |
Règles de remplissage colonne par colonne
Colonne « Candidat »
Nom complet du candidat tel que retourné par le MCP.
Colonne « Géo »
Basée sur geo_check.passed :
true→✅false→❌null→❓
Colonne « Résumé géo »
Utiliser geo_check.detail en supprimant le suffixe — hors région, — région ✓ et toute variante similaire (ex: — région ✓ (×50%)). Ne conserver que la partie descriptive (CP, ville, etc.).
Colonne « Skills »
Calcul : round(skills_check.weight_earned / skills_check.weight_max * 100) %
Afficher sous la forme XX% (ex : 85%).
Si weight_max == 0 → afficher N/A.
Colonne « Lien »
Si teamtailor_url est présent : afficher l'URL brute (ex: https://app.teamtailor.com/...).
Si absent → —.
Colonne « Compétences matchées »
Union de matched_required + matched_bonus (clés uniquement), séparées par des virgules.
Si vide → —.
Limiter à 5 éléments + … si plus de 5.
Colonne « Verdict »
Mapper le verdict MCP vers le label final :
| Verdict MCP | Affichage skill |
|---|---|
STRONG_MATCH |
✅ |
PROMISING |
🟡 |
PARTIAL |
🟡 |
NO_MATCH |
❌ |
Après le tableau — Section « Détails remarquables »
Pour chaque candidat avec verdict ✅ ou 🟡, ajouter une ligne :
> **[Nom]** — [ai_summary si disponible, sinon matched skills + score]
Section finale — Récap global
## Récap global
| Poste | Total | ✅ GO | 🟡 PARTIAL | ❌ NO GO |
|-------|-------|-------|------------|---------|
| ... | ... | ... | ... | ... |
Scan ID : [scan_id] | Durée : [duration_s]s | [candidates_total] candidats au total
Comportement en cas d'erreur MCP
Si le MCP retourne une erreur ou que le serveur est inaccessible :
- Afficher :
⚠️ Le serveur Agent RH n'est pas disponible (http://localhost:8001/mcp). - Suggérer :
Lancez le serveur avec \make up` dans le répertoire src/.` - Ne pas tenter de retry automatique.
Envoi de mails de prise de contact
Après un scan, l'utilisateur peut demander d'envoyer un mail à un ou plusieurs candidats pour vérifier leur intérêt.
Tool MCP disponible
mcp__agent-rh__send_interest_check(candidate_id, job_id, dry_run=False)
candidate_id: l'ID TeamTailor du candidat (visible dansteamtailor_urlou retourné parrun_scan)job_id: l'ID du poste concernédry_run=True: retourne le mail complet (sujet + corps) sans l'envoyer — toujours proposer le dry-run avant l'envoi réeldry_run=False: envoie le mail via SMTP ; l'expéditeur reçoit une copie BCC automatiquement
Workflow recommandé
- Après le tableau de résultats, si l'utilisateur demande d'envoyer un mail à un candidat :
- Appeler
send_interest_check(..., dry_run=True)et afficher le rendu (sujet + corps formaté) - Demander confirmation : "Voulez-vous envoyer ce mail ?"
- Sur confirmation, appeler
send_interest_check(..., dry_run=False)et confirmer l'envoi
Affichage du dry-run
Présenter le mail sous cette forme avant confirmation :
📧 Aperçu du mail — [candidate_name]
**À :** [to]
**Sujet :** [subject]
[body]
Erreurs possibles
| Erreur retournée | Cause | Action |
|---|---|---|
Candidat introuvable dans le cache |
Pas encore scanné | Lancer /agent_rh <job_id> d'abord |
Aucune adresse email |
Email absent dans TeamTailor | Informer l'utilisateur, ne pas envoyer |
Poste introuvable |
job_id incorrect | Vérifier avec get_jobs_config() |
Invariants
- Ne jamais inventer de données ou interpoler des scores non retournés par le MCP.
- Si un champ est absent dans la réponse MCP, afficher
—dans la cellule correspondante. - Trier les candidats par score décroissant dans le tableau (le MCP les retourne déjà triés).
- Ne pas appeler
get_auditouget_candidatedans ce skill —run_scanfournit toutes les données nécessaires. - Toujours proposer un dry-run avant un envoi réel de mail.