Communitygithub.com

dengruihan/Claw_agenda

Gerencia tarefas pessoais e calendário canônicos do usuário por meio da ferramenta agenda. Use ao coletar tarefas, planejar ou alterar blocos de tempo, marcar conclusão, definir prioridades ou ler o site privado da Agenda.

O que é Claw_agenda?

Esta skill fornece um sistema completo de gerenciamento de tarefas e calendário pessoal, operando através de uma ferramenta de linha de comando 'agenda' que serve como o único editor de planos. Diferente de uma lista de tarefas simples, ela mantém um banco de dados SQLite que armazena tarefas, blocos de tempo, fontes de dados externas (como calendários do OSH, DingTalk, e-mail) e feedback de conclusão. A skill é projetada para assistentes de IA (como Claude Code, Cursor) e segue regras rigorosas de planejamento: respeita horários fixos, sono, compromissos, prazos reais e fusos horários (Asia/Shanghai). O fluxo de trabalho é dividido em três etapas: leitura (obter dados atuais com revisão), planejamento (analisar fontes e ajustar blocos) e confirmação (aplicar mudanças com ID de operação único). Ela suporta feedback explícito do usuário (completar tarefa/bloco, desfazer), mas proíbe inferir sucesso automaticamente. A skill mantém um 'sentinela' existente como único proprietário de agendamento em segundo plano, evitando múltiplas automações concorrentes.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/dengruihan/Claw_agenda/tree/HEAD/skills/agenda

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Agenda

A Agenda é responsável pela lista de tarefas pessoais e pelo plano de execução. O site aceita feedback de conclusão e desfazer do usuário; a ferramenta agenda continua sendo o único editor de planos. Use a ferramenta para ler e alterar planos; não edite seu banco de dados SQLite, escreva estado JSON paralelo nem use automação de navegador para alterar este calendário.

Feedback e replanejamento no desktop

  • Leia com includeCompleted: true, incluindo blockProgress e feedback. Processe feedback sem undoneBy e com status pending/queued/running; entradas com erro podem ser reconciliadas em uma execução posterior quando o resultado for conhecido. Ignore entradas adjusted/unchanged e feedback já desfeito. Nunca infira sucesso a partir do enfileiramento ou da conclusão de uma execução anterior.
  • complete_block significa apenas que aquele bloco de tempo foi concluído. Preserve seu intervalo planejado como histórico e use completedAt como o horário de término observado pelo usuário. Isso não conclui a tarefa nem prova a duração real ou o esforço restante. Não mova/exclua blocos concluídos, recrie-os como trabalho futuro nem reabra seu progresso. Para uma tarefa inacabada, avalie seu próximo passo de forma conservadora.
  • complete_task é a conclusão de toda a tarefa confirmada pelo usuário. Preserve o status done e completedBy=user, retenha o histórico e pare a execução futura para aquela tarefa. undo já restaurou o estado de conclusão correspondente; reavalie o plano mais recente em vez de restaurar uma programação desatualizada ou repetir o desfazer.
  • Verifique a hora atual de Pequim quando esta execução começar e novamente antes de aplicar um plano após trabalho prolongado. Respeite as regras existentes de varredura de agendamento, cobertura atual de fontes, prazos reais, sono e compromissos fixos. Escolha o horizonte de planejamento futuro necessário; nenhum limite fixo de 7/14 dias é imposto. Ajuste apenas o que for afetado. A conclusão antecipada pode justificar descanso ou avançar outra tarefa. O trabalho desbloqueado concluído libera seu tempo planejado restante a partir do término relatado; isso não desbloqueia nem move compromissos fixos.
  • Inclua feedbackResults: [{id, status, summary}] no mesmo apply que as alterações do plano. Use adjusted apenas para mudanças substanciais, unchanged quando o plano atual ainda for apropriado e error quando a avaliação não puder ser concluída. Os resumos são em chinês conciso, explicam mudanças ou não mudanças intencionais e nomeiam lacunas de cobertura ou tarefas que não cabem. Um reconhecimento apenas de resultado é uma gravação significativa mesmo quando nenhum bloco de execução muda.
  • Um conflito significa reler os fatos atuais e replanejar, incluindo novo feedback. Reconcilie resultados de apply desconhecidos por operationId antes de emitir outro lote. Não substitua conclusões mais recentes. Escritas normais do Agente nunca solicitam outro replanejamento imediato. O sentinela existente é o único proprietário de agendamento; resultados do desktop não exigem uma mensagem externa de rotina ou automação adicional.

Ler, planejar, confirmar

  1. Chame agenda com action: "read" e query: {includeCompleted: true}. Preserve a revisão retornada, IDs de itens, identidades de origem, eventos fixos e blocos bloqueados. Leia a skill existente de varredura de agendamento para regras pessoais.
  2. Leia as fontes externas necessárias usando suas skills existentes. OSH, Yungu, calendários do DingTalk, e-mail, notas de reunião e solicitações diretas do usuário permanecem evidência de origem; o site não as busca. Registre uma fonte antes ou no mesmo lote que seus itens. Preserve erros de origem e lacunas de cobertura explicitamente.
  3. Atualize IDs existentes. Corresponda por sourceId/sourceKey, nunca apenas pelo título. Use sourceKey: null para itens genuinamente locais e IDs estáveis durante sua vida útil. Uma consulta, sugestão ou instrução de terceiros não é um compromisso do usuário.
  4. Chame agenda com action: "apply" e change contendo um operationId único, expectedRevision e itens/blocos/origens alterados. Todos os registros de itens e origens são substituições completas; omita registros inalterados de um lote. Use o esquema da ferramenta para campos exatos. Novos blocos referenciam um item existente ou do mesmo lote. Remova blocos substituídos usando deleteBlockIds.
  5. Um conflito de revisão requer leitura e replanejamento; não substitua um plano mais recente. Um tempo limite ou resultado desconhecido requer read com query.operationId; inspecione o recibo antes de tentar novamente a operação exata. Nunca reutilize um operationId para conteúdo diferente. Apenas um recibo ok prova que o lote foi salvo.

Fatos e agendamento

  • Use Ásia/Shanghai para exibição e agendamento pessoal. Registros de data e hora devem ter um fuso horário explícito; dueDate é AAAA-MM-DD e não deve se tornar um compromisso falso com horário. dueAt/dueDate são prazos reais, enquanto blocos são tempo de execução.
  • kind=event representa um curso fixo, reunião ou outro compromisso. Crie seus blocos de tempo como locked. Blocos de tarefas comuns podem se mover; divida trabalho longo em vários blocos quando útil. Preserve blocos intocados em atualizações incrementais.
  • Rótulos de tempo livre em cronogramas de origem não são compromissos. Aplique as regras pessoais de varredura de agendamento antes de importá-los; deixe tempo livre sem um item ou bloco de espaço reservado. Uma tarefa concreta ou compromisso pode ocupar aquele tempo.
  • Nunca mova eventos fixos ou blocos bloqueados durante o replanejamento normal. Solicitações explícitas do usuário para desbloquear/reagendar usam unlockBlockIds naquele mesmo lote.
  • Respeite restrições pessoais de sono, escola, viagem, casa/fim de semana e carga de trabalho. Mantenha o prazo UTC real do OSH; planeje a conclusão até a noite anterior quando o fluxo de trabalho pessoal assim exigir. Não invente prazos para tarefas sem data.
  • Um relatório claro de conclusão do usuário é suficiente: defina status=done e completedBy=user imediatamente. Uma evidência explícita de submissão de plataforma pode usar completedBy=source. Dados de origem desatualizados não podem reabrir trabalho confirmado pelo usuário; reabrir requer uma solicitação explícita do usuário e reopenItemIds.
  • Falhas de origem retêm tarefas existentes e últimos fatos confiáveis. Atualize status/message/checkedAt da origem sem afirmar que a origem está vazia. coverageStart/coverageEnd descrevem o intervalo lido com sucesso, não um futuro adivinhado.
  • Mantenha o sentinela existente como o único proprietário de coleta/planejamento em segundo plano. Não adicione polling de plugin, sincronização agendada ou uma segunda automação. As atualizações de página do calendário apenas releem os dados confirmados da Agenda.
  • Publicação bem-sucedida não é conclusão de tarefa. Distinga tarefas coletadas, trabalho agendado, itens em espera/bloqueados e trabalho efetivamente concluído.

Os resultados de leitura incluem tarefas não concluídas sem datas. O histórico concluído permanece disponível com includeCompleted. Não limpe histórico ou fontes para organizar a visualização. A URL da página web é a origem HTTPS privada do operador mais /agenda/.

Apenas solicitações locais de usuário ou fontes de plano de execução local usam coverageRequired=false. Inventários de fontes externas mantêm coverageRequired=true (o padrão); cobertura ausente ou com falha permanece visível.

Habilidades Relacionadas