Init
Un wrapper minimal. Tout le travail se trouve dans scripts/init.sh ; ce skill existe pour
poser les deux questions auxquelles le script ne peut pas répondre seul, puis l'exécuter.
1. Demander
Demander à l'humain, en un seul message court, pour :
- le répertoire de mémoire — où se trouve la mémoire durable de ce dépôt.
Suggérer
.agent-memorys'il n'a aucune raison d'en choisir un autre. - la langue de mémoire — la langue dans laquelle les notes sont écrites. Ceci est
indépendant de la langue dans laquelle l'agent répond (voir
agent-memory) ; suggérerens'il n'a pas de préférence.
Ne devinez aucune des deux valeurs en silence — un mauvais répertoire de mémoire est fastidieux à déplacer plus tard, et cela ne nécessite qu'une seule question courte.
2. Exécuter le script
Avant de l'exécuter — c'est la partie écriture, il place des fichiers dans --repo .
— confirmez que ce répertoire est bien le dépôt que l'humain voulait configurer.
Plusieurs projets peuvent être ouverts dans le même harnais simultanément (Cursor en
particulier), et le shell dans lequel un skill s'exécute n'est pas nécessairement celui
dont l'humain parlait. Une ligne le nommant suffit.
Aucun harnais n'est fiable pour transmettre la racine du plugin à un skill, donc ne vous
fiez pas à une seule variable. Claude Code définit CLAUDE_PLUGIN_ROOT et Cursor définit
CURSOR_PLUGIN_ROOT (mesuré le 2026-08-26), mais chacun seulement dans certains contextes, et
une variable qu'un harnais n'a pas définie est ici impossible à distinguer de celle qu'il a
définie. Localisez le plugin de la même manière que .floppy/run le localise une fois
installé — les deux variables du harnais, puis AI_FLOPPY_HOME pour le développement, puis
le checkout le plus récent dans le cache du plugin — et échouez bruyamment, en nommant la
commande d'installation, si aucun ne se résout. Cette
duplication de la recherche de shim/run (shim/run:11-26) plutôt que sa lecture depuis
cet emplacement est nécessaire car .floppy/run n'existe pas encore dans ce dépôt —
le créer est la première chose que fait le script ci-dessous — et cette recherche
se trouve normalement dans le seul fichier que ce plugin copie chez un consommateur, qui
doit rester autonome. Exécutez :
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 plugin floppy introuvable (un répertoire cache sans scripts/*.sh est considéré comme introuvable)." >&2
echo " Installez-le : /plugin marketplace add spscream/ai-floppy && /plugin install floppy" >&2
echo " S'il est installé, réinstallez : `plugin update` est une opération nulle tant que la version est inchangée." >&2
exit 1
fi
bash "$floppy_root/scripts/init.sh" \
--repo . --memory-dir <leur réponse> --language <leur réponse>
Cela ne peut fonctionner que de cette manière — via le script directement, pas via
.floppy/run — car .floppy/run n'existe pas encore dans ce dépôt ;
le créer est la première chose que fait le script.
3. Rapporter
Relisez la sortie du script lui-même sous forme résumée : ce qui a été créé, et ce qui était déjà présent et laissé intact (le script l'indique par fichier). Relancer cette commande plus tard, sur le même dépôt, ne change rien — c'est voulu, pas une limitation qui mérite des excuses.
Signalez explicitement que quota.lock n'a pas été créé — voir
agent-memory pour la raison, et mentionnez qu'il faudra une vraie mesure une fois
qu'il y aura un corpus digne d'être mesuré, pas avant.