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