Kokoro-FastAPI is a Dockerized FastAPI service that turns text into speech using the Kokoro-82M model through an OpenAI-compatible API. It is used by developers and self-hosters who need multilingual, multi-speaker speech generation, captions, phonemes, or an optional web interface.
Borrowing it
Nothing to install: this file belongs to remsky/Kokoro-FastAPI. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/remsky/Kokoro-FastAPI/master/.claude/skills/web-contrib/SKILL.mdgit clone --depth 1 https://github.com/remsky/Kokoro-FastAPIWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/remsky/kokoro-fastapi/web-contrib)<a href="https://agentmods.dev/skills/remsky/kokoro-fastapi/web-contrib"><img src="https://agentmods.dev/badge/skills/remsky/kokoro-fastapi/web-contrib/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/remsky/kokoro-fastapi/web-contrib"><img src="https://agentmods.dev/badge/skills/remsky/kokoro-fastapi/web-contrib.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00041 | $0.00798 |
| Opus 5.5 | $0.00016 | $0.00319 |
| Sonnet 5.5 | $0.00008 | $0.00160 |
| Haiku 4.5 | $0.00004 | $0.00080 |
Grade A, and why
web-contrib scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 33 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Read AGENTS.md and CONTRIBUTING.md first, house rules live there.
Web player contributions
Constraints
- Vanilla JS modules, no framework, no build step. Files under
web/src/are served as-is by the API (/web). web/src/services/AudioService.jspicks the playback path and owns the file-source swap.services/audio/MsePipeline.jsis the bounded MSE (audio/mpeg) state machine,services/audio/BlockLoader.jsthe blob fallback where MSE mp3 is unsupported (Firefox). Any playback change must keep both paths working.- Long-session behavior matters: the bounded buffer exists because unbounded MSE appends crashed ~10 min in. Don't reintroduce unbounded growth.
- A finished MSE stream swaps to the full server-side file so scrubbing and true duration work (
canSwapToFileSource/swapToFileSource). Swaps only fire at existing discontinuities: end of playback, pause, seek, and read-along activation when no duration is known yet (ReadAlong.js). Don't trigger one mid-playback.
Standard patterns
- Popup menus (
role="menu") get full keyboard support: ArrowUp/Down walk items with wrap, Escape closes and restores focus to the trigger,focusoutcloses when focus leaves, first item focused when opened via keyboard. Reference implementations: markup inweb/index.html(#cast-menuis apopover="manual",#download-menuishidden-toggled), handlers inVoiceSelector.jsandApp.js. New menus copy that shape. - File downloads go through
App.triggerDownload(url, name), don't hand-roll anchor clicks. - Outside-click dismissal uses
closeOnOutsidePressfromdismiss.js. - Fire-and-forget promises still need a
.catchthat surfaces viashowStatus. - Settings checkboxes copy
.autoplay-toggle(player.css, plus its mobile media-query override): no:hoversplit, no per-controlaccent-color,:rootin base.css sets it. - Services take request values as arguments (
buildRequestBody(..., responseFormat)). Read a control once in the caller, don't re-query it inside the service.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago Changed · +1 lines 3b3f1b4a8ff1
- 1mo ago Changed · +2 lines ca1f673f280d
- 1mo ago Changed · +2 lines f67e413268a1
- 2mo ago First seen · 28 lines · 41 tokens per session scan A 040a866de5fe
web-contrib is a skill published in the GitHub repository remsky/Kokoro-FastAPI (5,614 stars, last pushed today), licensed Apache-2.0. It adds 41 tokens to every session and 798 once invoked, about $0.0002 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
test-writer
Generate comprehensive tests including unit, integration, and property-based tests.
react-testing
Frontend testing standards using Vitest, React Testing Library, and Playwright. Use when writing UI tests.
test-generation
Generate a test strategy and starter test stubs for given modules across unit, integration, and e2e layers (pytest/jest/playwright). Trigger on: generate tests, test plan, test strategy, coverage plan, test scaffolding.
test-master
Generates test files, creates mocking strategies, analyzes code coverage, designs test architectures, and produces test plans and defect reports across functional, performance, and security testing disciplines. Use when writing unit tests, integration tests, or E2E tests; creating test strategies or automation…
axiom-testing
Use when writing ANY test, debugging flaky tests, making tests faster, or choosing Swift Testing vs XCTest. Covers unit tests, UI tests, async testing, test architecture.
designing-tests
Designs and implements testing strategies for any codebase. Use when adding tests, improving coverage, setting up testing infrastructure, debugging test failures, or when asked about unit tests, integration tests, or E2E testing.