Adom TTS — Text to Speech
Public Made by Adomby adom
Adom's shared voice service. Reads your AI's answers back to you while you drive, and renders perfectly-timed voiceover tracks for your demo videos — so you never record your own voice.
name: adom-tts-publish
description: >-
Cut and publish a new adom-tts release to THE Adom Wiki. Single source of
truth for WHERE this app lives (https://wiki.adom.inc/adom/adom-tts — org
adom, slug adom-tts) and HOW to ship it with the adom-wiki CLI (adompkg
and all *.adom.cloud slug hosts are DEPRECATED — never use them). Covers the
version bump, the test gate, packaging, adom-wiki pkg publish, repo push
for source + dev/publish skills, keeping the hero linked, deprecating a bad
version, and the mandatory verify-in-pup step. Triggers: publish adom-tts,
release adom-tts, ship adom-tts, bump adom-tts, push adom-tts to the wiki,
update the adom-tts page, re-link the adom-tts hero.
Publish adom-tts to the wiki
Where this app lives (memorize):
- Page:
https://wiki.adom.inc/adom/adom-tts(org adom, slug adom-tts, type app) - Page title: Adom TTS — Text to Speech (the hero headline matches it verbatim)
- CLI:
adom-wiki— the ONLY wiki tool.adompkg, "wiki v1/v2", and any*.adom.cloudslug host are DEPRECATED; if a doc says otherwise it is stale. - The wiki has TWO unsynced layers: the package registry (
pkg publish/pkg install— what installers get) and the git page repo (repo push— the Files tab, README, dev-skills/, publish-skills/, screenshots). Ship BOTH.
Release steps
Bump every version file (any code change = new version; versions are immutable on the registry):
cd /home/adom/project/adom-tts echo "X.Y.Z" > VERSION sed -i 's/^version = .*/version = "X.Y.Z"/' Cargo.toml sed -i 's/"version": "[0-9.]*"/"version": "X.Y.Z"/' package.json page.jsonGate on tests, build, deploy locally (see
dev-skills/adom-tts-devfor the full dev cycle and the byte-compare sweep):cargo test --release 2>&1 | grep -q "test result: ok" || { echo "TESTS FAILED"; exit 1; } ./build.sh && install -m 0755 target/release/adom-tts ~/.local/bin/adom-ttsPublish the package — the binary ships INSIDE it. NO release uploads. Read the adom-wiki skill carefully: packages are resolved PER PLATFORM and the skill's own example says "a Linux consumer installs the package (CLI + skills)". Release assets exist ONLY for artifacts fetched OUTSIDE the install flow (a Windows installer a laptop downloads directly, pup's bridge zip that Adom Desktop fetches itself). adom-tts has no such consumer — every user is a Linux container running
pkg install— so a release for adom-tts makes NO sense. (Got this wrong twice: first shipped src+pngs+ binary in a fat tarball AND a duplicate release; then over-corrected to a skills-only tarball with the binary as a release. Correct: lean allowlist WITH the binary, zero releases.)- package.json
filesallowlist: manifest + install/uninstall scripts +bin/adom-tts+skills/**+completions/**(~2.3 MB). NO src/, NO pngs (page assets via repo push). dev-/publish-skills auto-excluded.
adom-wiki pkg pack --json # VERIFY: ~10 files, ~2.3 MB, bin/adom-tts present adom-wiki pkg publish --org adomThen prove the loop:
HOME=$(mktemp -d) adom-wiki pkg install adom/adom-ttsand run$HOME/.local/bin/adom-tts --versionfrom that fresh home.- package.json
Push the source — README, src/, screenshots, page.json, and the dev + publish skills (they reach the page ONLY via repo push; the Skills tab shows them under its Dev / Publish sub-tabs):
adom-wiki repo push adom/adom-tts -m "vX.Y.Z — <changelog>"Keep the hero linked. The hero lives in
page.jsonONLY (never embed it in the README):"hero": { "type": "image", "path": "screenshots/hero-v3.png" }If a publish/step ever clobbers page metadata, re-push
page.jsonLAST and re-check the page header. Regenerate the hero itself with theadom-wiki-heroskill (fresh REAL player screenshot, bleed-bottom/midnight, title = the page title verbatim).Verify live — in pup, always (never claim published without looking):
adom-desktop --target <laptop> browser_open_window '{"sessionId":"wiki-check","url":"https://wiki.adom.inc/adom/adom-tts?cb=<epoch>"}' adom-desktop --target <laptop> browser_screenshot '{"sessionId":"wiki-check"}' # read the PNG it savesCheck: version, hero renders, Skills tab shows User + Dev + Publish tiers, README intact, Install command correct, and NO EMOJIS anywhere in the README or skills (user rule — plain typographic marks only).
Prove playback end-to-end (the release isn't done until a human can hear it):
adom-tts say "release X.Y.Z verification" --out /tmp/rel.mp3 --thread release --play --confirm # must print: ✓ CONFIRMED
Stale things get DELETED, not deprecated (user rule, pre-launch)
We have not launched: leaving "[DEPRECATED]" garbage around is worse than
removing it. A bad package VERSION: fix, bump, republish (registry versions are
immutable; the new version supersedes). A stale PAGE, hero, or file: delete it
outright — adom-wiki repo rm <ref> <path> for files, adom-wiki repo delete <ref> --hard --confirm for whole pages. Only reach for deprecation notices
after we launch and third parties depend on things.
Skills live IN this repo (user rule)
Never create a standalone wiki skill page that just points at adom-tts — all skills associated with the app belong in THIS repo's tiers (skills/, dev-skills/, publish-skills/) so they version and ship with the app. Example: tts-pronunciation was a scattered standalone page and is now skills/tts-pronunciation/ here. The one sanctioned standalone is adom/hands-free — a cross-cutting trigger router, kept deliberately thin.
A rename is not just a slug change
Renaming a page = slug + title + brief/description + SKILL.md name + install paths + discovery triggers + THE HERO (the old pixels carry the old name — regenerate it with the adom-wiki-hero skill) + deleting old-name art and directories everywhere (wiki files, ~/.claude/skills, installers). The im-driving → hands-free rename missed the hero on the first pass; don't repeat that.
Distribution notes
- Other containers pick the release up via their wiki auto-update hook; inside THIS container run the byte-compare sweep (dev skill) so every copy matches.
- The running drainer self-supersedes to the new version on the next
say --play— do not kill it.
---
name: adom-tts-publish
description: >-
Cut and publish a new adom-tts release to THE Adom Wiki. Single source of
truth for WHERE this app lives (https://wiki.adom.inc/adom/adom-tts — org
`adom`, slug `adom-tts`) and HOW to ship it with the adom-wiki CLI (adompkg
and all *.adom.cloud slug hosts are DEPRECATED — never use them). Covers the
version bump, the test gate, packaging, `adom-wiki pkg publish`, `repo push`
for source + dev/publish skills, keeping the hero linked, deprecating a bad
version, and the mandatory verify-in-pup step. Triggers: publish adom-tts,
release adom-tts, ship adom-tts, bump adom-tts, push adom-tts to the wiki,
update the adom-tts page, re-link the adom-tts hero.
---
# Publish adom-tts to the wiki
**Where this app lives (memorize):**
- Page: `https://wiki.adom.inc/adom/adom-tts` (org **adom**, slug **adom-tts**, type app)
- Page title: **Adom TTS — Text to Speech** (the hero headline matches it verbatim)
- CLI: **`adom-wiki`** — the ONLY wiki tool. `adompkg`, "wiki v1/v2", and any
`*.adom.cloud` slug host are DEPRECATED; if a doc says otherwise it is stale.
- The wiki has TWO unsynced layers: the **package registry** (`pkg publish` /
`pkg install` — what installers get) and the **git page repo** (`repo push` —
the Files tab, README, dev-skills/, publish-skills/, screenshots). Ship BOTH.
## Release steps
1. **Bump every version file** (any code change = new version; versions are
immutable on the registry):
```bash
cd /home/adom/project/adom-tts
echo "X.Y.Z" > VERSION
sed -i 's/^version = .*/version = "X.Y.Z"/' Cargo.toml
sed -i 's/"version": "[0-9.]*"/"version": "X.Y.Z"/' package.json page.json
```
2. **Gate on tests, build, deploy locally** (see `dev-skills/adom-tts-dev` for
the full dev cycle and the byte-compare sweep):
```bash
cargo test --release 2>&1 | grep -q "test result: ok" || { echo "TESTS FAILED"; exit 1; }
./build.sh && install -m 0755 target/release/adom-tts ~/.local/bin/adom-tts
```
3. **Publish the package — the binary ships INSIDE it. NO release uploads.**
Read the adom-wiki skill carefully: packages are resolved PER PLATFORM and
the skill's own example says "a Linux consumer installs the package (CLI +
skills)". Release assets exist ONLY for artifacts fetched OUTSIDE the
install flow (a Windows installer a laptop downloads directly, pup's bridge
zip that Adom Desktop fetches itself). adom-tts has no such consumer —
every user is a Linux container running `pkg install` — so a release for
adom-tts makes NO sense. (Got this wrong twice: first shipped src+pngs+
binary in a fat tarball AND a duplicate release; then over-corrected to a
skills-only tarball with the binary as a release. Correct: lean allowlist
WITH the binary, zero releases.)
- package.json `files` allowlist: manifest + install/uninstall scripts +
`bin/adom-tts` + `skills/**` + `completions/**` (~2.3 MB). NO src/, NO
pngs (page assets via repo push). dev-/publish-skills auto-excluded.
```bash
adom-wiki pkg pack --json # VERIFY: ~10 files, ~2.3 MB, bin/adom-tts present
adom-wiki pkg publish --org adom
```
Then prove the loop: `HOME=$(mktemp -d) adom-wiki pkg install adom/adom-tts`
and run `$HOME/.local/bin/adom-tts --version` from that fresh home.
4. **Push the source** — README, src/, screenshots, page.json, and the dev +
publish skills (they reach the page ONLY via repo push; the Skills tab shows
them under its Dev / Publish sub-tabs):
```bash
adom-wiki repo push adom/adom-tts -m "vX.Y.Z — <changelog>"
```
5. **Keep the hero linked.** The hero lives in `page.json` ONLY (never embed it
in the README):
```json
"hero": { "type": "image", "path": "screenshots/hero-v3.png" }
```
If a publish/step ever clobbers page metadata, re-push `page.json` LAST and
re-check the page header. Regenerate the hero itself with the
`adom-wiki-hero` skill (fresh REAL player screenshot, bleed-bottom/midnight,
title = the page title verbatim).
6. **Verify live — in pup, always** (never claim published without looking):
```bash
adom-desktop --target <laptop> browser_open_window '{"sessionId":"wiki-check","url":"https://wiki.adom.inc/adom/adom-tts?cb=<epoch>"}'
adom-desktop --target <laptop> browser_screenshot '{"sessionId":"wiki-check"}' # read the PNG it saves
```
Check: version, hero renders, Skills tab shows User + Dev + Publish tiers,
README intact, Install command correct, and NO EMOJIS anywhere in the README
or skills (user rule — plain typographic marks only).
7. **Prove playback end-to-end** (the release isn't done until a human can
hear it):
```bash
adom-tts say "release X.Y.Z verification" --out /tmp/rel.mp3 --thread release --play --confirm
# must print: ✓ CONFIRMED
```
## Stale things get DELETED, not deprecated (user rule, pre-launch)
We have not launched: leaving "[DEPRECATED]" garbage around is worse than
removing it. A bad package VERSION: fix, bump, republish (registry versions are
immutable; the new version supersedes). A stale PAGE, hero, or file: delete it
outright — `adom-wiki repo rm <ref> <path>` for files, `adom-wiki repo delete
<ref> --hard --confirm` for whole pages. Only reach for deprecation notices
after we launch and third parties depend on things.
## Skills live IN this repo (user rule)
Never create a standalone wiki skill page that just points at adom-tts — all
skills associated with the app belong in THIS repo's tiers (skills/,
dev-skills/, publish-skills/) so they version and ship with the app. Example:
tts-pronunciation was a scattered standalone page and is now
skills/tts-pronunciation/ here. The one sanctioned standalone is
adom/hands-free — a cross-cutting trigger router, kept deliberately thin.
## A rename is not just a slug change
Renaming a page = slug + title + brief/description + SKILL.md name +
install paths + discovery triggers + THE HERO (the old pixels carry the old
name — regenerate it with the adom-wiki-hero skill) + deleting old-name art
and directories everywhere (wiki files, ~/.claude/skills, installers). The
im-driving → hands-free rename missed the hero on the first pass; don't
repeat that.
## Distribution notes
- Other containers pick the release up via their wiki auto-update hook; inside
THIS container run the byte-compare sweep (dev skill) so every copy matches.
- The running drainer self-supersedes to the new version on the next
`say --play` — do not kill it.