From ae8a4256a2caadcfa22614839ceb8e24dbf70966 Mon Sep 17 00:00:00 2001 From: vitya Date: Wed, 20 May 2026 09:32:54 +0300 Subject: [PATCH] =?UTF-8?q?tasks:=20add=20using-yt-tools=20promotion=20bun?= =?UTF-8?q?dle=20(3=20baseline=20=E2=9A=AA=20+=201=20review=20=F0=9F=94=B5?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Local-write workaround — Gitea backend temporarily down, projects-meta tasks_create returned 404. Source: .workshop/.archive/2026-05-20-yt-tools.md --- .tasks/STATUS.md | 111 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 110 insertions(+), 1 deletion(-) diff --git a/.tasks/STATUS.md b/.tasks/STATUS.md index adcd81b..7423ab3 100644 --- a/.tasks/STATUS.md +++ b/.tasks/STATUS.md @@ -1,5 +1,5 @@ # Task Board -_Updated: 2026-05-12 (using-synology-ops-test-trigger 🟢 done — 10/10 after PATCH 0.1.0→0.1.1)_ +_Updated: 2026-05-20 (promoted using-yt-tools v0.1.0 → 4 tasks: install/hermes-mapping/test-trigger ⚪ ready + review 🔵 blocked-by-impl)_ +## ⚪ [using-yt-tools-install] — Install env deps (ffmpeg + python venv + 3 pip libs) for using-yt-tools on agent machine. + +**Этапы:** +1. **Сейчас** — system-level: `ffmpeg` через OS-пакетник (`winget install Gyan.FFmpeg` / `brew install ffmpeg` / `apt install ffmpeg`); python venv в `~/projects/.common/lib/yt-tools/.venv`; `pip install youtube-transcript-api pyscenedetect yt-dlp`. +2. **После реализации `OpeItcLoc03/.common` task** (ручной post-promotion task на импл python-пакета `lib/yt-tools/`) — `pip install -e ~/projects/.common/lib/yt-tools/` в venv; smoke `yt-transcript --help`, `yt-frames --help`, `yt-watch --help`. + +Cross-platform: повторить на каждой агент-машине (Windows / Linux / macOS). README пакета должен документировать команды под все три ОС. + +**Источник дизайна:** `.workshop/.archive/2026-05-20-yt-tools.md` (разделы «Зависимости» и «Упаковка»). + +**Status:** ready +**Where I stopped:** (not started) +**Next action:** Этап 1 сейчас (см. выше); Этап 2 после того как `.common/lib/yt-tools/` существует. Проверка: `yt-dlp --version`, `ffmpeg -version`, `python -c "import youtube_transcript_api, scenedetect"`. +**Branch:** n/a + + +--- + +## ⚪ [using-yt-tools-hermes-mapping] — Register `using-yt-tools` in `~/projects/claude-skills/hermes/mapping.yaml` (mode: pending). + +Mode: **`pending`** — скил вызывает внешние CLI (yt-dlp/ffmpeg) и пишет файлы в `./yt-cache/`. Требует ручного аудита перед переходом на `auto`. + +**Триггеры** (русские/английские) — из SKILL.md frontmatter description: +- ru: «транскрипт видео», «расшифровка YouTube», «что в этом ролике», «о чём ролик», «покажи кадр на N», «посмотри момент N», «что показано в видео на N» +- en: «watch this video», «video summary», «youtube transcript» +- URL-pattern: `youtube\.com|youtu\.be` (подавление WebFetch — он не отдаёт ни транскрипт, ни кадры на YouTube) + +**Источник дизайна:** `.workshop/.archive/2026-05-20-yt-tools.md` (раздел «Triggers для skill»). + +**Status:** ready +**Where I stopped:** (not started) +**Next action:** В `hermes/mapping.yaml` добавить блок (формат — посмотреть `using-synology-ops` рядом): +``` +- skill: using-yt-tools + mode: pending + triggers: + - "транскрипт видео" + - "расшифровка YouTube" + - "что в этом ролике" + - "о чём ролик" + - "покажи кадр на" + - "посмотри момент" + - "что показано в видео на" + - "watch this video" + - "video summary" + - "youtube transcript" + url_pattern: "youtube\\.com|youtu\\.be" +``` +Прогнать `python hermes/build-hermes.py`. После аудита поведения (см. `using-yt-tools-test-trigger`) — рассмотреть переход на `mode: auto`. +**Branch:** n/a + + +--- + +## ⚪ [using-yt-tools-test-trigger] — Behavioral smoke-test using-yt-tools on a clean session + e2e CLI pipeline on a test YouTube URL. + +**Что проверяется:** + +1. **Активация на своих триггерах** — каждая из 10 фраз description'а активирует скил на чистой сессии. +2. **False-positive check** — НЕ активируется на 2-3 близких чужих: + - «скачай это видео» (только yt-dlp, не watching) + - «расшифруй подкаст» (audio-only — нет STT в скиле) + - «что в этой лекции на Vimeo» (не YouTube) +3. **CLI pipeline e2e** (после `using-yt-tools-install` Этап 2): + - `yt-transcript ` → markdown с metadata header + параграфами + `[mm:ss]`-якорями (copy-paste-friendly в формат `--timestamps`) + - `yt-frames --timestamps 1:00,2:30` → 2 jpg в `./yt-cache//frames/` + - **Iterative-флоу (primary use-case):** транскрипт → агент выбирает таймкоды по содержанию → `yt-frames --timestamps` → `Read frame_*.jpg` → vision-anchored ответ + +**Источник дизайна:** `.workshop/.archive/2026-05-20-yt-tools.md` (разделы «Primary use-case — iterative agent-driven viewing» и «Triggers для skill»). + +**Status:** ready +**Where I stopped:** (not started) +**Next action:** Подобрать тестовый YT URL (5-10 мин, авторские субтитры ru/en, видеоряд меняется — не talking-head). На чистой сессии прогнать 10 триггеров + 3 false-positive. После `using-yt-tools-install` Этап 2 — CLI e2e + iterative-флоу. Findings → follow-up tasks (`using-yt-tools--fix`). +**Branch:** n/a + + +--- + +## 🔵 [using-yt-tools-review] — Skill-review checkpoint для using-yt-tools (промоушен 2026-05-20). + +**Источник дизайна:** `.workshop/.archive/2026-05-20-yt-tools.md` (process trace: GitHub research + iterative-сценарий + 4 user-utверждённых default'а). +**Импл-таски:** using-yt-tools-install, using-yt-tools-hermes-mapping, using-yt-tools-test-trigger. +**Также блокируется ОТДЕЛЬНОЙ ручной таской** в `OpeItcLoc03/.common` на импл python-пакета `lib/yt-tools/` (создаётся пост-промоушн, вне scope `workshop-promote-brainstorm` скила). + +**Кто делает:** **не имплементер.** Другая сессия / другой день / другой агент. Identity-not-location: ревьюер работает в любой папке, где есть доступ к файлам. + +**Поведенческий smoke-test (это и есть acceptance):** +- Скил активируется в чистой сессии на каждой триггер-фразе из `description` (русский И английский — список в test-trigger таске). +- Скил **не** активируется на 2-3 близких но не своих фразах (false-positive list в test-trigger таске). +- Каждый шаг секции `Steps` отрабатывает на тестовом буфере без ошибок (NB: после второго прохода body — body сейчас пустой stub). +- `Failure modes` уводят в abort, не в частичный успех с грязным состоянием. +- `What NOT to do` соответствует реальности — нет дыры между правилом и реализацией. + +**Iterative-флоу (key acceptance):** transcript → агент выбирает таймкоды → frames → Read → vision-anchored ответ работает end-to-end на тестовом YouTube URL. + +Findings → follow-up tasks (`using-yt-tools--fix`) через `tasks_create` в `claude-skills` (или локально пока Gitea лежит). + +**Закрытие:** только когда все findings зафайлены ИЛИ ревьюер подтвердил «нет findings» в close-note. + +**NB по семверу:** `version: 0.1.0` записан промоутером. Дальнейшие инкременты — ответственность владельца `claude-skills/`, **не** этого скила и не ревьюера. + +**Status:** blocked +**Where I stopped:** (not started — все 3 baseline + ручная `.common`-таска должны быть 🟢) +**Next action:** Дождаться 🟢 у всех 3 baseline-тасок выше + у ручной `.common` task'и на python-пакет. Затем — поведенческий smoke + iterative-флоу e2e (см. test-trigger). Findings → follow-up через `tasks_create`. +**Branch:** n/a + + +--- + ## 🟡 [skill-readmes] — write English README.md for every skill + translate root README **Status:** paused **Where I stopped:** infra-skill cluster done — READMEs for `project-bootstrap`, `setup-wiki`, `setup-tasks`, `using-wiki`, `using-tasks`; root README translated; cross-links between all five skills wired up