save-skilllisted
Install: claude install-skill UniM0cha/self-improving-skills
학습 스킬을 claude.ai 에 영속화하는 Cowork 전용 흐름입니다. 이 컨테이너의 `~/.claude/skills` 는 세션 종료 시 사라지고, **미저장 스킬은 세션 도중에도 주기적 스킬 동기화(약 10분 간격)가 삭제할 수 있으므로**(실측 2026-07-16), 증류 직후 바로 이 흐름을 실행하는 것이 안전합니다. 전송 전에 대상 SKILL.md 를 `~/.claude/skills` 밖(작업 디렉토리)에도 `cp -r` 백업해 두면 동기화 삭제에도 복원할 수 있습니다.
## 1단계 — 대상 결정
인자로 스킬 이름(들)이 주어지면 그 스킬들이 대상입니다. 인자가 없으면 **미저장 후보를 자동 감지**하세요:
```bash
python3 - <<'EOF'
import json, os
skills_dir = os.path.expanduser("~/.claude/skills")
synced = set()
try:
with open(os.path.join(skills_dir, "manifest.json"), encoding="utf-8") as fh:
for s in json.load(fh).get("skills", []):
synced.add(str(s.get("skillId") or ""))
synced.add(str(s.get("name") or ""))
except Exception:
pass
unsaved, saved = [], []
for entry in sorted(os.listdir(skills_dir)):
if entry.startswith("."):
continue
p = os.path.join(skills_dir, entry, "SKILL.md")
if not os.path.isfile(p):
continue
head = open(p, encoding="utf-8", errors="ignore").read(2048)
if "self-improving-skills" not in head and "origin: distilled" not in head:
continue # 학습 스킬만 대상 (plugin/anthropic 스킬 제외)
(saved if entry in synced else unsaved).append(entry)
print("미저장(이번 세션 생성, 세션 종료 시 소실):", unsaved or "없음")
print("저장됨(claude.ai 동기화로 존재):", saved or "없음")
EOF
```
- `미저장` 목록이 기본 대상입니다.
- `저장됨` 스킬이라도 **이번 세션에서 patch 됐다면**(사용자가 언급했거나 이 대화에서 수정한 기억이 있으면) 재저장 대상에 포함하세요 — 컨테이너 안의 수정본은 저장하지 않으면 사라집니다.
- 대상이 없으면 "저장할 학습 스킬이 없습니다"라고 한 줄 보고하고 끝내세요.
## 2단계 — 저