CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

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".

68

Quality

85%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Passed

No findings from the security scan

SKILL.md
Quality
Evals
Security

Quality

Content

71%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 well-structured, highly actionable code skill: executable examples with real SDK types, clear sequencing, explicit lifecycle/error-recovery guidance, and no filler. Its main weaknesses are inlined reference-grade bulk in a single long file with a dangling 'reference.md' pointer, plus placeholder functions and a missing FunctionCallRequest-response example.

Suggestions

Move the event-type catalog, the seven dynamic control-message examples, and the reconnect/context flow into a references/ file (e.g. references/control-messages.md, references/lifecycle.md) and link them from SKILL.md; also verify 'reference.md' actually exists in the bundle or correct its path.

Add a short code example for responding to 'FunctionCallRequest' — the quick start delegates to an undefined 'handle_tool_call(m)' even though function calling is a headline capability.

Gate audio sending on the 'SettingsApplied' event (per Gotcha 3) and de-duplicate the keepalive guidance, which currently appears in three separate sections.

DimensionReasoningScore

Conciseness

The body is dense and SDK-specific with essentially no explanation of concepts Claude already knows, but keepalive guidance is repeated across 'Client messages', 'Dynamic mid-session adjustment' (#6), and 'Stream lifecycle', and the seven-item control-message section carries rationale comments that could be trimmed — minor instances that could be trimmed, so anchor 4 rather than 5.

4 / 5

Actionability

Code is real and executable with concrete type imports (quick start, control messages, keepalive loop, reconnect with context rebuild), but the quick start calls undefined placeholders 'handle_tool_call(m)' and 'mic_chunks()', and no example shows how to reply to a 'FunctionCallRequest' — a common case the description advertises.

4 / 5

Workflow Clarity

Sequences are clear ('send_settings(settings) # MUST be first message after connect', lifecycle pause/resume/reconnect with 'Catch it and trigger your reconnect logic' and 'retry after AgentAudioDone'), with the Gotchas acting as guardrails. Minor validation gaps: the code never gates send_media on 'SettingsApplied', and tool-call response timing is described but not demonstrated.

4 / 5

Progressive Disclosure

The single ~305-line file inlines reference-style bulk — the event-type catalog, all seven control-message examples, and the reconnect/context flow — that belongs in separate reference files, and the one named in-repo reference ('reference.md' under 'API reference (layered)') does not exist in the bundle; good section structure but content that should be separate is inline, so anchor 3.

3 / 5

Total

15

/

20

Passed

Description

92%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.

A strong description: explicit 'Use when...' trigger clause, concrete API-level capabilities, natural trigger terms, and explicit routing to sibling skills to avoid conflicts. The only weakness is trigger coverage that leans slightly technical, missing a couple of natural user phrasings.

DimensionReasoningScore

Specificity

Lists multiple specific concrete actions — 'client.agent.v1.connect()', 'AgentV1Settings', 'send_settings', 'send_media', event handling, function/tool calling, 'Full-duplex STT + LLM + TTS with barge-in' — comprehensively covering the skill's surface with no notable gaps.

5 / 5

Completeness

Explicitly answers both: 'Use when writing or reviewing Python code in this repo that builds an interactive voice agent via agent.deepgram.com/v1/agent/converse' (when) and a full enumeration of covered APIs plus explicit trigger phrases (what). Also adds sibling-skill routing.

5 / 5

Trigger Term Quality

'Triggers include "voice agent", "agent converse", "full duplex", "interactive assistant", "barge-in", "agent.v1", "function calling", "AgentV1Settings"' gives good natural coverage with synonyms, but misses common variations like 'voice assistant' or 'speech-to-speech' and includes technical identifiers ('AgentV1Settings') users would not naturally say.

4 / 5

Distinctiveness Conflict Risk

Clear full-duplex voice-agent niche, and it explicitly disambiguates from adjacent skills ('Use deepgram-python-text-to-speech for one-way synthesis, deepgram-python-speech-to-text / deepgram-python-conversational-stt for transcription only'), minimizing wrong-skill triggers.

5 / 5

Total

19

/

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

Path

.agents/skills/deepgram-python-voice-agent/SKILL.md

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.