| name | snoozed-review |
| description | Проверить отложенные задачи из `tasks-snoozed.md`, у которых наступила дата активации `📅`. Для GitHub-проектов смотрит дату последнего релиза и последнего коммита, делит на «устаревшие» и «кандидаты в задачи», предлагает актуальные перенести в `tasks.md` на неделю, а устаревшие — удалить. Используй, когда пользователь пишет /snoozed-review, «проверь отложенные», «что там по snoozed», «разбери отложенные задачи», «пора ли доставать отложенное». |
snoozed-review
Ревизия отложенных задач. Парный скилл к snoozed-task: тот кладёт задачи в tasks-snoozed.md с датой активации 📅, этот — достаёт созревшие и помогает решить их судьбу.
Скилл read-only по умолчанию: находит, проверяет, классифицирует и предлагает действия. Переносит в tasks.md и удаляет из tasks-snoozed.md только после явного подтверждения пользователя.
Шаги
1. Собрать созревшие задачи
- Прочитай
tasks-snoozed.md в корне vault. Нет файла или он пустой — скажи «отложенных задач нет» и остановись.
- Возьми сегодняшнюю дату из окружения.
- Отбери задачи, у которых дата активации
📅 YYYY-MM-DD ≤ сегодня. Ещё не созревшие (📅 в будущем) — пропусти, но в конце одной строкой скажи, сколько их и ближайшую дату активации.
- Задачу без
📅 считай созревшей и пометь «нет даты активации» — тоже выведи на ревизию.
2. Проверить GitHub-проекты
Для каждой созревшей задачи найди в подпунктах ссылку на проект.
-
Ссылка вида github.com/<owner>/<repo> — запроси метаданные одним вызовом:
repo=<owner>/<repo>
gh repo view "$repo" --json pushedAt,isArchived,latestRelease,stargazerCount \
--jq '{push: .pushedAt, archived: .isArchived, release: (.latestRelease.publishedAt // "none"), tag: (.latestRelease.tagName // "-"), stars: .stargazerCount}'
commits=$(gh api "repos/$repo/commits?per_page=1" --include 2>/dev/null \
| grep -i '^Link:' | grep -oE 'page=[0-9]+>; rel="last"' | grep -oE '[0-9]+')
echo "коммитов сейчас: ${commits:-1}"
push — время последнего пуша (прокси последнего коммита).
release — дата последнего релиза (none, если релизов нет).
archived — заархивирован ли репозиторий.
stars / commits — текущие звёзды и число коммитов. Сравни с базой из подпункта задачи На момент добавления: ⭐ … коммитов … (её пишет snoozed-task): рост коммитов и звёзд = проект развивался за время сна. Нет базы — просто покажи текущие значения.
404 Not Found / ошибка доступа — пометь «репозиторий недоступен (удалён/приватный)» и отнеси к устаревшим.
-
Ссылка не на GitHub (GitLab, трекер, заметка) или ссылки нет — GitHub-проверку пропусти, вынеси задачу в отдельную группу «нужен ручной разбор».
Запросы к разным репозиториям можно слать параллельно.
3. Классифицировать
Сравнивай активность с датой добавления задачи (➕) — интересно, что изменилось за время «сна».
Устаревшие (предложить удалить) — проект больше не стоит внимания:
- репозиторий заархивирован или недоступен;
- последний пуш давно (ориентир — более ~6 месяцев назад) и нет свежих релизов;
- за время с
➕ не появилось ни коммитов, ни релизов — причина откладывания не наступила.
Кандидаты в задачи (предложить перенести на неделю) — проект живой и созрел:
- вышел новый релиз после даты
➕ (обычно и была причина «посмотреть позже»);
- активные коммиты (пуш за последние ~3 месяца);
- заметный прирост коммитов/звёзд относительно базы
На момент добавления — проект рос, пока спал;
- явный прогресс по тому, ради чего откладывали (см. контекст в подпункте).
Пороги — ориентир, а не жёсткое правило: учитывай контекст добавления. Сомнительные случаи клади в кандидаты (лучше показать, чем молча выбросить) и помечай «пограничный».
4. Показать разбор
Выведи два (или три) списка. По каждому проекту — одна строка с ключевыми фактами:
Кандидаты в задачи (перенести в tasks.md на неделю):
• Посмотреть mcp-server — релиз v2.3 от 2026-09-20 (после ➕ 2026-07-04), пуш 3 дня назад. Причина «дождаться streamable http» наступила.
Устаревшие (предложить удалить):
• Посмотреть oldlib — последний пуш 2025-01, релизов нет, репозиторий заархивирован.
Нужен ручной разбор (нет GitHub-ссылки):
• Посмотреть внутренний-конфиг — ссылка ведёт в [[Notes/...]], проверить руками.
Ещё спят: 4 задачи, ближайшая активируется 2026-08-01.
5. Предложить действия и выполнить по подтверждению
- Спроси одним вопросом, что сделать: перенести кандидатов в
tasks.md / удалить устаревшие / и то и другое / ничего. Дай выбрать по пунктам, если списки большие.
- Перенос кандидата в
tasks.md: делегируй new-task (передай первую строку без Посмотреть -контекста, ссылку и заметку в подбуллеты) — позиция по умолчанию, см. new-task. Затем удали перенесённую задачу из tasks-snoozed.md.
- Удаление устаревшего: убери строку задачи и её подпункты из
tasks-snoozed.md.
- Обрабатывай только подтверждённые пункты. Остальные оставь в
tasks-snoozed.md как есть.
Защита от ошибок
- Ничего не удаляй и не переноси без явного подтверждения — сначала показываешь разбор.
- Не трогай задачи, у которых
📅 ещё в будущем.
- Не путай направление: устаревшее — удалить из snoozed; живое — перенести в tasks. Мёртвый проект в задачи на неделю не тащи.
- При переносе не теряй ссылку на проект и контекст добавления — они уходят в подпункты новой задачи.
- Не делай
git commit автоматически.
- Не выдумывай даты активности — бери из
gh. Нет данных (404/ошибка) — так и скажи, отнеси к устаревшим.
- При удалении/переносе меняй только соответствующие строки, остальные не переставляй и не сортируй.
Связанные скиллы
snoozed-task — кладёт отложенную задачу в tasks-snoozed.md (обратная операция).
new-task — используется для переноса созревшего кандидата в активный tasks.md.
list-tasks — обзор активных задач; со snoozed не работает.
Проверка перед ответом
- Показаны созревшие задачи (📅 ≤ сегодня), будущие не тронуты.
- По каждому GitHub-проекту есть факты из
gh (пуш/релиз/архив) или пометка «недоступен».
- Разбор поделён на кандидатов и устаревшие (плюс «ручной разбор», если были не-GitHub).
- Перенос/удаление сделаны только по подтверждению; изменены только нужные строки.
- В финале — сколько перенесено, сколько удалено, сколько ещё спит.