Azure AI Voice Live SDK for JavaScript/TypeScript. Build real-time voice AI applications with bidirectional WebSocket communication.
49
37%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Passed
No known issues
Optimize this skill with Tessl
npx tessl skill review --optimize ./skills/azure-ai-voicelive-ts/SKILL.mdQuality
Discovery
32%Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.
The description identifies a specific SDK and technology stack but reads more like a tagline than a skill description. It lacks concrete actions (e.g., setting up connections, streaming audio, handling events) and entirely omits explicit trigger guidance ('Use when...'), making it difficult for Claude to reliably select this skill from a large pool.
Suggestions
Add an explicit 'Use when...' clause, e.g., 'Use when the user asks about Azure AI Voice Live SDK, real-time voice applications, speech-to-text streaming, or bidirectional audio WebSocket connections in JavaScript/TypeScript.'
List specific concrete actions the skill covers, such as 'Initialize WebSocket connections, stream audio input/output, handle voice events, configure voice models, manage session lifecycle.'
Include natural trigger terms users might say, like 'voice chat', 'speech recognition', 'audio streaming', 'Azure speech', 'real-time transcription', or 'text-to-speech'.
| Dimension | Reasoning | Score |
|---|---|---|
Specificity | Names the domain (Azure AI Voice Live SDK) and mentions a key action ('Build real-time voice AI applications with bidirectional WebSocket communication'), but doesn't list multiple concrete actions like 'stream audio', 'transcribe speech', 'synthesize voice responses', etc. | 2 / 3 |
Completeness | Describes what the skill is about (Azure AI Voice Live SDK for building voice AI apps) but completely lacks a 'Use when...' clause or any explicit trigger guidance for when Claude should select this skill. Per rubric guidelines, missing 'Use when' caps completeness at 2, and the 'what' is also only partially described, warranting a 1. | 1 / 3 |
Trigger Term Quality | Includes some relevant keywords like 'Azure', 'voice', 'real-time', 'WebSocket', 'JavaScript', 'TypeScript', but misses common user variations like 'speech-to-text', 'text-to-speech', 'audio streaming', 'voice chat', 'conversational AI', or 'Azure Cognitive Services'. | 2 / 3 |
Distinctiveness Conflict Risk | The mention of 'Azure AI Voice Live SDK' is fairly specific and distinctive, but 'real-time voice AI applications' and 'WebSocket communication' could overlap with other voice/audio or WebSocket-related skills. The SDK name helps but the description isn't precise enough to fully prevent conflicts. | 2 / 3 |
Total | 7 / 12 Passed |
Implementation
42%Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.
The skill provides highly actionable, executable TypeScript code examples covering all major SDK features, which is its primary strength. However, it is severely bloated with duplicated patterns (function calling shown twice, session config repeated), inline reference tables, and exhaustive event handler listings that should be in separate files. The lack of validation checkpoints for WebSocket lifecycle management and the monolithic structure significantly reduce its effectiveness as a skill document.
Suggestions
Extract reference tables (voice options, models, audio formats, key types) and the exhaustive event handler listing into separate files (e.g., REFERENCE.md, EVENTS.md) and link to them from the main skill.
Remove the duplicated function calling example — keep only one complete version and reference it from the session configuration section.
Add explicit validation checkpoints: verify session connection before sending audio, check session.updateSession() success, and include a reconnection pattern for dropped WebSocket connections.
Remove the generic 'When to Use' and 'Limitations' boilerplate sections that add no SDK-specific value.
| Dimension | Reasoning | Score |
|---|---|---|
Conciseness | The skill is extremely verbose at ~400+ lines, with significant redundancy (function calling pattern shown twice, session configuration duplicated between Quick Start and Session Configuration sections). Tables for voice options, models, audio formats, and types are reference material that should be in separate files. The 'When to Use' and 'Limitations' sections are generic boilerplate adding no value. | 1 / 3 |
Actionability | The code examples are concrete, executable TypeScript with proper imports, realistic configurations, and complete patterns for authentication, session setup, event handling, and function calling. Copy-paste ready with specific API calls and parameter values. | 3 / 3 |
Workflow Clarity | The Quick Start shows a clear sequence (create client → start session → configure → subscribe → send audio), but there are no explicit validation checkpoints. For a WebSocket-based real-time system, there's no guidance on verifying connection success before sending audio, no reconnection strategy, and no feedback loop for handling connection drops. | 2 / 3 |
Progressive Disclosure | This is a monolithic wall of text with everything inline. Reference tables (voice options, models, audio formats, types), detailed event handler listings, and the full function calling example should be in separate referenced files. The Reference Links section at the bottom points to external resources but the skill itself doesn't split its own content appropriately. | 1 / 3 |
Total | 7 / 12 Passed |
Validation
90%Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.
Validation — 10 / 11 Passed
Validation for skill structure
| Criteria | Description | Result |
|---|---|---|
frontmatter_unknown_keys | Unknown frontmatter key(s) found; consider removing or moving to metadata | Warning |
Total | 10 / 11 Passed | |
76cbde3
Table of Contents
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.