Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Smart-merge updated ralphex defaults into customized prompts/agents
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 179% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 33% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 33% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 118% | 0% |
SCOPE: Compare current embedded defaults with user's installed config, and intelligently merge updates into customized files. Preserves user intent while incorporating structural changes.
bashwhich ralphex
If not found, guide installation:
brew install umputun/apps/ralphexgo install github.com/umputun/ralphex/cmd/ralphex@latestDo not proceed until which ralphex succeeds.
Create temp directory and dump embedded defaults:
bashDUMP_DIR=$(mktemp -d /tmp/ralphex-defaults-XXXX) ralphex --dump-defaults "$DUMP_DIR" echo "$DUMP_DIR"
Save the dump directory path for later use.
Resolve the user's config directory:
bash# check environment variable first echo "${RALPHEX_CONFIG_DIR:-}"
If RALPHEX_CONFIG_DIR is empty, use default:
~/.config/ralphex/Verify the directory exists:
bashls -la <config-dir>/
If it doesn't exist, inform user that ralphex hasn't been configured yet and there's nothing to update.
ralphex installs config, prompt, and agent files with all content commented out (every line prefixed with # ). At runtime, stripComments() removes these lines, finds nothing, and falls back to embedded defaults compiled into the binary. These all-commented files are functionally identical to missing files — they are do-nothing placeholders.
When ralphex is updated, new embedded defaults take effect automatically for every file that hasn't been customized. No file changes are needed.
A file is customized only if it contains at least one uncommented, non-empty line that was intentionally modified by the user. The --dump-defaults command produces the raw (uncommented) embedded content for comparison.
For each file in the defaults dump (config, prompts/*.txt, agents/*.txt), compare with the corresponding file in the user's config directory.
Algorithm to detect customized files: a file is customized if it contains at least one non-empty line that does NOT start with #. Files that are missing, empty, or contain only comment lines (# ...) and whitespace are do-nothing defaults.
Classify each file into one of these categories:
#)Note: files that exist only in the dump directory (no corresponding user file) are also do-nothing — do NOT offer to install them. Files that exist only in the user's config directory (no corresponding dump file) are user-created custom files — ignore them entirely.
How to compare: strip all #-prefixed lines from BOTH the user's file and the dump file, then compare the remaining non-comment content. This handles the config file where the dump has descriptive comment lines mixed with value lines — only the actual values matter for comparison.
#-prefixed lines from both sides)Show the user a summary with two groups:
ralphex config update summary:
No changes needed (N files):
prompts/task.txt, prompts/review_first.txt, agents/quality.txt, prompts/codex.txt, ...
Smart merge needed (N files):
prompts/review_second.txt, agents/implementation.txtIf nothing needs merging, report "all config files are up to date — no changes needed" and skip to cleanup.
Otherwise, use AskUserQuestion to confirm proceeding:
description: "Review and merge customized files one at a time"
description: "Show what changed without modifying anything"
If user selects "Skip, just show details": for each file needing smart merge, show the diff between the user's file and the new default, then skip to Step 6 (Cleanup) without modifying any files.
For each customized file that needs merging:
{{VARIABLE}} usage)description: "Use the proposed merged version"
description: "Keep your current version unchanged"
description: "Replace with new default (discard customizations)"
Remove the temp directory:
bashrm -rf <dump-dir>
Report final summary:
Update complete:
Skipped: N files (no changes needed)
Smart-merged: N files (M accepted, K kept)When proposing smart merges, follow these rules:
{{VARIABLE}} references were added to defaults, include them in the mergeOther measured skills in the registry, with their headline benchmark lift.