Estrutura de Dados
~/.claude/ck/
├── projects.json ← caminho → {name, contextDir, lastUpdated}
└── contexts/<name>/
├── 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 detectadas automaticamente. Apresente como rascunho de confirmação:
Aqui está o que encontrei — confirme ou edite qualquer coisa:
Projeto: <nome>
Descrição: <descrição>
Stack: <stack>
Objetivo: <objetivo>
Restrições: <restrições ou "Nenhuma">
Repositório: <repositorio ou "nenhum">
Aguarde a aprovação do usuário. Aplique quaisquer edições. Em seguida, pipe o JSON confirmado para save.mjs --init:
echo '<json-confirmado>' | node "$HOME/.claude/skills/ck/commands/save.mjs" --init
Esquema do JSON confirmado: {"name":"...","path":"...","description":"...","stack":["..."],"goal":"...","constraints":["..."],"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{what, why}para decisões tomadas nesta sessãoblockers: array de bloqueios atuais (array vazio se nenhum)goal: string de objetivo atualizada apenas se mudou nesta sessão, caso contrário omita
Mostre um resumo para o usuário: "Sessão: '<sumário>' — salvar isso? (sim / editar)"
Aguarde confirmação. Em seguida, pipe para save.mjs:
echo '<json>' | node "$HOME/.claude/skills/ck/commands/save.mjs"
Esquema JSON (exato): {"summary":"...","leftOff":"...","nextSteps":["..."],"decisions":[{"what":"...","why":"..."}],"blockers":["..."]}
Exiba a confirmação stdout 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. Sem perguntas adicionais.
/ck:list — Visão 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 de '<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"
Primeiro um teste:
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 é deletado.
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 ~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 com CLAUDE.md.
Regras
- Sempre expanda
~como$HOMEem chamadas Bash. - Comandos não diferenciam maiúsculas/minúsculas:
/CK:SAVE,/ck:save,/Ck:Savefuncionam. - Se um script sair com código 1, exiba sua saída padrão como mensagem de erro.
- Nunca edite
context.jsonouCONTEXT.mddiretamente — use sempre os scripts. - Se
projects.jsonestiver malformado, informe ao usuário e ofereça redefini-lo para{}.