sfx is a single-file uv script that synthesises sounds from sine partials and seeded noise, so its output contains no samples, SoundFonts or model output, renders without a network once uv has installed numpy and mido, and comes out byte-identical on every run. Each sound in a recipe is normalised to a target loudness (ITU-R BS.1770, default -26 LUFS, the level of the macOS Glass alert) and written as WAV, with optional MP3 through ffmpeg and a MIDI file of the same notes. Unknown keys and bad note names stop the render with an error naming the table.
The new sound-design skill documents the recipe format and how to design notification sounds; link-ai-configs.sh links it for omo and Claude Code.
Re-copy .opencode/skills/impeccable from upstream tag skill-v4.6.0
(8a0e198, engine 0.1.15), keep LICENSE, and re-apply the OmO path
rewrite and the critique routing line.
The documented rewrite missed the base-directory fallback in SKILL.md,
which ends at scripts rather than scripts/impeccable, so the upgrade
command now rewrites the scripts directory prefix. The skills README
also notes that the engine binary is downloaded by scripts/VERSION
rather than vendored.
- Move the vendored skills from .config/opencode/skills to
.config/omo/skills, with provenance and local changes in its README
- Rewrite Impeccable's script paths to ~/.omo/agent/skills/impeccable so
its detector and live-server verbs resolve under omo
- frontend-workflow hands screenshots to a visual-engineering task
instead of opencode run
- Move the notes commands and /impeccable to .config/omo/prompts as omo
prompt templates; setup-mcp stays behind because it writes
opencode.json
- Archive DEVELOPMENT-WORKFLOW.md and UI-WORKFLOW.md under
.config/omo/archive; nothing loads them
- link-ai-configs.sh links the skills into omo and Claude Code only and
stops linking OpenCode's config, TUI, plugins and workflow docs
- setup-mac.sh and Brewfile.apps stop installing OpenCode; README and
.withcontextconfig.jsonc follow the new layout
~/.config/opencode/AGENTS.md stays linked: omo's rules engine reads it
before ~/.claude/CLAUDE.md and stops at the first hit, so it carries the
shared preferences and keeps OMC's instructions out of omo.