CtrlK
BlogDocsLog inGet started
Tessl Logo

deepgram-python-voice-agent

Use when writing or reviewing Python code in this repo that builds an interactive voice agent via `agent.deepgram.com/v1/agent/converse`. Covers `client.agent.v1.connect()`, `AgentV1Settings`, `send_settings`, `send_media`, event handling, and function/tool calling. Full-duplex STT + LLM + TTS with barge-in. Use `deepgram-python-text-to-speech` for one-way synthesis, `deepgram-python-speech-to-text` / `deepgram-python-conversational-stt` for transcription only. Triggers include "voice agent", "agent converse", "full duplex", "interactive assistant", "barge-in", "agent.v1", "function calling", "AgentV1Settings".

72

Quality

87%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide

SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

Quality

Content

75%Weight 40%Scale 1-5

Reviews the quality of instructions and guidance provided to agents. Good implementation is clear, handles edge cases, and produces reliable results.

A strong, dense, highly actionable body: executable code throughout, genuine lifecycle/recovery guidance with feedback loops, and a clear layered reference structure. The main deductions are minor — a missing function-call-response example, some restated gotchas, one implicit audio-after-settings checkpoint, and an unverifiable `reference.md` pointer with no bundle files present.

Suggestions

Add a short, concrete code example for replying to `FunctionCallRequest` (the function-call response message shape), since function calling is a headline capability but only appears as a list item and an undefined `handle_tool_call(m)` placeholder.

Deduplicate the keepalive and base-URL guidance — Gotchas 5 and 2 restate the Authentication and Stream lifecycle sections; consolidate them into one place each.

In the quick start, make the audio-gating checkpoint explicit (e.g. 'start `send_media` only after the `SettingsApplied` event') rather than leaving it implicit in Gotcha 3.

DimensionReasoningScore

Conciseness

Nearly every line is product-specific and it assumes competence (no explaining what WebSockets or TTS are), but there is measurable redundancy: the keepalive rule appears in both "Client messages"/"Stream lifecycle" and Gotcha 5, the base-URL gotcha restates the Authentication section, and "When to use this product" duplicates the frontmatter routing. Not the 5 anchor because a tightening pass could remove several lines without losing information.

4 / 5

Actionability

The quick start, mid-session updates, and reconnect sections are copy-paste ready with real imports and tagged-union types. Falls short of 5 on two gaps: there is no code example for sending a function-call response even though "Function call response (reply to `FunctionCallRequest`)" is a listed client message and function calling is a headline capability, and `mic_chunks()` / `handle_tool_call(m)` are undefined placeholders.

4 / 5

Workflow Clarity

The connect → send_settings → handlers → send_media → start_listening sequence is explicit with the "MUST be first message" checkpoint, and the lifecycle section has real feedback loops (CLOSE handler triggers reconnect, ERROR payload inspection, "retry after `AgentAudioDone`" on InjectionRefused, keepalive exception exits to reconnect). Not 5: the quick start never says to wait for `SettingsApplied` before streaming audio (only Gotcha 3's "no audio before settings are applied" implies it), so one checkpoint is implicit rather than explicit.

4 / 5

Progressive Disclosure

Well-organized sections with a clearly signaled, one-level-deep, prioritized reference list (in-repo reference → AsyncAPI → Context7 → product docs). Not 5: no bundle files exist in the skill directory, the referenced `reference.md` is not present alongside SKILL.md (unverifiable pointer), and reference-like material (full event-type and client-message lists, the 8-item gotchas) is inlined in a ~300-line body that is at the upper limit of what belongs in SKILL.md.

4 / 5

Total

16

/

20

Passed

Description

100%Weight 40%Scale 1-5

Based on the skill's description, can an agent find and select it at the right time? Clear, specific descriptions lead to better discovery.

An exemplary description: concrete API-level capabilities, an explicit 'Use when' clause, a rich set of natural trigger terms with synonyms, and explicit routing to sibling skills to prevent mis-triggering. No fluff, appropriate voice, every clause earns its place.

DimensionReasoningScore

Specificity

Names multiple concrete capabilities — "Covers `client.agent.v1.connect()`, `AgentV1Settings`, `send_settings`, `send_media`, event handling, and function/tool calling" plus "Full-duplex STT + LLM + TTS with barge-in" — comprehensive and API-level specific, matching the 5 anchor; nothing is vague or padded.

5 / 5

Completeness

Explicitly answers both: what it does ("Covers ... connect(), AgentV1Settings, ... event handling, and function/tool calling") and when to use it ("Use when writing or reviewing Python code in this repo that builds an interactive voice agent"), with concrete trigger phrases — the 5 anchor verbatim in structure.

5 / 5

Trigger Term Quality

"Triggers include \"voice agent\", \"agent converse\", \"full duplex\", \"interactive assistant\", \"barge-in\", \"agent.v1\", \"function calling\", \"AgentV1Settings\"" — natural user phrasings plus synonyms and the technical identifier, comprehensive coverage.

5 / 5

Distinctiveness Conflict Risk

Carves a clear niche (interactive full-duplex voice agent) and actively routes away sibling skills ("Use `deepgram-python-text-to-speech` for one-way synthesis, `deepgram-python-speech-to-text` / `deepgram-python-conversational-stt` for transcription only"), giving minimal conflict risk.

5 / 5

Total

20

/

20

Passed

Validation

100%

Checks the skill against the spec for correct structure and formatting. All validation checks must pass before discovery and implementation can be scored.

Validation — 16 / 16 Passed

Validation for skill structure

No warnings or errors.

Repository
deepgram/deepgram-python-sdk
Reviewed

Table of Contents

Is this your skill?

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.