Skip to content
Back to skills

Update Ralph X

BSecurity

ralph-x 최신 버전 확인 및 업데이트

  • 3 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added May 27, 2026
data-aipythonbashgit

Security analysis

B85/100
  • highPerforms destructive filesystem operations

Pro shows the line behind each finding and how to fix it

Scanned May 27, 2026

npx -y skills add kangraemin/ralph-x --skill update-ralph-x --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Update Ralph X?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Update Ralph X
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/kangraemin-update-ralph-x/badge)](https://www.skillsdirectory.com/skills/kangraemin-update-ralph-x)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: update-ralph-x
description: ralph-x 최신 버전 확인 및 업데이트
allowed-tools: [Bash, Read, Write, Glob]
---

# /update-ralph-x

**Respond in the same language the user uses.** Korean → Korean. English → English.

## Step 1: 설치 경로 확인 + bootstrap

아래 코드를 **그대로** 실행한다. 경로나 파일명을 변경하지 않는다.

```bash
INSTALL_PATH=$(python3 -c "
import json
data = json.load(open('$HOME/.claude/plugins/installed_plugins.json'))
entries = data.get('plugins', {}).get('ralph-x@ralph-x', [])
print(entries[0]['installPath'] if entries else '')
")
SCRIPT="$INSTALL_PATH/scripts/update-check.sh"
if [ ! -f "$SCRIPT" ]; then
  mkdir -p "$INSTALL_PATH/scripts"
  curl -sf "https://raw.githubusercontent.com/kangraemin/ralph-x/main/scripts/update-check.sh" \
    -o "$SCRIPT" && chmod +x "$SCRIPT"
fi
echo "SCRIPT=$SCRIPT"
echo "EXISTS=$([ -f "$SCRIPT" ] && echo yes || echo no)"
```

- `EXISTS=no` → "update-check.sh를 다운로드할 수 없습니다." 출력 후 종료
- `EXISTS=yes` → Step 2 진행. `$SCRIPT` 값을 기억해둔다.

## Step 2: 버전 확인

Step 1에서 얻은 `$SCRIPT` 경로를 그대로 사용:

```bash
bash "<Step 1에서 출력된 SCRIPT 경로>" --check-only
```

## Step 3: 결과 처리

- `status: up-to-date` → "최신 버전입니다 (SHA)" 출력 → Step 5로 이동
- `status: update-available` → 현재/최신 SHA 보여주고 업데이트 여부 확인

## Step 4: 업데이트 실행

사용자 승인 시:

```bash
bash "<Step 1에서 출력된 SCRIPT 경로>" --force
```

## Step 4.5: .claude/ralph-x-runs/ 디렉토리 이동

아래 코드를 **그대로** 실행한다:

```bash
python3 -c "
import os, shutil, sys

old_dir = '.claude/ralph-x-runs'
new_dir = 'ralph-x-runs'

if not os.path.isdir(old_dir):
    print('NO_OLD_DIR')
    sys.exit(0)

os.makedirs(new_dir, exist_ok=True)

moved = []
skipped = []
for item in os.listdir(old_dir):
    src = os.path.join(old_dir, item)
    dst = os.path.join(new_dir, item)
    if os.path.exists(dst):
        skipped.append(item)
    else:
        shutil.move(src, dst)
        moved.append(item)

print(f'MOVED:{len(moved)} SKIPPED:{len(skipped)}')
if moved:
    print('moved: ' + ', '.join(moved))
if skipped:
    print('skipped (already exists): ' + ', '.join(skipped))
"
```

- `NO_OLD_DIR` → "이동 대상 없음 (.claude/ralph-x-runs/ 없음)"
- `MOVED:N SKIPPED:M` → 결과 출력 후 "`.claude/ralph-x-runs/`를 삭제할까요?" 확인. 승인 시 `rm -rf .claude/ralph-x-runs`

## Step 5: 프리셋 마이그레이션

아래 Python 코드를 **그대로** 실행한다:

```bash
python3 -c "
import json, os, sys

old_paths = [
    '.claude/ralph-x-runs/presets.json',
    '.claude/ralph-x-presets.json',
    '.ralph-x/state.json',
]
new_dir = 'ralph-x-runs'
new_path = os.path.join(new_dir, 'presets.json')

# 구경로에서 프리셋 수집
old_presets = {}
found_old = []
for p in old_paths:
    if os.path.isfile(p):
        try:
            with open(p) as f:
                data = json.load(f)
            old_presets.update(data)
            found_old.append(p)
        except:
            pass

if not found_old:
    print('NO_OLD_PRESETS')
    sys.exit(0)

# 신경로 존재 시 merge
if os.path.isfile(new_path):
    with open(new_path) as f:
        new_data = json.load(f)
    merged = 0
    for k, v in old_presets.items():
        if k not in new_data:
            new_data[k] = v
            merged += 1
    with open(new_path, 'w') as f:
        json.dump(new_data, f, indent=2, ensure_ascii=False)
    print(f'MERGED:{merged}')
else:
    os.makedirs(new_dir, exist_ok=True)
    with open(new_path, 'w') as f:
        json.dump(old_presets, f, indent=2, ensure_ascii=False)
    print(f'MIGRATED:{len(old_presets)}')

# 구 아티팩트 목록
artifacts = [
    '.claude/ralph-x-runs/presets.json',
    '.claude/ralph-x-presets.json',
    '.claude/ralph-x-run.sh',
    '.claude/ralph-x-log.md',
    '.claude/ralph-x-checklist.md',
    '.ralph-x/state.json',
]
existing = [a for a in artifacts if os.path.isfile(a)]
if existing:
    print('OLD_FILES:' + ','.join(existing))
"
```

- `NO_OLD_PRESETS` → "마이그레이션 대상 없음"
- `MIGRATED:N` → "N개 프리셋 마이그레이션 완료"
- `MERGED:N` → "N개 프리셋 merge 완료"
- `OLD_FILES:...` → 목록 출력 후 "이전 파일들을 삭제할까요?" 확인. 승인 시 `rm -f <파일들>`

## Step 6: 완료

결과 요약 출력.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…