jshph/wallflower

会議やプライベートレビューの前に、議論に値する情報を共有ホワイトボード(Wallflower、tldraw ベース)に配置し、参加者がさらに情報を求めた際には追加パスを実行し、その後ボードへの変更を読み取って他人の判断と自分の判断を分離します。準備用スレッドで使用し、「ボードに載せて」「ボードを準備して」「ボードを埋めて」「もう一度パスを」「部屋がボードで何をしたか」などのユーザー要求に応答します。

wallflower とは?

Wallflower は、AI エージェントが会議やレビューの準備を効率的に行うためのスキルです。このスキルは、tldraw ベースの共有ホワイトボードに議論の材料を事前に配置し、会議参加者がそのボード上で思考を進めることを支援します。開発者は、`wallflower` または `wf` コマンド(npm パッケージ `wallflower-board` からインストール)を使用して、ボードの作成、カードやグループの配置、ボードの表示、変更の差分確認などを行えます。主な用途は、会議の前に「ボードを準備する」ことで、参加者の判断を引き出すための素材を配置し、会議後に「ボードの変更を読み取る」ことで、参加者の判断を記録として取得することです。Claude Code や Cursor などの AI エージェント環境で動作し、特にアジャイルスタンドアップ、デザインレビュー、戦略会議など、参加者間の関係性や判断を可視化する場面で効果を発揮します。

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

Installed? Explore more 生産性&コラボレーション skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

wallflower は何をしますか?

AI が準備を行い、参加者が思考を進めます。あなたの仕事は、会話の出発点を設定することです。つまり、議論に値する関係性が一目でわかるように素材を配置し、完成したように見えるものは一切置かないことです。その後、参加者がボードに加えた変更を読み取ります。なぜなら、それが彼らの判断の記録だからです。

セットアップ

wallflower(または短縮形 wf)は wallflower-board npm パッケージから提供されます:npm install -g wallflower-board とするか、wallflower の代わりに npx wallflower-board をコマンドの前に付けてください。ボードは、ユーザーが別のサーバーを設定していない限り、board.byenzyme.com の公開サーバーに保存されます(wallflower server で現在のサーバーを確認できます)。起動に必要なものはありません。

このマシン上でボードを使用する場合(--server local)、先にバックグラウンドでローカルサーバーを起動してください:

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

リポジトリのチェックアウト内では、代わりに npm run dev でライブリロード対応の UI とともにローカルサーバーを実行できます。

インターフェース全体:

wallflower new "Title" [--id ID]     ボードを作成し、カレントにする
wallflower put plan.json|-           グループとカードを追加または更新する;レイアウト、警告、レイアウトの問題を表示する
wallflower view                      レイアウトマップ、次に各カードの位置を表示する
wallflower diff                      参加者が最初にボードに触れてから変更した内容を表示する
wallflower wait [--timeout SECONDS]  誰かが「もう一度パスを」を押すまでブロックし、そのラウンドを表示する
wallflower url [--name Name]         ユーザー名を含む、ボードの URL を表示する
wallflower share                     他の参加者へのリンクを表示する;到達可能かどうかを stderr に出力する
wallflower delete [id]               作成したボードを全員分削除する
wallflower server                    新しいボードの保存先サーバーを表示する
wallflower list | wallflower use <id>

wallflower url はボードが開く URL を表示します。ローカルサーバーはこのマシンからのみ応答します;自分で公開しないでください。新しいボードは board.byenzyme.com、またはユーザーが独自のサーバーを設定している場合はそのサーバーに保存されます(~/.config/wallflower/config.env、または WALLFLOWER_URL と WALLFLOWER_TOKEN で設定);wallflower server で確認できます。board.byenzyme.com 上のボードは、90日間アクティビティがないと削除されます。--server <url> は任意のコマンドを別のサーバーに向け、--server local はこのマシンに向けます。ユーザーだけが見るプライベートな資料を保持するボードに使用し、ユーザーが別途指示しない限り公開しないでください。wallflower new または wallflower use に渡します;その後のコマンドはそのボードのサーバーを引き継ぎ、指定は不要です。ホストされたボードのリンクが唯一の鍵です:リンクを保持している人は誰でもボードを編集および読み取り可能なので、部屋にいるべき人にのみ渡し、公共の場に貼り付けないでください。他の人が作成したボードで作業するには、リンクから ID(?board=<id>)を取得し、wallflower use <id> を実行します;トークンは不要です。

0. ボードの目的を決める

収集を始める前に3つのことを決めてください。推測できない場合は、ユーザーに質問してください。

  • 部屋は何を判断するために集まるのか? すべての会議は、そこにいる人々に属する一つの行為(選択、優先順位付け、評価、命名)のために存在します。あなたの解釈は、その行為の直前で止まります。
  • 部屋には誰がいるのか? これにより、何を表示してよいかが決まります(プライバシーを参照)。
  • このボードは、情報源にはない何を表示するのか? 一文で書いてください。答えが「同じメモをタイル状に並べたもの」なら、ボードの役割はまだありません。通常の答えは、単一の情報源には現れない情報源間の関係です:3人からの同じメモ、後で誰かが言ったことの隣にある決定、同じものに触れている2つの取り組み。

聴衆が一人の場合(プライベートな振り返り、週次のレビュー)、その人はすべての会議に参加し、すべてのメモを読んでいます。抜粋は何も伝えません。情報源間のパターンからボードを構築し、それぞれを異なる場所からの2~3枚のカードと、状況を説明する1枚のオリエンテーションカード(保留中、貸し借り)として表示します。より少なく、より強力なカードを期待してください。

設定直前で止める注目すべき点
エージェント主導のスタンドアップまたは計画人間が必要なもの、優先順位、誰が担当するか衝突;エージェント同士の矛盾;仕様と実際に構築されたものの差
デザインレビューまたは批評テイスト:何を残すかバージョン間で繰り返される同じノート;意見が異なるレビュアー
リサーチ統合テーマと洞察外れ値;一つの単語が二つの意味を持つこと;人がしたことと言ったことの差
戦略または創業者会議選択とコミットメント決定済みの議論を再考すること;表明された優先順位と実際の時間の使い方の差
プライベートレビュー本人の自己評価複数の人から繰り返されるフィードバック;表明された基準からの逸脱;未解決のループ

これらの行は、いくつかの実際の会話からの推論です。読み取りによって修正されるようにしてください。

1. 収集

利用可能な検索ツールを直接使用してください:名前、プロジェクトの単語、タグの全文検索(rg -il)、日付順にソートして新しいものを優先し、アンカーからリンクを辿ってください。ノートのセマンティック検索が利用可能な場合(Enzyme の enzyme petri / enzyme catalyze、または類似のもの)、概念に使用してください。エージェントの作業については、エージェントのスレッドと git ログを読み、通話についてはトランスクリプトを読んでください。

最初のセマンティックパスは通常、この会議の資料ではなく、ノートの最も頻繁なテーマを返します。計画を書く前に、以下を確認してください:

  1. アンカー。 会議が明らかに依存する3~6の情報源を挙げてください(スコープノート、最新の通話、継続する決定)。それらを全文読んでいますか?
  2. 新鮮さ。 資料には、そのトピックに関する過去1週間の作業が含まれていますか?
  3. 声。 重要な人々が自分の言葉で表現されていますか?

そうでない場合は、ユーザーの言葉で言い換え、正確に検索し、リンクを辿るか、ユーザーに1つの具体的な質問をしてください。ファイルを使用する前に読んでください;スニペットは誤解を招きます。要約されたノート(会議の振り返り、過去のサマリー)が存在する場合、それらはすでに何かに気づいていることを覚えておいてください。それらの結論ではなく、そこに含まれる人々の言葉を引用し、それらを結びつけるものを探してください。

プライバシー

共有ボード上のものはすべて、部屋の全員が見てもよい情報源からのものでなければなりません。個人的な考察、プライベートノート、および個人タグが付いたものは、関連性があっても共有ボードには載せません。要約されたノート(振り返り、サマリー)は、多くの場合、言われたことと、書き手のプライベートな解釈を混在させています:共有できるのは言われた部分だけです。代わりに、そのポイントを未解決の質問として表現するか、省略してください。これには、カードが保持するプレビュー(以下を参照)も含まれます:カードとともに、その情報源の約200語がボードに配置されます。

2. 計画を書く

計画 JSON を手動で、ファイルまたは標準入力に記述し、一度に配置してください:グループ、カード、およびその配置をまとめて。ジェネレータスクリプトを作成せず、バリデータも書かないでください:wallflower put がボードをレイアウトし、予算を超えるコピーを切り詰め、結果をチェックします。

{
  "title": "ローンチレビューの振り返り",
  "groups": [
    { "id": "g1", "col": 0, "why": "二人のレビュアーによる同じ懸念" },
    { "id": "next", "label": "来週に持ち越し", "col": 2, "zone": true }
  ],
  "cards": [
    { "id": "rosa", "kind": "quote", "title": "Rosa のオンボーディングフローについて", "body": "何を求められているのかわからなかった",
      "source": { "label": "ローンチレビュー、3月4日", "file": "/…/notes/2026-03-04 review.md", "url": "obsidian://open?…", "author": "Rosa", "date": "Mar 4" },
      "place": { "in": "g1" }, "why": "Kim の空の状態に関する質問と同じ混乱" },
    { "id": "kim", "kind": "quote", "title": "Kim が二度尋ねた", "body": "最初に何をすればいいの?",
      "source": { "author": "Kim", "date": "Mar 6" }, "place": { "near": "rosa", "side": "right", "overlap": true } }
  ]
}
wallflower put plan.json

計画は部分的でも構いません。同じ ID を再度指定するとカードを編集または移動でき、{ "id": "x", "delete": true } で削除できます。ID を使用できる場所では、代わりにカードの番号を使用できます("#17")。これは、ラウンドや wallflower view が参加者の付箋を表示する方法です。グループはグリッド上に配置されます(col、row);ピクセルを計算する必要はありません。グループにはラベルを付けないでください。名前を付けるのは部屋の行為だからです。why は読み取り用であり、ボード用ではありません。ゾーンは例外です:ラベルを付けてください("決定済み"、"来週に持ち越し")。ゾーンの名前が指示だからです。

参加者がボードに触れるまでは、put を実行するたびにボード全体が配置から再レイアウトされるため、グループを別の row に移動したり、カードを別のグループに移動したりしても問題なく動作します。その後は、参加者が配置したものはそのまま残ります:新しいカードはその周りに配置され、あなたが触っていないグループだけが移動してスペースを作ります。

put はレイアウトをテキストとして表示し、次にチェックを表示します。layout check: no overlaps, every card in its group, no cut-off text と表示されれば完了です。そうでない場合は、各 problem: 行が ID でカードまたはグループを示します(グループの重複または接近しすぎ、間違ったグループに属しているように見えるカード、カード同士の重なり、3行を超えるタイトル、ブラウザが切り詰められたと報告したテキスト)。計画を修正して再度 put を実行してください。wallflower view は最後に同じ問題を一覧表示します。参加者が作成した重なりは参加者のものであり、報告されません。レイアウトを確認するためにボードのスクリーンショットを撮らないでください。

配置

place使用目的
{ "in": "g1" }一緒に属する素材(グループが拡大する)
{ "near": "c1", "side": "right", "overlap": true }2枚のカードを1つのものとして読ませる:意見の相違、逸脱、人をまたいだ繰り返し
{ "around": "c1" }近隣を拡大する:各カードは c1(カードまたは参加者の付箋)の周りにまばらなリング状に、別の方向に、グループ内に配置される
{ "near": "c1", "side": "below" }重なりなしにカードを別のカードの隣に配置する;パートナーのグループ内に留まり、グループは拡大する
{ "edge": "g1", "side": "right" }外れ値、または所属が確かでないもの
{ "at": { "x": 0, "y": -200 } }プロンプト、および稀な手動配置

カードの種類

種類ごとに幅は固定され、高さはコピーに応じて決まります。

kind用途titlebody
quote逐語的なフック(話し言葉または書き言葉)。source.author = 発言者要旨、90字以内フック、200字以内(120字未満を目指す)
noteオブジェクト(ドキュメント、チケット、PR、セッション)、または以下の役割のいずれかを果たすメモ90字以内300字以内
promptボード上のマーカーテキスト:開始カード、未解決の質問160字以内200字以内
sticky参加者が追加するもの(あなたが追加することはほとんどない)140字以内なし

幅が重要な場合は people(名前の配列、["Rosa", "Kim", "Lee"])を設定してください。これは「3人から」と表示されます。1つまたは2つの声だけに依存するパターンは薄く見えるはずです。部屋の全員が開くことができる場合にのみ、source.url にリンクを入れてください(共有ドキュメント、チケット、PR)。プライベートノートへのリンクは決して入れないでください。それは彼らにとって無意味であり、あなたのファイルの場所を漏洩します。ファイルの場合は、source.file(以下を参照)を使用してください。これはあなたのマシン上に留まります。

ソースプレビュー。 ファイルから取得したすべてのカードに source.file(絶対パス。file:// URL も機能します)を指定してください。wallflower put はあなたのマシン上のファイルを読み取り、カードの引用の周囲約200語を添付します。これは、カードをダブルクリックするか、そのソース行をクリックすることで開きます。引用は引用カードの body です。ノートカードの場合は、ファイルからの逐語的なフレーズを source.quote に設定してください。設定しない場合、プレビューはファイルの冒頭部分になります。ファイル自体はあなたのマシンから離れることはありません。プレビューを自分で書かないでください:put は計画内の source.passage を削除します。ファイルではない情報源(メール、チケット)の場合は、シェルリダイレクト(gog … > /tmp/src-1.md)で生テキストを保存し、source.file でそれを指してください。put が引用が見つからないと警告した場合、フックが逐語的ではありません:警告ではなく、フックを修正してください。

カードの記述

ボードは一瞥で読まれ、人々は気になるものに飛びつきます。ほとんどのカードは2秒で読めるようにすべきです。

  • タイトル = 要旨:これが何であるか、平易な言葉で、60文字以内。説明であり、判定ではありません。
  • 本文 = フック:最も短い逐語的な断片で、それでいて印象に残るもの。奇妙で具体的、または鮮明な行を優先してください。逐語的とは、全文を意味するわけではありません。

すべてのテキストは一つの質問に答える必要があります:これにより、読者は何に気づき、何を覚え、何を調査できるようになるか? 唯一の役割がなぜそれを含めたかを説明することであるテキスト(それが何の証拠であるかを示すカード、ボードを説明するノート)は、あなたが準備をナレーションしていることになります。削除してください。ソースの帰属は静かに下部に置くことができます。

ノートは、以下の役割のいずれかを果たすことでその価値を示します。大まかに、部屋が物事を理解するのにどれだけ役立つかの順に並んでいます:

  1. 二つのものを一緒に保持する:関係性が調査、議論、または分解できるように。
  2. 欠けている部分を露出する:証拠が途切れる場所(「クライアントはあなたの決定を実際にどのように見たのか?」)。
  3. 単一の引用では保持できないシーケンスを復元する。
  4. 早急に結論が出たものに対して、対抗する読みを提供する。プライベートボードではこれが上位になりますが、グループボードではほとんどを部屋に任せます。
  5. 期待(計画されたこと)を、起こったことの隣に持ってくる。
  6. リハーサルのための場所を作る。通常は、部屋が物事を理解した後。

多くの場合、適切なノートはなしです。適切に配置された2枚のカードがすでに役割1を果たしています。実際の情報を含むステータスノート(保留中、貸し借り)は問題ありませんが、ボードを説明するノートは問題です。

質問は、役割2または4を果たす1つまたは2つのノートのためのものです。二人称の質問タイトルの壁は、部屋に代わって質問をしてしまい、自己正当化するテキストと同じく機械的に書かれたものとして読まれます。タイトルは要旨のままにしてください。

意味で止まってください。グループに名前を付けず、「これは…を示している」「重要な洞察」「ここでのテーマは…」と書かず、なぜ2枚のカードが一緒に配置されているかを説明するキャプションも付けないでください。配置が主張を行い、誰でもカードを移動することで配置に異議を唱えることができます。すべてのカードに留保条件を付けないでください:留保条件は、それが変更する1枚のカードにのみ属します。

代わりに記述
タイトル「価格ノート、7月23日」、本文:280文字の抜粋要旨「共有リンクは訪問者を連れてくるが、彼らは留まらない」、フック「彼らはそれを一度読んで去ってしまう」
タイトル「Kim、サポートコール」、本文:エクスポートに関する完全な文要旨「Kim はすべてをスプレッドシートにエクスポートする」、フック「私はただ欲しいだ」

…

(以降、原文が途中で切れているため、翻訳もここまでとします。)

関連スキル