@jefferylau/euphony-skills
v0.1.3
Published
Install Euphony viewer skills for Codex and CodeBuddy.
Downloads
575
Readme
Euphony Skills
Install local Euphony viewer skills for Codex and CodeBuddy.
This repository contains two independent skills with one npm-based installer:
skills/codex-euphony: opens local Codex session JSONL logs in OpenAI Euphony.skills/codebuddy-euphony: converts local CodeBuddy CLI JSONL logs and CodeBuddy CN desktop history into an Euphony-compatible shape and opens them in OpenAI Euphony.
The npm CLI is the recommended install path because it installs the selected skill plus the shared local Euphony runtime helper used by both host applications.
Requirements
- Node.js 18 or newer.
git, used when a skill needs to clone the Euphony runtime checkout.pnpmorcorepack, used to install and run Euphony.- macOS, Linux, or Windows with a local browser opener.
The installer itself does not install Euphony dependencies. The selected skill does that lazily the first time it starts Euphony.
At runtime the skill prefers an installed pnpm; when only Corepack is available, it uses corepack pnpm and sets COREPACK_INTEGRITY_KEYS=0 for that subprocess to avoid known Corepack pnpm signature bootstrap failures.
Quick Install
Install from npm after the package is published:
npx @jefferylau/euphony-skills install codex
npx @jefferylau/euphony-skills install codebuddy
npx @jefferylau/euphony-skills install allReplace an existing install:
npx @jefferylau/euphony-skills install all --forceRemove installed skills:
npx @jefferylau/euphony-skills uninstall allCheck local state:
npx @jefferylau/euphony-skills doctorRestart Codex or CodeBuddy after installing so the host application reloads skills.
Local Checkout Install
From a cloned repository:
git clone https://github.com/liiujinfu/euphony-skills.git
cd euphony-skills
node bin/euphony-skills.mjs install all --forceFor local development, install with symlinks so edits in this repository are picked up immediately:
node bin/euphony-skills.mjs install all --force --linkFor normal end users, prefer copy install without --link.
Install Targets
Codex installs to:
${CODEX_HOME:-~/.codex}/skills/codex-euphonyCodeBuddy installs to:
${CODEBUDDY_HOME:-~/.codebuddy}/skills/codebuddy-euphonyOverride host homes when needed:
CODEX_HOME=/custom/.codex npx @jefferylau/euphony-skills install codex
CODEBUDDY_HOME=/custom/.codebuddy npx @jefferylau/euphony-skills install codebuddyCLI Reference
euphony-skills install codex [--force] [--link]
euphony-skills install codebuddy [--force] [--link]
euphony-skills install all [--force] [--link]
euphony-skills uninstall codex
euphony-skills uninstall codebuddy
euphony-skills uninstall all
euphony-skills doctorOptions:
--force: replace an existing install.--link: create a symlink from the host skill directory to this checkout. Use this for development only.
Using The Skills
After installing and restarting the host app, ask the assistant to open the latest session with Euphony.
Codex examples:
Use codex-euphony to open the latest Codex session.
Open this Codex conversation in Euphony.CodeBuddy examples:
Use codebuddy-euphony to open the latest CodeBuddy session.
Open this CodeBuddy conversation in Euphony.You can also run the scripts directly.
Codex:
node ~/.codex/skills/codex-euphony/scripts/codex-euphony.mjs current
node ~/.codex/skills/codex-euphony/scripts/codex-euphony.mjs open
node ~/.codex/skills/codex-euphony/scripts/codex-euphony.mjs status
node ~/.codex/skills/codex-euphony/scripts/codex-euphony.mjs stopopen, url, and stage prefer the current Codex session when CODEX_THREAD_ID is available. They fall back to the newest session file if the current id cannot be resolved. You can also pass a session file path, full session id, current, or latest.
CodeBuddy:
~/.codebuddy/skills/codebuddy-euphony/scripts/codebuddy-euphony.mjs list
~/.codebuddy/skills/codebuddy-euphony/scripts/codebuddy-euphony.mjs current
~/.codebuddy/skills/codebuddy-euphony/scripts/codebuddy-euphony.mjs open
~/.codebuddy/skills/codebuddy-euphony/scripts/codebuddy-euphony.mjs open-desktop
~/.codebuddy/skills/codebuddy-euphony/scripts/codebuddy-euphony.mjs status
~/.codebuddy/skills/codebuddy-euphony/scripts/codebuddy-euphony.mjs stopopen prefers the current CodeBuddy session when a session/conversation/thread id or workspace path can be matched, then falls back to the newest CodeBuddy session across CLI and desktop sources. open-desktop forces the newest CodeBuddy CN desktop conversation.
Runtime Behavior
The installer only copies or links skill source folders and their shared runtime helper. It does not copy session logs, generated JSONL files, local caches, or Euphony checkouts.
At runtime:
- Codex uses
${CODEX_HOME:-~/.codex}/cache/euphony. - CodeBuddy uses
${CODEBUDDY_HOME:-~/.codebuddy}/cache/euphony. - CodeBuddy CLI sessions are read from
${CODEBUDDY_HOME:-~/.codebuddy}/projects. - CodeBuddy CN desktop sessions are read from
CodeBuddyExtension/Dataunder the OS application data directory. SetCODEBUDDY_DESKTOP_DATA_DIRif the desktop app stores data elsewhere. - If the cache is deleted, the skill recreates it on the next command that needs Euphony.
- The local Euphony server binds to
127.0.0.1. - The default port is
3000. - When
EUPHONY_PORTis not set, the CodeBuddy skill automatically tries3001through3003if the default port is already used by another checkout, and keeps the page URL and staged JSONL URL on the same selected port. - Codex staging uses a symlink on macOS/Linux and a copy on Windows by default. Set
EUPHONY_STAGE_MODE=copyto force snapshot staging everywhere. - Background servers are tracked with a pid file under the Euphony cache, so
stoponly controls servers started by the same skill script.
If port 3000 is already occupied, use another port:
EUPHONY_PORT=3001 node ~/.codex/skills/codex-euphony/scripts/codex-euphony.mjs open
EUPHONY_PORT=3001 ~/.codebuddy/skills/codebuddy-euphony/scripts/codebuddy-euphony.mjs openWindows PowerShell example:
$env:EUPHONY_PORT = "3001"
node "$env:USERPROFILE\.codex\skills\codex-euphony\scripts\codex-euphony.mjs" openPrivacy
Session files can contain prompts, paths, tool output, and secrets that appeared in conversations. The skills serve staged session data only from a local 127.0.0.1 Euphony instance.
Do not commit generated session files, staged JSONL output, .env files, or Euphony cache directories. This repository's package contents are limited to the CLI, README files, LICENSE, skill source files, and shared runtime helper.
Troubleshooting
If a host app does not see the skill, restart Codex or CodeBuddy after installation.
If installation says the skill already exists, rerun with --force:
npx @jefferylau/euphony-skills install codebuddy --forceIf Euphony fails to start, check prerequisites:
npx @jefferylau/euphony-skills doctorIf CodeBuddy desktop sessions do not appear in list, point the script at the desktop data directory:
CODEBUDDY_DESKTOP_DATA_DIR="/path/to/CodeBuddyExtension/Data" ~/.codebuddy/skills/codebuddy-euphony/scripts/codebuddy-euphony.mjs listIf CodeBuddy does not expose a session id to the skill process, pin current-session detection to the workspace:
CODEBUDDY_WORKSPACE_DIR="/path/to/workspace" ~/.codebuddy/skills/codebuddy-euphony/scripts/codebuddy-euphony.mjs currentIf npm reports cache permission errors, use a temporary cache or repair the npm cache ownership:
npm_config_cache=/tmp/euphony-skills-npm-cache npx @jefferylau/euphony-skills doctorIf multiple Euphony servers are running, stop the relevant one or choose a different port:
node ~/.codex/skills/codex-euphony/scripts/codex-euphony.mjs stop
~/.codebuddy/skills/codebuddy-euphony/scripts/codebuddy-euphony.mjs stopDevelopment
Run checks:
npm run checkTest install behavior without touching real homes:
CODEX_HOME=/tmp/euphony-test-codex \
CODEBUDDY_HOME=/tmp/euphony-test-codebuddy \
node bin/euphony-skills.mjs install all --forceTest symlink install behavior:
CODEX_HOME=/tmp/euphony-test-codex \
CODEBUDDY_HOME=/tmp/euphony-test-codebuddy \
node bin/euphony-skills.mjs install all --force --link