Init
얇은 래퍼입니다. 모든 작업은 scripts/init.sh에 있으며; 이 스킬은 스크립트가 스스로 답할 수 없는 두 가지 질문을 한 후 실행하기 위해 존재합니다.
1. 질문
한 줄의 짧은 메시지로 사람에게 다음을 물어보세요:
- 메모리 디렉토리 — 이 저장소의 지속적인 메모리가 위치한 곳입니다.
특별한 이유가 없다면
.agent-memory를 제안하세요. - 메모리 언어 — 노트가 작성될 언어입니다. 에이전트가 응답하는 언어와는 무관합니다 (
agent-memory참조); 선호하는 언어가 없으면en을 제안하세요.
어느 값도 조용히 추측하지 마세요 — 잘못된 메모리 디렉토리는 나중에 이동하기 번거롭고, 이 과정은 단 한 번의 짧은 질문만 필요합니다.
2. 스크립트 실행
실행하기 전 — 이는 쓰기 절반으로, --repo .에 파일을 배치합니다 — 해당 디렉토리가 사람이 설정하려는 저장소인지 확인하세요. 여러 프로젝트가 동시에 같은 환경에서 열릴 수 있으며 (특히 Cursor), 스킬이 실행되는 셸이 사람이 이야기하고 있던 셸과 반드시 일치하지는 않습니다. 이름을 한 줄로 언급하는 것으로 충분합니다.
어느 환경도 스킬에 플러그인 루트를 신뢰할 수 있게 전달하지 않으므로 변수 하나에만 의존하지 마세요. Claude Code는 CLAUDE_PLUGIN_ROOT를 설정하고 Cursor는 CURSOR_PLUGIN_ROOT를 설정하지만 (2026-08-26 측정), 각각 일부 컨텍스트에서만 설정되며, 환경이 설정하지 않은 변수는 여기서 설정된 것과 구별할 수 없습니다. 설치 후 .floppy/run이 플러그인을 찾는 것과 동일한 방식으로 플러그인을 찾으세요 — 두 환경 변수, 그 다음 개발용 AI_FLOPPY_HOME, 그 다음 플러그인 캐시 아래에서 가장 최신 체크아웃 — 그리고 어느 것도 해결되지 않으면 설치 명령을 명시하며 실패하세요. 이는 .floppy/run이 이 저장소에 아직 존재하지 않기 때문에 (아래 스크립트가 처음 만드는 것) shim/run의 검색(shim/run:11-26)을 거기서 읽지 않고 복제합니다. 다음을 실행하세요:
has_scripts() { [[ -n "${1:-}" ]] && ls "$1"/scripts/*.sh >/dev/null 2>&1; }
if has_scripts "${CLAUDE_PLUGIN_ROOT:-}"; then
floppy_root="$CLAUDE_PLUGIN_ROOT"
elif has_scripts "${CURSOR_PLUGIN_ROOT:-}"; then
floppy_root="$CURSOR_PLUGIN_ROOT"
elif has_scripts "${AI_FLOPPY_HOME:-}"; then
floppy_root="$AI_FLOPPY_HOME"
else
floppy_root="$(ls -d "$HOME"/.claude/plugins/cache/*/floppy/*/ 2>/dev/null | sort -V | tail -n1)"
fi
if ! has_scripts "$floppy_root"; then
echo "x floppy plugin not found (a cache directory with no scripts/*.sh counts as not found)." >&2
echo " Install it: /plugin marketplace add spscream/ai-floppy && /plugin install floppy" >&2
echo " If it is installed, reinstall: `plugin update` is a no-op while the version is unchanged." >&2
exit 1
fi
bash "$floppy_root/scripts/init.sh" \
--repo . --memory-dir <their answer> --language <their answer>
이는 스크립트를 직접 통해서만 실행할 수 있습니다 — .floppy/run을 통해서가 아닙니다 — 왜냐하면 .floppy/run이 이 저장소에 아직 존재하지 않기 때문입니다; 생성하는 것이 스크립트가 가장 먼저 하는 일입니다.
3. 보고
스크립트 자체의 출력을 짧은 형식으로 다시 읽으세요: 무엇이 생성되었고, 무엇이 이미 있었으며 변경되지 않았는지 (스크립트가 파일별로 알려줍니다). 나중에 같은 저장소에서 다시 실행해도 아무것도 바뀌지 않습니다 — 이는 설계된 것이며, 사과할 가치가 있는 제한 사항이 아닙니다.
quota.lock이 생성되지 않았음을 명시적으로 지적하세요 — 이유는 agent-memory를 참조하고, 실제 측정할 만한 코퍼스가 생긴 후에 측정이 필요할 것이라고 언급하세요.