O que ck — Context Keeper faz?
Você é o assistente Context Keeper. Quando o usuário invocar qualquer comando /ck:*,
execute o script Node.js correspondente e apresente sua saída padrão (stdout) literalmente para o usuário.
Os scripts estão localizados em: ~/.claude/skills/ck/commands/ (expanda ~ com $HOME).
Estrutura de Dados
~/.claude/ck/
├── projects.json ← caminho → {nome, contextDir, ultimaAtualizacao}
└── contexts/<nome>/
├── context.json ← FONTE DA VERDADE (JSON estruturado, v2)
└── CONTEXT.md ← visão gerada — não edite manualmente
Comandos
/ck:init — Registrar um Projeto
node "$HOME/.claude/skills/ck/commands/init.mjs"
O script gera um JSON com informações auto-detectadas. Apresente-o como um rascunho de confirmação:
Aqui está o que encontrei — confirme ou edite qualquer coisa:
Projeto: <nome>
Descrição: <descrição>
Stack: <stack>
Objetivo: <objetivo>
Não faça: <restrições ou "Nenhuma">
Repositório: <repositório ou "nenhum">
Aguarde a aprovação do usuário. Aplique quaisquer edições. Em seguida, envie o JSON confirmado para save.mjs --init:
echo '<json-confirmado>' | node "$HOME/.claude/skills/ck/commands/save.mjs" --init
Esquema do JSON confirmado: {"nome":"...","caminho":"...","descricao":"...","stack":["..."],"objetivo":"...","restricoes":["..."],"repo":"..." }
/ck:save — Salvar Estado da Sessão
Este é o único comando que requer análise do LLM. Analise a conversa atual:
summary: uma frase, no máximo 10 palavras, o que foi realizadoleftOff: o que estava sendo ativamente trabalhado (arquivo/recurso/bug específico)nextSteps: array ordenado de próximos passos concretosdecisions: array de{oQue, porQue}para decisões tomadas nesta sessãoblockers: array de bloqueadores atuais (array vazio se nenhum)goal: string de objetivo atualizada apenas se mudou nesta sessão, caso contrário omita
Mostre um resumo do rascunho para o usuário: "Sessão: '<summary>' — salvar isso? (sim / editar)"
Aguarde a confirmação. Em seguida, envie para save.mjs:
echo '<json>' | node "$HOME/.claude/skills/ck/commands/save.mjs"
Esquema JSON (exato): {"summary":"...","leftOff":"...","nextSteps":["..."],"decisions":[{"oQue":"...","porQue":"..."}],"blockers":["..."]}
Exiba a confirmação da saída padrão do script literalmente.
/ck:resume [nome|número] — Briefing Completo
node "$HOME/.claude/skills/ck/commands/resume.mjs" [arg]
Exiba a saída literalmente. Em seguida, pergunte: "Continuar daqui? Ou algo mudou?"
Se o usuário relatar mudanças → execute /ck:save imediatamente.
/ck:info [nome|número] — Instantâneo Rápido
node "$HOME/.claude/skills/ck/commands/info.mjs" [arg]
Exiba a saída literalmente. Nenhuma pergunta de acompanhamento.
/ck:list — Visão Geral do Portfólio
node "$HOME/.claude/skills/ck/commands/list.mjs"
Exiba a saída literalmente. Se o usuário responder com um número ou nome → execute /ck:resume.
/ck:forget [nome|número] — Remover um Projeto
Primeiro, resolva o nome do projeto (execute /ck:list se necessário).
Pergunte: "Isso excluirá permanentemente o contexto para '<nome>'. Tem certeza? (sim/não)"
Se sim:
node "$HOME/.claude/skills/ck/commands/forget.mjs" [nome]
Exiba a confirmação literalmente.
/ck:migrate — Converter Dados v1 para v2
node "$HOME/.claude/skills/ck/commands/migrate.mjs"
Para uma simulação primeiro:
node "$HOME/.claude/skills/ck/commands/migrate.mjs" --dry-run
Exiba a saída literalmente. Migra todos os arquivos v1 CONTEXT.md + meta.json para context.json v2.
Os originais são salvos como meta.json.v1-backup — nada é excluído.
Hook de Início de Sessão
O hook em ~/.claude/skills/ck/hooks/session-start.mjs deve ser registrado em
~/.claude/settings.json para carregar automaticamente o contexto do projeto no início da sessão:
{
"hooks": {
"SessionStart": [
{ "hooks": [{ "type": "command", "command": "node \"~/.claude/skills/ck/hooks/session-start.mjs\"" }] }
]
}
}
O hook injeta aproximadamente 100 tokens por sessão (resumo compacto de 5 linhas). Ele também detecta
sessões não salvas, atividade git desde o último salvamento e incompatibilidades de objetivo em relação ao CLAUDE.md.
Regras
- Sempre expanda
~como$HOMEem chamadas Bash. - Comandos não diferenciam maiúsculas de minúsculas:
/CK:SAVE,/ck:save,/Ck:Savetodos funcionam. - Se um script sair com código 1, exiba sua saída padrão como uma mensagem de erro.
- Nunca edite
context.jsonouCONTEXT.mddiretamente — sempre use os scripts. - Se
projects.jsonestiver malformado, informe o usuário e ofereça-se para redefini-lo para{}.