whatsappVoiceOpenSkill
Analysis
The skill mostly matches its WhatsApp voice-processing purpose, but it uses an unsafe shell command around audio file paths and includes an optional background listener, so it should be reviewed before use.
Findings (4)
Artifact-based informational review of SKILL.md, metadata, install specs, static scan signals, and capability signals. ClawScan does not execute the skill or run runtime probes.
Checks for instructions or behavior that redirect the agent, misuse tools, execute unexpected code, cascade across systems, exploit user trust, or continue outside the intended task.
async function transcribeVoiceNote(audioFilePath) { ... execSync(`python "${transcribeScript}" "${audioFilePath}"`, ...)The public transcription helper accepts an audioFilePath value and interpolates it into a shell command instead of passing arguments safely.
const parsed = parseCommand(transcript); ... const result = await executeCommand(parsed, language); ... return await handler(language);
Transcribed WhatsApp speech automatically selects and runs a matching handler. The built-in handlers are low-impact, but the pattern is intended for custom command handlers.
inboundDir: path.join(process.env.APPDATA || process.env.HOME, '.clawdbot', 'media', 'inbound'), ... checkInterval: 5000 ... setInterval(checkForNewVoices, CONFIG.checkInterval)
The listener is a disclosed, user-started daemon that continuously polls a WhatsApp media directory for new voice files.
openai-whisper>=20231117 soundfile>=0.12.1 numpy>=1.21.0
The Python dependencies are specified with lower-bound ranges, so future package versions may be installed unless the user pins or locks them.
