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-memoryse 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); sugiraense 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.