{
  "markdown": "<h1 align=\"center\">🔊 say-it · Pronounce</h1>\n\n<p align=\"center\"><strong>Stop saying \"kub-cuttle\". One Bash command pronounces 1,903 developer jargon names — most with a cited source.</strong></p>\n\n<p align=\"center\">\n<a href=\"https://github.com/anzy-renlab-ai/pronounce/stargazers\"><img src=\"https://img.shields.io/github/stars/anzy-renlab-ai/pronounce?style=social\" alt=\"GitHub stars\"></a>\n<a href=\"https://pronounce.renlab.ai\"><img src=\"https://img.shields.io/badge/live-pronounce.renlab.ai-7adfbb?logo=safari&logoColor=white\" alt=\"Live site\"></a>\n<a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/license-MIT-blue.svg\" alt=\"License\"></a>\n<a href=\"https://pronounce.renlab.ai/browse\"><img src=\"https://img.shields.io/badge/dictionary-1903%20entries-8fd694\" alt=\"Entries\"></a>\n<a href=\"https://marketplace.visualstudio.com/items?itemName=sayit.pronounce\"><img src=\"https://img.shields.io/badge/VS_Code_Marketplace-install-007ACC?logo=visualstudiocode\" alt=\"Install from VS Code Marketplace\"></a>\n<a href=\"https://open-vsx.org/extension/sayit/pronounce\"><img src=\"https://img.shields.io/badge/Open_VSX-install-8fd694\" alt=\"Install from Open VSX\"></a>\n<a href=\"docs/github-action.md\"><img src=\"https://img.shields.io/badge/GitHub_Action-Pronounce_Docs-2088FF?logo=githubactions&logoColor=white\" alt=\"Pronounce Docs GitHub Action\"></a>\n</p>\n\n<p align=\"center\">\n🌐 <a href=\"https://pronounce.renlab.ai\"><strong>pronounce.renlab.ai</strong></a> ·\n🇨🇳 <a href=\"https://pronounce.renlab.ai/zh\" hreflang=\"zh-Hans\">中文</a> ·\n📖 <a href=\"https://pronounce.renlab.ai/browse\">Browse</a> ·\n🎯 <a href=\"https://pronounce.renlab.ai/quiz\">Quiz</a> ·\n🎤 <a href=\"https://pronounce.renlab.ai/#hero-search\">Voice search</a> ·\n🔌 <a href=\"mcp-server/\">MCP server</a>\n · ⚙️ <a href=\"docs/github-action.md\">GitHub Action</a>\n</p>\n\n<p align=\"center\"><img src=\"https://pronounce.renlab.ai/demo.gif\" alt=\"say-it kubectl — terminal demo\" width=\"720\"></p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/anzy-renlab-ai/pronounce/releases/download/v2.5.0/promo.mp4\"><strong>▶ Watch the 47-second promo</strong> (with voice)</a> ·\n  <a href=\"https://pronounce.renlab.ai/quiz\">🎯 Try the quiz</a> ·\n  <a href=\"https://pronounce.renlab.ai/#hero-search\">🎤 Voice search</a>\n</p>\n\n---\n\n## 🚀 Try it in 30 seconds\n\n```bash\ngit clone https://github.com/anzy-renlab-ai/pronounce.git\ncd pronounce && ./install.sh\nsay-it kubectl\n```\n\n![say-it CLI demo — kubectl, YAML, TOML, Ghostty](pitch/say-it-cli-demo.gif)\n\nThat's it. Now try `say-it GIF`, `say-it nginx`, `say-it Pydantic`, `say-it --why JSON`, or `say-it quiz` for a 10-question challenge. **Linux** users: install `espeak-ng` (`sudo apt install espeak-ng`) and the CLI just works. **Windows**: same CLI under WSL or git-bash + PowerShell. Or skip install and use the browser at **[pronounce.renlab.ai](https://pronounce.renlab.ai)**.\n\n> ⭐ If `say-it kubectl` saves you one cringey standup moment — **[star the repo](https://github.com/anzy-renlab-ai/pronounce)**. It nudges more devs to contribute their favorite mispronounced project name.\n\n<p align=\"center\"><a href=\"https://star-history.com/#anzy-renlab-ai/pronounce&Date\"><img src=\"https://api.star-history.com/svg?repos=anzy-renlab-ai/pronounce&type=Date\" alt=\"Star history\" width=\"600\"></a></p>\n\n---\n\n## 🏆 The developer pronunciation scoreboard\n\n**1,903 entries — 1,283 carry a citable source** — **108 settled by the creator themselves**, **175 the community still argues about.** The famous ones:\n\n### ✅ Settled — the creator said so\n\n| Word | It's… | …not | Settled by |\n|------|-------|------|-----------|\n| **[GIF](https://pronounce.renlab.ai/word/gif)** | \"jif\" | \"ghif\" (hard-G speech cue) | Steve Wilhite (creator), NYT 2013 |\n| **[nginx](https://pronounce.renlab.ai/word/nginx)** | \"engine X\" | \"n-jinx\" | NGINX official |\n| **[YAML](https://pronounce.renlab.ai/word/yaml)** | \"yam-ul\" | \"yammel\" | yaml.org |\n| **[GNU](https://pronounce.renlab.ai/word/gnu)** | \"guh-NEW\" (hard g) | \"noo\" | GNU Project |\n| **[LaTeX](https://pronounce.renlab.ai/word/latex)** | \"lay-tek\" | \"lay-teks\" | Lamport / LaTeX project |\n| **[TOML](https://pronounce.renlab.ai/word/toml)** | rhymes with \"knoll\" | \"tom-el\" | Tom Preston-Werner (creator) |\n| **[Tcl](https://pronounce.renlab.ai/word/tcl)** | \"tickle\" | \"T-C-L\" | John Ousterhout (creator) |\n| **[awk](https://pronounce.renlab.ai/word/awk)** | \"auk\" (like the bird) | \"A-W-K\" | Aho / Weinberger / Kernighan |\n\n### ⚔️ Still contested — both readings are in active use\n\n| Word | Camp A | Camp B |\n|------|--------|--------|\n| **[kubectl](https://pronounce.renlab.ai/word/kubectl)** | \"koob-control\" | \"cube-cuddle\" |\n| **[SQL](https://pronounce.renlab.ai/word/sql)** | \"sequel\" | \"S-Q-L\" |\n| **[JSON](https://pronounce.renlab.ai/word/json)** | \"JAY-son\" | \"JEE-son\" |\n| **[GUI](https://pronounce.renlab.ai/word/gui)** | \"gooey\" | \"G-U-I\" |\n| **[JWT](https://pronounce.renlab.ai/word/jwt)** | \"jot\" (per RFC 7519) | \"J-W-T\" |\n\nEvery cell has IPA and audio; 1,283 also carry a citable source. **[Browse all 1,903 entries →](https://pronounce.renlab.ai/browse)**\n\n> Disagree with one? That's the whole point — [open a PR](CONTRIBUTING.md) with your reading and a source. The argument *is* the dataset.\n\n---\n\n## What you're actually getting\n\n- **1,903 entries — 1,283 carry a citable source.** Confidence-tagged (`creator-clarified` / `community-consensus` / `contested`), each with a citable URL where one exists (we'd rather leave it blank than fabricate one). Wilhite said GIF is \"jif\" at the 2013 Webby Awards. Crockford says JSON is \"JAY-son\" (RailsConf 2009). RFC 7519 says JWT is \"jot\". The dictionary cites them.\n- **Multi-reading audio.** For words where the debate is real — GIF, SQL, GUI, char, regex — the CLI chains the alternates after the primary with a spoken \"or:\" so you *hear* the debate without staring at the terminal. `--solo` skips the tail once you've internalized it.\n- **One Bash CLI, no npm runtime.** No sudo, no framework bootstrap, no surprises. It detects macOS `say`, Linux `espeak-ng`/`espeak`, or Windows PowerShell `System.Speech`. The repo also ships a [Claude Code skill](skills/pronounce-word/SKILL.md) and an [MCP server](mcp-server/) so your AI answers \"how do you pronounce X?\" with **audio**, not a phonetic guess.\n- **A docs-native GitHub Action.** Scan Markdown changed by a pull request and emit a sourced pronunciation glossary in the job summary — no API key, dependency install, or network request.\n- **Canonical website audio.** The site plays each committed canonical MP3 first and uses Web Speech only as a fallback if playback fails.\n\n```bash\n$ say-it --why JSON\nword              JSON\nipa               /ˈdʒeɪsən/\nrespelling_us     jay son\nconfidence        contested\nsource            Wikipedia § Pronunciation\nurl               https://en.wikipedia.org/wiki/JSON#Pronunciation\n```\n\n---\n\n## Why not just Google?\n\nBecause Google gives you 47 Reddit arguments and a YouTube clip you have to unmute. IPA gives you `/ˈkuːb kənˌtroʊl/` — a reference, not a teacher.\n\nYou don't need a phonetic transcription. You need to **hear** the word. Twice. Maybe three times. Done.\n\n`say-it` ships a community-maintained dictionary of how engineers actually say the names that trip everyone up — and feeds the *intended* respelling to your OS's text-to-speech engine, so `kubectl` comes out as `koob-control`, not whatever your computer guessed from the letters.\n\n## Famous moments\n\nSome pronunciations aren't opinions — the creators settled them. The dictionary cites every one:\n\n| Word | Reading | Source |\n|------|---------|--------|\n| `GIF` | \"jif\" (creator says so) | [Steve Wilhite, Webby Awards 2013](https://www.nytimes.com/2013/05/22/business/media/creator-of-the-gif-says-its-pronounced-jif.html) |\n| `JSON` | \"jay-son\" | [Douglas Crockford, RailsConf 2009](https://www.youtube.com/watch?v=-C-JoyNuQJs) |\n| `GNU` | \"g-noo\" (hard G, one syllable) | [GNU Project official](https://www.gnu.org/gnu/pronunciation.html) |\n| `Linux` | \"LIN-ux\" (short i, schwa) | [Linus Torvalds himself](https://www.youtube.com/watch?v=5IfHm6R5le0) |\n| `LaTeX` | \"lay-tek\" (or \"lah-tek\") | [Leslie Lamport, official](https://www.latex-project.org/about/) |\n| `Django` | \"JANG-go\" (silent D) | [Django FAQ](https://www.djangoproject.com/foundation/faq/) |\n| `Vue` | \"view\" (one syllable) | [Evan You, Vue docs](https://vuejs.org/) |\n| `Vite` | \"veet\" (French for *quick*) | [Vite docs](https://vitejs.dev/) |\n| `Knative` | \"KAY-native\" (the K is voiced) | [Knative docs](https://knative.dev/) |\n| `etcd` | \"et-cee-dee\" (et-cetera-distributed) | [etcd FAQ](https://etcd.io/docs/v3.5/faq/) |\n\nRun `say-it --why <word>` to see the citation when an entry has a `source_url`; unsourced entries are left blank rather than given a fabricated URL.\n\n## Install\n\n```bash\nbrew install anzy-renlab-ai/tap/say-it   # Homebrew on macOS\n```\n\nOr the \"Try it in 30 seconds\" block above. `./install.sh` drops:\n\n- the CLI at `~/.local/bin/say-it`,\n- the pronunciation dictionary at `~/.local/share/say-it/pronunciations.tsv`,\n- if you use [Claude Code](https://claude.com/claude-code), a `pronounce-word` skill at `~/.claude/skills/pronounce-word/` so any \"how do you say X?\" prompt to your AI gets answered with **audio** instead of IPA,\n- the same skill into `~/.agents/skills/` ([Codex CLI](integrations/codex/)) and `~/.kiro/skills/` ([Kiro](integrations/kiro/)) when those dirs exist — it's the cross-tool [Agent Skills](https://agentskills.io) standard.\n\nMake sure `~/.local/bin` is on your `$PATH`. **Linux** also works — install `espeak-ng` (`sudo apt install espeak-ng` / `brew install espeak-ng`). **Windows**: WSL or git-bash + PowerShell. Or skip install entirely with the browser version at **[pronounce.renlab.ai](https://pronounce.renlab.ai)**.\n\n## Usage\n\n```bash\nsay-it kubectl                    # primary × 3, then \"or: <alt>\" for each alternate\nsay-it --solo kubectl             # primary only — silence the \"or:\" tail\nsay-it --alt GIF                  # focus on the first alternate\nsay-it --alt 2 GUI                # focus on the Nth alternate (1-indexed)\nsay-it --all SQL                  # primary AND every alternate, each repeated\nsay-it --no-dict kubectl          # bypass the dictionary entirely\nsay-it --why JSON                 # show IPA, source URL, category, confidence\nsay-it list                       # every word in the dictionary\nsay-it search redis               # grep the dictionary (case-insensitive)\n\nsay-it -n 5 Pydantic              # 5 repetitions instead of 3\nsay-it -r 110 Knative             # slower (110 wpm; default is 130)\nsay-it -o /tmp/word.aiff Postgres # save to file instead of playing\nsay-it --list                     # all macOS voices\n```\n\nThe default macOS voice is `Samantha` (General American); `-v <voice>` selects another macOS voice. Linux and Windows use their detected backend's English voice. The dictionary is GenAm-only, by design.\n\n## Claude Code integration\n\nInstall the cross-tool Agent Skill directly with GitHub CLI:\n\n```bash\ngh skill install anzy-renlab-ai/pronounce pronounce-word\n```\n\n```\nYou:    kubectl 怎么读？\nClaude: 🔊 (plays \"koob-control\" three times)\n        /ˈkuːb kənˌtroʊl/ — \"KOOB-control\". Kelsey Hightower says it\n        this way (KubeCon talk). \"Cube-cuddle\" is an alternate —\n        try `say-it --alt kubectl` to hear it.\n```\n\nOnce installed, the `pronounce-word` skill auto-triggers on:\n\n- `X 怎么读` / `X 怎么发音` / `读一下 X`\n- `how do you pronounce X` / `pronounce X` / `how do you say X`\n\nYour AI replies with **sound**, not just a phonetic guess. Skill file: [`skills/pronounce-word/SKILL.md`](skills/pronounce-word/SKILL.md).\n\n**Not on Claude?** Same skill drops into [Codex CLI](integrations/codex/) (`codex plugin marketplace add anzy-renlab-ai/pronounce`) and [Kiro](integrations/kiro/) (`~/.kiro/skills/`), and the [MCP server](mcp-server/) covers Claude Desktop, Cursor, Continue, Zed, Cline & friends — full matrix in [`integrations/`](integrations/).\n\n[![Add to Kiro](https://kiro.dev/images/add-to-kiro.svg)](https://kiro.dev/launch/mcp/add?name=pronounce&config=%7B%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22--from%22%2C%22git%2Bhttps%3A%2F%2Fgithub.com%2Fanzy-renlab-ai%2Fpronounce.git%23subdirectory%3Dmcp-server%22%2C%22pronounce-mcp%22%5D%7D)\n\n## GitHub Action — pronunciation guides for docs\n\nAdd a pronunciation glossary to every documentation pull request:\n\n```yaml\n- uses: actions/checkout@v7.0.1\n  with:\n    fetch-depth: 0\n- id: pronounce\n  uses: anzy-renlab-ai/pronounce@v2.28.1\n```\n\n`Pronounce Docs` scans changed Markdown/MDX and writes a table containing each\nmatched term, its IPA, plain-English respelling, audio page, and creator or\nofficial source where available. It runs locally from the repository snapshot:\nno token, API key, telemetry, package install, or network request. See the\n[complete setup, inputs, and outputs](docs/github-action.md).\n\n## VS Code extension\n\n[![Install from VS Code Marketplace](https://img.shields.io/badge/VS_Code_Marketplace-install-007ACC?logo=visualstudiocode)](https://marketplace.visualstudio.com/items?itemName=sayit.pronounce) [![Install from Open VSX](https://img.shields.io/badge/Open_VSX-install-8fd694)](https://open-vsx.org/extension/sayit/pronounce)\n\n![Pronounce demo — kubectl, YAML, Ghostty, wagmi](integrations/vscode/media/demo.gif)\n\nHover over any tech word in any file — see the IPA, hear the pronunciation. Same 1,903-entry dictionary as the CLI, JSON-bundled at build (zero runtime parse cost).\n\n```bash\n# Cursor / VSCodium / Zed / Gitpod / Theia / code-server (Open VSX)\ncode --install-extension sayit.pronounce\n# or the listing: https://open-vsx.org/extension/sayit/pronounce\n```\n\n**Now live on Microsoft Marketplace too**: `ext install sayit.pronounce` in VS Code. See [marketplace listing](https://marketplace.visualstudio.com/items?itemName=sayit.pronounce).\n\n- **Hover** over `kubectl`, `YAML`, `Ghostty`, `wagmi`… → tooltip with IPA + 🔊 Play + ★ Star link.\n- **⌘⇧'** — speak selection.\n- **Status bar** `🔊 sayit` — click to speak the current selection.\n- **Welcome walkthrough** — 4-step onboarding on first install.\n- **`Pronounce: Search dictionary…`** — fuzzy-find all 1,903 entries.\n\nSource: [`integrations/vscode/`](integrations/vscode/). **Cross-platform as of v0.3** — macOS `say`, Linux `espeak-ng`, Windows PowerShell.\n\n## Chrome / Edge / Brave extension\n\nClick any tech word on any webpage → popup with IPA + audio. Same 1,903-entry dictionary. The extension speaks through Web Speech; `pronounce.renlab.ai` plays the committed MP3 corpus first and reserves Web Speech for fallback. **Sideload only for now** (not yet on Chrome Web Store).\n\nDownload [`pronounce-chrome-0.3.1.zip`](integrations/chrome/pronounce-chrome-0.3.1.zip) → unzip → `chrome://extensions/` → Developer mode → Load unpacked.\n\nSource: [`integrations/chrome/`](integrations/chrome/).\n\n## How the dictionary works\n\n`data/pronunciations.tsv` is the single source of truth — tab-separated, 1,903 entries, covering:\n\n- **Cloud / DevOps:** `kubectl`, `nginx`, `Kubernetes`, `helm`, `Istio`, `Envoy`, `Prometheus`, `Grafana`, `Terraform`, `Argo`, `Knative`, `etcd`, `containerd`, `runc`, `Podman`, ...\n- **Languages / Frameworks:** `Django`, `Vue`, `Vite`, `Pydantic`, `Bun`, `Deno`, `Hugo`, `Hono`, `Caddy`, `Svelte`, `Astro`, `Pinia`, ...\n- **Databases:** `PostgreSQL`, `Postgres`, `SQLite`, `MySQL`, `MongoDB`, `Cassandra`, `Redis`, `Ceph`, `ScyllaDB`, `ClickHouse`, `DuckDB`, ...\n- **CS jargon / acronyms:** `GIF`, `JSON`, `SQL`, `GUI`, `GNU`, `char`, `regex`, `sudo`, `tmux`, `chmod`, `WYSIWYG`, `ASCII`, `enum`, `NaN`, `SaaS`, `PaaS`, ...\n- **Distros / tools:** `Linux`, `Debian`, `Ubuntu`, `Arch`, `Nix`, `LaTeX`, `TeX`, `emacs`, `zsh`, ...\n\nEach entry has 10 columns: `word | ipa | respelling_us | alt_ipa | alt_respelling_us | source_url | source_label | category | confidence | notes`. `respelling_us` is plain English-like input passed to the detected OS TTS backend, so the intended reading is spoken instead of asking the engine to guess from the project name.\n\nLocal override: drop a `~/.config/say-it/pronunciations.local.tsv` and it takes precedence.\n\n## What works today\n\n- ✅ macOS — built-in `say`.\n- ✅ Linux — `espeak-ng` (preferred) or `espeak`.\n- ✅ Windows — PowerShell `System.Speech` from the same Bash CLI under Git Bash/MSYS2/Cygwin.\n- ✅ 1,903 entries; 1,283 carry a citable source — the rest are confidence-tagged, no fabricated citations.\n- ✅ **Audible multi-reading awareness** — contested words audibly chain alternates with \"or:\".\n- ✅ `--alt [N]`, `--all`, `--solo`, `--why`, `--json`, `--md`, `--no-dict`, `list`, `search`, `quiz`, `repl`, `stream`, `doctor`, `export`, `benchmark`, `badge`, `cheatsheet`.\n- ✅ Claude Code skill + MCP server for AI-side pronunciation questions.\n- ✅ GitHub Action — sourced pronunciation glossaries for Markdown pull requests.\n- ✅ Browser PWA — installable, offline-capable, instant search, voice-mic search, interactive quiz.\n- ✅ Editor integrations — Raycast, Alfred, VS Code, Cursor, Codex, Kiro, Continue.\n- ✅ **🌐 Live site** — [pronounce.renlab.ai](https://pronounce.renlab.ai) (1,903 entries browsable with audio; 1,283 sourced entries) + [/zh](https://pronounce.renlab.ai/zh) (Chinese landing).\n\n## What's coming\n\nSee [`DESIGN.md`](DESIGN.md) for the architecture.\n\n- **☁️ Cloud TTS** (opt-in ElevenLabs / OpenAI) for the names native TTS still mangles.\n- **📚 Anki export** for vocabulary drills.\n- **🌗 Light theme on the v2 homepage** (already shipped on word/SEO pages).\n\n## Contributing\n\nTwo things we want most:\n\n1. **Pronunciation entries.** Open a PR adding a row to `data/pronunciations.tsv`. Required columns: `word`, `ipa`, `respelling_us`. Highly preferred: `source_url` (creator interview, conf talk, official FAQ — anything verifiable). Contested readings are welcome; put the rival in `alt_*` columns and we'll wire `--alt` through.\n2. **Backend quality.** macOS (`say`) is the gold standard; the Linux (`espeak-ng`) and Windows (PowerShell) backends ship but are best-effort — help us close the gap. See `DESIGN.md` §Backends.\n\nKeep it tiny. Keep it dep-free where possible. Keep the defaults opinionated (3 reps, GenAm, Samantha voice).\n\n## ⭐ Support — start with a star\n\nThe dictionary is free and MIT. **The single highest-leverage thing you can do is star the repo** — it's the signal that pulls in more contributors, more PRs, more creator-clarified entries.\n\n- **⭐ [Star on GitHub →](https://github.com/anzy-renlab-ai/pronounce)** — one click, no signup, biggest effect.\n\nOptional, if it's saved you real standup pain:\n\n- ☕ [Coffee on Ko-fi](https://ko-fi.com/alvinanziyan) — pays for one new entry per cup.\n- 💚 [Sponsor on GitHub](https://github.com/sponsors/anzy-renlab-ai) — recurring tier (pending Sponsors approval).\n\nDollars cover hosting (Vercel/Cloudflare/Open VSX), domain renewals, MiniMax narration credits for promo videos, and time to track down creator citations for new entries.\n\n## Contributors\n\n<a href=\"https://github.com/anzy-renlab-ai/pronounce/graphs/contributors\"><img src=\"https://contrib.rocks/image?repo=anzy-renlab-ai/pronounce\" alt=\"Contributors\"></a>\n\nEvery entry, source upgrade, and skill fix counts. Open a PR — your face shows up here.\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n\n---\n\n> *IPA is a reference. Audio is a teacher.*\n",
  "bytes": 19348,
  "sha": "6cf422129aedee94cc89feb63279bc1e4c27a1da8b63d57ff373736a56af9b77",
  "repo_slug": "anzy-renlab-ai/pronounce",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_anzy_renlab_ai_pronounce_31d72b50/readme"
}