Community생산성 & 협업github.com

jshph/wallflower

회의나 개인 리뷰 전에 공유 화이트보드(Wallflower, tldraw 기반)에 논의할 가치가 있는 내용을 채우고, 사람들이 추가 정보를 요청하면 추가 패스를 수행한 후, 사람들이 보드에 한 작업을 다시 읽어 그들의 판단과 여러분의 판단을 분리합니다. 준비 스레드, 콜드 또는 이미 컨텍스트를 보유한 상태에서 사용자가 "보드에 올려", "보드 준비", "보드 채우기", "다시 패스", 또는 "방이 보드로 무엇을 했나요?"라고 요청할 때 사용하세요.

wallflower란 무엇인가요?

Wallflower는 AI 비서(예: Claude Code, Cursor, Codex)가 공유 tldraw 기반 화이트보드(기본 서버: board.byenzyme.com)를 미리 준비하여 회의 전에 논의할 가치가 있는 자료를 배치할 수 있게 해주는 도구입니다. AI는 그룹, 카드 및 배치를 JSON으로 정의한 후 `wallflower put` 명령어로 보드에 업로드합니다. 보드가 사람들의 상호작용을 받은 후, AI는 `wallflower diff` 명령어로 변경 사항을 읽고, `wallflower view`로 최종 배치를 검토하여 '방'의 판단(이동, 노트, 수정)을 원래 준비 내용과 분리합니다. 주요 기능으로는 `wallflower new`(보드 생성), `wallflower put`(내용 추가), `wallflower view`(보드 보기), `wallflower diff`(변경 사항 비교), `wallflower wait`(다음 패스 대기)가 있습니다. 이 도구는 개인 정보를 존중하며, 공유 보드에는 모든 참가자가 볼 수 있는 소스만 포함합니다. 개인 노트나 태그된 항목은 공유 보드에서 제외됩니다.

지원 대상~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]     create a board and make it current
wallflower put plan.json|-           add or update groups and cards; prints the layout, warnings, and layout problems
wallflower view                      layout map, then every card with its position
wallflower diff                      what people changed since they first touched the board
wallflower wait [--timeout SECONDS]  block until someone presses "Take another pass"; prints that round
wallflower url [--name Name]         the URL to hand over, with the user's name in it
wallflower share                     the link for other people; says on stderr whether they can reach it
wallflower delete [id]               delete a board you created, for everyone
wallflower server                    which server new boards go to
wallflower list | wallflower use <id>

wallflower 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. 보드의 목적 결정

수집하기 전에 세 가지를 결정하세요. 추론할 수 없으면 물어보세요.

  • 방이 여기서 판단할 것은 무엇인가요? 모든 회의는 그 안에 있는 사람들에게 속한 하나의 행위(선택, 우선순위 지정, 평가, 명명)를 위해 존재합니다. 여러분의 해석은 그 행위 직전에 멈춥니다.
  • 방에는 누가 있나요? 이것은 무엇이 나타날 수 있는지를 결정합니다(Privacy 참조).
  • 이 보드는 소스에 없는 무엇을 보여줄 것인가요? 한 문장으로 작성하세요. 답변이 "같은 노트를 타일로"라면 보드에 아직 역할이 없는 것입니다. 일반적인 답변은 단일 소스가 보여주지 않는 소스 간의 관계입니다: 세 사람의 같은 노트, 누군가가 나중에 말한 것 옆의 결정, 같은 것을 건드리는 두 가지 노력.

대상이 한 명인 경우(개인 회고, 주간 검토), 그 사람은 모든 회의에 참석했고 모든 노트를 읽었습니다. 발췌문은 그들에게 아무것도 알려주지 않습니다. 소스 전반의 패턴에서 보드를 구축하세요. 각 패턴은 다른 곳에서 배치된 두세 개의 카드와 상황이 어떤지(대기 중인 것, 누가 누구에게 빚진 것)를 보여주는 하나의 방향 카드로 표시됩니다. 더 적고 더 강력한 카드를 기대하세요.

설정멈추는 지점주목할 가치가 있는 것
에이전트 기반 스탠드업 또는 계획인간이 필요한 것, 우선순위, 누가 가져가는지충돌; 에이전트가 서로 모순됨; 사양 대 구축된 것
디자인 리뷰 또는 비평취향: 무엇을 유지할지여러 버전에서 반복되는 같은 노트; 의견이 다른 리뷰어
연구 종합테마와 통찰이상치; 하나의 단어가 두 가지를 의미함; 사람들이 한 것 vs. 말한 것
전략 또는 창업자선택하고 약속하기이미 결정된 사항을 다시 논쟁함; 명시된 우선순위 대 시간이 사용된 곳
개인 검토개인의 평가여러 사람에 걸쳐 반복되는 피드백; 명시된 기준에서의 이탈; 열린 루프

이 행은 몇 번의 실제 통화에서 추론한 것입니다. 피드백 읽기가 이를 수정하도록 하세요.

1. 수집

직접 사용 가능한 검색 도구를 사용하세요: 이름, 프로젝트 단어 및 태그에 대한 전체 텍스트 검색(rg -il), 날짜 기준 최신순 정렬, 그런 다음 앵커에서 링크를 따라가세요. 노트에 대한 의미론적 검색이 가능한 경우(Enzyme의 enzyme petri / enzyme catalyze 또는 유사한 것) 개념에 사용하세요. 에이전트 작업의 경우 에이전트 스레드와 git 로그를 읽고, 통화의 경우 대화 기록을 읽으세요.

첫 번째 의미론적 패스는 일반적으로 이 회의의 자료보다는 노트의 가장 빈번한 테마를 반환합니다. 계획을 작성하기 전에 확인하세요:

  1. 앵커. 회의가 명백히 의존하는 3~6개의 소스 이름을 지정하세요(범위 지정 노트, 최근 통화, 계속되는 결정). 전체를 읽었나요?
  2. 최신. 자료에 해당 주제에 대한 지난 주의 작업이 포함되어 있나요?
  3. 목소리. 중요한 사람들이 자신의 말로 표현되었나요?

그렇지 않다면 사용자의 말로 다시 표현하고, 정확히 검색하고, 링크를 따라가거나, 사용자에게 하나의 구체적인 질문을 하세요. 파일을 사용하기 전에 읽으세요. 스니펫은 오해를 불러일으킵니다. 요약된 노트(회의 보고서, 이전 요약)가 있는 경우, 이미 일부 주목이 이루어졌음을 기억하세요. 그들의 결론이 아니라 그 안에 있는 사람들을 인용하고, 그들을 연결하는 것을 찾으세요.

개인정보 보호

공유 보드의 모든 것은 방에 있는 모든 사람이 볼 수 있는 소스에서 와야 합니다. 개인적인 반성, 개인 노트 및 개인으로 태그된 모든 것은 관련이 있더라도 공유 보드에서 제외됩니다. 요약된 노트(보고서, 요약)는 종종 말한 내용과 작성자의 개인적인 해석을 혼합합니다. 공유 가능한 부분은 말한 부분뿐입니다. 대신 요점을 열린 질문으로 표현하거나 생략하세요. 여기에는 카드가 전달하는 미리보기도 포함됩니다(아래): 소스의 약 200단어가 카드와 함께 보드에 올라갑니다.

2. 계획 작성

계획 JSON을 수동으로 파일이나 stdin에 작성하고 한 번에 넣으세요: 그룹, 카드 및 배치를 함께 넣으세요. 생성기 스크립트를 만들지 말고, 유효성 검사기를 작성하지 마세요. 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": "3월 4일" },
      "place": { "in": "g1" }, "why": "Kim의 빈 상태 질문과 같은 혼란" },
    { "id": "kim", "kind": "quote", "title": "Kim이 두 번 물었습니다", "body": "내가 먼저 뭘 해야 하는 거야?",
      "source": { "author": "Kim", "date": "3월 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로 카드나 그룹을 지정합니다(겹치거나 너무 가까운 그룹, 잘못된 그룹에 있는 것으로 읽히는 카드, 서로를 덮는 카드, 세 줄 이상으로 줄바꿈되는 제목, 브라우저가 잘린 것으로 보고한 텍스트). 계획을 수정하고 다시 넣으세요. wallflower view는 마지막에 같은 문제를 나열합니다. 사람들이 만든 겹침은 그들의 것이며 절대 보고되지 않습니다. 레이아웃을 확인하기 위해 보드를 스크린샷하지 마세요.

배치

place사용처
{ "in": "g1" }함께 속하는 자료(그룹이 커짐)
{ "near": "c1", "side": "right", "overlap": true }두 카드를 하나로 읽게 함: 불일치, 이탈, 사람들 간의 반복
{ "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명의 사람으로부터"로 렌더링됩니다. 하나 또는 두 개의 목소리에 의존하는 패턴은 얇아 보여야 합니다. 방에 있는 모든 사람이 열 수 있는 경우에만 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. 리허설을 위한 공간을 만듭니다. 보통 방이 상황을 이해한 후에.

종종 올바른 노트는 없습니다. 잘 배치된 두 개의 카드가 이미 작업 1을 수행합니다. 실제 정보(대기 중인 것, 누가 누구에게 빚진 것)가 있는 상태 노트는 괜찮습니다. 보드를 설명하는 노트는 괜찮지 않습니다.

질문은 작업 2 또는 4를 수행하는 하나 또는 두 개의 노트를 위한 것입니다. 2인칭 질문 제목의 벽은 방의 질문을 대신하며 기계가 작성한 것처럼 읽힙니다. 그것이 대체하는 자기 정당화 텍스트와 마찬가지입니다. 제목은 요지로 유지됩니다.

의미에서 멈추세요. 그룹 이름을 지정하지 말고, "이것은 ...를 보여줍니다", "핵심 통찰력", 또는 "여기서 테마는 ...입니다"라고 쓰지 말고, 두 카드가 왜 함께 있는지 설명하지 마세요. 배치가 주장을 하며, 누군가는 카드를 이동하여 배치에 이의를 제기할 수 있습니다. 모든 카드에 대해 회피하지 마세요. 주의 사항은 그것이 변경하는 하나의 카드에 속합니다.

대신작성
제목 "가격 노트, 7월 23일", 본문: 280자 발췌문요지 "공유 링크가 머무르지 않는 방문자를 가져옴", 갈고리 "그들은 한 번 읽고 떠남"
제목 "김, 지원 전화", 본문: 내보내기에 대한 완전한 문장요지 "김은 모든 것을 스프레드시트로 내보냄", 갈고리 "그냥 원해요 ..."

3. 배치 및 반복

계획을 넣으세요. 레이아웃을 텍스트로 검사하세요:

wallflower put plan.json
# ... 레이아웃 맵 ...
# layout check: no overlaps, every card in its group, no cut-off text

문제가 있으면 계획을 수정하고 다시 넣으세요. 완료되면 URL을 제공하세요:

wallflower url --name "Rosa"
https://board.byenzyme.com/?board=abc123&name=Rosa

링크를 사람들에게 전달하세요. 사람들이 보드를 작업하는 동안 기다렸다가 패스를 읽으세요:

wallflower wait --timeout 600
# Round 1 ...
# wallflower diff

wallflower wait는 누군가 보드 준비에 만족한다고 말할 때까지 기다린 후 새 라운드를 위해 차단을 해제합니다. --timeout 이후에는 빈 상태로 반환되며, 보드가 방치되었다고 가정하고 계속 진행할 수 있습니다. 라운드는 누군가가 당신이 방금 배치한 자료를 보고, 주의를 기울이고, 자신의 판단을 스티키로 추가한 다음 "다음 패스"를 누를 때마다 증가합니다. 각 패스 후에 wallflower diff를 실행하세요. 이는 사람들이 한 모든 변경 사항(배치, 추가, 삭제, 당신의 카드 수정)을 보여줍니다. wallflower view는 최종 보드를 보여줍니다. wallflower wait는 라운드 번호를 한 줄에 출력합니다(Round 3). 그런 다음 wallflower diff의 출력을 읽으세요. 변경 사항은 사람들이 만든 모든 것입니다. wallflower diff는 어떤 변경 사항이 사람들에 의한 것인지 보여줍니다. 당신은 방금 전 패스에서 아무것도 변경하지 않았기 때문입니다. 변경 사항을 별도로 검토하여 그들이 한 일이 아니라 그들의 판단을 분리하세요.

피드백 읽기

당신이 한 준비와 방이 한 일 사이를 분리하세요. wallflower diff는 사람들이 보드에서 변경한 모든 것을 보여줍니다. 그들의 판단은 그들이 변경한 것에 있습니다:

  • 스티키는 그들이 가치 있다고 생각하는 것(또는 놓친 것)입니다.
  • 이동된 카드는 그들이 연결 해제하거나 다시 그룹화한 것입니다.
  • 수정된 카드는 그들이 다시 작성한 것입니다.

패턴을 찾으세요: 여러 사람이 같은 것을 스티키로 추가했습니까? 모두가 한 카드를 무시했습니까? 누군가 당신의 배치를 해체했습니까? 이것이 그들의 판단입니다.

당신의 준비와 그들의 판단 사이에 차이가 있을 때, 당신의 추론을 확인하세요. 그들이 당신이 놓친 것을 발견했습니까? 아니면 당신이 너무 많이 준비했습니까? 다음 번에 조정하세요.

명령어 참조

명령어용도
wallflower new "Title"새 보드 생성
wallflower put plan.json카드 및 그룹 추가/업데이트
wallflower view보드 보기
wallflower diff변경 사항 보기
wallflower wait다음 패스 기다리기
wallflower url보드 링크 가져오기
wallflower delete보드 삭제

관련 스킬