Communitygithub.com

spstream/ai-floppy

Ritual de sessão para agentes de codificação: memória durável com commit git, um rito de início, um rito de encerramento e os guardiões que os mantêm honestos. Plugin para Claude Code + Cursor.

O que é ai-floppy?

Esta skill é um ritual de sessão projetado para agentes de codificação como Claude Code e Cursor, garantindo que o agente inicie e encerre sessões de forma consistente e com memória durável. Ela atua como um invólucro fino para o script `scripts/init.sh`, responsável por criar a estrutura de memória do repositório (diretório de memória e arquivos de notas) e o mecanismo de bloqueio de cota. A principal função da skill é fazer duas perguntas essenciais ao usuário — o diretório de memória e o idioma das notas — que o script não pode responder sozinho, e então executar o script. A implementação inclui lógica para localizar o plugin em diferentes ambientes (Claude Code, Cursor ou desenvolvimento local), usando variáveis de ambiente como `CLAUDE_PLUGIN_ROOT`, `CURSOR_PLUGIN_ROOT` e `AI_FLOPPY_HOME`. A skill é útil porque automatiza a configuração inicial, evita suposições incorretas e garante que o agente tenha uma base sólida para manter o contexto entre sessões, enquanto o script é idempotente (executar novamente não causa alterações).

Funciona com✓Claude Code~Codex CLI✓Cursor
npx skills add spscream/ai-floppy

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Init

Um invólucro fino. Todo o trabalho está em scripts/init.sh; esta skill existe para fazer as duas perguntas que o script não pode responder por si só e, em seguida, executá-lo.

1. Perguntar

Pergunte ao humano, em uma mensagem curta, por:

  • o diretório de memória — onde a memória durável deste repositório vive. Sugira .agent-memory se eles não tiverem motivos para querer outra coisa.
  • o idioma da memória — o idioma em que as notas serão escritas. Isso é independente do idioma em que o agente responde (veja agent-memory); sugira en se eles não tiverem preferência.

Não adivinhe nenhum dos valores silenciosamente — um diretório de memória errado é irritante de mover depois, e isso só precisa de uma pergunta curta.

2. Executar o script

Antes de executá-lo — esta é a metade de escrita, ele coloca arquivos em --repo . — confirme que esse diretório é o repositório que o humano pretendia configurar. Vários projetos podem estar abertos no mesmo harness ao mesmo tempo (Cursor especialmente), e o shell em que uma skill é executada não é necessariamente aquele sobre o qual o humano estava falando. Uma linha nomeando-o é suficiente.

Nenhum harness é confiável para entregar a uma skill a raiz do plugin, então não confie em uma variável sozinha. Claude Code define CLAUDE_PLUGIN_ROOT e Cursor define CURSOR_PLUGIN_ROOT (medido em 2026-08-26), mas cada um apenas em alguns contextos, e uma variável que um harness não definiu é indistinguível aqui de uma que ele definiu. Localize o plugin da mesma forma que .floppy/run o localiza depois de instalado — as duas variáveis do harness, depois AI_FLOPPY_HOME para desenvolvimento, depois o checkout mais recente sob o cache do plugin — e falhe alto, nomeando o comando de instalação, se nenhum resolver. Isso duplica a busca do shim/run (shim/run:11-26) em vez de lê-la de lá, porque .floppy/run ainda não existe neste repositório — criá-lo é a primeira coisa que o script abaixo faz — e essa busca normalmente vive no único arquivo que este plugin copia para um consumidor, que tem que permanecer autocontido. Execute:

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 não encontrado (um diretório de cache sem scripts/*.sh conta como não encontrado)." >&2
  echo "  Instale-o: /plugin marketplace add spscream/ai-floppy && /plugin install floppy" >&2
  echo "  Se estiver instalado, reinstale: `plugin update` não faz nada enquanto a versão não mudar." >&2
  exit 1
fi

bash "$floppy_root/scripts/init.sh" \
  --repo . --memory-dir <resposta deles> --language <resposta deles>

Isso só pode ser executado desta forma — através do script diretamente, não através de .floppy/run — porque .floppy/run ainda não existe neste repositório; criá-lo é a primeira coisa que o script faz.

3. Relatar

Leia a saída do próprio script de volta em forma resumida: o que foi criado e o que já estava lá e foi deixado intocado (o script diz isso por arquivo). Executar isso novamente mais tarde, no mesmo repositório, não muda nada — isso é por design, não uma limitação que valha a pena pedir desculpas.

Aponte explicitamente que quota.lock não foi criado — veja agent-memory para o motivo, e mencione que será necessária uma medição real assim que houver um corpus que valha a pena medir, não antes.

Habilidades Relacionadas