echook
π echook β AI-operated audio notifications for Claude Code, Cursor IDE & Codex CLI β 26 hooks, voice + chime themes, TTS, webhooks, rate-limit alerts, status line. Tell your AI agent to install β natural language forever after.
νμΌ νμκΈ°
- marketplace.json
- chan-meng-logo.svg
- bug_report.md
- config.yml
- feature_request.md
- smoke.yml
- FUNDING.yml
- PULL_REQUEST_TEMPLATE.md
- .gitkeep
- chime-agent-response.mp3
- chime-batch-complete.mp3
- chime-config-change.mp3
- chime-cwd-changed.mp3
- chime-dir-added-repo-root.mp3
- chime-dir-added-slash.mp3
- chime-directory-added.mp3
- chime-elicitation-result.mp3
- chime-elicitation.mp3
- chime-end-clear.mp3
- chime-end-exit.mp3
- chime-end-logout.mp3
- chime-end-resume.mp3
- chime-fail-account-hold.mp3
- chime-fail-auth.mp3
- chime-fail-billing.mp3
- chime-fail-invalid-request.mp3
- chime-fail-max-tokens.mp3
- chime-fail-model-not-found.mp3
- chime-fail-oauth-org.mp3
- chime-fail-overloaded.mp3
- chime-fail-rate-limit.mp3
- chime-fail-server-error.mp3
- chime-fail-unknown.mp3
- chime-file-changed.mp3
- chime-file-read.mp3
- chime-instructions-loaded.mp3
- chime-mcp-done.mp3
- chime-mcp-starting.mp3
- chime-message-display.mp3
- chime-notif-agent-completed.mp3
- chime-notif-agent-needs-input.mp3
- chime-notif-auth-success.mp3
- chime-notif-computer-use-enter.mp3
- chime-notif-computer-use-exit.mp3
- chime-notif-elicitation-complete.mp3
- chime-notif-elicitation-dialog.mp3
- chime-notif-elicitation-response.mp3
- chime-notif-elicitation-url.mp3
- chime-notif-idle-prompt.mp3
- chime-notif-permission-prompt.mp3
- chime-notif-push.mp3
- chime-notif-quota-disabled.mp3
- chime-notif-quota-resumed.mp3
- chime-notif-quota-stale.mp3
- chime-notif-worker-permission.mp3
- chime-notification-info.mp3
- chime-notification-urgent.mp3
- chime-permission-denied.mp3
- chime-permission-request.mp3
- chime-post-compact.mp3
- chime-postcompact-auto.mp3
- chime-postcompact-manual.mp3
- chime-pre-compact.mp3
- chime-precompact-auto.mp3
- chime-precompact-manual.mp3
- chime-prompt-expanded.mp3
- chime-prompt-received.mp3
- chime-session-after-compact.mp3
- chime-session-cleared.mp3
- chime-session-end.mp3
- chime-session-forked.mp3
- chime-session-resumed.mp3
- chime-session-start.mp3
- chime-session-startup.mp3
- chime-setup-init.mp3
- chime-setup-maintenance.mp3
- chime-setup-ready.mp3
- chime-shell-done.mp3
- chime-shell-starting.mp3
- chime-stop-failure.mp3
- chime-subagent-complete.mp3
- chime-subagent-start.mp3
- chime-tab-edit.mp3
- chime-task-complete.mp3
- chime-task-created.mp3
- chime-task-progress.mp3
- chime-task-starting.mp3
- chime-team-task-done.mp3
- chime-teammate-idle.mp3
- chime-thinking-done.mp3
- chime-tool-failed.mp3
- chime-workspace-open.mp3
- chime-worktree-removed.mp3
- agent-response.mp3
- batch-complete.mp3
- config-change.mp3
- cwd-changed.mp3
- dir-added-repo-root.mp3
- dir-added-slash.mp3
- directory-added.mp3
- elicitation-result.mp3
- elicitation.mp3
- end-clear.mp3
- end-exit.mp3
- end-logout.mp3
- end-resume.mp3
- fail-account-hold.mp3
- fail-auth.mp3
- fail-billing.mp3
- fail-invalid-request.mp3
- fail-max-tokens.mp3
- fail-model-not-found.mp3
- fail-oauth-org.mp3
- fail-overloaded.mp3
- fail-rate-limit.mp3
- fail-server-error.mp3
- fail-unknown.mp3
- file-changed.mp3
- file-read.mp3
- instructions-loaded.mp3
- mcp-done.mp3
- mcp-starting.mp3
- message-display.mp3
- notif-agent-completed.mp3
- notif-agent-needs-input.mp3
- notif-auth-success.mp3
- notif-computer-use-enter.mp3
- notif-computer-use-exit.mp3
- notif-elicitation-complete.mp3
- notif-elicitation-dialog.mp3
- notif-elicitation-response.mp3
- notif-elicitation-url.mp3
- notif-idle-prompt.mp3
- notif-permission-prompt.mp3
- notif-push.mp3
- notif-quota-disabled.mp3
- notif-quota-resumed.mp3
- notif-quota-stale.mp3
- notif-worker-permission.mp3
- notification-info.mp3
- notification-urgent.mp3
- permission-denied.mp3
- permission-request.mp3
- post-compact.mp3
- postcompact-auto.mp3
- postcompact-manual.mp3
- pre-compact.mp3
- precompact-auto.mp3
- precompact-manual.mp3
- prompt-expanded.mp3
- prompt-received.mp3
- session-after-compact.mp3
- session-cleared.mp3
- session-end.mp3
- session-forked.mp3
- session-resumed.mp3
- session-start.mp3
- session-startup.mp3
- setup-init.mp3
- setup-maintenance.mp3
- setup-ready.mp3
- shell-done.mp3
- shell-starting.mp3
- stop-failure.mp3
- subagent-complete.mp3
- subagent-start.mp3
- tab-edit.mp3
- task-complete.mp3
- task-created.mp3
- task-progress.mp3
- task-starting.mp3
- team-task-done.mp3
- teammate-idle.mp3
- thinking-done.mp3
- tool-failed.mp3
- workspace-open.mp3
- worktree-removed.mp3
- audio-hooks
- audio-hooks-statusline
- audio-hooks-statusline.cmd
- audio-hooks-statusline.py
- audio-hooks-subagent-statusline.py
- audio-hooks.cmd
- audio-hooks.py
- hooks.json
- plugin-hooks.json
- _defaults_baseline.json
- audio_manifest.json
- default_preferences.json
- example_preferences_chimes.json
- example_preferences_mixed.json
- user_preferences.json
- user_preferences.schema.json
- hooks.json
- plugin-installed.png
- plugin-marketplace-detail.png
- skill-registration.png
- statusline-context-monitor.png
- 2026-05-01-painless-upgrades-plan.md
- 2026-05-01-painless-upgrades-design.md
- ARCHITECTURE.md
- CLI_REFERENCE.md
- EVENT_BEHAVIOR_NOTES.md
- INSTALLATION_GUIDE.md
- NATURAL_LANGUAGE_CONTROL.md
- STATUS_LINE.md
- TROUBLESHOOTING.md
- path_utils.sh
- hook_runner.py
- invoker.py
- user_preferences.py
- plugin.json
- plugin.json
- chime-agent-response.mp3
- chime-batch-complete.mp3
- chime-config-change.mp3
- chime-cwd-changed.mp3
- chime-dir-added-repo-root.mp3
- chime-dir-added-slash.mp3
- chime-directory-added.mp3
- chime-elicitation-result.mp3
- chime-elicitation.mp3
- chime-end-clear.mp3
- chime-end-exit.mp3
- chime-end-logout.mp3
- chime-end-resume.mp3
- chime-fail-account-hold.mp3
- chime-fail-auth.mp3
- chime-fail-billing.mp3
- chime-fail-invalid-request.mp3
- chime-fail-max-tokens.mp3
- chime-fail-model-not-found.mp3
- chime-fail-oauth-org.mp3
- chime-fail-overloaded.mp3
- chime-fail-rate-limit.mp3
- chime-fail-server-error.mp3
- chime-fail-unknown.mp3
- chime-file-changed.mp3
- chime-file-read.mp3
- chime-instructions-loaded.mp3
- chime-mcp-done.mp3
- chime-mcp-starting.mp3
- chime-message-display.mp3
- chime-notif-agent-completed.mp3
- chime-notif-agent-needs-input.mp3
- chime-notif-auth-success.mp3
- chime-notif-computer-use-enter.mp3
- chime-notif-computer-use-exit.mp3
- chime-notif-elicitation-complete.mp3
- chime-notif-elicitation-dialog.mp3
- chime-notif-elicitation-response.mp3
- chime-notif-elicitation-url.mp3
- chime-notif-idle-prompt.mp3
- chime-notif-permission-prompt.mp3
- chime-notif-push.mp3
- chime-notif-quota-disabled.mp3
- chime-notif-quota-resumed.mp3
- chime-notif-quota-stale.mp3
- chime-notif-worker-permission.mp3
- chime-notification-info.mp3
- chime-notification-urgent.mp3
- chime-permission-denied.mp3
- chime-permission-request.mp3
- chime-post-compact.mp3
- chime-postcompact-auto.mp3
- chime-postcompact-manual.mp3
- chime-pre-compact.mp3
- chime-precompact-auto.mp3
- chime-precompact-manual.mp3
- chime-prompt-expanded.mp3
- chime-prompt-received.mp3
- chime-session-after-compact.mp3
- chime-session-cleared.mp3
- chime-session-end.mp3
- chime-session-forked.mp3
- chime-session-resumed.mp3
- chime-session-start.mp3
- chime-session-startup.mp3
- chime-setup-init.mp3
- chime-setup-maintenance.mp3
- chime-setup-ready.mp3
- chime-shell-done.mp3
- chime-shell-starting.mp3
- chime-stop-failure.mp3
- chime-subagent-complete.mp3
- chime-subagent-start.mp3
- chime-tab-edit.mp3
- chime-task-complete.mp3
- chime-task-created.mp3
- chime-task-progress.mp3
- chime-task-starting.mp3
- chime-team-task-done.mp3
- chime-teammate-idle.mp3
- chime-thinking-done.mp3
- chime-tool-failed.mp3
- chime-workspace-open.mp3
- chime-worktree-removed.mp3
- agent-response.mp3
- batch-complete.mp3
- config-change.mp3
- cwd-changed.mp3
- dir-added-repo-root.mp3
- dir-added-slash.mp3
- directory-added.mp3
- elicitation-result.mp3
- elicitation.mp3
- end-clear.mp3
- end-exit.mp3
- end-logout.mp3
- end-resume.mp3
- fail-account-hold.mp3
- fail-auth.mp3
- fail-billing.mp3
- fail-invalid-request.mp3
- fail-max-tokens.mp3
- fail-model-not-found.mp3
- fail-oauth-org.mp3
- fail-overloaded.mp3
- fail-rate-limit.mp3
- fail-server-error.mp3
- fail-unknown.mp3
- file-changed.mp3
- file-read.mp3
- instructions-loaded.mp3
- mcp-done.mp3
- mcp-starting.mp3
- message-display.mp3
- notif-agent-completed.mp3
- notif-agent-needs-input.mp3
- notif-auth-success.mp3
- notif-computer-use-enter.mp3
- notif-computer-use-exit.mp3
- notif-elicitation-complete.mp3
- notif-elicitation-dialog.mp3
- notif-elicitation-response.mp3
- notif-elicitation-url.mp3
- notif-idle-prompt.mp3
- notif-permission-prompt.mp3
- notif-push.mp3
- notif-quota-disabled.mp3
- notif-quota-resumed.mp3
- notif-quota-stale.mp3
- notif-worker-permission.mp3
- notification-info.mp3
- notification-urgent.mp3
- permission-denied.mp3
- permission-request.mp3
- post-compact.mp3
- postcompact-auto.mp3
- postcompact-manual.mp3
- pre-compact.mp3
- precompact-auto.mp3
- precompact-manual.mp3
- prompt-expanded.mp3
- prompt-received.mp3
- session-after-compact.mp3
- session-cleared.mp3
- session-end.mp3
- session-forked.mp3
- session-resumed.mp3
- session-start.mp3
- session-startup.mp3
- setup-init.mp3
- setup-maintenance.mp3
- setup-ready.mp3
- shell-done.mp3
- shell-starting.mp3
- stop-failure.mp3
- subagent-complete.mp3
- subagent-start.mp3
- tab-edit.mp3
- task-complete.mp3
- task-created.mp3
- task-progress.mp3
- task-starting.mp3
- team-task-done.mp3
- teammate-idle.mp3
- thinking-done.mp3
- tool-failed.mp3
- workspace-open.mp3
- worktree-removed.mp3
- audio-hooks
- audio-hooks-statusline
- audio-hooks-statusline.cmd
- audio-hooks-statusline.py
- audio-hooks-subagent-statusline.py
- audio-hooks.cmd
- audio-hooks.py
- hooks.json
- plugin-hooks.json
- default_preferences.json
- hooks.json
- hook_runner.py
- hooks.json
- invoker.py
- user_preferences.py
- run.py
- SKILL.md
- echook-logo.svg
- test-path-utils.sh
- build-plugin.sh
- bump-version.sh
- generate-audio.py
- install-complete.sh
- install-windows.ps1
- uninstall.sh
- test_background_task_filter.py
- test_backup_cli.py
- test_backups.py
- test_codex_hooks.py
- test_codex_statusline.py
- test_cursor_bridge.py
- test_defaults_stability.py
- test_legacy_scripts_contract.py
- test_migration.py
- test_plugin_hooks_contract.py
- test_sanitize.py
- test_statusline.py
- test_terminal_sequence.py
- test_upgrade_command.py
- test_user_preferences.py
- test_variant_toggles.py
- .gitignore
- AGENTS.md
- CHANGELOG.md
- CLAUDE.md
- CODE_OF_CONDUCT.md
- CONTRIBUTING.md
- GOVERNANCE.md
- LICENSE
- llms.txt
- README.md
- SECURITY.md
- SUPPORT.md
# CDNμΌλ‘ μ¬μ©νκΈ°
jsDelivrjsDelivrλ κ³΅κ° GitHub 리ν¬μ§ν 리λ₯Ό λ³λ μ€μ μμ΄ CDNμΌλ‘ μ¦μ μλΉν©λλ€. λ²μ κ³Ό νμΌμ κ³ λ₯΄λ©΄ μΉνμ΄μ§μ λ°λ‘ λΆμΌ μ μλ λ§ν¬μ μμ μ½λκ° λ§λ€μ΄μ§λλ€.
λͺ λ Ήμ΄ μ©μ΄μ§
μ΄ λ¬Έμμμ μ¬μ©λ λͺ λ Ήμ΄λ₯Ό λͺ¨μλ΄€μ΅λλ€. λ―μ λͺ λ Ήμ΄κ° μλ€λ©΄ νΌμ³μ νμΈν΄λ³΄μΈμ.
ffplay
μ€λͺ
보기 βΌ
ffplay
FFmpeg λΌμ΄λΈλ¬λ¦¬μ SDL λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νλ κ°λ¨νκ³ ν΄λ κ°μΌν λ―Έλμ΄ νλ μ΄μ΄.
λ λ§μ μ 보: <https://ffmpeg.org/ffplay-all.html>.
ffplay {{path/to/file}}
λ―Έλμ΄ νμΌ μ¬μ:
ffplay -nodisp {{path/to/file}}
GUI μμ΄ λ―Έλμ΄ νμΌμμ μ€λμ€ μ¬μ:
ffmpeg -i {{path/to/file}} -c {{copy}} -f {{media_format}} - | ffplay -
`stdin`μ ν΅ν΄ `ffmpeg`μ μν΄ μ λ¬λ λ―Έλμ΄ μ¬μ:
logout
μ€λͺ
보기 βΌ
logout
λ‘κ·ΈμΈ μ
Έ μ’
λ£.
λ λ§μ μ 보: <https://www.gnu.org/software/bash/manual/bash.html#index-logout>.
logout
λ‘κ·ΈμΈ μ Έ μ’ λ£:
logout {{exit_code}}
μ’ λ£ μ½λλ₯Ό μ§μ νμ¬ λ‘κ·ΈμΈ μ Έ μ’ λ£:
python
μ€λͺ
보기 βΌ
python
Python μΈμ΄ μΈν°ν리ν°.
λ λ§μ μ 보: <https://docs.python.org/using/cmdline.html>.
python
REPL(λνν μ Έ) μμ:
python {{path/to/file.py}}
νΉμ Python νμΌ μ€ν:
python -i {{path/to/file.py}}
νΉμ Python νμΌ μ€ν ν REPL μμ:
vim
μ€λͺ
보기 βΌ
vim
Vim (Vi IMproved)λ λ€μν ν
μ€νΈ μ‘°μμ μν μ¬λ¬ λͺ¨λλ₯Ό μ 곡νλ λͺ
λ Ήμ€ ν
μ€νΈ νΈμ§κΈ°μ
λλ€.
μΌλ° λͺ¨λμμ `<i>`λ₯Ό λλ¬ μ½μ
λͺ¨λλ‘ μ§μ
ν©λλ€. `<Esc>`λ₯Ό λλ¬ λ€μ μΌλ° λͺ¨λλ‘ λμκ°λ©΄ Vim λͺ
λ Ήμ μ¬μ©ν μ μμ΅λλ€.
κ΄λ ¨ νλͺ©: `vimdiff`, `vimtutor`, `nvim`, `gvim`.
λ λ§μ μ 보: <https://www.vim.org/>.
vim {{path/to/file}}
νμΌ μ΄κΈ°:
vim +{{line_number}} {{path/to/file}}
μ§μ ν μ€ λ²νΈμμ νμΌ μ΄κΈ°:
<:>help<Enter>
Vim λ©λ΄μΌ 보기:
aplay
μ€λͺ
보기 βΌ
aplay
ALSA μ¬μ΄λμΉ΄λ λλΌμ΄λ²λ₯Ό μν μ¬μ΄λ νλ μ΄μ΄.
λ λ§μ μ 보: <https://manned.org/aplay>.
aplay {{path/to/file}}
νΉμ νμΌ μ¬μ (νμΌ νμμ λ°λΌ μνλ§ μλ, λΉνΈ κΉμ΄ λ±μ΄ μλμΌλ‘ κ²°μ λ¨):
aplay {{[-d|--duration]}} 10 {{[-r|--rate]}} 2500 {{path/to/file}}
νΉμ νμΌμ μ²μ 10μ΄λ₯Ό 2500 Hzμμ μ¬μ:
aplay {{[-c|--channels]}} 1 {{[-t|--file-type]}} raw {{[-r|--rate]}} 22050 {{[-f|--format]}} mu_law {{path/to/file}}
22050 Hz, λͺ¨λ Έ, 8λΉνΈ, Mu-Law `.au` νμΌλ‘ μμ νμΌ μ¬μ:
mpg123
μ€λͺ
보기 βΌ
mpg123
μ½μ MPEG μ€λμ€ νλ μ΄μ΄.
λ λ§μ μ 보: <https://manned.org/mpg123>.
mpg123 {{path/to/file1.mp3 path/to/file2.mp3 ...}}
μ§μ λ mp3 νμΌ μ¬μ:
cat {{file.mp3}} | mpg123 -
`stdin`μμ mp3 μ¬μ:
<f>
λ€μ 곑μΌλ‘ 건λλ°κΈ°:
afplay
μ€λͺ
보기 βΌ
afplay
λͺ
λ Ήμ€ μ€λμ€ νλ μ΄μ΄.
λ λ§μ μ 보: <https://keith.github.io/xcode-man-pages/afplay.1.html>.
afplay {{path/to/file}}
μ¬μ΄λ νμΌ μ¬μ (μ¬μμ΄ λλ λκΉμ§ λκΈ°):
afplay --rate {{2}} {{path/to/file}}
μ¬μ΄λ νμΌμ 2λ°°μμΌλ‘ μ¬μ (μ¬μ μλ):
afplay --rate {{0.5}} {{path/to/file}}
μ¬μ΄λ νμΌμ λ°μλλ‘ μ¬μ:
compact
μ€λͺ
보기 βΌ
compact
NTFS νν°μ
μ νμΌ λ° λλ ν°λ¦¬ μμΆ μνλ₯Ό νμΈνκ±°λ λ³κ²½.
λ λ§μ μ 보: <https://learn.microsoft.com/windows-server/administration/windows-commands/compact>.
compact
νμ¬ λλ ν°λ¦¬μ νμΌ μμΆ μν νμ:
compact /c {{path\to\file}}
μ§μ ν νμΌ μμΆ:
compact /u {{path\to\file}}
μ§μ ν νμΌ μμΆ ν΄μ :
