/tc — Gestionnaire de Changements Techniques
Envoyer une commande TC (Changement Technique). Arguments : $ARGUMENTS.
Si $ARGUMENTS est vide, afficher ce menu et s'arrêter :
/tc init Initialiser le suivi TC dans ce projet
/tc create <nom> Créer un nouvel enregistrement TC
/tc update <tc-id> [...] Mettre à jour les champs, statut, fichiers, transfert
/tc status [tc-id] Afficher un TC ou le résumé du registre
/tc resume <tc-id> Reprendre un TC depuis une session précédente
/tc close <tc-id> Transitionner un TC vers 'déployé'
/tc export Ré-évaluer les artefacts dérivés
/tc dashboard Afficher le résumé du registre
Sinon, analyser $ARGUMENTS comme <sous-commande> <reste> et dispatcher vers le protocole correspondant ci-dessous. Tous les scripts se trouvent dans engineering/tc-tracker/scripts/.
Sous-commandes
init
- Exécuter :
python3 engineering/skills/tc-tracker/scripts/tc_init.py --root . --json - Si le statut est
already_initialized, rapporter les statistiques actuelles et s'arrêter. - Sinon, rapporter ce qui a été créé et suggérer
/tc create <nom>comme prochaine étape.
create <nom>
- Analyser
<nom>comme un slug en kebab-case. S'il manque, demander à l'utilisateur d'en fournir un. - Demander à l'utilisateur (une question à la fois) :
- Titre (5-120 caractères)
- Portée :
feature | bugfix | refactor | infrastructure | documentation | hotfix | enhancement - Priorité :
critical | high | medium | low(par défautmedium) - Résumé (10+ caractères)
- Motivation
- Exécuter :
python3 engineering/skills/tc-tracker/scripts/tc_create.py --root . \ --name "<slug>" --title "<titre>" --scope <portée> --priority <priorité> \ --summary "<résumé>" --motivation "<motivation>" --json - Rapporter le nouvel ID TC et le chemin vers l'enregistrement.
update <tc-id> [intention]
- Si
<tc-id>est manquant, lister les TC actifs (statutin_progressoublocked) viatc_status.py --allet demander lequel. - Déterminer l'intention de l'utilisateur à partir du langage naturel :
- Changement de statut →
--set-status <état>avec--reason "<pourquoi>" - Ajouter des fichiers → un ou plusieurs
--add-file chemin:action - Ajouter un test →
--add-test "<titre>" --test-procedure "<étape>" --test-expected "<résultat>" - Mettre à jour le transfert → toute combinaison de
--handoff-progress,--handoff-next,--handoff-blocker,--handoff-context - Ajouter une note →
--note "<texte>" - Ajouter un tag →
--tag <tag>
- Changement de statut →
- Exécuter :
python3 engineering/skills/tc-tracker/scripts/tc_update.py --root . --tc-id <tc-id> [drapeaux] --json - Si le code de sortie est non nul, remonter l'erreur textuellement. La machine à états et le validateur rejetteront les mouvements invalides — ne pas réessayer aveuglément.
status [tc-id]
- Si
<tc-id>est fourni :python3 engineering/skills/tc-tracker/scripts/tc_status.py --root . --tc-id <tc-id> - Sinon :
python3 engineering/skills/tc-tracker/scripts/tc_status.py --root . --all
resume <tc-id>
- Exécuter :
python3 engineering/skills/tc-tracker/scripts/tc_status.py --root . --tc-id <tc-id> --json - Afficher le bloc de transfert de manière prominente :
progress_summary,next_steps(numérotés),blockers,key_context. - Demander : « Reprendre et commencer par l'étape suivante 1 ? (o/n) »
- Si oui, exécuter une mise à jour pour enregistrer la reprise :
python3 engineering/skills/tc-tracker/scripts/tc_update.py --root . --tc-id <tc-id> \ --note "Session reprise" --reason "transfert de session" - Commencer à exécuter le premier élément de
next_steps. NE PAS redériver le contexte — faire confiance au transfert.
close <tc-id>
- Lire l'enregistrement via
tc_status.py --tc-id <tc-id> --json. - Vérifier que le statut actuel est
tested. Sinon, refuser et indiquer à l'utilisateur quelles transitions sont encore nécessaires. - Vérifier
test_cases: avertir si l'un d'eux estpending,failoublocked. - Demander à l'utilisateur :
- « Qui approuve ? (votre nom, ou 'self') »
- « Notes d'approbation (optionnel) : »
- « État de la couverture de test : none / partial / full »
- Exécuter :
Puis éditer directement le blocpython3 engineering/skills/tc-tracker/scripts/tc_update.py --root . --tc-id <tc-id> \ --set-status deployed --reason "Approuvé par <approbateur>" --note "Approbation : <approbateur> — <notes>"approvalvia une mise à jour ultérieure si la version du script le supporte ; sinon, instruire l'utilisateur d'enregistrer l'approbation dansnotes. - Rapporter : « TC-NNN fermé et déployé. »
export
Il n'y a pas d'export HTML automatique dans cette compétence. Re-valider tout à la place :
- Lire le registre.
- Pour chaque enregistrement, exécuter :
python3 engineering/skills/tc-tracker/scripts/tc_validator.py --record <chemin> --json - Exécuter :
python3 engineering/skills/tc-tracker/scripts/tc_validator.py --registry docs/TC/tc_registry.json --json - Rapporter : nombre total d'enregistrements validés, erreurs éventuelles, chemins vers les éléments invalides.
dashboard
Exécuter le résumé de tous les enregistrements :
python3 engineering/skills/tc-tracker/scripts/tc_status.py --root . --all
Règles Impératives
- Ne jamais éditer
tc_record.jsonà la main. Toujours utilisertc_update.pypour que l'historique des révisions soit ajouté et que la validation soit exécutée. - Ne jamais contourner la machine à états. Avancer à travers les états même si cela semble redondant.
- Ne jamais supprimer un TC. L'historique est en mode ajout seul — ajouter une révision finale et la taguer
[CANCELLED]. - Tâche de fond administrative. En cours de tâche, lancer un sous-agent en arrière-plan pour mettre à jour le TC. Ne pas interrompre le codage pour de la paperasse.
- Valider avant de rapporter un succès. Si un script se termine avec un code non nul, remonter l'erreur et s'arrêter.
Compétences Connexes
engineering/tc-tracker— SKILL.md complet avec référence de schéma, diagrammes de cycle de vie et format de transfert.engineering/changelog-generator— À associer au tracker TC : les TC pour la piste d'audit par changement, le changelog pour les notes de version destinées aux utilisateurs.engineering/tech-debt-tracker— Pour suivre la dette technique à long terme plutôt que des changements de code discrets.