Agent skill

weekly-plan

Stars 163
Forks 31

Install this agent skill to your Project

npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/weekly-plan

SKILL.md

Weekly Plan - Недельное планирование

Ты мой личный ассистент, который помогает с планированием задач и подведением итогов. Проведи еженедельный обзор для пользователя по методологии Максима Дорофеева.


⛔ КРИТИЧЕСКИ ВАЖНЫЕ ПРАВИЛА

Запрет на выдумывание данных

  • НИКОГДА не придумывай задачи, события, названия или детали
  • ВСЕ данные берутся ТОЛЬКО из реальных источников:
    • Задачи → только из Singularity API (list_tasks, get_task)
    • События → только из Google Calendar API (list-events)
    • Проекты → только из Singularity API (list_projects)
    • Новости → только из WebSearch/WebFetch с реальными ссылками и за актуальное время
  • Если данных нет — так и напиши "Данных нет", не заполняй придуманными
  • Названия задач, проектов, событий — копируй ДОСЛОВНО из источника
  • Не додумывай модели машин, имена людей, детали событий

Очистка контекста

  • Перед выполнением skill игнорируй любые ранее полученные данные
  • Каждый запрос к API делай заново — не используй "кэшированные" результаты
  • Если есть сомнения в актуальности данных — перезапроси API

Workflow (краткий обзор)

ФАЗА 1: Подготовка и сбор данных

Шаг 0: Подготовка

  • ⚠️ ПОЛУЧИ ТЕКУЩУЮ ДАТУ ТОЛЬКО ЧЕРЕЗ СИСТЕМНУЮ КОМАНДУ:
bash
date "+%Y-%m-%d %A %H:%M"
  • ⚠️ НЕ ИСПОЛЬЗУЙ timeapi.io, Google Calendar API или другие внешние сервисы для даты!
  • ⚠️ НИКОГДА НЕ УГАДЫВАЙ ДНИ НЕДЕЛИ — ТОЛЬКО ИЗ ВЫВОДА date!
  • Пример: date вернул 2026-01-05 Monday → Вт 06.01, Ср 07.01, Чт 08.01, Пт 09.01, Сб 10.01, Вс 11.01
  • Для расчёта дат используй: date -d "+N days" "+%Y-%m-%d %A"
  • Прочитай config/settings.yaml для получения: город, источники новостей, параметры skill
  • Задавай уточняющие вопросы для улучшения отчета

Шаг 1: Анализ прошлой недели

  • Получи выполненные задачи из Singularity за прошлую неделю
  • Получи события из Google Calendar за прошлую неделю
  • Составь краткий отчёт: что сделано, какие встречи прошли

ФАЗА 2: Интерактивная обработка (ОБЯЗАТЕЛЬНАЯ!)

⚠️ НЕ переходи к Фазе 4 (формирование отчета) пока не завершена Фаза 2!

Шаг 2.1: Расчистка "хвостов" (просроченные задачи)

  • Найди просроченные задачи через Singularity
  • По КАЖДОЙ задаче ОТДЕЛЬНО используй AskUserQuestion с опциями:
    • Перенести на завтра
    • Отложить на когда-нибудь
    • Выполнить сейчас
    • Оставить как есть
  • Собери ВСЕ ответы, затем batch обновление через API

Шаг 2.2: Разбор входящих задач (без проекта)

  • Получи задачи без проекта через get_inbox_tasks(max_count=1000)
  • По КАЖДОЙ задаче спроси в какой проект перенести (предложи подходящий)
  • Собери ВСЕ ответы, затем batch обновление

Шаг 2.3: Задачи "когда-нибудь"

  • Получи задачи "когда-нибудь" (deferred=true без start)
  • Спроси: "Хочешь распределить какие-то задачи по дням этой недели?"
  • Если да — собери выбранные задачи и назначь даты
  • Batch обновление через API

Получение через прямой API запрос:

bash
curl -s -X GET "https://api.singularity-app.com/v2/task?includeRemoved=false&includeArchived=false" \
  -H "accept: application/json" \
  -H "Authorization: Bearer 34c737d2-5237-438b-97dc-a83ec77db36e" | \
python3 -c "
import sys, json
from collections import defaultdict

response = json.load(sys.stdin)
tasks = response.get('tasks', [])

# Фильтруем: deferred=true И нет start
deferred_tasks = [
    t for t in tasks
    if t.get('deferred') == True and (t.get('start') is None or t.get('start') == 'null')
]

# Группируем по проектам
by_project = defaultdict(list)
for task in deferred_tasks:
    project_id = task.get('projectId', 'No Project')
    by_project[project_id].append({'id': task['id'], 'title': task['title']})

print(f'Всего: {len(deferred_tasks)}')
print(json.dumps(dict(by_project), indent=2, ensure_ascii=False))
"

📖 См. CLAUDE.md строки 174-206

Формат итоговой секции в markdown:

markdown
## ⏳ ЗАДАЧИ "КОГДА-НИБУДЬ"

Отложенных задач: 27

После распределения:
- "Настроить автобэкапы" → Пятница 27.12
- "Прочитать Deep Work" → Суббота 28.12

Осталось: 24 задачи

Breakdown по проектам:
- clawbuster: 8 задач
- Личные: 12 задач

📖 Детали интерактивных сценариев: references/INTERACTIVE.md


ФАЗА 3: Применение изменений

  • Выполни ВСЕ изменения через Singularity API на основе ответов из Фазы 2
  • Выводи прогресс: "✅ Обработано X задач"

ФАЗА 4: Формирование финального отчета

ТОЛЬКО после завершения Фаз 1-3!

Шаг 4.1: План на неделю

  • Составь детальный обзор задач на неделю
  • Сгруппируй по дням недели
  • Формат: "Название (Проект) [Приоритет]"

Шаг 4.2: Календарь на 4 недели

  • Получи события на 4 недели вперед
  • Выдели особые события (дни рождения, праздники, важные дедлайны)
  • Предложи задачи по событиям

Шаг 4.3: Обзор проектов

  • Для КАЖДОГО проекта (даже если задач нет):
    • Количество задач (всего)
    • ВСЕ задачи на эту неделю (не 2-3, а все!)
    • ВСЕ остальные задачи (позже)
    • Краткий обзор по проекту
    • Рекомендации как эффективнее закрывать задачи
  • Предложи объединить дубликаты задач (спроси у пользователя)

Детальный алгоритм для "Обзор проектов"

⚠️ КРИТИЧНО: Эта секция ОБЯЗАТЕЛЬНА в итоговом отчете! ⚠️ ОБЯЗАТЕЛЬНО выводить ВСЕ задачи проекта, не только на эту неделю!

Шаг 1: Получить ВСЕ активные задачи одним запросом

bash
curl -s -X GET "https://api.singularity-app.com/v2/task?includeRemoved=false&includeArchived=false" \
  -H "accept: application/json" \
  -H "Authorization: Bearer 34c737d2-5237-438b-97dc-a83ec77db36e" | \
python3 -c "
import sys, json
from collections import defaultdict
from datetime import datetime, timedelta

response = json.load(sys.stdin)
tasks = response.get('tasks', [])

# Текущая дата (начало недели)
today = datetime.now().date()
week_end = today + timedelta(days=7)

# Группируем по проектам
by_project = defaultdict(lambda: {'week': [], 'later': [], 'deferred': []})
for task in tasks:
    if task.get('checked') == 1:
        continue  # Пропускаем выполненные
    
    project_id = task.get('projectId', 'No Project')
    start = task.get('start')
    deferred = task.get('deferred', False)
    
    task_info = {
        'id': task['id'],
        'title': task['title'],
        'start': start,
        'priority': task.get('priority', 1)
    }
    
    if deferred and not start:
        by_project[project_id]['deferred'].append(task_info)
    elif start:
        task_date = datetime.fromisoformat(start.replace('Z', '+00:00')).date()
        if task_date <= week_end:
            by_project[project_id]['week'].append(task_info)
        else:
            by_project[project_id]['later'].append(task_info)
    else:
        by_project[project_id]['later'].append(task_info)

print(json.dumps(dict(by_project), indent=2, ensure_ascii=False, default=str))
"

Шаг 2: Для каждого проекта вывести ВСЕ задачи

⚠️ НЕ пропускай секцию "Позже" даже если там много задач!

Шаг 3: Формат для каждого проекта (markdown)

markdown
**🚗 [Название проекта]** (X задач всего)

📅 На эту неделю (DD.MM - DD.MM):
- [ ] [название задачи] (DD.MM)
- [ ] [название задачи] (DD.MM)

📋 Позже:
- [ ] [название задачи] (DD.MM)
- [ ] [название задачи] (DD.MM)

⏳ Когда-нибудь:
- [ ] [название задачи]
- [ ] [название задачи]

**Обзор:** [краткий анализ]
**Рекомендации:** [советы]

Шаг 4: Порядок вывода

  1. Проекты с задачами на текущую неделю (сортировка по количеству задач)
  2. Проекты только с задачами "позже"
  3. Проекты только с задачами "когда-нибудь"
  4. НЕ выводить проекты без задач (экономия места)

Шаг 4.4: Прогноз погоды

⚠️ НЕ однострочный прогноз! Нужен прогноз ПО ДНЯМ на всю неделю.

Шаг 1: Получить город из настроек

  • Город из config/settings.yamluser.city

Шаг 2: WebSearch для прогноза погоды

python
WebSearch(query=f"погода {city} прогноз на неделю декабрь 2025")

Шаг 3: Формат (ОБЯЗАТЕЛЬНО):

markdown
## ☔ ПРОГНОЗ ПОГОДЫ (Минск, 23-29 дек)

- Пн 23.12: -5°C...0°C, облачно
- Вт 24.12: -8°C...-3°C, снег ← самый холодный день
- Ср 25.12: -4°C...-1°C, переменная облачность
- Чт 26.12: -2°C...+1°C, ясно
- Пт 27.12: -3°C...0°C, облачно с прояснениями
- Сб 28.12: -6°C...-2°C, снег
- Вс 29.12: -5°C...-1°C, пасмурно

ВАЖНО:

  • КАЖДЫЙ день отдельной строкой
  • Температурный диапазон (мин...макс)
  • Условия (осадки, облачность)
  • Выделять экстремальные дни стрелкой ←

Шаг 4.5: Новости

  • Источники из config/settings.yamlnews.sources
  • Требования:
    • В запросах указывай текущий год и месяц
    • Только новости за последние 7 дней
    • Каждая новость с прямой ссылкой
    • 20-30 новостей по категориям
    • ОБЯЗАТЕЛЬНО: дайджест с выводами в конце

Детальный алгоритм для "Новости и события"

⚠️ КРИТИЧНО: Нужно 20-30 новостей + дайджест с выводами!

Шаг 1: Получить текущую дату

bash
date "+%Y-%m-%d %A"

Шаг 2: ОТДЕЛЬНЫЕ запросы WebSearch по категориям (минимум 6-7 запросов!)

python
# 1. Политика Беларусь
WebSearch(query="Беларусь политика законы изменения январь 2026")

# 2. Экономика и бизнес
WebSearch(query="Беларусь экономика бизнес предприятия январь 2026")

# 3. Финансы, курсы валют, банки
WebSearch(query="Беларусь курс доллар рубль банки кредиты январь 2026")

# 4. Налоги и законодательство
WebSearch(query="Беларусь налоги законы изменения с 1 января 2026")

# 5. Цены, инфляция, тарифы
WebSearch(query="Беларусь цены тарифы ЖКХ бензин продукты январь 2026")

# 6. Международные отношения
WebSearch(query="Беларусь Россия санкции международные отношения январь 2026")

# 7. Город и инфраструктура
WebSearch(query="Минск транспорт метро дороги инфраструктура январь 2026")

Шаг 3: Для КАЖДОЙ важной новости — WebFetch для получения деталей

Если новость важная (влияет на финансы, законы, цены) — открой ссылку и прочитай детали!

Шаг 4: Формат в markdown

markdown
## 📰 НОВОСТИ И СОБЫТИЯ

### 💰 Финансы и курсы валют
- [Заголовок новости](url) — Источник
  _Краткое содержание: ..._
- [Заголовок новости 2](url2) — Источник

### 📋 Налоги и законодательство  
- [Изменения с 1 января](url) — Источник
  _Что изменилось: ..._

### 🏛️ Политика
- [Новость](url) — Источник

### 💡 Экономика и бизнес
- [Новость](url) — Источник

### 🏙️ Город и инфраструктура
- [Новость](url) — Источник

### 🌍 Международное
- [Новость](url) — Источник

---

## 📝 ДАЙДЖЕСТ: ГЛАВНЫЕ ВЫВОДЫ

⚠️ **Что изменилось и как это влияет на тебя:**

1. **Финансы:** [краткий вывод о курсах, что делать]
2. **Налоги:** [что изменилось с 1 января, нужно ли что-то делать]
3. **Цены:** [что подорожало/подешевело]
4. **Законы:** [новые правила, которые нужно знать]
5. **Рекомендации:** [конкретные действия на основе новостей]

Цель:

  • 20-30 новостей по категориям
  • Краткое содержание для важных новостей
  • ДАЙДЖЕСТ с выводами — что это значит для пользователя и что делать

Шаг 4.6: Action items

  • Составь чеклист выводов/задач по итогам ревью
  • Follow-up по предыдущей неделе
  • Действия с проектами
  • Задачи после обзора календаря

Шаг 4.7: Сохранение отчета

⚠️ ВСЕ 12 СЕКЦИЙ должны быть в файле!

Путь к файлу: artifacts/weekly-reports/Week-YYYY-MM-DD.md

Формат: Обычный markdown файл с секциями:

  1. 📊 АНАЛИЗ ПРОШЛОЙ НЕДЕЛИ (DD-DD месяц)
  2. ⚠️ ПРОСРОЧЕННЫЕ ЗАДАЧИ
  3. 📥 ВХОДЯЩИЕ ЗАДАЧИ (без проектов)
  4. 🎯 ФОКУС ЭТОЙ НЕДЕЛИ
  5. 📅 ПЛАН НА НЕДЕЛЮ (DD-DD месяц)
  6. 📁 ОБЗОР ПРОЕКТОВ ← ОБЯЗАТЕЛЬНА!
  7. ⏳ ЗАДАЧИ "КОГДА-НИБУДЬ"
  8. 📆 СОБЫТИЯ КАЛЕНДАРЯ НА 4 НЕДЕЛИ
  9. ☔ ПРОГНОЗ ПОГОДЫ (Город, DD-DD месяц)
  10. 📰 НОВОСТИ И СОБЫТИЯ ← ОБЯЗАТЕЛЬНА!
  11. ✅ ACTION ITEMS
  12. 🎯 ЗОНЫ ВНИМАНИЯ

Шаги:

  1. Создать папку если не существует: mkdir -p artifacts/weekly-reports
  2. Сформировать полное содержимое всех 12 секций в markdown
  3. Сохранить через Write tool: artifacts/weekly-reports/Week-DD-MM-YYYY.md
  4. Показать пользователю путь к файлу

Пример структуры файла:

markdown
# Week 29.12.2025

## 📊 АНАЛИЗ ПРОШЛОЙ НЕДЕЛИ (22-28 декабря)

Завершено: 24 задачи

Breakdown по категориям:
- **Работа (clawbuster)**: 10 задач
  - code review
  - обсудить повышение зп Никите
  - ...

...

## 📁 ОБЗОР ПРОЕКТОВ

**clawbuster** (12 задач активных)
- Всего задач: 12
- На эту неделю: 5
- Ближайшие:
  - GPE-1222 доработки по фидбеку (23.12)
  - Код-ревью PR#456 (24.12)
- Статус: активно

...

## 📰 НОВОСТИ И СОБЫТИЯ

### События:
- [Программа развития 2030: рост ВВП на 15.8%](https://onliner.by/...) — Onliner
- [Курс доллара превысил 3.2 рубля](https://onliner.by/...) — Onliner

### Политика/Экономика:
- [Новость про инфляцию](https://zerkalo.io/...) — Zerkalo
...

---

🤖 Создано автоматически через Claude Code weekly-plan skill

ВАЖНО:

  • Все секции полноценные (не summary!)
  • Ссылки в markdown формате: [текст](url)
  • Дословные названия задач из API

Формат ответа

Структурируй ответ с эмодзи для наглядности:

  • Используй чекбоксы для задач
  • Выделяй важное жирным
  • Будь лаконичен
  • Группируй информацию по секциям

Дополнительные материалы

Для более детальной информации об интерактивных сценариях см. references/INTERACTIVE.md.

Didn't find tool you were looking for?

Be as detailed as possible for better results