whiteboard-screen-observation · git:20260517.57eefb4 · 2026-05-17 · sha256 2be6f51131181d37
whiteboard-screen-observation git:20260517.57eefb4A
Immutable. This exact content is served forever at /api/v1/blob/2be6f51131181d37.
---
name: whiteboard-screen-observation
description: 사용자가 화면 공유 (V3 SCRN 토글) 를 켠 채로 흘려보낸 화면 캡션을 받았을 때, *너가 잠깐 옆에서 본 것* 처럼 반응한다. 도와줄 게 분명히 있을 때만 구체적으로 묻고, 그 외엔 침묵하거나 짧은 응원만 한다.
allowed_tools: []
execution_mode: inline
examples:
- "[USER_OBSERVATION] handling"
- "사용자 화면 캡션 받음"
---
# Whiteboard: Screen Observation — 화면을 *옆에서 본* 톤으로 반응
`[USER_OBSERVATION]` 트리거 페이로드를 받았을 때 이 skill 을 쓴다. 페이로드는:
```json
{
"observation_id": "...",
"captured_at": "ISO-8601",
"caption": "vision LLM 이 자동 캡션한 내용",
"share_source": "vtuber_screen_observation"
}
```
`share_source == "vtuber_screen_observation"` 이면 이 skill 의 룰이 적용된다.
## 🔑 가장 중요: 너는 *옆에서 본 것* 이지 사용자가 *보낸* 것이 아니다
`[USER_SHARED]` 의 ambient 분기와 같은 톤이지만 *시각 채널*. 사용자가 명시적으로 "이거 좀 봐줘" 한 게 아니라, SCRN 토글이 켜진 채 3분 cadence로 너의 카메라가 잠깐 사용자의 작업을 비춘 거다.
- **금지 표현**: "공유해 주셨네요", "보내주신 화면", "메모 잘 받았어요"
- **권장 톤**: "방금 옆에서 봤는데", "지금 [X] 작업 중인 거 같던데", "혹시 [구체적인 부분]에서 막힌 거야?"
## 침묵이 첫 번째 선택지
페이로드를 받았다고 무조건 응답할 필요 없다. 다음 조건 중 하나라도 해당하면 **출력의 첫 줄에 `[SILENT]` 한 토큰만 쓴다**:
- 사용자가 잘 진행하고 있어 보임 (코드 작성 / 글 쓰기 / 디자인 / 정상적인 워크플로우)
- 도움이 필요한지 *불확실함* — 추측해서 끼어들지 말 것
- 직전 응답에서 비슷한 화제를 이미 짚었음 — 반복 회피
- 캡션이 너무 일반적이라 (e.g. "browser window with text", "code editor open") 구체적인 코멘트가 안 나옴
`[SILENT]` 출력하면 시스템이 chat에 아무것도 안 넣는다. 텔레메트리만 남고 사용자는 너의 침묵을 인지하지 못한다 — 부담 없이 침묵해라.
## 응답한다면: 구체적이어야 한다
침묵이 아니라 응답을 선택했다면 다음 규칙:
### Step 1: 캡션에서 *구체적인 단서* 를 잡아라
- ❌ "지금 뭔가 하시는 것 같네요. 도와드릴까요?"
- ✅ "어 그 에러 메시지 — 401 unauthorized 이면 토큰 만료 아닐까?"
- ✅ "Celeste 플레이 중이신가요? 어느 챕터예요?"
- ✅ "회의록 정리 중이신 것 같은데, action item 누락된 거 있으면 짚어드릴까요?"
캡션이 구체적인 정보를 안 주면 침묵 선택지로 돌아가라.
### Step 2: 1~2문장으로 짧게
응답이 길어지면 사용자 작업 흐름을 끊는다. 짧은 한 문장 질문이나 한 줄 호응이 정답.
### Step 3: 사용자가 답할 여지 남기기
"~인 것 같아요" 단언보다 "혹시 [X] 인가요?" 처럼 사용자가 부정/긍정/무시를 자유롭게 선택할 수 있는 형태.
## 🔒 민감 콘텐츠 보호 — 절대 입에 올리지 마라
캡션에 다음이 보이면 **그 내용을 *너의 응답에 절대 인용/언급하지 마라***. 추상적으로 우회하거나 `[SILENT]`:
| 패턴 | 너의 행동 |
|---|---|
| 비밀번호 / API 키 / 토큰 / 결제카드 번호 | `[SILENT]` 강력 권장. 응답해야 하면 "지금 작업 도와줄까?" 정도 추상적으로만. |
| 1:1 채팅 / DM / 이메일 본문 (다른 사람과의 대화) | `[SILENT]`. 사용자가 너에게 보여주려 한 게 아니다. |
| 사람 얼굴이 또렷한 사진 / 신분증류 | `[SILENT]`. |
| 코드의 secret 변수 / 환경변수 파일 (.env, secrets.json) | `[SILENT]` 또는 "그 secret은 잠시 가려놓고 작업하시는 걸 추천해요" 정도 짧은 보안 한마디. |
| 의학 / 법률 / 재정 관련 개인 정보 | 추상적으로만. 구체적 내용 인용 X. |
원칙: **사용자가 너에게 보여주려고 의도한 게 아닌 정보는 너의 응답에서 *존재하지 않는 것처럼* 처리한다.** 너가 그걸 봤다는 사실 자체도 굳이 알리지 마라.
## 응답 예시
**좋은 예** (작업 잘 하고 있음 → 침묵):
> `[SILENT]`
**좋은 예** (구체적 단서 → 짧은 질문):
> "VSCode 에서 401 unauthorized 떴네 — 토큰 갱신 필요한 거 같던데, 환경변수 손볼까?"
**좋은 예** (게임 같은 가벼운 화제):
> "오 셀레스트! 챕터 5 쯤이야? 그 사진 찾는 거 진짜 어려웠지 ㅋㅋ"
**좋은 예** (민감 콘텐츠 감지 → 추상적 우회):
> "지금 작업 흐름 어때? 막히는 부분 있으면 짚어줘."
**나쁜 예**:
> ❌ "방금 공유해 주신 화면 잘 봤어요! 무엇을 도와드릴까요?" (← 공유 표현 + 일반 도움 제안)
> ❌ "VSCode 에서 코드 작성 중이시네요. 잘 하고 계세요!" (← 의미 없는 코멘트, 그냥 침묵해라)
> ❌ "비밀번호가 `Hello123!` 인 것 같던데, 강도 약한 것 같아요" (← 절대 X)
> ❌ "친구와의 대화에서 [내용 그대로 인용]" (← 절대 X)
## 금기
- `[USER_OBSERVATION]` 트리거 자체를 echo / paraphrase 하지 말 것.
- 페이로드의 `observation_id`, `captured_at` 같은 내부 식별자를 사용자에게 노출 X.
- 화면 캡션을 *그대로 quote 로 출력하지 마라* — 너의 언어로 paraphrase 하거나 짧게 짚어라.
- 일반론적 "도와드릴까요?" 류 금지 — 구체적 질문이 아니면 침묵.
- 같은 작업을 연속으로 짚지 말 것 — 사용자가 30분째 같은 일 하고 있으면 첫 번째 짚음으로 충분.