qbarev/para-plugin

Trabalhe com Projetos no vault Obsidian PARA e seus pares no aplicativo de tarefas — liste os projetos ativos, crie um projeto (pasta par mais um projeto no app de tarefas), resuma o status de um projeto ou adicione uma tarefa a um projeto no app de tarefas (ex.: Todoist).

O que é para-plugin?

Este skill capacita agentes de IA (como Claude Code, Cursor ou Codex) a gerenciar projetos no contexto de um vault Obsidian organizado pelo método PARA, sincronizados com um backend de tarefas como Todoist. Ele oferece quatro comandos principais: `list` para listar projetos ativos com metadados e contagem de tarefas; `create` para criar uma nova pasta de projeto no vault e, opcionalmente, um projeto pareado no backend de tarefas; `overview` para gerar um resumo detalhado e somente leitura de um projeto específico, incluindo tarefas atrasadas, notas e riscos; e `task` para adicionar uma tarefa a um projeto existente. O skill segue regras base definidas em arquivos Markdown auxiliares (paths, tasks, note-format, etc.) e lida com projetos legados que não seguem a convenção mais recente. Ele detecta automaticamente a intenção do usuário a partir de frases em português (como "lista projetos", "cria projeto", "status do projeto", "adiciona tarefa") e interage exclusivamente de forma somente leitura em operações de listagem e resumo, garantindo que nenhuma alteração seja feita sem confirmação explícita do usuário em operações de escrita.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/qbarev/para-plugin/tree/HEAD/skills/projects

Installed? Explore more Produtividade e Colaboração skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Perguntar na sua IA favorita

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

Documentação

Projetos

Projetos são esforços com um objetivo definido e um estado final — diferentemente de Áreas, que são contínuas. Um projeto é uma pasta no vault pareada com um projeto no backend de tarefas: a pasta guarda o significado do projeto, o backend guarda suas tarefas (tasks.md). Cada chamada de tarefa é uma operação a partir de tasks.md, executada conforme o adaptador para TASKS.

Camada base

Leia antes de agir, cada um como ../../para/<arquivo>.md relativo ao diretório base deste skill — eles contêm as regras compartilhadas, não as repita de memória:

  • ../../para/paths.md — sempre, incluindo «Idioma»: as strings abaixo vêm de lang/<LANG>.md
  • ../../para/tasks.md — sempre: as operações, pareamento, o que é uma tarefa
  • ../../para/find-target.md — para overview e task
  • ../../para/note-format.md — para create; para cada subcomando, «Campos legados»
  • ../../para/project-id.md — para create
  • ../../para/dod.md — para create (escrevendo a seção project.dod) e overview
  • ../../para/thresholds.md — para list e overview: ordem dos projetos, inatividade, horizontes, contagens de tarefas, tamanho da saída
  • ../../para/confirm.md — create e task escrevem (Nível 1); list e overview não escrevem nada
  • ../../para/move.md — para create, antes de escrever uma pasta que possa colidir

Subcomandos

A primeira palavra de $ARGUMENTS escolhe o subcomando: list, create, overview, task. Se não for nenhum deles, descubra qual é o significado a partir da frase e diga qual você escolheu. $ARGUMENTS vazio → execute list, depois pergunte o que fazer.

Cada subcomando encontra projetos que antecedem o backend de tarefas: status, Tasks/ (note-format.md diz quando isso é legado), nenhum campo tasks_ref. Leia-os como note-format.md «Campos legados» diz — relate, nunca reescreva.


create <descrição> — iniciar um projeto

Entrada: o que é o projeto, seu objetivo, prazo, primeiros passos. Vazio → pergunte o que é o projeto e seu objetivo.

  1. Leia Templates/Project.md do disco, literalmente.

  2. Derive um título conforme note-format.md. Ele é usado de três formas: como title e o H1 sem o prefixo id, e — com o prefixo — como o nome da pasta e o nome do arquivo de visão geral. Proponha short conforme note-format.md.

  3. Emita o id conforme project-id.md.

  4. Crie a estrutura de pastas sob Projects/:

    PROJ-xxxx <título>/
    ├── PROJ-xxxx <título>.md      ← visão geral, a partir de Templates/Project.md
    ├── Notes/
    ├── Resources/
    └── Results/
    

    Todas as três subpastas, mesmo vazias. Sem Tasks/ (sob TASKS = files o adaptador a cria com a primeira tarefa).

  5. Preencha o frontmatter conforme a linha Projeto em note-format.md. created é hoje. deadline somente se a descrição fornecer uma. tasks_ref permanece em branco até o passo 7 (sob pairing: none o campo é omitido).

  6. Preencha o corpo:

    • a seção project.goal — o objetivo / estado final desejado. Obrigatório.
    • a seção project.value — o que o usuário ganha, mensurável ou inequívoca (note-format.md, "Três seções sobre o resultado"). Obrigatório. Se ambos ou project.goal não estiverem claros a partir da entrada, pergunte por ambos em uma pergunta (confirm.md, Nível 1.5) antes de escrever.
    • a seção project.problem — o que motivou o projeto.
    • a seção project.expected_result — os artefatos concretos e onde eles estão.
    • a seção project.scope — apenas os itens que o usuário nomeou. Geralmente vazia: a tarefa de pesquisa a preenche (tasks.md «A tarefa de pesquisa»).
    • a seção project.dod — caixas de seleção conforme dod.md. Se a descrição não permitir derivar verificações reais, pergunte — como para um project.goal faltante.
    • a seção common.links — wikilinks para notas claramente relacionadas, caso contrário, o - do template.
  7. Crie o par conforme tasks.md «Pareamento»: project.create com o título e o id. Sob pairing: separate, escreva o ref retornado em tasks_ref:; se a chamada falhar, diga: a pasta permanece, sem par, e /projects task oferecerá pareá-lo depois. Sob pairing: none não há par e nenhum tasks_ref: pule a escrita.

  8. Primeiras tarefas no novo projeto, sem datas:

    • a tarefa de pesquisa conforme tasks.md «A tarefa de pesquisa», sempre, a menos que o usuário já tenha nomeado o escopo completo — nesse caso, escreva-a na seção project.scope;
    • passos que o usuário nomeou explicitamente, adicionados com task.add e redigidos conforme «O que é uma tarefa». Um passo que não possa ser redigido como uma ação é uma pergunta para a pesquisa, não uma tarefa.

    Nunca invente passos que o usuário não nomeou.

  9. Relate o caminho da pasta, id, título, short (oferecendo para alterá-lo), prazo, objetivo, a linha de valor, o nome do projeto no backend e as tarefas criadas.

Se a entrada descrever uma responsabilidade contínua sem fim, isso não é um projeto — diga e ofereça /areas create em vez disso. Se for uma ideia que o usuário ainda não decidiu assumir, diga que ainda não é um projeto (tasks.md «Pareamento») e ofereça deixá-la na caixa de entrada (inbox.name).


task <projeto> <tarefa> — adicionar uma tarefa

  1. Encontre o projeto conforme find-target.md, operação «Adicionar uma tarefa a um projeto». O alvo também pode ser um projeto de área de AREA_TASK_PROJECTS em areas.md — corresponda-o pelo nome.
  2. Resolva para onde vai: um projeto de área → area; caso contrário, o tasks_ref da visão geral → project_ref (sob pairing: none a pasta do projeto é o ref e este passo é apenas o projeto).
    • pairing: separate e nenhum tasks_ref na visão geral → diga a string task.unpaired e ofereça criá-lo (passo 7 de create). Se sim, crie o par, depois continue. Nunca escreva a tarefa no vault em vez disso.
  3. Redija a tarefa conforme tasks.md «O que é uma tarefa». Se a redação do usuário já se encaixar, mantenha-a; caso contrário, proponha a versão reescrita no anúncio. Se não puder ser uma ação, pergunte pelo próximo passo (Nível 1.5).
  4. task.add com project_ref ou area (sob TASKS = files um nome base já existente é uma colisão: note-format.md «Colisões de nome», pergunte, sem sufixo silencioso): o texto, uma descrição para qualquer coisa mais longa, duration apenas se fornecido. A regra de data é tasks.md «Campos».
  5. Relate a tarefa e o projeto.

overview <projeto> — onde o projeto está

Somente leitura. Não escreve nada — nem no vault, nem no backend. Se o resumo revelar algo que vale a pena consertar, diga e deixe o usuário decidir.

  1. Encontre o projeto conforme find-target.md, operação "Relatar sobre". Sem argumento, liste os projetos e pergunte.

  2. Leia a nota de visão geral: frontmatter e as seções project.goal, project.value, project.expected_result, project.dod, common.links. Um campo em branco é relatado como em branco, nunca preenchido por inferência.

  3. Leia as tarefas (task.list, abertas): suas datas e durações. Compute as contagens conforme thresholds.md «Contagens de tarefas». Sob pairing: separate, sem par → pule, e diga a string task.unpaired.

  4. Leia Notes/ (e Results/, se tiver alguma coisa) por inteiro, até o limite em thresholds.md — é aqui que decisões e riscos realmente estão.

  5. Legado. Se a visão geral carregar status / priority / value / estimate, ou a pasta tiver um Tasks/ legado (note-format.md), adicione uma linha, a string overview.legacy com {fields} como status, Tasks/ (3 arquivos) (a contagem de pastas é a string overview.legacy_tasks), nomeando apenas o que está presente. Não leia notas de tarefas para progresso; a migração decide o que sobrevive.

  6. Sinais — relate apenas aqueles que disparam:

    • o deadline do projeto passado, ou dentro do horizonte em thresholds.md;
    • tarefas atrasadas — diga por quantos dias;
    • nada agendado enquanto o prazo está dentro do horizonte;
    • tarefas com data mas sem duração;
    • inatividade maior que o limite do projeto em thresholds.md, medida como ele diz (project.activity quando pareado, mtime caso contrário, conforme thresholds.md);
    • wikilinks pendentes na seção common.links;
    • todo critério de aceitação marcado enquanto o projeto ainda está em Projects/ — concluído e não fechado.
  7. Renderize para o chat, em LANG. Os rótulos são strings de lang/<LANG>.md, nomeados no template abaixo pela chave entre chaves; mostrados aqui com as strings em inglês:

    ## PROJ-0001 · Projeto A
    
    **{overview.area}** Área A · **{overview.deadline}** 2026-10-31 — 14 dias
    **{overview.tasks}** {count.scheduled} 3 · {count.overdue} 1 · {count.backlog} 6
    **{overview.acceptance}** ☑☐☐ 1/3
    
    ### {overview.essence}
    <O objetivo, 1–2 frases.>
    <O resultado esperado — uma linha.>
    <O valor — uma linha.>
    
    ### {overview.scheduled}
    - **Escrever um e-mail para o fornecedor** — Ter 21-10, 30 min
    - **Preencher o formulário** — atrasado por 2 dias, 1 h
    
    ### {overview.backlog}
    - Marcar uma consulta
    - …e mais 3
    
    ### {overview.digest}
    - <Uma decisão ou conclusão chave de Notes/ — em suas próprias palavras.>
    
    ### {overview.signals}
    - Prazo em 14 dias, nada agendado
    

    As chaves entre chaves são chaves, não texto literal: imprima a string que cada chave representa. As datas estão no formato common.date (2026-10-31; 10-31 na forma abreviada common.date_short, usada com um dia da semana de common.weekdays em uma linha de tarefa); os dias até o prazo são common.days; as abreviações de unidade são common.unit.*; uma tarefa atrasada carrega a string task.overdue_by; o restante do backlog é a string overview.backlog_more ({n} = tarefas não mostradas). A seção overview.backlog mostra as tarefas mais antigas sem data até o limite em thresholds.md. Remova qualquer seção ou campo que estaria vazio. Um Results/ vazio é um estado normal.


list — os projetos

Somente leitura. Uma linha por projeto — o índice, não um resumo: nunca abre Notes/.

  1. Enumere as pastas diretamente sob Projects/. Projetos arquivados não são listados — isso é /archive list.

  2. Leia o frontmatter da visão geral: id, title, area, deadline, e sob pairing: separate tasks_ref. Uma pasta sem frontmatter é pré-convenção — imprima-a pelo nome da pasta com a string common.no_metadata.

  3. Leia as tarefas de cada projeto que tem um ref (task.list com project_ref, abertas), contadas conforme thresholds.md «Contagens de tarefas».

  4. Ordene conforme thresholds.md «Ordem dos projetos».

  5. Renderize, em LANG, com as strings list.*, count.* e task.unpaired — a linha é compacta, então a contagem do backlog é count.backlog_short (cabeçalho list.header, prazo list.until com a data em common.date_short e, dentro do horizonte de thresholds.md, (14 d) depois dela: os dias restantes e common.unit.day); mostrado aqui com as strings em inglês:

    **Projetos (4)**
    1. PROJ-0008 Projeto A — Área A · até 10-31 (14 d) · agendadas 2 · backlog 3
    2. PROJ-0020 Projeto B — até 10-31 (14 d) · agendadas 0 · backlog 3
    3. PROJ-0009 Projeto C — Área B · até 02-28 · sem par no gerenciador de tarefas · formato antigo
    4. PROJ-0027 Projeto D — backlog vazio
    Sem par no vault: «Projeto E»
    
    • Um prazo passado: a string list.deadline_passed.
    • A string list.legacy quando campos legados estão presentes, ou um Tasks/ legado está.
    • Um projeto cujo backlog está vazio: a string list.backlog_empty.
    • A última linha (list.orphans) nomeia projetos do backend que nenhuma visão geral aponta, encontrados como tasks.md «Notas sobre a tabela», project.list, diz. Remova-a quando vazia ou quando o adaptador não suporta project.list.
    • Remova qualquer campo em branco em vez de imprimir um espaço reservado. Um Projects/ vazio é uma resposta válida: diga-o claramente.

Projetos arquivados e pré-convenção

Projetos em Archive/ podem anteceder as convenções: sem frontmatter, sem prefixo PROJ-xxxx, sem subpastas. Leia a seção project.goal da nota, pule a seção de tarefas overview.acceptance e overview.acceptance, e declare claramente que está arquivado e no formato antigo.

Notas

  • Compute, não estime: contagens de dias, contagens de tarefas e prazos de atraso vêm do backend, dos arquivos e da data do sistema de hoje. Se algo não puder ser computado porque um campo está em branco, diga que está em branco em vez de adivinhar.
  • Um resumo relata o estado; ele não julga o usuário. "atrasado por 5 dias", não "você abandonou o projeto".
  • Tudo em LANG, tarefas incluídas.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

qbarev/para-plugin

Work with Archive in the Obsidian PARA vault — put a finished or abandoned project (folder and its project in the task app, such as Todoist) or a note into the archive, list what is already there, or restore something back into an active folder. Use when the user says "archive this", "move to archive", "close the project", "what is in the archive", "show the archive", "restore from the archive", "заархивируй", "перенеси в архив", "закрой проект", "что в архиве", "покажи архив", "верни из архива", "восстанови проект".

qbarev/para-plugin

Work with Areas in the Obsidian PARA vault — create an area of ongoing responsibility, or review which areas have gone quiet and what has drifted in them. Use when the user says "create an area", "new area", "review the areas", "which areas have gone quiet", "заведи область", "новая сфера", "добавь область", "обзор областей", "что по областям", "какие сферы провисают", "ревью сфер".

qbarev/para-plugin

Work with the inbox of the PARA vault, which lives in the task app's inbox — capture a raw thought into it, list what is sitting there unprocessed, or process captures one by one into their proper PARA folder. Use when the user wants to capture a note, mentions their task app's inbox (Todoist «Входящие», for example), or says "capture this", "add to the inbox", "what is in the inbox", "process the inbox", "запиши", "закинь в инбокс", "что в инбоксе", "покажи инбокс", "разбери инбокс", "разгреби инбокс".

qbarev/para-plugin

Set up a folder as a PARA vault run by this plugin, or bring an already set-up vault up to date — detect what the folder is, ask the setup questions one at a time, show one plan, apply it on one «yes», report. Re-running fills in what is missing and migrates an older vault schema. Use when the user says "set up the vault", "init the vault", "initialise PARA", "migrate the vault", "run /para:init", "настрой хранилище", "инициализируй хранилище", "подключи PARA", "мигрируй хранилище".

Habilidades Relacionadas