What problem does it solve? Browser voice I/O is easy to get subtly wrong: recognition APIs only exist in document contexts, speechSynthesis is undefined in MV3 service workers, and live microphone capture survives bfcache freezes unless released on pagehide. This Skill encodes those constraints so voice features work correctly the first time. ## Core Features & Use Cases - Recognition wiring: Add speech-to-text via webkitSpeechRecognition with a feature-detected fallback to the unprefixed SpeechRecognition constructor. - Synthesis wiring: Speak output with chrome.tts from an MV3 service worker or speechSynthesis from a document context, choosing the right API per context. - Lifecycle safety: Release microphone capture (recognizers and getUserMedia tracks) on pagehide so bfcache-frozen pages do not keep the mic live. - Use Case: When adding a voice-controlled feature to a Chrome extension, use this Skill to place recognition in a content script, route speaking through chrome.tts in the service worker, and pass the declared architecture checks. ## Quick Start Wire speech recognition and text-to-speech into my extension following the web-speech-io guidance.