CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

deepgram-java-speech-to-text

Use when writing or reviewing Java code in this repo that calls Deepgram Speech-to-Text v1 (`/v1/listen`) for prerecorded or live transcription. Covers `client.listen().v1().media().transcribeUrl` / `transcribeFile` (REST) and `client.listen().v1().v1WebSocket()` (WebSocket). Use `deepgram-java-audio-intelligence` for analytics overlays, `deepgram-java-conversational-stt` for Flux `/v2/listen`, and `deepgram-java-voice-agent` for full-duplex assistants. Triggers include "transcribe", "speech to text", "STT", "listen v1", "nova-3", "live transcription", and "websocket transcription".

72

Quality

90%

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.

This is a strong, near-copy-paste-ready SDK skill: complete executable REST/async examples, honest gotchas with real sequencing guidance, and clearly layered external references. The main gaps are the placeholder audio-send in the WebSocket quick start, a repetitive null-guard example, and a moderate amount of API-surface enumeration inlined where a separate reference file would improve token efficiency.

Suggestions

Replace the commented placeholder in the WebSocket quick start with a minimal executable send loop (e.g., read a file in chunks and call `wsClient.sendMedia(okio.ByteString.of(chunk))`) so the live-streaming path is copy-paste ready like the REST examples.

Trim the visitor example's repeated `.getChannels().get(0).getAlternatives().orElse(Collections.emptyList())` chain by extracting it once into a local variable — the duplication costs tokens without teaching anything new.

Move the 'Key parameters / API surface' enumeration into a bundled reference file (e.g., references/api-surface.md) and keep only the most common parameters inline, keeping SKILL.md a lean overview with well-signaled one-level-deep references.

DimensionReasoningScore

Conciseness

The body is dense and SDK-specific (builder chains, visitor pattern, handler names) with essentially no explanation of concepts Claude already knows, matching 'Efficient; minor instances of over-explanation that could be trimmed'. It is not anchor 5 because the visitor example repeats the long `.getChannels().get(0).getAlternatives().orElse(...)` chain twice, and the pinned version `0.2.1` appears in two build snippets — time-sensitive detail that the guidelines penalize outside a deprecated/old-patterns section.

4 / 5

Actionability

The REST URL, file-bytes, async, and client-builder examples are copy-paste ready with real imports and a working sample URL, and the parameter lists are concrete. It falls short of anchor 5's 'specific examples cover the common cases' because the WebSocket quick start leaves the core streaming action as a placeholder — "// send raw audio chunks here // wsClient.sendMedia(okio.ByteString.of(audioChunk));" — so the most common live use case is not fully executable as written.

4 / 5

Workflow Clarity

The Gotchas section supplies effective sequencing and checkpoints for the risky parts — "handlers should be registered before `connect(...)`", "Wait on `connect(...).get(...)` before sending audio", "Live sessions should end explicitly" — giving a clear sequence with most checkpoints present. It is not anchor 5 because there is no single consolidated step order (connect → send → finalize/close) with explicit verification of a connected/healthy session, and not anchor 3 since the checkpoints are stated explicitly rather than merely implied.

4 / 5

Progressive Disclosure

The skill ships no bundle files (no references/, scripts/, or assets/ directories), yet the body is well sectioned and its 'API reference (layered)' section signals one-level-deep sources — the in-repo `src/main/java/com/deepgram/resources/listen/v1/` checkout, canonical OpenAPI/AsyncAPI URLs, and product docs — matching 'Good structure; most content is appropriately placed; references mostly clear'. It falls short of anchor 5 because ~30 lines of parameter/API-surface enumeration are inlined in 'Key parameters / API surface' where a reference file would keep SKILL.md a leaner overview, and there are no bundled reference files despite the breadth of the surface.

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.

The description is a model example: it states what the skill covers with concrete SDK method names, when to use it with an explicit 'Use when' clause and a trigger-phrase list, and proactively disambiguates three sibling skills. It is dense but not padded — every clause is load-bearing.

DimensionReasoningScore

Specificity

Quotes like "writing or reviewing Java code in this repo that calls Deepgram Speech-to-Text v1 (`/v1/listen`) for prerecordated or live transcription" plus named API surface ("`client.listen().v1().media().transcribeUrl` / `transcribeFile` (REST) and `client.listen().v1().v1WebSocket()` (WebSocket)") list multiple concrete, comprehensive actions with no vague filler. This matches the anchor 'Lists multiple specific concrete actions; comprehensive coverage' and is clearly above the level-4 anchor, which allows minor coverage gaps — none are evident.

5 / 5

Completeness

Both halves are explicit: what — "Covers ... transcribeUrl / transcribeFile (REST) and ... v1WebSocket() (WebSocket)" — and when — "Use when writing or reviewing Java code in this repo that calls Deepgram Speech-to-Text v1" plus the concrete trigger-phrase list. This is the anchor-5 pattern ('Clearly and explicitly answers both what AND when with concrete trigger phrases'); level 4 ('when' could be more explicit) does not apply since the when-clause names the repo, language, endpoint, and trigger phrases.

5 / 5

Trigger Term Quality

The explicit list "Triggers include \"transcribe\", \"speech to text\", \"STT\", \"listen v1\", \"nova-3\", \"live transcription\", and \"websocket transcription\"" covers natural synonyms and variations users would actually say. This matches 'Comprehensive coverage of natural terms including synonyms'; the level-4 anchor ('a few natural terms missing') is not met because the only conceivable omissions (e.g., 'ASR', 'audio') are niche relative to the breadth already listed.

5 / 5

Distinctiveness Conflict Risk

The description actively fences its boundary: "Use `deepgram-java-audio-intelligence` for analytics overlays, `deepgram-java-conversational-stt` for Flux `/v2/listen`, and `deepgram-java-voice-agent` for full-duplex assistants", and pins its own scope to `/v1/listen` in Java. It occupies a clear niche with minimal conflict risk, matching anchor 5; the level-4 anchor ('minor overlap risk with closely related skills') is undercut by the explicit sibling-skill routing.

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-java-sdk

Path

.agents/skills/deepgram-java-speech-to-text/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.