domain-skills: google voice - messaging (existing-thread sends, deterministic thread URLs) - #583
domain-skills: google voice - messaging (existing-thread sends, deterministic thread URLs)#583amarin76 wants to merge 1 commit into
Conversation
There was a problem hiding this comment.
1 issue found across 1 file
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="domain-skills/google-voice/messaging.md">
<violation number="1" location="domain-skills/google-voice/messaging.md:40">
P3: The compose-focus step tells the agent to "Click its center coordinates" but never specifies how to obtain those coordinates, and it contradicts the recipe's other steps, which drive the DOM via JS (element `.click()`, `document.activeElement`, `Input.insertText`). In an executable skill, an unscripted coordinate click is the one instruction most likely to land on the wrong element — and given the doc itself warns a second hidden textarea exists, a blind coordinate click can focus that hidden textarea (a `TEXTAREA` tag passes the `activeElement.tagName === 'TEXTAREA'` assertion), routing the later `activeElement.value === MSG` check and the send to the wrong element. Suggest specifying a mechanism (e.g., obtain the visible `textarea[aria-label='Type a message']` rect via `js()`/`getBoundingClientRect` and click through `Input.dispatchMouseEvent`, matching how the rest of the skill interacts) or drive focus the same JS way as the button step.</violation>
</file>
Reply with feedback, questions, or to request a fix.
Fix all with cubic | Re-trigger cubic
| ## Sending in an existing thread (working recipe) | ||
|
|
||
| 1. Open the thread by itemId URL (above), wait, verify header. | ||
| 2. Compose box: the VISIBLE `<textarea>` (aria-label "Type a message"). Click its |
There was a problem hiding this comment.
P3: The compose-focus step tells the agent to "Click its center coordinates" but never specifies how to obtain those coordinates, and it contradicts the recipe's other steps, which drive the DOM via JS (element .click(), document.activeElement, Input.insertText). In an executable skill, an unscripted coordinate click is the one instruction most likely to land on the wrong element — and given the doc itself warns a second hidden textarea exists, a blind coordinate click can focus that hidden textarea (a TEXTAREA tag passes the activeElement.tagName === 'TEXTAREA' assertion), routing the later activeElement.value === MSG check and the send to the wrong element. Suggest specifying a mechanism (e.g., obtain the visible textarea[aria-label='Type a message'] rect via js()/getBoundingClientRect and click through Input.dispatchMouseEvent, matching how the rest of the skill interacts) or drive focus the same JS way as the button step.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At domain-skills/google-voice/messaging.md, line 40:
<comment>The compose-focus step tells the agent to "Click its center coordinates" but never specifies how to obtain those coordinates, and it contradicts the recipe's other steps, which drive the DOM via JS (element `.click()`, `document.activeElement`, `Input.insertText`). In an executable skill, an unscripted coordinate click is the one instruction most likely to land on the wrong element — and given the doc itself warns a second hidden textarea exists, a blind coordinate click can focus that hidden textarea (a `TEXTAREA` tag passes the `activeElement.tagName === 'TEXTAREA'` assertion), routing the later `activeElement.value === MSG` check and the send to the wrong element. Suggest specifying a mechanism (e.g., obtain the visible `textarea[aria-label='Type a message']` rect via `js()`/`getBoundingClientRect` and click through `Input.dispatchMouseEvent`, matching how the rest of the skill interacts) or drive focus the same JS way as the button step.</comment>
<file context>
@@ -0,0 +1,63 @@
+## Sending in an existing thread (working recipe)
+
+1. Open the thread by itemId URL (above), wait, verify header.
+2. Compose box: the VISIBLE `<textarea>` (aria-label "Type a message"). Click its
+ center coordinates to focus, confirm `document.activeElement.tagName === 'TEXTAREA'`.
+3. `cdp("Input.insertText", text=MSG)` into the focused box. Then verify
</file context>
…-recipient stays blocked, itemId thread URL) Verified live 2026-08-05 with a real approved send. Key facts: send button enables for any thread with prior history, so only new-recipient compose is non-automatable; thread URLs are deterministic (itemId = t. + E164) so no virtualized-list scroll hunt is needed when the number is known; compose via visible textarea + Input.insertText with exact value check, send via aria-label button click, verify by screenshot. Documents the hidden second textarea trap and the two-pane innerText trap. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
8bdfe23 to
48b000c
Compare
Adds a Google Voice messaging domain skill, verified live 2026-08-05 with a real send.
What it documents:
🤖 Generated with Claude Code
Summary by cubic
Documents reading threads and sending in existing Google Voice threads, with deterministic thread URLs and a reliable send flow. Confirms new-recipient compose is not automatable.
itemId=t.+ E.164) to open threads directly.Written for commit 48b000c. Summary will update on new commits.