CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

speech-recognition

Transcribe live and recorded audio with the Speech framework. Use when implementing SpeechAnalyzer (iOS 26+), SpeechTranscriber, SFSpeechRecognizer, live microphone speech-to-text, audio file transcription, on-device speech models, speech recognition permissions, or custom language models.

Quality

83%

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 well-organized, action-oriented body with executable Swift examples, sensible Modern/Legacy versioning, and a genuine one-level-deep reference file. The main weaknesses are partial duplication between the body and the reference file, a couple of undefined symbols/gaps in the code, and the lack of an explicit end-to-end sequence with error-recovery checkpoints.

Suggestions

Define the SpeechError enum (or throw a built-in error) in the legacy transcription example so the code is fully copy-paste executable, and either move the live-mic AVAudioEngine tap/conversion setup into the body or explicitly point to the reference file's Live Audio section for it.

Signal references/speechanalyzer-patterns.md at its point of use — e.g., a 'See [references/speechanalyzer-patterns.md] for streaming pipelines, presets, and finishing sessions' line in the Modern SpeechAnalyzer section — instead of only in the end References list.

Reconcile the AssetInventory guidance: the body uses AssetInventory.status/download while the reference file uses AssetInventory.assetInstallationRequest for the same purpose; keep one canonical pattern in the body and defer the other to the reference.

DimensionReasoningScore

Conciseness

The body is lean and code-heavy with no basic-concept padding, and version-sensitive info (iOS 26+ vs iOS 10+) is properly split into Modern vs Legacy sections. It falls short of 5 because the full LiveTranscriber class and the AssetInventory.status/download snippet partially duplicate the reference file's Live Audio and Preparing Assets sections (even using a different AssetInventory API), so a few tokens could be trimmed.

4 / 5

Actionability

Concrete, mostly executable Swift appears in every section (permissions continuation, LiveTranscriber class, SFSpeechURLRecognitionRequest file transcription, asset check). Minor gaps keep it below 5: `SpeechError` is thrown but never defined, and the live-microphone tap and format-conversion setup needed to drive `appendAudio(buffer:)` lives only in the reference file.

4 / 5

Workflow Clarity

Sections are logically ordered (permissions → model assets → transcription → cleanup) with explicit ordering statements ("Request speech and microphone authorization before starting recording", "Check asset installation... before recognition") and a Review Checklist serving as validation. It is below 5 because there is no single end-to-end sequenced workflow with feedback loops (e.g., what to do when authorization is denied or a preset/locale is unsupported).

4 / 5

Progressive Disclosure

Good structure: the body is a well-sectioned overview and the single bundle file (references/speechanalyzer-patterns.md) is real, one level deep, and clearly described ("SpeechAnalyzer pipelines, volatile results, and audio buffering"). Minor gaps: the reference is signaled only in the end-of-file References list rather than at its point of use in the Modern SpeechAnalyzer section, and the body's SpeechAnalyzer/asset snippets overlap topically with the reference file.

4 / 5

Total

16

/

20

Passed

Description

82%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 with an explicit 'Use when' trigger clause, third-person voice, and a well-defined Speech-framework niche. Its only weaknesses are limited action variety (just 'transcribe') and a few missing natural synonyms like 'dictation' or 'voice'.

DimensionReasoningScore

Specificity

"Transcribe live and recorded audio" names the domain with two concrete actions (live and recorded audio), matching the 3-anchor ('Names domain and 1-2 concrete actions, but not comprehensive'). It stays below 4 because the description offers only the single verb 'transcribe' rather than several distinct actions, and above 2 because the actions are concrete rather than generic.

3 / 5

Completeness

Explicitly answers both: what ("Transcribe live and recorded audio with the Speech framework") and when ("Use when implementing SpeechAnalyzer (iOS 26+), SpeechTranscriber, SFSpeechRecognizer, live microphone speech-to-text...") with concrete trigger phrases, matching the 5-anchor exactly.

5 / 5

Trigger Term Quality

Natural phrases like "live microphone speech-to-text", "audio file transcription", and "speech recognition permissions" give good keyword coverage alongside API names (SpeechAnalyzer, SFSpeechRecognizer). It falls short of 5 because common synonyms such as 'dictation', 'voice', or 'voice-to-text' are missing.

4 / 5

Distinctiveness Conflict Risk

A clear niche (Apple Speech framework transcription) with distinct triggers naming specific APIs; minimal conflict risk with other skills, matching the 5-anchor.

5 / 5

Total

17

/

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

thienqo/ios-skills

Path

skills/speech-recognition/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.