Voice Wake Say TTS Responses (Native)
v0.1.0Speak responses aloud on macOS using the built-in `say` command when user input indicates Voice Wake/voice recognition (for example, messages starting with "User talked via voice recognition on <device>").
Security Scan
OpenClaw
Suspicious
medium confidencePurpose & Capability
The skill's stated purpose (speaking responses on macOS using the built-in 'say' command) aligns with the runtime instructions. However, the metadata does not declare an OS restriction or list 'say' as a required binary — a mismatch: the skill will only work on macOS with the 'say' binary present.
Instruction Scope
The SKILL.md confines actions to checking the latest message for a precise trigger phrase and running a local 'printf | say' command; it does not instruct reading unrelated files or contacting external endpoints. It does reference optional environment variables (SAY_VOICE, SAY_RATE) that are not declared in the skill metadata. The strict requirement to only check the latest message and ignore context is unusual but not inherently malicious.
Install Mechanism
Instruction-only skill with no install steps and no code files — low installation risk (nothing is written to disk).
Credentials
The skill declares no required environment variables or credentials (appropriate for a local TTS helper). It nonetheless references optional env names (SAY_VOICE, SAY_RATE) in SKILL.md that are not declared; this is an inconsistency to be corrected but not by itself suspicious.
Persistence & Privilege
always is false and there is no install-time persistence or modification of other skills or system-wide configuration. Model invocation is allowed (normal); the skill can be called autonomously, but its trigger is narrowly scoped to a user message prefix.
What to consider before installing
This skill appears to do what it says (pipe text to macOS 'say') but it has small metadata/instruction mismatches you should fix or verify before installing: (1) confirm the agent will run on macOS (the skill assumes 'say' exists) — if the agent runs in the cloud or on Linux, the command will fail or do nothing; (2) ask the skill author to declare the required binary ('say') and an OS restriction in the metadata; (3) note that SKILL.md references optional env vars (SAY_VOICE, SAY_RATE) that are not declared — confirm whether you need to set them; (4) test in a safe environment to ensure audio is played where you expect (local speaker vs remote host) and that the trigger phrase behavior is acceptable; and (5) be aware that autonomous invocation is allowed by default — while the trigger is narrow, consider whether other skills or system messages could craft messages that accidentally trigger spoken output.Like a lobster shell, security has layers — review code before you run it.
latest
Voice Wake Say
Overview
Use macOS say to read the assistant's response out loud whenever the conversation came from Voice Wake/voice recognition. Do not use the tts tool (it calls cloud providers).
When to Use say (CHECK EVERY MESSAGE INDIVIDUALLY)
IF the user message STARTS WITH: User talked via voice recognition on m3
- Step 1: Acknowledge with
sayfirst (so the user knows you heard them) - Step 2: Then perform the task
- Step 3: Optionally speak again when done if it makes sense
IF the user message does NOT start with that exact phrase
- THEN: Do NOT use
say. Text-only response only.
Critical:
- Check EACH message individually — context does NOT carry over
- The trigger phrase must be at the VERY START of the message
- For tasks that take time, acknowledge FIRST so the user knows you're working
Workflow
- Detect Voice Wake context
- Trigger ONLY when the latest user/system message STARTS WITH
User talked via voice recognition on m3 - If the message instructs "repeat prompt first", keep that behavior in the response.
- Prepare spoken text
- Use the final response text as the basis.
- Strip markdown/code blocks; if the response is long or code-heavy, speak a short summary and mention that details are on screen.
- Speak with
say(local macOS TTS)
printf '%s' "$SPOKEN_TEXT" | say
Optional controls (use only if set):
printf '%s' "$SPOKEN_TEXT" | say -v "$SAY_VOICE"
printf '%s' "$SPOKEN_TEXT" | say -r "$SAY_RATE"
Failure handling
- If
sayis unavailable or errors, still send the text response and note that TTS failed.
Comments
Loading comments...
