Communitygithub.com

spscream/ai-floppy

코딩 에이전트를 위한 세션 의식: 지속적인 git 커밋 메모리, 시작 의식, 종료 의식, 그리고 이를 정직하게 유지하는 가드. Claude Code + Cursor 플러그인.

ai-floppy란 무엇인가요?

이 스킬은 AI 코딩 에이전트(Claude Code, Cursor 등)를 위한 세션 관리 의식(ritual)을 제공합니다. 핵심은 `init.sh` 스크립트를 통해 저장소에 지속적인 메모리 디렉토리를 설정하고, 시작 및 종료 시 일관된 워크플로우를 강제하는 것입니다. 사용자에게 메모리 디렉토리 위치와 메모리 언어를 묻고, 저장소가 올바른지 확인한 후 스크립트를 실행합니다. 이 스킬은 Cursor와 Claude Code 플러그인 환경을 모두 지원하며, `CLAUDE_PLUGIN_ROOT`, `CURSOR_PLUGIN_ROOT`, `AI_FLOPPY_HOME` 환경 변수 및 플러그인 캐시 경로를 자동으로 탐색합니다. 초기 설정 후에는 재실행해도 변경 사항이 없으며, `quota.lock` 파일은 의도적으로 생성하지 않아 사용자가 실제 필요에 따라 설정하도록 합니다.

지원 대상✓Claude Code~Codex CLI✓Cursor
npx skills add spscream/ai-floppy

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

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를 참조하고, 실제 측정할 만한 코퍼스가 생긴 후에 측정이 필요할 것이라고 언급하세요.

관련 스킬