xout - Sessão X
xout, em vez de perguntar, apresenta pares contrastantes falseáveis e, com o único verbo do usuário — "marcar X" — converge a configuração do Claude Code (espaço de hipóteses de 8 eixos, 6.561 combinações). Durante a sessão, zero chamadas a LLM e zero chamadas de rede externa — todo o progresso acontece sobre um ledger local somente de acréscimos.
Regras de execução
Antes de iniciar qualquer sessão, execute obrigatoriamente
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" status primeiro para
verificar o banner de reanálise pendente e, se houver banner, repasse-o ao usuário em uma única linha.
A sessão deve ser conduzida em modo interativo (chat):
- Execute
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" pairpara obter um JSON. Os campos principais sãopair.left_text/pair.right_text/pair.pair_id. - Mostre os dois textos de comportamento exatamente como estão para o usuário e pergunte em qual deles ele quer marcar X.
- Registre apenas a escolha explícita do usuário com
python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" strike <left|right|both|pair> --pair-id <pair_id>. - Repita os passos 1-3 até que o
session_completedo JSON de resposta seja true. - Ao concluir, mostre as 8 linhas de
rulese pergunte se deseja aplicá-las. Só executeenable --grantse a resposta for sim.
Se o usuário quiser fazer diretamente no terminal, oriente-o a usar xout (ou uvx xout) — como o ledger é o mesmo, ele pode parar em qualquer lugar e continuar depois.
| Argumento | Execução | Comando | Descrição |
|---|---|---|---|
(vazio) ou chat | Laço em primeiro plano | O loop interativo acima (pair -> escolha do usuário -> strike) | Se houver 1 sessão incompleta, continua; senão, inicia nova sessão de 15 marcações |
status | Saída em primeiro plano | python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" status | Resumo de aterrissagem/ativação/retomada/julgamento |
sessions | Saída em primeiro plano | python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" sessions | Lista de sessões recentes |
doctor | Saída em primeiro plano | python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" doctor | Diagnóstico local de instalação, dados e replay |
enable | Saída em primeiro plano | python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" enable --grant | Adiciona uma única linha de @import ao CLAUDE.md quando solicitado explicitamente |
undo ou rollback | Saída em primeiro plano | python3 "${CLAUDE_PLUGIN_ROOT}/scripts/xout_plugin.py" undo | Remove apenas a linha de @import adicionada pelo xout |
Se houver um banner "N pendentes de reanálise" na saída de status
Antes de abrir uma sessão, repasse o conteúdo do banner ao usuário em uma única linha e informe que ele pode iniciar a reanálise com xout recheck no terminal. A decisão de aceitar é do usuário — não decida por ele.
Quando a sessão terminar
- O resultado é depositado exclusivamente no diretório
~/.claude/xout/(XOUT.md + manifest.json + settings.xout.json). - A ativação no CLAUDE.md do usuário é feita apenas com
enable --grantdo launcher acima, adicionando uma única linha de @import. Só execute quando o usuário concordar explicitamente. - A reversão também usa apenas o
undodo launcher (remove aquela única linha). - Antes de aplicar, use
conflicts [caminho]para mostrar, linha por linha (formato file:line), os conflitos com o arquivo de regras do projeto (CLAUDE.md/AGENTS.md/.cursorrules). Em caso de conflito frontal, o preâmbulo do XOUT.md já declara que o projeto vence. - Se as regras realmente influenciam as escolhas é medido por
probe— um comando opt-in que chama um runner externo (padrãoclaude -p) fora da sessão. Só execute quando o usuário solicitar, e os recibos ficam apenas em~/.claude/xout/probes/.
O que não fazer
- Não marque X pelo usuário — X é o ato de falseabilidade do usuário.
- Não edite diretamente o CLAUDE.md nem o settings.json — isso viola o contrato de propriedade do xout.
- Não resuma ou edite o texto do par ao mostrá-lo — o texto original é o instrumento de medição.