CtrlK
BlogDocsLog inGet started
Tessl Logo

deepgram-js-voice-agent

Use when writing or reviewing JavaScript/TypeScript in this repo that builds an interactive voice agent via `agent.deepgram.com/v1/agent/converse`. Covers `client.agent.v1.createConnection()` / `connect()`, `sendSettings`, `sendMedia`, runtime updates, event handling, and function-call responses. Use `deepgram-js-text-to-speech` for one-way synthesis, `deepgram-js-speech-to-text` or `deepgram-js-conversational-stt` for transcription only, and `deepgram-js-management-api` for project/model admin rather than live agent runtime. Triggers include "voice agent", "agent converse", "full duplex", "barge-in", "function calling", and "agent.v1".

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

Passed

No findings from the security scan

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 well-structured, largely executable skill body: concrete code, a sensible layered reference hierarchy, and genuinely non-obvious gotchas. The main gaps are a dangling/ambiguous reference.md pointer (no bundle files ship with the skill), a couple of code-shaped instructions shown only in prose (KeepAlive, sendMedia), and mild duplication of the description's disambiguation in the body.

Suggestions

Resolve the `reference.md` pointer: either ship it under `references/` in the skill bundle and link it explicitly (e.g., See [references/agent-settings.md]), or clarify that it is a file in the target repo so the reference is not dangling.

Add a minimal code snippet for the KeepAlive loop and a sendMedia call in the Quick start or Gotchas section, since both are called out as important but only described in prose.

Trim the "When to use this product" section (it duplicates the description's sibling-skill routing) and shorten the "Central product skills" section to a single line to reclaim tokens.

DimensionReasoningScore

Conciseness

The body is dense and assumes competence — no space is spent explaining websockets or voice-agent concepts — but a few sections could be trimmed: "When to use this product" largely repeats the description's sibling-skill disambiguation, and the closing "Central product skills" section is partially promotional. This is the 'efficient; minor instances that could be trimmed' anchor, not the lean-every-token-earns-its-place level 5.

4 / 5

Actionability

The auth snippet and quick start (createConnection → message handler → connect → waitForOpen → sendSettings with a full payload) are copy-paste ready, and gotchas give concrete shapes like "sendFunctionCallResponse({ type: "FunctionCallResponse", id, name, content })". However, gotcha 3 describes the 5-second KeepAlive and sendMedia is listed without any accompanying code, leaving minor gaps that keep it below the fully-executable anchor.

4 / 5

Workflow Clarity

The connection sequence is made explicit both in code and in gotcha 1 ("Settings must be first... immediately after the socket opens"), with waitForOpen and Warning/Error event handling acting as implicit checkpoints. It is not a destructive or batch workflow, so no validation cap applies, but there are no explicit verification steps (e.g., confirming SettingsApplied before sending media), matching 'clear sequence with most checkpoints present; minor validation gaps'.

4 / 5

Progressive Disclosure

The skill has no bundle files at all (no references/, scripts/, or assets/ directories exist), yet the body cites an "In-repo reference: reference.md" that is not resolvable within the skill and is ambiguous about whether it is a bundle file or a repo file. The layered external references (OpenAPI/AsyncAPI URLs, product docs, repo source files) are clearly listed and one level deep, so structure is good with a minor navigation gap — the level-4 anchor rather than the clean one-level-deep level 5.

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 natural trigger-term list, and explicit disambiguation against four sibling skills. Every clause is informative with no fluff or over-claiming.

DimensionReasoningScore

Specificity

The description lists multiple concrete actions and API surfaces — "client.agent.v1.createConnection() / connect(), sendSettings, sendMedia, runtime updates, event handling, and function-call responses" — anchored to the specific endpoint "agent.deepgram.com/v1/agent/converse". Coverage is comprehensive with no generic filler, matching the top anchor rather than the 'minor gaps' level 4.

5 / 5

Completeness

Both questions are answered explicitly: what it does ("builds an interactive voice agent via agent.deepgram.com/v1/agent/converse" plus the enumerated API surface) and when to use it ("Use when writing or reviewing JavaScript/TypeScript in this repo" plus a concrete trigger list). The 'when' is explicit and specific, so the level-4 anchor ('when' could be more explicit) does not apply.

5 / 5

Trigger Term Quality

It explicitly enumerates natural trigger phrases — "voice agent", "agent converse", "full duplex", "barge-in", "function calling", and "agent.v1" — covering synonyms and both plain-language and technical phrasings a user would actually say. This matches the comprehensive-coverage anchor, not the 'a few natural terms missing' level 4.

5 / 5

Distinctiveness Conflict Risk

It carves out a clear niche (live two-way agent runtime) and actively de-risks conflicts by routing sibling use cases elsewhere: "Use deepgram-js-text-to-speech for one-way synthesis, deepgram-js-speech-to-text or deepgram-js-conversational-stt for transcription only, and deepgram-js-management-api for project/model admin". Minimal conflict risk, matching the top anchor.

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