From b76b0d9cf5050f16a087bf589f670d141ee97fff Mon Sep 17 00:00:00 2001 From: Henrik Kurelid Date: Wed, 11 Nov 2026 01:26:58 +0100 Subject: [PATCH 1/3] feat(cb-nwbe): a verifier never resizes a Chrome window holding the navigator's tabs Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01WCDKf1EmxAocjKjxtyNumG --- skills/verify-bead/SKILL.md | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/skills/verify-bead/SKILL.md b/skills/verify-bead/SKILL.md index d3064417..1025bc85 100644 --- a/skills/verify-bead/SKILL.md +++ b/skills/verify-bead/SKILL.md @@ -40,9 +40,17 @@ width), simulate it with Chrome's device emulation, the developer tools' device resizing their window. If device emulation is not possible, open a Chrome window of your own and work there, never a tab in theirs. If neither is possible, that is a blocker (*Launch*): ask the navigator, and never resize their window to get the size. When no particular size is needed, a tab -in their window is fine. Every skill or agent that -drives Chrome follows this rule, and a project's own verification skill follows it by extending -this one rather than restating it. +in their window is fine. + +**Never resize a window that holds a tab you did not open in this look.** A window counts as yours +only when you opened it as a new window and every tab in it is one you opened since; a tab you +created inside an existing window does not make that window yours. Before any resize, list the +tabs of the window you are about to resize (the integration's tab context), and if any of them is +not yours, do not resize it: open a new window of your own instead, or treat it as the blocker +above. + +Every skill or agent that drives Chrome follows this rule, and a project's own verification skill +follows it by extending this one rather than restating it. ## Launch From dd269ba37c930e18d4cccd3dca9f26ec0d2fc817 Mon Sep 17 00:00:00 2001 From: Henrik Kurelid Date: Thu, 12 Nov 2026 09:14:31 +0100 Subject: [PATCH 2/3] feat(cb-nwbe): a window is the verifier's only if tabs_context_mcp created it this look Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01WCDKeyUDGRuAGuyhpXMGZF --- skills/verify-bead/SKILL.md | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/skills/verify-bead/SKILL.md b/skills/verify-bead/SKILL.md index 1025bc85..43638ef4 100644 --- a/skills/verify-bead/SKILL.md +++ b/skills/verify-bead/SKILL.md @@ -37,17 +37,18 @@ The browser is the navigator's own Chrome on this machine, so the server you sta The navigator keeps using that Chrome while you drive it, so you never resize, move or take over the window they are in. When the look needs a particular screen size (a phone width, a desktop width), simulate it with Chrome's device emulation, the developer tools' device mode, and never by -resizing their window. If device emulation is not possible, open a Chrome window of your own and -work there, never a tab in theirs. If neither is possible, that is a blocker (*Launch*): ask the +resizing their window. If device emulation is not possible, work in a Chrome window of your own +(below), never a tab in theirs. If neither is possible, that is a blocker (*Launch*): ask the navigator, and never resize their window to get the size. When no particular size is needed, a tab in their window is fine. -**Never resize a window that holds a tab you did not open in this look.** A window counts as yours -only when you opened it as a new window and every tab in it is one you opened since; a tab you -created inside an existing window does not make that window yours. Before any resize, list the -tabs of the window you are about to resize (the integration's tab context), and if any of them is -not yours, do not resize it: open a new window of your own instead, or treat it as the blocker -above. +**A window is yours only if `tabs_context_mcp` created it during this look**, by being called with +`createIfEmpty` when no MCP tab group existed yet. That window, and only that one, you may resize +when device emulation is not possible. No other tool opens a new window: `tabs_create_mcp` adds a +tab to the existing group, wherever that group lives, and a tab you created there does not make its +window yours. `tabs_context_mcp` lists only the group's tabs, never the rest of the window, so it +cannot tell you whether the navigator's tabs sit beside yours. When the group already existed at the +start of the look, never resize: use device emulation, or treat it as the blocker above. Every skill or agent that drives Chrome follows this rule, and a project's own verification skill follows it by extending this one rather than restating it. From c33a3e7c5cbf5bf5fec41719ce8aab1f3421ef8e Mon Sep 17 00:00:00 2001 From: Henrik Kurelid Date: Thu, 12 Nov 2026 09:24:56 +0100 Subject: [PATCH 3/3] feat(cb-nwbe): check for no group before createIfEmpty, and never a bare navigate first Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01WCDKeyUDGRuAGuyhpXMGZF --- skills/verify-bead/SKILL.md | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/skills/verify-bead/SKILL.md b/skills/verify-bead/SKILL.md index 43638ef4..9841c0fc 100644 --- a/skills/verify-bead/SKILL.md +++ b/skills/verify-bead/SKILL.md @@ -42,13 +42,18 @@ resizing their window. If device emulation is not possible, work in a Chrome win navigator, and never resize their window to get the size. When no particular size is needed, a tab in their window is fine. -**A window is yours only if `tabs_context_mcp` created it during this look**, by being called with -`createIfEmpty` when no MCP tab group existed yet. That window, and only that one, you may resize -when device emulation is not possible. No other tool opens a new window: `tabs_create_mcp` adds a -tab to the existing group, wherever that group lives, and a tab you created there does not make its -window yours. `tabs_context_mcp` lists only the group's tabs, never the rest of the window, so it -cannot tell you whether the navigator's tabs sit beside yours. When the group already existed at the -start of the look, never resize: use device emulation, or treat it as the blocker above. +**A window is yours only if `tabs_context_mcp` created it during this look**, and you can know that +only by asking first. Make your first browser call `tabs_context_mcp` without `createIfEmpty`. Only +if it reports no MCP tab group, call it again with `createIfEmpty`: the window that call opens is +yours, and that window, and only that one, you may resize when device emulation is not possible. +`createIfEmpty` does nothing when a group already exists and returns its tabs just the same, so +the window of a group you did not first see missing is never yours. A bare `navigate` with no tab id makes that +same `createIfEmpty` call for you, so never make one before you have checked. No other tool opens a +new window: `tabs_create_mcp` adds a tab to the existing group, wherever that group lives, and a tab +you created there does not make its window yours. `tabs_context_mcp` lists only the group's tabs, +never the rest of the window, so it cannot tell you whether the navigator's tabs sit beside yours. +When the group already existed at the start of the look, never resize: use device emulation, or +treat it as the blocker above. Every skill or agent that drives Chrome follows this rule, and a project's own verification skill follows it by extending this one rather than restating it.