Skip to content

v0.2.0 — Backlog + Daily Task Cycle

Choose a tag to compare

@Dmatryus Dmatryus released this 16 Apr 11:07
· 18 commits to main since this release
2b0dcc1

Context

v0.1.x покрывает старт проекта (project-init). Пользователь инициализировал реальный проект и хочет, чтобы ассистент помогал в ежедневной разработке. Нужно: (1) на основе OVERVIEW + ARCHITECTURE предложить план реализации (backlog), (2) поддерживать цикл задачи с трекингом, (3) связать открытые вопросы между сессиями и документами.

Полный цикл

project-init → OVERVIEW + ARCHITECTURE + CLAUDE.md
    ↓
/dm-cc-assistant:backlog  ← создаёт план реализации
    ↓
Ассистент + пользователь прорабатывают → .task/backlog.md
    ↓
┌─ Цикл задачи ─────────────────────────────────────┐
│  /backlog → выбрать задачу (по T-ID)               │
│  /research T-003 → research привязан к задаче      │
│  implement (обычный Claude)                        │
│  /review → ревью привязано к задаче                │
│  /update-docs → обновляет docs + backlog + вопросы │
│                                                    │
│  Открытые вопросы за сессию:                       │
│    → обогащают docs (OVERVIEW/ARCHITECTURE)         │
│    → порождают новые задачи в backlog              │
│    → или пополняют OVERVIEW §9 (глобальные)        │
│                                                    │
│  Глобальные открытые вопросы (OVERVIEW §9):        │
│    → проверяются при каждом update-docs             │
│    → решённые → правки в docs + новые задачи       │
└────────────────────────────────────────────────────┘

4 skill'а

Skill Agent Что делает
/dm-cc-assistant:backlog backlog-planner Создаёт / показывает / обновляет backlog
/dm-cc-assistant:research T-ID task-researcher Research задачи по ID из backlog
/dm-cc-assistant:review [scope] code-reviewer Ревью изменений
/dm-cc-assistant:update-docs docs-updater Обновляет docs + backlog + открытые вопросы

Backlog: формат и ID-система

Файл: .task/backlog.md в CWD пользователя.

Формат:

# Backlog — {название проекта}

Сгенерирован из OVERVIEW.md + ARCHITECTURE.md.
Последнее обновление: {дата}

## In Progress
- **T-003** [High] Экран настроек с переключением темы
  - Итерация: v1
  - Зависит от: T-001

## Todo
- **T-004** [Critical] Push-уведомления для напоминаний
  - Итерация: v1
  - Зависит от: T-002
- **T-005** [Low] Экспорт данных в CSV
  - Итерация: v2

## Done
- **T-001** ~~[Critical] Базовая навигация между экранами~~
- **T-002** ~~[Critical] Локальное хранилище привычек (SQLDelight)~~

## Open Questions
- Какой сервис для push-уведомлений? (связано с T-004)
- Нужен ли онбординг-экран? (потенциальная новая задача)

ID-система:

  • Формат: T-NNN (T-001, T-002, ...)
  • Автоинкремент — агент читает последний ID и +1
  • ID стабильные — не меняются при перемещении между статусами
  • Все артефакты привязаны: .task/research.md# Research: T-004, .task/review.md# Review for: T-004

Новые агенты (4 штуки)

agents/backlog-planner.md

tools: Read, Write, Bash | model: opus

Первый запуск (backlog.md не существует):

  1. Читает OVERVIEW.md (§6 Must/Should/Could) + ARCHITECTURE.md (§2 Module Map, §5 Data Model)
  2. Разбивает Must-фичи на маленькие задачи (1 задача ≈ 1 час работы, максимум 2). Claude склонен переоценивать размер — лучше разбить на две мелких, чем оставить одну крупную.
  3. Каждой задаче назначает приоритет: Critical (блокирует всё остальное), High (важно для текущей итерации), Medium (желательно), Low (можно отложить)
  4. Определяет зависимости между задачами
  5. Группирует по итерациям (v1 → v2 → ...)
  6. Переносит открытые вопросы из OVERVIEW.md §9 в секцию Open Questions
  7. Показывает draft пользователю. STOP. Ждёт подтверждение. Обсуждает по одной задаче за раз — не dump всего backlog'а.
  8. Записывает .task/backlog.md

Повторный запуск (backlog.md существует):

  1. Показывает текущий статус: N done, M in progress, K todo
  2. Спрашивает что делать: показать backlog / добавить задачу / выбрать задачу для работы / обновить приоритеты
  3. При выборе задачи → ставит статус In Progress, подсказывает /dm-cc-assistant:research T-NNN

Стиль: интерактивный диалог, один вопрос за раз, правило терминологии.

agents/task-researcher.md

tools: Read, Grep, Glob, Bash | model: sonnet

  • Получает T-ID из $ARGUMENTS
  • Читает .task/backlog.md → находит задачу по ID, извлекает описание, приоритет и зависимости
  • Читает CLAUDE.md + OVERVIEW.md + ARCHITECTURE.md
  • Ищет в кодовой базе релевантные файлы (Grep/Glob/Read)
  • Пишет .task/research.md:
    # Research: T-004 — Push-уведомления для напоминаний
    
    ## Из backlog
    {описание задачи, приоритет, зависимости, итерация}
    
    ## Relevant Files
    {файлы с описанием релевантности}
    
    ## Existing Patterns
    {как похожие вещи сделаны в проекте}
    
    ## Constraints
    {из CLAUDE.md и ARCHITECTURE.md}
    
    ## Suggested Approach
    {пошаговый план реализации}
    
    ## Risks
    {на что обратить внимание}
    
    ## Промпт для реализации
    
    Скопируй в новый чат:
    
    > Я работаю над задачей T-004 — Push-уведомления для напоминаний.
    > Прочитай `.task/research.md` для полного контекста.
    > 
    > Начни с: {первый шаг из Suggested Approach}

Ключевая фича: в конце research.md агент генерирует готовый промпт для копирования в новый чат. Это мост между research и implementation — пользователю не нужно самому формулировать задачу для Claude.

agents/code-reviewer.md

tools: Read, Grep, Glob, Bash | model: sonnet

Интерактивный ревью, не статический отчёт:

  1. Берёт git diff (scope из $ARGUMENTS, default: unstaged)
  2. Читает CLAUDE.md (NEVER, CONSTRAINTS) + ARCHITECTURE.md (patterns)
  3. Если есть .task/backlog.md — определяет какая задача In Progress, привязывает review
  4. Анализирует diff, собирает findings, сортирует по приоритету (Critical → High → Medium → Low)
  5. Показывает первый finding пользователю с контекстом (file:line, что не так, почему, предложение фикса)
  6. STOP. Ждёт реакцию:
    • «Согласен, фиксим сейчас» → агент не фиксит сам (read-only), но фиксирует решение
    • «Согласен, но не сейчас» → агент добавляет задачу в .task/backlog.md с новым T-ID
    • «Не согласен» → пропускает, записывает в review.md как «dismissed»
    • Вопрос → обсуждает, потом повторяет STOP
  7. Переходит к следующему finding. Повторяет 5-6 для каждого.
  8. В конце записывает .task/review.md с итогом (что принято, что отвергнуто, что ушло в backlog)

Read-only по отношению к коду проекта — не редактирует исходники. Может писать в .task/review.md и .task/backlog.md.

agents/docs-updater.md

tools: Read, Write, Grep, Glob, Bash | model: sonnet

Интерактивный — ведёт активный диалог с пользователем, не просто показывает diff'ы.

Обновляет три слоя:

Слой 1 — Project docs (OVERVIEW.md, ARCHITECTURE.md, CLAUDE.md):

  • Читает git diff/log + существующие docs
  • Для каждого doc определяет затронутые секции
  • Показывает CURRENT vs PROPOSED per section, ждёт confirm
  • PRINCIPLES section — immutable
  • Targeted edits, не перезапись

Слой 2 — Backlog (.task/backlog.md):

  • Текущая задача (In Progress) → перемещает в Done
  • Если в процессе возникли новые задачи → добавляет в Todo с новыми T-ID
  • Показывает изменения, ждёт confirm

Слой 3 — Open Questions:

  • Сессионные вопросы, которые не закрыты:
    • Часть → обогащает docs (вносит в соответствующую секцию)
    • Часть → новые задачи в backlog
    • Часть → глобальные open questions (OVERVIEW.md §9)
  • Глобальные вопросы из OVERVIEW.md §9:
    • Проверяет каждый: решён ли он по результатам текущей работы?
    • Решённые → правки в docs + возможно новые задачи
    • Нерешённые → остаются

Skills (4 штуки)

skills/backlog/SKILL.md

name: backlog
description: Create or manage the project implementation backlog. First run generates tasks from OVERVIEW.md + ARCHITECTURE.md. Subsequent runs show status and let you pick a task.
disable-model-invocation: true
  • Проверяет OVERVIEW.md + ARCHITECTURE.md существуют
  • Запускает backlog-planner через Task
  • Подсказка после выбора задачи: /dm-cc-assistant:research T-NNN

skills/research/SKILL.md

name: research
description: Research the codebase for a backlog task by T-ID. Produces .task/research.md.
disable-model-invocation: true
  • Проверяет .task/backlog.md существует (warn если нет — работает и без backlog, по текстовому описанию)
  • Проверяет T-ID в $ARGUMENTS (или текстовое описание задачи)
  • Запускает task-researcher
  • Подсказка: «Начинай реализацию. Потом — /dm-cc-assistant:review»

skills/review/SKILL.md

name: review
description: Review code changes against project conventions. Produces .task/review.md.
disable-model-invocation: true
  • Проверяет git repo
  • Определяет scope из $ARGUMENTS (default: git diff)
  • Проверяет diff не пустой
  • Запускает code-reviewer
  • Статистика: N critical, M suggestions, K nits

skills/update-docs/SKILL.md

name: update-docs
description: Update project docs, backlog status, and open questions after completing work.
disable-model-invocation: true
  • Проверяет наличие хотя бы одного doc-файла
  • Запускает docs-updater
  • Итог: какие docs обновлены, backlog status, open questions resolved/added

Промежуточные файлы в проекте пользователя

user-project/
├── .task/
│   ├── backlog.md    # от backlog-planner, обновляется docs-updater
│   ├── research.md   # от task-researcher (перезаписывается)
│   └── review.md     # от code-reviewer (перезаписывается)
├── OVERVIEW.md       # обновляется docs-updater
├── ARCHITECTURE.md   # обновляется docs-updater
└── CLAUDE.md         # обновляется docs-updater

Edge cases

Ситуация backlog research review update-docs
Нет OVERVIEW/ARCH ❌ suggest project-init ⚠️ degraded ⚠️ generic ❌ suggest project-init
Нет backlog.md создаёт ⚠️ по текстовому описанию ✅ работает ⚠️ только docs, не backlog
Нет git ✅ работает ✅ работает ❌ graceful fail ⚠️ только по $ARGUMENTS
Пустой diff n/a n/a подсказка --staged по $ARGUMENTS
T-ID не найден n/a ⚠️ спросить какой n/a n/a

Изменения в существующих файлах плагина

  • hooks/hooks.json — SessionStart: 5 команд + контекст (нет CLAUDE.md? нет backlog? есть In Progress задача?)
  • .claude-plugin/plugin.json — description + keywords
  • .claude-plugin/marketplace.json — version: 0.2.0
  • OVERVIEW.md — §4 обновить диаграмму, §6 backlog/research/review/docs-update из Could → Must (v2)
  • ARCHITECTURE.md — §2 Module Map + §3 Data Flow (backlog + task cycle) + §5 Data Model (.task/)
  • CLAUDE.md — WHAT + HOW
  • CHANGELOG.md — v0.2.0

Порядок реализации

  1. Обновить OVERVIEW.md (scope v0.2.0)
  2. Обновить ARCHITECTURE.md (module map, data flow, data model)
  3. Обновить CLAUDE.md (новые команды)
  4. agents/backlog-planner.md + skills/backlog/SKILL.md
  5. agents/task-researcher.md + skills/research/SKILL.md
  6. agents/code-reviewer.md + skills/review/SKILL.md
  7. agents/docs-updater.md + skills/update-docs/SKILL.md
  8. hooks/hooks.json
  9. plugin.json + marketplace.json
  10. CHANGELOG.md

Верификация

На реальном проекте (уже инициализированном):

  1. /dm-cc-assistant:backlog → проверить генерацию backlog из OVERVIEW + ARCHITECTURE
  2. Выбрать задачу → /dm-cc-assistant:research T-001
  3. Реализовать задачу обычным Claude
  4. /dm-cc-assistant:review → проверить привязку к задаче
  5. /dm-cc-assistant:update-docs → проверить 3 слоя: docs + backlog + open questions