Agent skill
weekly-plan
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: Подготовка
- ⚠️ ПОЛУЧИ ТЕКУЩУЮ ДАТУ ТОЛЬКО ЧЕРЕЗ СИСТЕМНУЮ КОМАНДУ:
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 запрос:
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:
## ⏳ ЗАДАЧИ "КОГДА-НИБУДЬ"
Отложенных задач: 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: Получить ВСЕ активные задачи одним запросом
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)
**🚗 [Название проекта]** (X задач всего)
📅 На эту неделю (DD.MM - DD.MM):
- [ ] [название задачи] (DD.MM)
- [ ] [название задачи] (DD.MM)
📋 Позже:
- [ ] [название задачи] (DD.MM)
- [ ] [название задачи] (DD.MM)
⏳ Когда-нибудь:
- [ ] [название задачи]
- [ ] [название задачи]
**Обзор:** [краткий анализ]
**Рекомендации:** [советы]
Шаг 4: Порядок вывода
- Проекты с задачами на текущую неделю (сортировка по количеству задач)
- Проекты только с задачами "позже"
- Проекты только с задачами "когда-нибудь"
- НЕ выводить проекты без задач (экономия места)
Шаг 4.4: Прогноз погоды
⚠️ НЕ однострочный прогноз! Нужен прогноз ПО ДНЯМ на всю неделю.
Шаг 1: Получить город из настроек
- Город из
config/settings.yaml→user.city
Шаг 2: WebSearch для прогноза погоды
WebSearch(query=f"погода {city} прогноз на неделю декабрь 2025")
Шаг 3: Формат (ОБЯЗАТЕЛЬНО):
## ☔ ПРОГНОЗ ПОГОДЫ (Минск, 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.yaml→news.sources - Требования:
- В запросах указывай текущий год и месяц
- Только новости за последние 7 дней
- Каждая новость с прямой ссылкой
- 20-30 новостей по категориям
- ОБЯЗАТЕЛЬНО: дайджест с выводами в конце
Детальный алгоритм для "Новости и события"
⚠️ КРИТИЧНО: Нужно 20-30 новостей + дайджест с выводами!
Шаг 1: Получить текущую дату
date "+%Y-%m-%d %A"
Шаг 2: ОТДЕЛЬНЫЕ запросы WebSearch по категориям (минимум 6-7 запросов!)
# 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
## 📰 НОВОСТИ И СОБЫТИЯ
### 💰 Финансы и курсы валют
- [Заголовок новости](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 файл с секциями:
- 📊 АНАЛИЗ ПРОШЛОЙ НЕДЕЛИ (DD-DD месяц)
- ⚠️ ПРОСРОЧЕННЫЕ ЗАДАЧИ
- 📥 ВХОДЯЩИЕ ЗАДАЧИ (без проектов)
- 🎯 ФОКУС ЭТОЙ НЕДЕЛИ
- 📅 ПЛАН НА НЕДЕЛЮ (DD-DD месяц)
- 📁 ОБЗОР ПРОЕКТОВ ← ОБЯЗАТЕЛЬНА!
- ⏳ ЗАДАЧИ "КОГДА-НИБУДЬ"
- 📆 СОБЫТИЯ КАЛЕНДАРЯ НА 4 НЕДЕЛИ
- ☔ ПРОГНОЗ ПОГОДЫ (Город, DD-DD месяц)
- 📰 НОВОСТИ И СОБЫТИЯ ← ОБЯЗАТЕЛЬНА!
- ✅ ACTION ITEMS
- 🎯 ЗОНЫ ВНИМАНИЯ
Шаги:
- Создать папку если не существует:
mkdir -p artifacts/weekly-reports - Сформировать полное содержимое всех 12 секций в markdown
- Сохранить через Write tool:
artifacts/weekly-reports/Week-DD-MM-YYYY.md - Показать пользователю путь к файлу
Пример структуры файла:
# 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?