qbarev/para-plugin

Trabaja con Proyectos en la bóveda Obsidian PARA y sus pares en la aplicación de tareas: lista los proyectos activos, crea un proyecto (carpeta más un proyecto en la app de tareas), resume el estado de un proyecto o agrega una tarea a un proyecto en la app de tareas (por ejemplo, Todoist). Úsalo cuando el usuario diga "list projects", "show projects", "what am I working on", "create a project", "new project", "project overview", "project status", "add a task", "какие проекты", "список проектов", "покажи проекты", "что у меня в работе", "заведи проект", "новый проект", "саммари по проекту", "обзор проекта", "что по proyecto", "статус проекта", "где я по проекту", "добавь задачу", "заведи задачу".

¿Qué es para-plugin?

Este plugin permite gestionar proyectos siguiendo la metodología PARA dentro de Obsidian y sincronizándolos con una aplicación de tareas externa (como Todoist). Con él, puedes listar proyectos activos, crear nuevos proyectos (generando automáticamente una carpeta con subcarpetas estándar, una nota de resumen y un proyecto en el backend de tareas), obtener un resumen detallado del estado de un proyecto leyendo la nota y las tareas, y agregar tareas a proyectos existentes. Es útil para mantener un flujo de trabajo organizado donde la información conceptual reside en la bóveda y las tareas operativas en la app de tareas. Soporta tanto proyectos nuevos como proyectos preexistentes en formato legacy, y ofrece señales sobre vencimientos, tareas atrasadas y enlaces rotos, todo en el idioma configurado por el usuario.

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

Installed? Explore more Productividad y colaboración skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Proyectos

Los proyectos son esfuerzos con un objetivo definido y un estado final — a diferencia de las Áreas, que son continuas. Un proyecto es una carpeta en la bóveda emparejada con un proyecto en el backend de tareas: la carpeta contiene lo que significa el proyecto, el backend mantiene sus tareas (tasks.md). Cada llamada de tarea es una operación de tasks.md, ejecutada según el adaptador para TASKS.

Capa base

Lee antes de actuar, cada una como ../../para/<file>.md relativo al directorio base de esta habilidad — contienen las reglas compartidas, no las repitas de memoria:

  • ../../para/paths.md — siempre, incluyendo «Idioma»: las cadenas a continuación provienen de lang/<LANG>.md
  • ../../para/tasks.md — siempre: las operaciones, el emparejamiento, qué es una tarea
  • ../../para/find-target.md — para overview y task
  • ../../para/note-format.md — para create; para cada subcomando, «Campos heredados»
  • ../../para/project-id.md — para create
  • ../../para/dod.md — para create (escribir la sección project.dod) y overview
  • ../../para/thresholds.md — para list y overview: orden de proyectos, obsolescencia, horizontes, recuentos de tareas, tamaño de salida
  • ../../para/confirm.md — create y task escriben (Nivel 1); list y overview no escriben nada
  • ../../para/move.md — para create, antes de escribir una carpeta que pueda colisionar

Subcomandos

La primera palabra de $ARGUMENTS elige el subcomando: list, create, overview, task. Si no es ninguno de esos, determina cuál se quiere a partir de la frase y di cuál elegiste. Si $ARGUMENTS está vacío → ejecuta list, luego pregunta qué hacer.

Cada subcomando se encuentra con proyectos que son anteriores al backend de tareas: status, Tasks/ (note-format.md indica cuándo eso es legacy), sin campo tasks_ref. Léelos como dice note-format.md «Campos heredados» — informa, nunca reescribas.


create <descripción> — iniciar un proyecto

Entrada: qué es el proyecto, su objetivo, fecha límite, primeros pasos. Vacío → pregunta qué es el proyecto y su objetivo.

  1. Lee Templates/Project.md del disco, textualmente.

  2. Deriva un título según note-format.md. Se usa de tres maneras: como title y el H1 sin el prefijo de id, y — con el prefijo — como nombre de carpeta y nombre del archivo de resumen. Propón short según note-format.md.

  3. Emite el id según project-id.md.

  4. Crea la estructura de carpetas bajo Projects/:

    PROJ-xxxx <título>/
    ├── PROJ-xxxx <título>.md      ← resumen, desde Templates/Project.md
    ├── Notes/
    ├── Resources/
    └── Results/
    

    Las tres subcarpetas, incluso vacías. Sin Tasks/ (bajo TASKS = files el adaptador la crea con la primera tarea).

  5. Rellena el frontmatter según la fila de Proyecto en note-format.md. created es hoy. deadline solo si la descripción proporciona una. tasks_ref se queda en blanco hasta el paso 7 (bajo pairing: none el campo se omite).

  6. Rellena el cuerpo:

    • la sección project.goal — el objetivo / estado final deseado. Obligatorio.
    • la sección project.value — qué gana el usuario, medible o inequívoco (note-format.md, "Tres secciones sobre el resultado"). Obligatorio. Si esto o project.goal no queda claro a partir de la entrada, pregunta por ambos en una sola pregunta (confirm.md, Nivel 1.5) antes de escribir.
    • la sección project.problem — qué motivó el proyecto.
    • la sección project.expected_result — los artefactos concretos y dónde viven.
    • la sección project.scope — solo los elementos que el usuario nombró. Generalmente vacía: la tarea de investigación la llena (tasks.md «La tarea de investigación»).
    • la sección project.dod — casillas de verificación según dod.md. Si la descripción no permite derivar comprobaciones reales, pregunta — como si faltara project.goal.
    • la sección common.links — wikilinks a notas claramente relacionadas, de lo contrario el - de la plantilla.
  7. Crea el par según tasks.md «Emparejamiento»: project.create con el título y el id. Bajo pairing: separate, escribe el ref devuelto en tasks_ref:; si la llamada falla, dila: la carpeta se queda, sin emparejar, y /projects task ofrecerá emparejarla después. Bajo pairing: none no hay par ni tasks_ref: omite la escritura.

  8. Primeras tareas en el nuevo proyecto, sin fechas:

    • la tarea de investigación según tasks.md «La tarea de investigación», siempre, a menos que el usuario ya haya nombrado el alcance completo — entonces escríbela en la sección project.scope;
    • pasos que el usuario nombró explícitamente, agregados con task.add y redactados según «Qué es una tarea». Un paso que no puede expresarse como una acción es una pregunta para la investigación, no una tarea.

    Nunca inventes pasos que el usuario no haya nombrado.

  9. Informa la ruta de la carpeta, id, título, short (ofreciendo cambiarlo), fecha límite, objetivo, la línea de valor, el nombre del proyecto en el backend y las tareas creadas.

Si la entrada describe una responsabilidad continua sin fin, esto no es un proyecto — dilo y ofrece /areas create en su lugar. Si es una idea que el usuario no ha decidido asumir, di que aún no es un proyecto (tasks.md «Emparejamiento») y ofrece dejarla en la bandeja de entrada (inbox.name).


task <proyecto> <tarea> — agregar una tarea

  1. Encuentra el proyecto según find-target.md, operación «Agregar una tarea a un proyecto». El destino también puede ser un proyecto de área de AREA_TASK_PROJECTS en areas.md — verifica por nombre.
  2. Resuelve dónde va: un proyecto de área → area; de lo contrario, el tasks_ref del resumen → project_ref (bajo pairing: none la carpeta del proyecto es el ref y este paso es solo el proyecto).
    • pairing: separate y sin tasks_ref en el resumen → di la cadena task.unpaired y ofrece crearlo (paso 7 de create). Si acepta, crea el par, luego continúa. Nunca escribas la tarea en la bóveda en su lugar.
  3. Redacta la tarea según tasks.md «Qué es una tarea». Si la redacción del usuario ya encaja, mantenla; de lo contrario, propón la versión reformulada en el anuncio. Si no puede ser una acción, pregunta por el siguiente paso (Nivel 1.5).
  4. task.add con project_ref o area (bajo TASKS = files un nombre base tomado es una colisión: note-format.md «Colisiones de nombres», pregunta, sin sufijo silencioso): el texto, una descripción para cualquier cosa más larga, duration solo si se da. La regla de fecha es tasks.md «Campos».
  5. Informa la tarea y el proyecto.

overview <proyecto> — dónde está el proyecto

Solo lectura. No escribe nada — ni en la bóveda, ni en el backend. Si el resumen saca a la luz algo que vale la pena arreglar, dilo y deja que el usuario decida.

  1. Encuentra el proyecto según find-target.md, operación "Informar sobre". Sin argumento, lista los proyectos y pregunta.

  2. Lee la nota de resumen: frontmatter y las secciones project.goal, project.value, project.expected_result, project.dod, common.links. Un campo en blanco se informa como en blanco, nunca se rellena por inferencia.

  3. Lee las tareas (task.list, abiertas): sus fechas y duraciones. Calcula los recuentos según thresholds.md «Recuentos de tareas». Bajo pairing: separate, sin par → salta, y di la cadena task.unpaired.

  4. Lee Notes/ (y Results/, si tiene algo) por completo, hasta el límite en thresholds.md — aquí es donde realmente viven las decisiones y los riesgos.

  5. Legado. Si el resumen lleva status / priority / value / estimate, o la carpeta tiene un Tasks/ heredado (note-format.md), agrega una línea, la cadena overview.legacy con {fields} como status, Tasks/ (3 files) (el recuento de carpetas es la cadena overview.legacy_tasks), nombrando solo lo que está presente. No leas notas de tareas para obtener progreso; la migración decide qué sobrevive.

  6. Señales — informa solo aquellas que se activen:

    • la deadline del proyecto pasada, o dentro del horizonte en thresholds.md;
    • tareas vencidas — di por cuántos días;
    • nada programado mientras la fecha límite está dentro del horizonte;
    • tareas con fecha pero sin duración;
    • inactividad mayor que el umbral del proyecto en thresholds.md, medido como indica (project.activity cuando está emparejado, mtime en caso contrario, según thresholds.md);
    • wikilinks rotos en la sección common.links;
    • cada criterio de aceptación marcado mientras el proyecto sigue en Projects/ — terminado y no cerrado.
  7. Renderiza al chat, en LANG. Las etiquetas son cadenas de lang/<LANG>.md, nombradas en la plantilla a continuación por clave entre llaves; mostradas aquí con las cadenas en inglés:

    ## PROJ-0001 · Proyecto A
    
    **{overview.area}** Área A · **{overview.deadline}** 2026-10-31 — 14 días
    **{overview.tasks}** {count.scheduled} 3 · {count.overdue} 1 · {count.backlog} 6
    **{overview.acceptance}** ☑☐☐ 1/3
    
    ### {overview.essence}
    <El objetivo, 1–2 frases.>
    <El resultado esperado — una línea.>
    <El valor — una línea.>
    
    ### {overview.scheduled}
    - **Escribir un correo al proveedor** — Mar 21-10, 30 min
    - **Rellenar el formulario** — vencido hace 2 días, 1 h
    
    ### {overview.backlog}
    - Pedir cita
    - …y 3 más
    
    ### {overview.digest}
    - <Una decisión o conclusión clave de Notes/ — en tus propias palabras.>
    
    ### {overview.signals}
    - Fecha límite en 14 días, nada programado
    

    Las llaves son claves, no texto literal: imprime la cadena que representa cada clave. Las fechas usan el formato common.date (2026-10-31; 10-31 en la forma corta common.date_short, usada con un día de la semana de common.weekdays en una línea de tarea); los días hasta la fecha límite se indican con common.days; las abreviaturas de unidades son common.unit.*; una tarea vencida lleva la cadena task.overdue_by; la cola del backlog es la cadena overview.backlog_more ({n} = tareas no mostradas). La sección overview.backlog muestra las tareas más antiguas sin fecha hasta el límite en thresholds.md. Elimina cualquier sección o campo que quedaría vacío. Un Results/ vacío es un estado normal.


list — los proyectos

Solo lectura. Una línea por proyecto — el índice, no un resumen: nunca abre Notes/.

  1. Enumera las carpetas directamente bajo Projects/. Los proyectos archivados no se listan — eso es /archive list.

  2. Lee el frontmatter del resumen: id, title, area, deadline, y bajo pairing: separate tasks_ref. Una carpeta sin frontmatter es preconvención — imprímela por nombre de carpeta con la cadena common.no_metadata.

  3. Lee las tareas de cada proyecto que tenga un ref (task.list con project_ref, abiertas), contadas según thresholds.md «Recuentos de tareas».

  4. Ordena según thresholds.md «Orden de proyectos».

  5. Renderiza, en LANG, con las cadenas list.*, count.* y task.unpaired — la línea es ajustada, así que el recuento del backlog es count.backlog_short (encabezado list.header, fecha límite list.until con la fecha en common.date_short y, dentro del horizonte de thresholds.md, (14 d) después: los días restantes y common.unit.day); mostrada aquí con las cadenas en inglés:

    **Proyectos (4)**
    1. PROJ-0008 Proyecto A — Área A · hasta 10-31 (14 d) · programadas 2 · backlog 3
    2. PROJ-0020 Proyecto B — hasta 10-31 (14 d) · programadas 0 · backlog 3
    3. PROJ-0009 Proyecto C — Área B · hasta 02-28 · sin par en el gestor de tareas · formato antiguo
    4. PROJ-0027 Proyecto D — backlog vacío
    Sin par en la bóveda: «Proyecto E»
    
    • Una fecha límite pasada: la cadena list.deadline_passed.
    • La cadena list.legacy cuando hay campos heredados, o un Tasks/ heredado.
    • Un proyecto cuyo backlog está vacío: la cadena list.backlog_empty.
    • La última línea (list.orphans) nombra proyectos del backend a los que ningún resumen apunta, encontrados como tasks.md «Notas sobre la tabla», project.list, dice. Elimínala cuando esté vacía o cuando el adaptador no soporte project.list.
    • Elimina cualquier campo en blanco en lugar de imprimir un marcador de posición. Un Projects/ vacío es una respuesta válida: dilo sin más.

Proyectos archivados y preconvención

Los proyectos en Archive/ pueden ser anteriores a las convenciones: sin frontmatter, sin prefijo PROJ-xxxx, sin subcarpetas. Lee la sección project.goal de la nota, omite la sección de tareas y overview.acceptance, y declara claramente que está archivado y en el formato antiguo.

Notas

  • Calcula, no estimes: los recuentos de días, recuentos de tareas y plazos vencidos provienen del backend, los archivos y la fecha del sistema de hoy. Si algo no se puede calcular porque un campo está en blanco, di que está en blanco en lugar de adivinar.
  • Un resumen informa sobre el estado; no juzga al usuario. "Vencido hace 5 días", no "abandonaste el proyecto".
  • Todo en LANG, tareas incluidas.

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", "мигрируй хранилище".

Skills relacionados