Communitygithub.com

spscream/ai-floppy - AIエージェント用セッション儀式

コーディングエージェントのためのセッション儀式:永続的なGitコミット済みメモリ、開始儀式、終了儀式、およびそれらを誠実に保つガード。Claude Code + Cursorプラグイン。

ai-floppy - AIエージェント用セッション儀式 とは?

このスキルは、Claude CodeやCursorなどのコーディングエージェントに対して、セッション管理と永続的なメモリ保存のための儀式的なワークフローを提供します。主な機能は、リポジトリごとに永続的なメモリディレクトリ(推奨:`.agent-memory`)と言語設定を初期化する`init.sh`スクリプトの実行です。このスキルは、スクリプトが単独では答えられない2つの質問(メモリディレクトリの場所とメモリ言語)を人間に確認し、その回答をスクリプトに渡して実行します。また、プラグインのルートディレクトリを自動的に検出する機能も備えており、Claude Codeの`CLAUDE_PLUGIN_ROOT`、Cursorの`CURSOR_PLUGIN_ROOT`、または`AI_FLOPPY_HOME`環境変数やプラグインキャッシュを検索します。初期化が完了すると、作成されたファイルと既存の変更されなかったファイルを報告し、`quota.lock`が作成されない理由(`agent-memory`の設計による)を明示的に説明します。

対応✓Claude Code~Codex CLI✓Cursor
npx skills add spscream/ai-floppy

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

初期化

薄いラッパーです。実際の処理はすべて scripts/init.sh にあります。このスキルは、スクリプトが単独では答えられない2つの質問を人間に尋ね、スクリプトを実行するために存在します。

1. 質問する

1つの短いメッセージで、人間に以下を尋ねてください:

  • メモリディレクトリ — このリポジトリの永続的なメモリが保存される場所。 特別な理由がなければ .agent-memory を提案してください。
  • メモリ言語 — メモが記述される言語。エージェントの応答言語とは独立しています(agent-memory 参照)。 特に好みがなければ en を提案してください。

どちらの値も黙って推測しないでください — 間違ったメモリディレクトリは後で移動するのが面倒であり、これはたった1つの短い質問で済むことです。

2. スクリプトを実行する

実行する前に — これは書き込みの半分で、--repo . にファイルを配置します — そのディレクトリが人間がセットアップしようとしているリポジトリであることを確認してください。複数のプロジェクトが同じハーネスで同時に開かれている可能性があり(特にCursor)、スキルが実行されるシェルは、人間が話していたシェルと同じとは限りません。一行でディレクトリ名を述べるだけで十分です。

どちらのハーネスもプラグインルートをスキルに直接渡すことは信頼できないため、変数だけに依存しないでください。Claude Codeは CLAUDE_PLUGIN_ROOT を設定し、Cursorは CURSOR_PLUGIN_ROOT を設定します(2026-08-26測定)が、それぞれ一部のコンテキストでのみ設定され、ハーネスが設定しなかった変数は、設定された変数と区別できません。.floppy/run がインストール後に自身を特定するのと同じ方法でプラグインを特定してください — 2つのハーネス変数、次に開発用の AI_FLOPPY_HOME、最後にプラグインキャッシュ下の最新のチェックアウト — どれも解決できない場合は、インストールコマンドを明示してエラーを出力してください。これは shim/run の検索(shim/run:11-26)を複製しており、そこから読み取るわけではありません。なぜなら、このリポジトリには .floppy/run がまだ存在しないためです(作成するのが以下のスクリプトの最初の処理です)。その検索は通常、このプラグインがコンシューマにコピーする1つのファイルに含まれ、自己完結している必要があります。実行:

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 を参照し、測定に値するコーパスができてから実際の測定が必要になることを言及してください。それまでは必要ありません。

関連スキル