jshph/wallflower

Peuple un tableau blanc partagé (Wallflower, basé sur tldraw) avec ce qui mérite discussion avant une réunion ou une revue privée, effectue des passes supplémentaires lorsque les utilisateurs en demandent, puis relit ce qu'ils ont fait pour séparer leur jugement du vôtre. Utilisable depuis un fil de préparation, à froid ou avec du contexte, lorsque l'utilisateur demande « mets ça sur le tableau », « prépare le tableau », « peuple le tableau », « refais une passe », ou « qu'est-ce que la salle a fait du tableau ? ».

Qu'est-ce que wallflower ?

Wallflower est un outil de préparation de réunions basé sur un tableau blanc partagé (tldraw). L'IA génère un plan de tableau (fichier JSON) avec des groupes et des cartes, puis le place sur le tableau. Les participants peuvent ensuite interagir librement avec le tableau via une interface web (tldraw). L'IA lit ensuite ce que les participants ont fait (via `wallflower diff`) et fournit un compte rendu séparant les changements des participants de la préparation initiale. L'outil est utilisé via une interface CLI (`wallflower` ou `wf`) et prend en charge plusieurs commandes : création de tableau, ajout de cartes, visualisation du layout, lecture des modifications, attente de nouvelles passes, etc. Il est particulièrement utile pour les revues de code, les synthèses de recherche, les réunions stratégiques, ou les revues privées. L'outil garantit la confidentialité en ne partageant que les informations que tous les participants peuvent voir, et les fichiers source ne quittent jamais la machine locale.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jshph/wallflower/tree/HEAD/skill/wallflower

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

Que fait wallflower ?

L'IA fait la préparation, la salle fait la réflexion. Votre travail consiste à définir ce qui démarre la conversation : le matériau, placé de manière à ce que les relations qui méritent d'être débattues soient visibles, sans rien qui semble fini. Ensuite, relisez ce que les gens ont fait du tableau, car c'est l'enregistrement de leur jugement.

Configuration

wallflower (ou sa forme courte wf) provient du paquet npm wallflower-board : npm install -g wallflower-board, ou préfixez les commandes avec npx wallflower-board au lieu de wallflower. Les tableaux vont sur le serveur public à board.byenzyme.com, sauf si l'utilisateur en a configuré un autre (wallflower server indique lequel). Rien n'a besoin d'être démarré.

Pour un tableau sur cette machine (--server local), démarrez d'abord le serveur local en arrière-plan :

(nohup wallflower serve > /tmp/wallflower.log 2>&1 &)

Dans un checkout du dépôt, npm run dev exécute le serveur local avec une interface utilisateur à rechargement en direct.

L'interface complète :

wallflower new "Titre" [--id ID]     créer un tableau et le rendre courant
wallflower put plan.json|-           ajouter ou mettre à jour des groupes et des cartes ; affiche la disposition, les avertissements et les problèmes de disposition
wallflower view                      plan de disposition, puis chaque carte avec sa position
wallflower diff                      ce que les gens ont changé depuis qu'ils ont touché le tableau pour la première fois
wallflower wait [--timeout SECONDES]  bloquer jusqu'à ce que quelqu'un appuie sur "Refaire une passe" ; affiche ce tour
wallflower url [--name Nom]         l'URL à donner, avec le nom de l'utilisateur dedans
wallflower share                     le lien pour les autres personnes ; dit sur stderr s'ils peuvent l'atteindre
wallflower delete [id]               supprimer un tableau que vous avez créé, pour tout le monde
wallflower server                    quel serveur les nouveaux tableaux utilisent
wallflower list | wallflower use <id>

wallflower url affiche où le tableau s'ouvre. Un serveur local ne répond que sur cette machine ; ne l'exposez pas vous-même. Les nouveaux tableaux vont sur board.byenzyme.com, ou sur le propre serveur de l'utilisateur s'il en a configuré un (dans ~/.config/wallflower/config.env, ou WALLFLOWER_URL et WALLFLOWER_TOKEN) ; wallflower server indique lequel. Les tableaux sur board.byenzyme.com sont supprimés après 90 jours sans activité. --server <url> dirige n'importe quelle commande ailleurs, et --server local vers cette machine : utilisez-le pour un tableau que seul l'utilisateur verra et qui contient du matériel privé, sauf s'il a dit le contraire. Passez-le à wallflower new ou wallflower use ; les commandes ultérieures sur ce tableau restent sur son serveur sans lui. Le lien d'un tableau hébergé est sa seule clé : quiconque le détient peut éditer et lire le tableau, ne le donnez qu'aux personnes qui devraient être dans la salle, et ne le collez nulle part en public. Pour travailler sur un tableau créé par quelqu'un d'autre, prenez l'id depuis son lien (?board=<id>) et exécutez wallflower use <id> ; aucun jeton n'est nécessaire.

0. Décidez à quoi sert le tableau

Réglez trois choses avant de rassembler. Si vous ne pouvez pas les déduire, demandez.

  • Qu'est-ce que la salle est ici pour juger ? Chaque réunion existe pour un acte qui appartient aux personnes qui y sont : choisir, prioriser, évaluer, nommer. Votre interprétation s'arrête juste avant cet acte.
  • Qui est dans la salle ? Cela décide ce qui peut apparaître (voir Confidentialité).
  • Que montrera ce tableau que les sources ne montrent pas ? Écrivez-le en une phrase. Si la réponse est « les mêmes notes, dans des tuiles », le tableau n'a pas encore de travail. La réponse habituelle est les relations entre sources qu'aucune source unique ne montre : la même note de trois personnes, une décision à côté de ce que quelqu'un a dit plus tard, deux efforts touchant la même chose.

Quand le public est une personne (un regard privé en arrière, un bilan de semaine), elle était dans chaque réunion et a lu chaque note. Les extraits ne lui apprennent rien. Construisez le tableau à partir de modèles à travers les sources, chacun montré comme deux ou trois cartes de différents endroits placées ensemble, plus une carte d'orientation sur où en sont les choses (ce qui est en attente, qui doit quoi à qui). Attendez-vous à moins de cartes, mais plus fortes.

CadreArrêtez-vous avantCe qui mérite attention
Standup ou planification par agentce qui nécessite un humain, priorité, qui le prendcollisions ; agents se contredisant mutuellement ; spécifications vs ce qui a été construit
Revue de conception ou critgoût : quoi garderla même note revenant à travers les versions ; réviseurs en désaccord
Synthèse de rechercheles thèmes et les idéesvaleurs aberrantes ; un mot signifiant deux choses ; ce que les gens ont fait vs ce qu'ils ont dit
Stratégie ou fondateurschoisir et s'engagerre-débattre d'une décision déjà prise ; priorités déclarées vs où va le temps
Revue privéel'évaluation personnelle de la personnefeedback qui se répète entre personnes ; dérive par rapport à un critère énoncé ; boucles ouvertes

Ces lignes sont des inférences de quelques appels réels. Laissez la relecture les corriger.

1. Rassemblement

Utilisez les outils de recherche que vous avez directement : recherche en texte intégral (rg -il) pour les noms, les mots de projet et les tags, triés par date pour la récence, puis suivez les liens depuis les ancres. Si une recherche sémantique sur les notes est disponible (enzyme petri / enzyme catalyze d'Enzyme, ou similaire), utilisez-la pour les concepts. Pour le travail d'agent, lisez les fils de discussion des agents et les journaux git ; pour les appels, lisez les transcriptions.

Un premier passage sémantique renvoie généralement les thèmes les plus fréquents des notes plutôt que le matériel de cette réunion. Avant d'écrire le plan, vérifiez :

  1. Ancres. Nommez les 3 à 6 sources dont la réunion dépend manifestement (la note de cadrage, les derniers appels, la décision qu'elle continue). Les avez-vous lues intégralement ?
  2. Frais. Le matériel inclut-il la dernière semaine de travail sur le sujet ?
  3. Voix. Les personnes importantes sont-elles représentées dans leurs propres mots ?

Sinon, reformulez dans les mots de l'utilisateur, recherchez exactement, suivez les liens, ou posez une question spécifique à l'utilisateur. Lisez les fichiers avant de les utiliser ; les extraits induisent en erreur. Lorsque des notes distillées existent (débriefs de réunion, résumés antérieurs), rappelez-vous qu'elles ont déjà effectué une certaine observation. Citez les personnes qui y sont, pas leurs conclusions, et cherchez ce qui les relie.

Confidentialité

Tout ce qui se trouve sur un tableau partagé doit provenir de sources que toutes les personnes dans la salle peuvent voir. Les réflexions personnelles, les notes privées et tout ce qui est tagué comme personnel restent en dehors d'un tableau partagé, même si c'est pertinent. Les notes distillées (débriefs, résumés) mélangent souvent ce qui a été dit avec la lecture privée de l'auteur : seules les parties dites sont partageables. Formulez le point comme une question ouverte à la place, ou laissez-le de côté. Cela inclut l'aperçu qu'une carte porte (ci-dessous) : environ 200 mots de sa source vont sur le tableau avec elle.

2. Écrire le plan

Écrivez le plan JSON à la main, dans un fichier ou sur stdin, et mettez-le en une seule fois : groupes, cartes et leurs placements ensemble. Ne construisez pas de script générateur et n'écrivez pas de validateur : wallflower put dispose le tableau, tronque le texte qui dépasse le budget et vérifie le résultat.

{
  "title": "Retour sur la revue de lancement",
  "groups": [
    { "id": "g1", "col": 0, "why": "la même inquiétude de deux réviseurs" },
    { "id": "next", "label": "À reporter à la semaine prochaine", "col": 2, "zone": true }
  ],
  "cards": [
    { "id": "rosa", "kind": "quote", "title": "Rosa sur le flux d'intégration", "body": "Je ne savais pas ce qu'il attendait de moi",
      "source": { "label": "Revue de lancement, 4 mars", "file": "/…/notes/2026-03-04 review.md", "url": "obsidian://open?…", "author": "Rosa", "date": "4 mars" },
      "place": { "in": "g1" }, "why": "même confusion que la question de Kim sur l'écran vide" },
    { "id": "kim", "kind": "quote", "title": "Kim l'a demandé deux fois", "body": "qu'est-ce que je suis censé faire en premier ?",
      "source": { "author": "Kim", "date": "6 mars" }, "place": { "near": "rosa", "side": "right", "overlap": true } }
  ]
}
wallflower put plan.json

Les plans peuvent être partiels. Mettez à nouveau le même id pour éditer ou déplacer une carte, et { "id": "x", "delete": true } la supprime. Partout où un id va, vous pouvez utiliser le numéro d'une carte à la place ("#17"), c'est ainsi que les tours et wallflower view montrent les sticky notes des gens. Les groupes sont sur une grille (col, row) ; vous ne calculez jamais de pixels. Laissez les groupes sans étiquette, car les nommer est l'acte de la salle ; why est pour la relecture, pas pour le tableau. Les zones sont l'exception : étiquetez-les ("Décidé", "À reporter à la semaine prochaine"), car le nom d'une zone est l'instruction.

Jusqu'à ce qu'une personne touche le tableau, chaque put dispose à nouveau l'ensemble du tableau à partir de vos placements, donc déplacer un groupe vers une autre row ou une carte vers un autre groupe fonctionne simplement. Après cela, tout ce qu'une personne a placé reste là où elle l'a mis : vos nouvelles cartes vont autour, et seuls vos propres groupes non touchés se déplacent pour faire de la place.

put imprime la disposition sous forme de texte, puis une vérification. layout check: no overlaps, every card in its group, no cut-off text signifie que vous avez terminé. Sinon, chaque ligne problem: nomme les cartes ou groupes par id (groupes qui se chevauchent ou trop proches, une carte qui semble être dans le mauvais groupe, des cartes se couvrant mutuellement, un titre qui dépasse trois lignes, du texte que le navigateur a signalé comme coupé) ; corrigez le plan et mettez à nouveau. wallflower view liste les mêmes problèmes à la fin. Les chevauchements que les gens ont créés sont les leurs et ne sont jamais signalés. Ne faites pas de capture d'écran du tableau pour vérifier la disposition.

Placement

placeUtiliser pour
{ "in": "g1" }du matériel qui va ensemble (le groupe s'agrandit)
{ "near": "c1", "side": "right", "overlap": true }deux cartes à lire comme une seule chose : un désaccord, une dérive, une répétition entre personnes
{ "around": "c1" }agrandir un voisinage : chaque carte atterrit sur un anneau lâche autour de c1 (une carte ou un sticky d'une personne), dans une direction différente, à l'intérieur de son groupe
{ "near": "c1", "side": "below" }une carte à côté d'une autre, sans chevauchement ; elle reste dans le groupe du partenaire, qui s'agrandit
{ "edge": "g1", "side": "right" }une valeur aberrante, ou quelque chose dont vous n'êtes pas sûr qu'il appartienne
{ "at": { "x": 0, "y": -200 } }invites, et rares endroits manuels

Types de cartes

La largeur est fixe par type et la hauteur suit le texte.

typepourtitrecorps
quotetout accrocheur textuel, parlé ou écrit ; source.author = quil'essentiel, ≤90l'accroche, ≤200 (visez sous 120)
noteun objet (un doc, ticket, PR, session), ou une note qui fait l'un des travaux ci-dessous≤90≤300
prompttexte de marqueur sur le tableau : la carte de départ, une question ouverte≤160≤200
stickyce que les gens ajoutent (vous devriez rarement le faire)≤140aucun

Définissez people (un tableau de noms, ["Rosa", "Kim", "Lee"]) lorsque l'ampleur compte ; cela s'affiche comme « de 3 personnes ». Un modèle reposant sur une ou deux voix devrait sembler mince. Mettez un lien dans source.url uniquement si toutes les personnes dans la salle peuvent l'ouvrir (un doc partagé, un ticket, un PR) ; jamais un lien vers des notes privées, qui leur est inutile et divulgue où se trouvent vos fichiers. Pour les fichiers, utilisez source.file (ci-dessous), qui reste sur votre machine.

Aperçus des sources. Donnez à chaque carte provenant d'un fichier son source.file (un chemin absolu ; une URL file:// fonctionne aussi). wallflower put lit le fichier sur votre machine et attache environ 200 mots autour de la citation de la carte, que les gens ouvrent en double-cliquant sur la carte ou en cliquant sur sa ligne source. La citation est le body d'une carte de type quote ; sur une carte note, définissez source.quote sur une phrase textuelle du fichier, sinon l'aperçu est le début du fichier. Le fichier lui-même ne quitte jamais votre machine. N'écrivez jamais un aperçu vous-même : put supprime tout source.passage dans le plan. Pour une source qui n'est pas un fichier (un email, un ticket), enregistrez son texte brut avec une redirection shell (gog … > /tmp/src-1.md) et pointez source.file vers cela. Si put avertit qu'une citation n'a pas été trouvée, l'accroche n'est pas textuelle : corrigez l'accroche, pas l'avertissement.

Écrire les cartes

Un tableau est lu d'un coup d'œil par des personnes qui sautent sur ce qui les attire. La plupart des cartes doivent être lisibles en deux secondes.

  • Titre = essentiel : ce que c'est, en mots simples, jusqu'à environ 60 caractères. Une description, pas un verdict.
  • Corps = accroche : le fragment textuel le plus court qui colle encore. Préférez la ligne étrange, concrète ou vivante. Textuel ne signifie pas tout le passage.

Chaque élément de texte doit répondre à une question : qu'est-ce que cela permet au lecteur de remarquer, de se souvenir ou d'investiguer ? Un texte dont le seul travail est d'expliquer pourquoi vous avez inclus quelque chose (une carte qui dit ce qu'elle prouve, une note qui décrit le tableau) c'est vous qui racontez votre préparation. Supprimez-le. L'attribution de la source peut se trouver tranquillement en dessous.

Une note gagne sa place en faisant l'un de ces travaux, approximativement dans l'ordre de leur utilité pour aider une salle à donner un sens aux choses :

  1. Tenir deux choses ensemble pour que la relation puisse être examinée, contestée ou démantelée.
  2. Exposer une pièce manquante : là où les preuves s'arrêtent (« Qu'est-ce que le client a réellement vu que vous décidiez ? »).
  3. Récupérer une séquence qu'une seule citation ne peut pas contenir.
  4. Proposer une lecture concurrente de quelque chose qui s'est installé trop rapidement. Sur un tableau privé, cela remonte ; sur un tableau de groupe, laissez la plupart à la salle.
  5. Rappeler une attente (ce qui était prévu) à côté de ce qui s'est passé.
  6. Faire de la place pour la répétition, généralement après que la salle a donné un sens aux choses.

Souvent, la bonne note est aucune : deux cartes bien placées font déjà le travail 1. Une note de statut avec de véritables informations (ce qui est en attente, qui doit quoi à qui) est acceptable ; une note expliquant le tableau ne l'est pas.

Les questions sont pour l'une ou les deux notes faisant les travaux 2 ou 4. Un mur de titres de questions à la deuxième personne fait le travail de la salle pour elle et se lit comme écrit par une machine, tout comme le texte auto-justificatif qu'il remplace. Les titres restent des essentiels.

Arrêtez-vous au sens. Ne nommez pas les groupes, n'écrivez pas « cela montre… », « idée clé », ou « le thème ici est… », et ne légendez pas pourquoi deux cartes sont ensemble. Le placement fait l'affirmation, et quelqu'un peut contester un placement en déplaçant une carte. Ne faites pas non plus de réserve sur chaque carte : une mise en garde appartient à la seule carte qu'elle modifie.

Au lieu deÉcrivez
titre « Notes de tarification, 23 juil. », corps : un extrait de 280 caractèresessentiel « Les liens partagés amènent des visiteurs qui ne restent pas », accroche « ils le lisent une fois et partent »
titre « Kim, appel support », corps : une phrase complète sur l'exportationessentiel « Kim exporte tout dans un tableur », accroche « Je veux juste avoir tous les événements en CSV et les lire dans un tableur »

Quand faire une autre passe

L'utilisateur peut demander une autre passe. Cela signifie qu'il a examiné le tableau et souhaite que vous ajoutiez plus de contexte, clarifiiez des points, ou inclusiez du matériel supplémentaire. Utilisez wallflower diff pour voir ce qui a changé depuis votre dernier put, puis wallflower wait jusqu'à ce que quelqu'un appuie sur « Refaire une passe ».

Relecture

Lorsque vous lisez ce qui s'est passé (wallflower diff), votre travail consiste à séparer votre préparation des actions de la salle. Qu'ont-ils déplacé ? Qu'ont-ils ajouté ? Qu'ont-ils supprimé ? Qu'est-ce que cela dit de leur jugement ? Résumez-le en une ou deux phrases.

Exemple de workflow

# Créer un nouveau tableau
wallflower new "Revue de conception"

# Ajouter des cartes et des groupes
wallflower put plan.json

# Voir le tableau
wallflower view

# Attendre que quelqu'un fasse une passe
wallflower wait

# Lire les modifications
wallflower diff

# Ajouter plus de contexte si demandé
wallflower put plan2.json

Skills associés