Retomar projeto
Quando uma sessão abre, o que importa das anteriores está espalhado por vários lugares. Esta habilidade faz o caminho de volta: ela reúne, verifica com as informações mais recentes disponíveis e informa ao usuário em poucas linhas, para que ele possa decidir o que trabalhar hoje sem precisar lembrar de nada.
Quatro coisas moldam como funciona:
- Somente leitura. Não escreve em nenhum arquivo, nota, banco de dados ou memória. É por isso que não pede permissão para cada etapa: ler não altera nada. Copiar um arquivo do computador do usuário para a sessão para lê-lo conta como leitura. A única escrita permitida é
git fetch --prune, e somente ondereferences/claude-code.mddisser. Dar acesso da sessão a um novo repositório não é apenas leitura: não faça isso por conta própria (veja a linha do GitHub no passo 0). Hooks de outros plugins podem escrever quando a sessão abre (consolidando memória, salvando logs): isso não é escrita desta habilidade e não precisa ser mencionado, a menos que mude uma fonte que você está prestes a ler. - Lê arquivos, não inicia fluxos de trabalho. Várias habilidades, quando iniciadas, escrevem telemetria ou estado, criam pastas, pedem seu próprio formato de saída ou terminam com sua própria pergunta. Quando você sabe onde uma habilidade armazena seus dados, leia esse arquivo diretamente. Inicie a habilidade apenas se não houver outra maneira e, nesse caso, pegue seus dados, pule sua pergunta final e seu formato, e pare qualquer etapa que escreva.
- Instruções do projeto têm precedência. Se as instruções do projeto, um
CLAUDE.mdou as preferências do usuário disserem onde o estado vive, quais pastas podem ser lidas, como conflitos são resolvidos ou como o dia é planejado, isso vem antes desta habilidade. - Termina com uma pergunta e uma entrega. Uma habilidade de fechamento de sessão (por exemplo, wrap-up) termina dizendo que a sessão pode ser arquivada; esta termina perguntando o que trabalhar hoje e passando a resposta adiante (passo 6).
0. Inventário: o que você pode realmente ler
Não escolha as fontes pelo nome do ambiente. A mesma sessão pode estar na nuvem, dentro de um projeto claude.ai e vinculada ao computador do usuário ao mesmo tempo. Antes de ler qualquer coisa, observe as ferramentas que a sessão tem (incluindo as adiadas, pesquisando por elas) e anote quais destas capacidades estão presentes:
| Capacidade | Como reconhecê-la | Fontes que abre |
|---|---|---|
| Terminal no repositório | A pasta de trabalho é um dos repositórios do usuário, ou há um terminal no computador dele (device_bash ou similar) com o repositório em uma pasta conectada | Git e o remoto (C), com references/claude-code.md |
| Arquivos do computador sem terminal | Ferramentas para listar e copiar arquivos do computador, sem terminal | Cofre (D), registro de sessão (B, se a configuração escrever um) e passagens de bastão (E) se estiverem em uma pasta conectada, e o CLAUDE.md de um repositório cuja pasta está conectada (D). Não git local |
| GitHub sem terminal no repositório | gh instalado na sessão, ou uma ferramenta para adicionar repositórios à sessão | Pull requests, branches e commits no remoto (C2) |
| Gerenciador de projetos | Um conector do Notion ou outro gerenciador de projetos, mais instruções ou um CLAUDE.md que diga qual banco de dados ou página contém os projetos | Status, próxima ação e tarefas (A) |
| Chats anteriores | Ferramentas para pesquisar ou listar chats | Chats (F), com references/claude-ai.md |
| Sessões do Claude Code | Ferramentas para listar ou pesquisar sessões do aplicativo de desktop (list_sessions, search_session_transcripts, list_events ou similar) | Sessões anteriores (F2), com references/claude-code.md |
| Artefatos publicados | Ferramentas para listar artefatos, páginas ou documentos publicados (Artifact com list, ou similar) | Entregáveis fora do repositório (I) |
| Memória | Memória no contexto, ou ferramentas de memória | Memória (G) |
| Projeto claude.ai | Instruções do projeto ou arquivos no contexto, ou uma ferramenta de projeto | Instruções e arquivos (H) |
As referências dão o detalhe para git (references/claude-code.md), para chats claude.ai (references/claude-ai.md) e para um registro de sessão por projeto escrito por um hook (references/session-log.md). Leia apenas a que for aberta por uma capacidade que você tem, e session-log.md apenas se a configuração escrever tal registro. Se uma referência disser que algo não está lá (cofre, disco, git) e o inventário disser que está, o inventário vence. Se uma referência estiver faltando, prossiga com o que este arquivo diz.
Se a sessão tiver muitas ferramentas adiadas, não carregue todas para fazer o inventário: pesquise as palavras na tabela (notion, session, transcript, chat, memory, project, repository, artifact) e carregue o esquema apenas para aquelas que você usará. gh não é uma ferramenta de sessão, mas um programa: verifique com gh auth status. Se os nomes das ferramentas adiadas já estiverem visíveis no contexto, escolha dessa lista e carregue apenas essas, sem pesquisar.
As letras das fontes neste arquivo (A a I) não são as de claude-code.md (A a H): E aqui são passagens de bastão, enquanto E naquela referência é o CLAUDE.md. Quando este arquivo citar uma categoria de claude-code.md, cite-a pelo nome; procure pelo nome, não pela letra.
Pastas permitidas. Leia apenas as pastas que o usuário conectou à sessão ou que suas instruções permitem ler, e que a sessão pode realmente alcançar. Não peça acesso a nenhuma delas para retomar. Coloque tudo que estiver fora do alcance em uma única linha "Aviso":
- fontes úteis fora das pastas conectadas (por exemplo
~/.gstackna pasta inicial, em uma sessão sem terminal); - pastas que as instruções permitem ler, mas que não estão conectadas (por exemplo a própria pasta de um projeto). Se uma delas pertencer a um projeto que aparece no resumo, adicione que tudo o que se sabe sobre aquele projeto é o que o gerenciador de projetos diz.
1. Qual projeto é
- Um repositório, uma pasta ou um nome. Se a sessão estiver em um repositório, esse é o projeto. Se o usuário nomear um, procure-o no gerenciador de projetos (A) e no cofre (D), sem diferenciar maiúsculas de minúsculas e tentando os apelidos que a memória dá: os nomes podem não coincidir, e um projeto pode estar no meio de uma renomeação.
- Um guarda-chuva. Se o contexto for um espaço com vários projetos (um projeto claude.ai que organiza todo o trabalho, um gerenciador de projetos com um banco de dados de projetos, um cofre com várias pastas) e o usuário não nomear um, não escolha silenciosamente. Escreva um resumo de múltiplos projetos (passo 4) com aqueles que têm a atividade mais recente e aqueles que as instruções marcam como prioridade de curto prazo.
- O que o usuário considera garantido. Se a mensagem de abertura afirmar um estado (uma operação git inacabada, um branch, um PR, um deployment), verifique-o nas fontes assim que as ler: o instantâneo rápido do git, GitHub ou, se houver, o registro de sessão. Se não coincidir, diga isso em uma linha antes do resumo, com o que cada um diz. Se o que nomeia pertencer a outro projeto (outra pasta, repositório ou nota), pergunte qual está sendo retomado antes de ler mais; em uma sessão sem usuário, prossiga com o projeto da pasta de trabalho e diga isso no início do resumo.
- Nada para retomar. Nenhuma nota, registro, chat ou commit: diga isso em uma frase e vá para o passo 6 com o que o usuário quiser fazer.
Como o mesmo projeto é combinado entre fontes
O gerenciador de projetos, o cofre e, se houver, o registro de sessão nomeiam projetos cada um à sua maneira. Combine-os por chaves, nesta ordem, e não pelo nome simples:
- Caminho. Se a configuração escrever um registro de sessão, seu caminho contra o campo
path:no frontmatter da nota do cofre (D), como "Combinando por caminho" emreferences/session-log.mddescreve. - Link do gerenciador de projetos. O campo do gerenciador de projetos que aponta para a nota (no Notion, por exemplo, um campo como "Nota Obsidian"), contra a pasta da nota.
- Nome. Sem diferenciar maiúsculas de minúsculas e com os apelidos da memória.
Se um projeto no gerenciador de projetos não vincular sua nota, mas a nota existir (coincide por caminho ou nome), diga isso em "Aviso" em uma linha.
2. Fontes, na ordem de leitura
Primeiro o que diz quanto cada nota vale (o que realmente aconteceu e quando), depois o que diz o que vem a seguir e, finalmente, o porquê.
B. Registro de sessão, opcional. Se a configuração escrever um, siga references/session-log.md.
C. Git e o remoto. Apenas com um terminal no repositório. Siga o "Instantâneo rápido do git" e a categoria "Estado real do git e do remoto" de references/claude-code.md.
C2. GitHub sem terminal. Use para confirmar o que as fontes locais não podem saber: se um branch foi enviado, se tem um pull request e se foi mergeado. Obtenha owner/repository da nota do projeto no cofre (campo url: ou uma linha github.com/...), do CLAUDE.md ou, se houver um registro de sessão, de seus commits Merge pull request #N from <owner>/....
- Primeiro verifique se a sessão já tem acesso com uma leitura:
gh api "repos/<owner>/<repo>/pulls?state=all&sort=updated&direction=desc&per_page=10". Use a API REST (gh api repos/...):gh pr listpode falhar porque o GraphQL nem sempre está disponível. Cada PR temcreated_atemerged_at: quando entrou é dado pormerged_at, não pela data de criação. - Se responder, leia também os branches (
repos/<owner>/<repo>/branches) e os commits mais recentes no branch principal (repos/<owner>/<repo>/commits?per_page=5). Com isso, um branch não mergeado que outra fonte nomeie se torna "tem PR aberto #N", "mergeado" ou "não está no remoto". - Leia também o CI do branch principal (
repos/<owner>/<repo>/actions/runs?branch=<main>&per_page=1). Se a última execução falhou, vai em "Pendente"; se passou, não mencionar; se não houver execução alguma (o repositório não tem CI), também não mencionar. - Se responder que o repositório não está habilitado para a sessão, não o adicione por conta própria: conceder acesso a um repositório não é apenas leitura. Anote em "Aviso" e ofereça como opção no passo 5 ("Confirmar no GitHub"). Em uma sessão sem usuário, pule.
A. Gerenciador de projetos. Se as instruções disserem que status, prioridade ou próxima ação vivem em um gerenciador de projetos (Notion ou outro), leia: é a fonte para o que vem a seguir. Obtenha o endereço do banco de dados das instruções ou do CLAUDE.md; não pesquise pelo nome se já o tiver.
- No Notion: obtenha o esquema do banco de dados e consulte as linhas com seu link (
url), nome, área ou branch, status, prioridade, data-chave, próxima ação e nota. - Arquivados. Remova as linhas que o Notion arquivou e, se o banco de dados também tiver sua própria caixa de seleção ou status para isso (por exemplo uma caixa "Arquivado" ou um status "Fechado"), também as que o tiverem marcado.
- Datas de edição. A consulta não retorna a data da última edição. Abra a página das linhas que você verificará contra outra fonte e, em um guarda-chuva, também as dos projetos que as instruções marcam como prioridade de curto prazo, mesmo que não tenham registro ou nota: assim projetos sem código também podem entrar em "Onde você parou".
- Edições em massa. Se várias páginas no mesmo banco de dados tiverem datas de edição com alguns segundos de diferença, foi uma mudança feita em todas ao mesmo tempo (um novo campo, uma importação, um template), não trabalho naqueles projetos. Não use essa data como atividade: deixe esses projetos sem data, a menos que outra fonte lhes dê uma data.
- Tarefas. Se as instruções nomearem um banco de dados de tarefas, obtenha seu esquema e consulte as tarefas não concluídas que estão vencidas ou com vencimento nos próximos sete dias. Apenas as de projetos que aparecem no resumo contam: as de projetos pausados, fechados ou fora do resumo não estão pendentes mesmo se vencidas. Elas vão em "Pendente" sob o item do seu projeto, com sua data. Para projetos prioritários sem próxima ação, consulte também suas tarefas abertas sem filtro de data (veja abaixo).
- Tarefas sem projeto. Não vão em "Pendente". Mas se uma coincidir com um aviso de "Aviso" (por exemplo, uma tarefa para vincular as notas quando um projeto não vincula a sua), nomeie a tarefa nesse aviso em vez de apresentá-la como uma nova descoberta.
- Uma linha sem próxima ação não é um item pendente: não invente um. Se o projeto for prioritário, coloque em "Pendente" como "sem próxima ação". Se tiver tarefas abertas, com ou sem data, nomeie a primeira (a com data mais próxima, ou a primeira sem data): "sem próxima ação; tarefa aberta: ". Isso são dados do gerenciador de projetos, não uma sugestão. Prioridade significa o que as instruções marcam como prioridade de curto prazo, mais a primeira de suas prioridades de longo prazo; se as instruções não definirem prioridades, a prioridade mais alta no gerenciador de projetos. O gerenciador de projetos dizer "Alta" não é suficiente quando as instruções definem outras.
- Se não couberem. "Pendente" tem no máximo cinco itens. Se houver mais projetos para incluir, os de curto prazo e aqueles com próxima ação ou algo pela metade vão primeiro; projetos prioritários que apenas adicionariam "sem próxima ação" são agrupados em uma linha "Aviso": "Sem próxima ação: X, Y e Z".
- Se o status do gerenciador de projetos contradizer claramente outra fonte mais recente (por exemplo, "Ideia" no gerenciador de projetos e a nota do cofre com trabalho feito), diga isso em "Aviso" com ambas as datas.
D. Cofre Obsidian. A nota do projeto, na pasta de projetos do cofre (as instruções ou o CLAUDE.md geralmente dizem qual; em um cofre estilo PARA, por exemplo, 2 Projects/<project>/), e seu updated:. Seu campo path:, se tiver um, é uma chave para combiná-lo (veja passo 1). Leia o cabeçalho e as últimas entradas, não a nota inteira. Nenhuma habilidade é necessária para lê-lo. No Claude Code, a referência diz quando iniciar uma habilidade de cofre e quando não.
- O
CLAUDE.mddo repositório. Se puder ser alcançado (um terminal, ou a pasta do repositório conectada), suas seções de estado e pendentes ("Estado atual", "Pendente") são a lista de pendências mais confiável disponível localmente; leia apenas essas seções. Com um terminal, siga o que a referência diz sobre oCLAUDE.md. - Cofres múltiplos. Se a sessão tiver acesso a mais de um cofre ou repositório, siga o
CLAUDE.mdde cada um; mas não leia duas notas para o mesmo projeto: priorize a que estiver no cofre cujoCLAUDE.mdcoincidir com as instruções ou, se nenhum coincidir, a que estiver na pasta cujo repositório a sessão pode alcançar. - Nenhuma nota. Se um projeto não tiver nota no cofre, mas aparecer em outra fonte, diga isso em "Aviso".
- Nota fechada ou arquivada. Uma nota que o usuário moveu para fora da pasta de projetos, ou cujo conteúdo diz "Arquivado" ou "Concluído", não é ativa. Mas se outra fonte der uma data recente (uma edição, um commit, um chat), a nota pode ter sido reaberta: verifique a data da nota e, se mais recente que o arquivamento, trata-a como ativa; caso contrário, adicione "(arquivada)" ao cabeçalho do resumo e omita-a da lista de pendências.
- Se a nota disser que outro projeto está encarregado. (por exemplo "Ver projeto Y"), registre isso como uma observação no item do projeto.
E. Passagens de bastão. Se uma passagem de bastão existir em uma pasta que a sessão pode ler, ela é uma nota sobre o que estava em andamento na última sessão, escrita por uma habilidade de fechamento. Leia apenas se houver uma passagem de bastão (e apenas a mais recente), e apenas se a pasta de passagens for parte do espaço de trabalho. O nome da passagem é o do projeto em andamento, então você provavelmente já o tem; é seguro abrir o arquivo apenas se seu caminho ou nome coincidir (veja a seção de compatibilidade no passo 1). Se for uma passagem de bastão de uma sessão anterior que não estava no mesmo projeto, leia-a de qualquer forma: ela pode conter decisões ou restrições que ainda se aplicam.
F. Chats. Pesquise na memória um termo que identifique o projeto (seu nome, owner/repo, um apelido) e leia os trechos dos chats que têm uma data no título ou conteúdo. Se a pesquisa não der um chat, não invente um. "Chats" são os chats completos de claude.ai, não fragmentos de sessões do Claude Code (esses estão em F2). Leia as mensagens mais recentes que mencionam o projeto: não leia o chat inteiro. Não leia chats que a memória diga que já foram incorporados às notas do projeto.
F2. Sessões do Claude Code. Se o aplicativo de desktop tiver uma ferramenta para listar ou pesquisar sessões, use-a para encontrar sessões que tenham o nome do projeto ou o caminho do repositório. Leia apenas as mensagens de abertura e as tags de código que mencionam o projeto, não a sessão inteira. Não leia sessões que a memória diga que foram limpas.
G. Memória. A memória no contexto pode conter fatos sobre o projeto (apelidos, decisões, restrições, preferências). Leia-a toda. A memória não é uma fonte para listas de pendências ou o que aconteceu na última sessão.
H. Instruções do projeto claude.ai. Se a sessão estiver em um projeto claude.ai, leia suas instruções e arquivos. O campo "Instruções" do projeto pode conter um plano de trabalho ou uma lista de tarefas.
I. Artefatos publicados. Se a sessão tiver uma ferramenta para listar artefatos publicados, leia os títulos e os primeiros parágrafos dos que mencionam o projeto. Eles são entregáveis e frequentemente contêm a versão mais recente de um documento de design ou especificação.
3. Resumo: onde tudo está
Escreva um resumo natural de duas ou três frases, com os seguintes elementos, nesta ordem:
- O que é o projeto. Seu nome, seu repositório (se houver) e seu status atual. Se for um guarda-chuva, liste os projetos ativos, ordenados pela atividade mais recente (da mais recente para a mais antiga). Se não houver atividade, liste os que as instruções marcam como prioridade de curto prazo.
- Onde você parou. O que estava sendo trabalhado na última sessão: o último commit, a última ação no gerenciador de projetos, a última entrada no cofre, a última passagem de bastão. Se várias fontes derem respostas diferentes, mostre cada uma com sua data. Se não houver sessão anterior, diga "Nova sessão".
- Pendências. O que precisa ser feito, com base no gerenciador de projetos (tarefas vencidas, próximo passo), no git (branch não mergeado, PR aberto, CI com falha), no cofre (pendências anotadas) e na passagem de bastão (o que estava sendo trabalhado). No máximo cinco itens; se houver mais, agrupe os restantes em uma linha "Aviso" com os nomes. Cada item tem uma breve explicação de por que está pendente (por exemplo "O branch X tem um PR aberto #Y" ou "A tarefa Z está vencida desde DD/MM"). Não inclua itens que o gerenciador de projetos diga que estão concluídos ou arquivados, a menos que uma fonte mais recente os reabra.
- Avisos. Uma linha para cada problema que não se encaixa nas pendências: fontes que a sessão não pode alcançar, contradições entre fontes, projetos que estão no cofre mas não no gerenciador de projetos, ou o contrário. Mantenha em uma única frase por aviso.
Se o resumo for de múltiplos projetos, escreva um resumo para cada projeto, agrupado sob o nome do projeto. Se um projeto não tiver fonte alguma (nem gerenciador de projetos, nem cofre, nem git, nem chat), não o inclua.
4. O que fazer a seguir (apenas para guarda-chuvas)
Em um guarda-chuva, depois do resumo, pergunte qual projeto o usuário quer retomar hoje. Se houver um projeto com clara prioridade (por exemplo, uma tarefa vencida), sugira-o. Em uma sessão sem usuário, escolha o projeto com a pendência mais urgente.
5. Pergunta final e entrega
Termine com:
"O que você gostaria de trabalhar hoje?"
Se uma habilidade de seleção de habilidades estiver instalada, passe a resposta do usuário para essa habilidade. Caso contrário, aguarde a resposta do usuário.