cdv-handoff

Génère le bloc de passation qui permet à une toute nouvelle session Claude de reprendre le travail dans ce dépôt — QA d'une branche, revue de code, investigation — sans le contexte de la session actuelle. Faits vérifiés uniquement, rendu dans le chat pour copier-coller ; fichier HANDOFF-<slug>.md uniquement sur demande.

Qu'est-ce que cdv-handoff ?

Cette compétence (skill) pour Claude Code est conçue pour produire un bloc de passation structuré et fiable, permettant à une session Claude vierge de reprendre un travail dans un dépôt avec un minimum de contexte. L'objectif est d'améliorer la qualité des revues et des tests en évitant que la nouvelle session n'hérite des biais ou des informations incomplètes de la session précédente. Le bloc est généré en exécutant des commandes en direct (comptage de commits, statut git, listes de worktrees), garantissant que tous les faits sont vérifiés et à jour. Le handoff est rendu dans l'interface de chat sous forme de bloc de code pour un copier-coller facile ; un fichier HANDOFF-<slug>.md (éphémère, ignoré par git) n'est créé que sur demande explicite. Cette compétence est utilisée automatiquement à la fin de `cdv-finalize` ou sur déclenchement de phrases comme "hand this off to a fresh session" ou "me dá um handoff". Elle est compatible avec les profils cdv-harness et interagit avec les compétences soeurs (cdv-interactive-qa, cdv-code-review, cdv-debug, cdv-plan-feature) en spécifiant laquelle invoquer et avec quelles données de départ.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Clube-do-Valor/cdv-harness/tree/main/skills/cdv-handoff

Installed? Explore more Productivité et collaboration skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Handoff

Une session vierge fait un meilleur QA et une meilleure revue que la session qui a implémenté — moins de contexte, pas d'attachement au code. C'est une pratique délibérée, et elle tient ou tombe avec le handoff. Cette compétence rend chacun d'eux aussi bon.

Principes de fonctionnement

  • Les faits sont vérifiés, pas mémorisés. Chaque compte, chemin et identifiant dans le bloc provient d'une commande exécutée maintenant : git rev-list --count origin/<branche>..HEAD, git worktree list, ls QA-<slug>.md, les identifiants de fixtures extraits du fichier QA. Un handoff qui dit "3 commits peuvent ne pas être poussés" alors que le compte est de 5 envoie la session suivante sur une fausse piste.
  • Le lecteur n'a que le bloc. Pas de "como vimos", pas de référence à ce chat. Nommez la compétence à invoquer, le fichier à lire, la commande à exécuter.
  • Chat par défaut. Le bloc est rendu dans le chat à l'intérieur d'un bloc de code délimité pour copier-coller. Un fichier HANDOFF-<slug>.md (un fichier racine éphémère, profile.ephemeral_patterns: gitignoré, jamais commité) uniquement lorsque l'utilisateur demande un fichier ou que le bloc dépasse ~60 lignes.
  • Les étapes affectant la production sont nommées, avec la raison. Pas "attention à l'étape 8" mais ce qu'elle écrit où et pourquoi elle ne peut pas être annulée.
  • Discipline PII comme partout : identifiants et prénoms ; les e-mails sont des identifiants de travail et peuvent apparaître ; jamais de numéro de sécurité sociale, téléphone ou adresse.

Quand l'utiliser

  • La clôture de cdv-finalize (il imprime lui-même le handoff QA, en utilisant ce modèle).
  • L'utilisateur demande une invite pour continuer une investigation, effectuer une revue ou exécuter un QA dans une autre session.
  • Une session est sur le point d'être abandonnée parce que son contexte a gonflé (compaction imminente, "ça devient long").

Flux de travail

Étape 0 — Charger le profil et l'extension

  1. Lire .claude/harness/profile.yaml et, quand présent, .claude/harness/profile.local.yaml (ses clés gagnent). Si profile.yaml est manquant, arrêtez et dites-le : cette compétence a besoin du profil cdv-harness du dépôt, et elle ne devine jamais les valeurs.
  2. Lire <profile.extension_dir>/cdv-handoff.md quand il existe. L'extension ne fait qu'ajouter ou restreindre ; là où elle et cette compétence diffèrent, l'extension gagne pour ce dépôt. Ci-dessous, profile.<clé> est une valeur du profil. Une clé manquante ou none signifie que le dépôt n'a pas cette chose : sautez l'étape qui en a besoin.

Étape 1 — Déterminer le type et rassembler les faits (tout en lecture seule)

Type ∈ qa | review | investigation | continue-implementation. Ensuite, exécutez et conservez la sortie brute :

git branch --show-current
git worktree list --porcelain
git rev-list --count origin/<branche>..HEAD 2>/dev/null   # commits non poussés ('?' si pas de remote)
git rev-list --count HEAD..origin/<profile.default_branch> # derrière la branche par défaut
git status --porcelain | grep -v '^??'                   # fichiers suivis non commités
ls QA-<slug>.md STATE-<slug>.md <slug>-pr.md decisions-<slug>.md 2>/dev/null
grep -n 'PRODUCTION-AFFECTING' QA-<slug>.md 2>/dev/null

Pour qa : les fixtures proviennent des propres étapes du fichier QA (identifiants + libellés d'affichage, comme cdv-interactive-qa en a besoin). Pour review : l'identifiant du ticket via cdv-code-review/scripts/resolve-ticket-id.sh et si un <profile.pr_review_dir_prefix><TICKET>/ existe déjà. Pour investigation : le bloc d'hypothèses et le tableau de preuves du rapport de cdv-debug, textuellement. Pour continue-implementation : les statuts de phase de STATE-<slug>.md, son ## Finalize seed et si ## Verificação existe.

Étape 2 — Rendre le bloc

Bloc de code délimité, dans profile.language_ui (les titres de section en PT-BR ci-dessous restent tels quels), dans cet ordre ; supprimez une section seulement quand elle est vraiment vide, et dites-le (Sem fixtures pré-consultadas.) :

<VERBE> da branch <branche> (<une phrase sur ce qu'elle livre>).

ONDE ESTÁ O CÓDIGO
- <chemin du worktree | checkout principal `profile.main_checkout`>
- <N> commits en avance sur origin/<profile.default_branch> ; <M> commits NON poussés (vérifiez : git rev-list --count origin/<branche>..HEAD)
- <fichiers suivis non commités, ou "árvore limpa">

ARMADILHA DO AMBIENTE  (uniquement quand le code est dans un worktree et `profile.worktree_runner` n'est pas `none`)
- Le worktree n'a pas l'environnement du checkout principal (dépendances, `.env`) ; `profile.cmd_container_exec` teste le checkout principal, pas celui-ci.
- Toute passerelle par : <profile.worktree_runner> <worktree> <commande de test> <filtre>
- Pour le QA à l'écran : amener la branche avec <profile.bring_branch_script> --check <branche> puis sans --check. S'il refuse, ARRÊTEZ et demandez — c'est le WIP d'une autre session. Jamais git stash.
- Baseline actuelle : <N passed (M assertions)>, formateur <PASS>, analyse statique <OK>.

O QUE FAZER
- Invoquez la compétence <cdv-interactive-qa | cdv-code-review | cdv-debug | cdv-plan-feature>.
- <plan/fichier à lire, avec chemin> | <identifiant du ticket> | <rapport à partir duquel démarrer>

FIXTURES REAIS (validadas em <date>)
- <entité> <id> (<libellé comme à l'écran>) — <état qui importe>
- ...

PASSOS QUE ESCREVEM FORA DO LOCAL  [PRODUCTION-AFFECTING]
- Étape <n> : écrit <quoi> dans <système externe, depuis `profile.production_writing_integrations`> ; irréversible parce que <raison>. Seul l'utilisateur exécute, après avoir confirmé <quoi>.
- (ou) Nenhum — tout est lecture ou écriture uniquement dans la base locale.

CONTEXTO QUE MUDA A EXPECTATIVA
- <le ou les deux faits qui ressembleraient autrement à des bugs : "la commande d'exportation sort avec exit 0 par décision", "l'exportation ne tourne qu'à l'aube — tester avec la commande manuelle est attendu">

NÃO FAÇA
- Ne changez pas la branche du checkout principal par-dessus le WIP d'autrui ; n'utilisez pas git stash.
- <tout ce que l'utilisateur a exclu : "ne pas investiguer les deux enregistrements dupliqués">

<VERBE> est Rode o QA interativo, Faça o code review, Continue a investigação ou Continue a implementação.

Étape 3 — Auto-vérification avant d'imprimer

  • Chaque nombre provient d'une commande de l'Étape 1 (réexécutez-la si l'arbre a changé).
  • Chaque chemin existe (ls).
  • Aucune phrase n'a besoin de ce chat pour être comprise.
  • La section PRODUCTION-AFFECTING est présente (avec du contenu ou avec "Nenhum").

Composition

  • cdv-finalize — imprime le type qa à sa clôture en utilisant ce modèle ; lorsque cette compétence est invoquée seule après une finalisation, réutilisez les nombres du rapport d'état au lieu de les redériver.
  • cdv-interactive-qa, cdv-code-review, cdv-debug, cdv-plan-feature — les destinataires. Le bloc nomme lequel invoquer.
  • cdv-code-review mode tiers — un handoff de revue pour la PR d'un collègue le dit explicitement (branche de tiers : sans apply-review).

Exemple (type qa, condensé)

Rode o QA interativo da branch fix/export-stale-file (l'export écrivait le fichier d'hier
après une nouvelle exécution manuelle ; maintenant il enregistre le fichier du jour et supprime le précédent).

ONDE ESTÁ O CÓDIGO
- worktree .claude-worktrees/export-stale-file
- 5 commits en avance sur origin/<branche par défaut> ; 2 NON poussés (git rev-list --count origin/fix/export-stale-file..HEAD)
- arbre propre

ARMADILHA DO AMBIENTE
- Worktree sans environnement du checkout principal : passerelles par l'exécuteur de worktree ; pour l'écran, le script pour amener la branche avec --check d'abord.
- Baseline : suite de tests verte, formateur PASS, analyse statique OK.

O QUE FAZER
- Invoquez cdv-interactive-qa ; plan dans QA-export-stale-file.md (6 étapes).

FIXTURES REAIS (validées à la date du handoff)
- rapport 7 (Vendas — semaine) — exporté hier, l'ancien fichier existe encore (le cas à réparer)
- rapport 8 (Estoque — semaine) — jamais exporté (le cas propre)

PASSOS QUE ESCREVEM FORA DO LOCAL
- Étape 4 : le one-off LIT l'API externe réelle (un appel par article) pour vérifier les totaux ; il n'écrit jamais dedans. Si quelque chose suggère une écriture, arrêtez.
- Aucun autre — l'export n'écrit que sur le disque local.

CONTEXTO QUE MUDA A EXPECTATIVA
- L'export ne tourne qu'à l'aube — tester avec la commande manuelle est attendu.

NÃO FAÇA
- Ne changez pas la branche du checkout principal par-dessus le WIP d'autrui ; n'utilisez pas git stash.

Skills associés