Communitygithub.com

spscream/ai-floppy

Rituel de session pour agents de codage : mémoire durable commitée via Git, un rituel de début, un rituel de fin, et les gardes qui les maintiennent honnêtes. Plugin pour Claude Code et Cursor.

Qu'est-ce que ai-floppy ?

Ce skill agit comme un wrapper minimal autour du script `scripts/init.sh`, conçu pour les agents de codage (Claude Code, Cursor). Son objectif principal est d'initialiser une mémoire durable pour le projet en posant deux questions clés à l'utilisateur : le répertoire de mémoire (par défaut `.agent-memory`) et la langue des notes (par défaut `en`). Une fois ces informations obtenues, il exécute le script d'initialisation qui crée la structure de fichiers nécessaire, y compris le fichier `.floppy/run`. Le skill inclut une logique robuste pour localiser le répertoire du plugin, en vérifiant d'abord les variables d'environnement (`CLAUDE_PLUGIN_ROOT`, `CURSOR_PLUGIN_ROOT`, `AI_FLOPPY_HOME`), puis en cherchant dans le cache des plugins. Il échoue avec un message d'installation clair si le plugin n'est pas trouvé. Le skill garantit que l'initialisation est idempotente : une exécution ultérieure sur le même dépôt ne modifie rien d'existant. Il informe également l'utilisateur que le fichier `quota.lock` n'est pas créé, renvoyant à `agent-memory` pour plus de détails.

Compatible avec✓Claude Code~Codex CLI✓Cursor
npx skills add spscream/ai-floppy

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

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-memory s'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érer en s'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.

Skills associés