gaelic-ghost/speakswiftlyserver/speak-swiftly-codex-hooks
Claude Code and agent skill by gaelic-ghost/speakswiftlyserver
- community
- ext:[{"type":"hook","description":"Pre/post lifecycle hooks"}]
Checking that the SKILL.md file is still in the repository.
Use when a user wants Speak Swiftly to read Codex replies aloud automatically through Codex lifecycle hooks, including plugin-managed hook setup, hook command path diagnosis, hook doctor interpretation, duplicate-hook diagnosis, centralized hook logs, final-reply TTS troubleshooting, or validation from another working directory.
Install
npx vskill@latest install gaelic-ghost/speakswiftlyserver/speak-swiftly-codex-hooksSemi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard
SKILL.md
Speak Swiftly Codex Hooks
Use this skill when the task is about Codex lifecycle hooks that send final assistant replies to the local Speak Swiftly service.
Start Here
- Read docs/codex-hooks-tts.md before changing guidance or setup. It is the repo source of truth for the plugin hook, command path behavior, logs, state, and known Codex payload behavior.
- Verify the live service before changing hook config: read
speak-swiftly://overviewor runnode scripts/codex-hooks-doctor.mjs --repair-planfrom the repository root. - Treat
speak-swiftly@socketas the preferred plugin entry when both Socket and standalone marketplaces are present. - Keep the legacy
speak-swiftly-server@socketconfig entry disabled unless the user explicitly asks for legacy-plugin investigation. - For plugin-managed hooks, confirm both
features.hooks = trueandfeatures.plugin_hooks = truein~/.codex/config.toml; current Codex CLI source gates runnable plugin hooks behind the separateplugin_hooksfeature. - Codex 0.129.0 stores per-hook review decisions under
[hooks.state]in~/.codex/config.toml; if Codex says hooks need review, use the hooks settings panel to approve the Speak SwiftlyStopcommand instead of adding a user-level fallback hook.
Setup Model
- Preferred install surface: the Speak Swiftly plugin manifest declares
hooks: "./hooks/hooks.json", and installed plugins can bundle lifecycle config through that manifest. - Do not copy the repo-local
.codex/hooks.jsoninto~/.codex/; that command setsCODEX_HOOK_TTS_DATA_DIRfor checkout-scoped development logs and state. Do not add a user-level~/.codex/hooks.jsonSpeak Swiftly hook for normal installs. - Plugin-managed hook commands must target the installed Socket Codex cache payload path at
~/.codex/plugins/cache/socket/speak-swiftly/12.0.0/hooks/.... Do not keep stale standaloneSpeakSwiftlyServercache commands in the Socket-managed manifest. - Keep the shipped plugin hook set limited to the
Stophook. Do not add aPermissionRequestprobe unless the release explicitly reintroduces approval-prompt diagnostics.
Doctor Interpretation
- Warn on user-level hooks that point at
.codex/hooks/stop-tts.mjs, includeCODEX_HOOK_TTS_DATA_DIR, or duplicate the plugin-managedStophook. Treat them as duplicate or legacy repair targets, not fallback hooks. - Warn on duplicate enabled plugin entries. Keep the canonical Socket entry and disable or remove duplicate standalone or legacy plugin entries after confirmation.
- Warn when the expected
speak-swiftly@socket:hooks/hooks.json:stop:0:0entry is missing from[hooks.state]; that means the new Codex per-hook review gate probably still needs operator approval. - Runtime default voice mismatch is not automatically a hook failure. The hook uses the runtime default voice unless
CODEX_HOOK_TTS_PROFILE_NAMEis set; when an override is configured, confirm that profile exists in the cached voice inventory.
Validation
- Validate syntax and focused fixtures with
sh scripts/repo-maintenance/validations/25-codex-plugin.sh. - Run
node scripts/codex-hooks-doctor.mjs --repair-planand inspect both centralized and repo-local recent stop-hook log summaries. - To prove all-directory coverage, run a tiny Codex CLI turn from a different working directory and then tail
~/.codex/speak-swiftly-server/hooks/logs/stop-tts.jsonl. - Treat a queued log entry with the probe
cwd,sessionId,turnId, andrequest.request_idas the proof that the hook fired and the service accepted the speech request. - If the installed plugin manifest is correct but no
Stoprow appears, checkfeatures.plugin_hooksbefore adding any user-level fallback.
Troubleshooting
- If a direct manual run of the installed plugin's
hooks/stop-tts.mjsqueues speech but normal assistant final replies do not add a fresh row to~/.codex/speak-swiftly-server/hooks/logs/stop-tts.jsonl, inspect whether the plugin-managed commands still include stale direct commands for absent cache paths before blaming the live service. speech-route-unreachablemeans the hook could not reach the local HTTP route.- HTTP
503from/speech/livemeans the service is reachable but not ready for speech work yet. duplicate-turnmeans shared dedupe blocked a repeatedsession_id + turn_id; that is expected when more than one matching hook source starts.structured-assistant-metadatameans Codex produced compact UI or automation metadata instead of speakable final prose.- If the live service itself is unhealthy, switch to
$speak-swiftly-launchagent-setupfor service setup or$speak-swiftly-runtime-operatorfor runtime readiness, queue, playback, or backend state.
Security
- Security scanPassed, 95 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/speak-swiftly-codex-hooks/SKILL.md
Popularity
- Repository stars
- 8
- Repository forks
- 2
- 7-day trend score
- 11
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Extension points
hookPre/post lifecycle hooks
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/gaelic-ghost/speakswiftlyserver/speak-swiftly-codex-hooks)