Étude de cas · Outil web
Le planning du service
De la feuille de calcul à un outil en ligne partagé par toute l'équipe : absences reliées aux mails, box libérés et jokers, livraison testée, publication en quatre clics. Le parcours réel, avec ses difficultés.


Capture d’un outil réel · données fictives, noms floutés
Idée
Quel problème, en une phrase ?
Nommer le problème en une phrase
« Le planning vit dans un tableur que peu de gens savent modifier ; chaque absence déclenche une chaîne de mails et des box d'échographie restent vides. » Tant que le problème ne tient pas en une phrase, on ne code rien.
DifficultéVouloir tout résoudre d'un coup (planning, absences, accès logiciels, mails).
SolutionLister les besoins, puis choisir le premier : un planning partagé que toute l'équipe voit à jour.
!Commencer par l'outil, pas par l'automatisation : les mails et les jokers viennent après.
Décider ce que ce sera
Un planning n'est ni un skill ni un simple artefact : c'est un outil web autonome, utilisé par des personnes qui n'ont pas Claude. Claude le construit, le teste et le livre ; il est publié en dehors de Claude.
!Un artefact Claude n'est visible que des personnes à qui on le partage : pour toute une équipe, un site publié est plus robuste.
Concept
Que sera l'outil, et que fera-t-il ?
Écrire la spécification avant le code
Faire rédiger par Claude, à partir du tableur existant : les intervenants et leur catégorie (seniors, assistants, docteurs juniors, internes), les activités, les demi-journées, qui modifie quoi, et la liste des questions à trancher.
À dire à Claude« Voici notre tableur de planning et la liste des intervenants. Rédige la spécification d'un outil de planning en une page web : planning type, onglets par activité, vue mois, absences. Liste ce qui est ambigu avant de coder quoi que ce soit. »
DifficultéDes sigles et des colonnes compris d'une seule personne.
SolutionUn bloc « décisions actées / en attente » : on ne construit qu'une fois les ambiguïtés levées.
Dessiner les onglets
Un onglet Global pour le planning type ; un onglet par activité (Échographie par box et demi-journée, Consultation, Effort, IRM, Astreinte, Staff, Faculté, Fiches vacations) ; un onglet Absences ; une Vue mois qui montre tout le monde.
!Le planning type ne doit jamais être modifié par une affectation ponctuelle : les semaines en dérivent.
Choisir l'architecture technique
Un seul fichier HTML (rien à installer), une base partagée en temps réel pour que tous voient les mêmes données, un mot de passe d'équipe, et une publication par un dépôt GitHub relié à un hébergeur statique.
!Le mot de passe d'équipe ne s'écrit ni dans le fichier publié ni dans un document diffusé.
Réalisation
Que demander à Claude, dans quel ordre ?
Construire la première version
Dans Cowork ou Claude Code, sur le poste : Claude écrit le fichier, vous l'ouvrez dans le navigateur, vous corrigez par petites demandes. Chaque livraison porte un numéro de version affiché dans le titre.
À dire à Claude« Construis la version 1 du planning à partir de la spécification validée. Un seul fichier HTML, onglets Global et Échographie d'abord. Affiche le numéro de version dans le titre de la page. »
DifficultéL'aperçu ne s'affichait pas ou n'était pas à jour sur le poste.
SolutionLivrer deux fichiers distincts : un aperçu local qui embarque l'état du jour pour être vu tout de suite, et le fichier à publier, sans données.
Brancher la base partagée
Synchronisation en temps réel, glisser-déposer des personnes dans les cases, droits d'édition protégés par le mot de passe.
DifficultéDes noms anciens ou « aléatoires » apparaissaient sur certains postes.
SolutionLe fichier publié contenait une copie figée des données d'un ancien export. On l'a retirée, et un bandeau rouge signale désormais tout poste non connecté.
DifficultéLa fenêtre du mot de passe, fermée avec « Plus tard », ne revenait jamais.
SolutionBandeau cliquable permanent tant que le poste n'est pas connecté.
!Ne jamais embarquer de données réelles dans le fichier publié.
!Tester sur un poste « neuf » (navigation privée), pas seulement sur le sien.
Relier absences et mails
Un bouton génère le mail mensuel des absences ; un autre importe les réponses au format « NOM : dates » et les reporte sur toutes les activités. Les noms inconnus sont refusés, pas devinés.
À dire à Claude« Ajoute à l'onglet Absences un bouton qui génère le mail mensuel des absences, et un import depuis un mail au format « NOM : dates » qui reporte les absences sur les onglets d'activité. Refuse les noms inconnus. »
DifficultéDes absences saisies dans un ancien format restaient invisibles.
SolutionLes lister et proposer une conversion, sans rien modifier sans accord.
DifficultéLa vue mois n'affichait qu'une partie de l'équipe.
SolutionLa vue mois lit la liste complète des intervenants.
Box libérés et jokers
Chaque case occupée par un absent est marquée « box libéré ? ». Un tableau personnes × demi-journées définit les jokers ; seuls les jokers disponibles sont proposés, pour la semaine seulement.
DifficultéUn joker cité n'était pas encore dans la liste des intervenants (arrivée prochaine).
SolutionDemander confirmation avant de l'ajouter, jamais deviner une identité.
!Une affectation de joker ne touche jamais le planning type.
Épreuve
Comment prouver que ça marche ?
Triple test automatique
Claude pilote un navigateur : 1) aucun script en erreur, tous les modules chargés, avec et sans données ; 2) les vues clés (vue mois complète, absences visibles) ; 3) les gestes réels (import d'un mail, glisser-déposer, affectation d'un joker).
DifficultéDéposer une personne sur une case occupée échangeait les deux personnes et pouvait créer un doublon.
SolutionGeste ajouté au triple test de chaque version ; correction décidée à part.
!Un test qui passe sur votre poste ne prouve rien pour les autres : tester avec et sans données.
Double vérification des demi-journées et des noms
Comparer le planning type et chaque onglet d'activité, et lister les écarts (quelqu'un prévu en échographie dans le planning type mais absent de l'onglet). Vérifier noms et identifiants avec l'annuaire. Rien n'est corrigé sans accord.
DifficultéUn identifiant mal orthographié dans un onglet empêchait l'affichage d'une personne.
SolutionContrôle systématique des identifiants à chaque version.
DifficultéDes coordonnées introuvables (secrétariat, boîte de l'activité).
SolutionChercher dans l'annuaire puis l'archive mail ; si rien, demander plutôt que deviner.
Mise en service
Comment le livrer, le publier, le faire durer ?
Livrer toujours les mêmes quatre choses
1) l'aperçu local ; 2) le fichier à publier, déjà renommé index.html dans un dossier _A_PUBLIER_vXX ; 3) la source en ligne archivée ; 4) les mails rédigés dans la conversation.
DifficultéLa procédure de publication n'était pas claire.
SolutionRenommer le fichier à l'avance et décrire chaque clic, avec ce qu'on doit voir à la fin.
Publier en quatre clics
Ouvrir le dépôt GitHub du planning ; « Add file » puis « Upload files » ; glisser index.html (il remplace l'ancien, c'est voulu) ; « Commit changes ». Une minute plus tard : Ctrl + F5, vérifier le numéro de version dans le titre et les nouveaux boutons.
!Publier uniquement la dernière version : chaque version contient les précédentes.
Annoncer et accompagner
Un mail court au secrétariat et à la boîte de l'activité, les autres en copie : ce qui change, comment signaler une absence, que faire devant le bandeau « non connecté ». Rédigé dans la conversation, envoyé par vous.
!L'IA prépare les mails, elle ne les envoie jamais.
En faire une compétence
Compresser toute la discussion dans un skill orchestrateur « planning » : architecture, bugs connus, procédure de livraison, triple test, double vérification, lien avec l'annuaire. La prochaine conversation repart de là, pas de zéro.
À dire à Claude« Résume toute cette discussion en un skill orchestrateur « planning » : architecture, bugs rencontrés et corrections, procédure de livraison, triple test, double vérification des demi-journées et des noms, procédure de publication. Présente-le comme une proposition à valider. »
!Un skill se valide avant d'être installé ; il se relit à chaque version majeure.