59 KiB
Task Board
Updated: 2026-08-12 — sovereign-catalog-wave2-review closed: VERDICT PASS для волны-2 (10/10) + CONCERN на HEAD (2 дефекта 42ed5ea → 4 follow-up таски), архив доски (51 🟢). Ранее: 2026-08-10 — session-inbox-monitor-pi-extension shipped: pi-native inbox delivery for ALL pi sessions. SESSION-SCOPED: watches only <ctx.cwd>/.claude-inbox/ (own project only — vitya's rule: an agent may only read its own directory's inbox; the first global-scan version was scrapped same day). PUSH 15s poll (interactive) + PULL agent_settled sweep; headless = no delivery (messages wait for interactive); dedup per-process + .read/ move = cross-process first-wins vs CC hooks; source of truth .common/lib/pi-extensions/inbox-monitor.ts, deployed byte-identical to ~/.pi/agent/extensions/, functional tests PASS (incl. decoy — other inbox untouched). SKILL.md v0.2.2→v0.3.0 with Pi section. Ранее: review-kit прогнан в чистой не-имплементер сессии: 3 трека закрыты VERDICT PASS — inter-session-peer-discipline-test-trigger (pos 4/4→peer high, 0 FP на 5 чужих RU+EN), inter-session-peer-discipline-review (тело v0.1.1 несёт все 3 принципа, не конфликтует с CLAUDE.md), session-inbox-monitor-review (зонтик: активация 3/3 monitor + neg clean [X2 low-conf observation]; структурный аудит хуков 5 PASS/1 CONCERN; received-msg-fp учтён RESOLVED via b; hermes держим pending до tool-side аудита). Метод — clean-context непрайменные субагенты + независимый структурный аудит. Единственный finding (UTF-8 guard) сразу пофикшен и закрыт: session-inbox-monitor-encoding-guard-followup 🟢 — [Console]::OutputEncoding=UTF8 forward-guard в inbox-monitor.ps1, кириллический regression под WinPS 5.1 PASS, задеплоен byte-identical, SKILL.md v0.2.2. Ранее: session-inbox-monitor-test-trigger closed (VERDICT PASS; clean-session run, 7 непрайменных субагентов: pos 4/4→session-inbox-monitor [вкл. CLAUDE.md-line P4], neg 2/3 [N2 backend→none, N3 received-msg EN→none, N1 received-msg RU→FP]; FP borderline + body-load-self-correcting, корень=inter-session-peer-discipline не установлен; follow-up session-inbox-monitor-received-msg-fp заведён; -review разблокирован [нужна НЕ-имплементер сессия]; строка inbox monitor: raise on start добавлена в CLAUDE.md по согласию user). Ранее: task-loop-test-trigger closed (VERDICT PASS; live clean-session run: pos 6/6→task-loop, neg discrimination clean, task-loop FP 0/3, behavioral 4/4 [consult-gate, session_break BOUNDARY, empty-stop-no-poll, long-watch ScheduleWakeup≥1200 not CronCreate]; registry confirmed real via subagent probe; ALL 3 task-loop baselines now done; finding: session_break is the fragile gate — body-load-dependent, informational only, no fix). Ранее: task-loop-hermes-mapping closed (task-loop entry → hermes/mapping.yaml mode:pending, intended auto/mcp; reason claim/close/heartbeat + ScheduleWakeup; YAML validated; schema version untouched. 2 of 3 task-loop baselines now done; -test-trigger ⚪ remains, needs clean session). Ранее: task-loop-install closed (skill installed to ~/.claude/skills/, diff-identical to source, visible in available-skills with full description post-/reload-plugins; -test-trigger unblocked → ⚪ ready, needs clean session). Ранее: using-tasks-session-lock shipped (using-tasks 1.3.0→1.4.0; session lock guard: start step 1 + end step 1 + .gitignore + Structure docs). Ранее: meta-host-routing-review closed (VERDICT PASS; behavioral 8/8 via clean-context subagents — 5 pos→meta-host-routing, 3 neg routed away incl. known-Gitea Skip-clause; Steps verified vs live infra: yt-tools→OpeItcLoc03/meta-yt-tools dedicated host resolves, .common grep hits, excludesFile/auth.toml present; failure-modes→STOP+ask, What-NOT accurate; no blocking findings on skill v0.3.0. Observation: task acceptance «resolves .common» is stale — skill+reality route yt-tools to dedicated meta-yt-tools host. Caveat: -install + -hermes-mapping baselines remain ⚪ open — skill not in ~/.claude/skills nor hermes/mapping.yaml; review covers content+trigger-discrimination only, not live-harness activation). Ранее: task-format skill v0.1.0 created (TDD via writing-skills; RED 3-fail → GREEN 2-pass). Ранее: using-markitdown-cli-rewrite-review done (VERDICT PASS; SKILL.md без mcp__markitdown__, CLI-примеры совпадают с markitdown 0.1.6 --help, version 1.0.0→1.0.1 PATCH, dist консистентен; 1 informational finding — docker-контейнер респаунится из out-of-scope ~/.claude.json MCP-регистрации → follow-up using-markitdown-mcp-deregister needs-human). Ранее: skill-using-system-snapshot-review done (VERDICT PASS 3/3; live tool-contract verify + 9-way fresh-context trigger test, 8 clean; 3 informational findings, none blocking — incl. missing deployment scaffold: skill not installed / not in hermes-mapping / no baseline tasks). Ранее: using-tasks-status-read-perf done (using-tasks 1.2.0→1.3.0; done-task archival rule fixes STATUS.md bloat; literal tasks_get_status-for-orientation swap NOT done — tool can't enumerate the board, documented). Ранее: session-break-using-tasks done (using-tasks 1.1.0→1.2.0; session_break marker — stop after close before claim-next). Ранее: delegate-task-review done (VERDICT PASS; smoke-test 6/6 fresh subagents, no blocking findings, 3 informational notes). Ранее: delegate-task-test-trigger done (pos 5/5, neg 2/3; FP на «создать задачу себе» → follow-up delegate-task-description-fp-fix, shipped v0.2.1). Ранее (2026-06-08): откат churn'а от агент-раннера (always-on dry-run): 5 тасок (using-yt-tools-rate-limit-guard, archive-roundtrip-test, skills-grouping-revisit, hermes-converter-ci, tdd-criteria-precommit-hook) спуриозно claimed/blocked из-за workspace-divergence бага раннера → возвращены в ⚪ ready. yt-tools re-scoped на plugin-репо OpeItcLoc03/yt-tools (исходный stub deprecated).
Poller: eligible
⚪ [using-yt-tools-rate-limit-guard] — Add explicit "don't batch requests at YouTube" rule to skills/using-yt-tools/SKILL.md (avoid HTTP 429 IP-block).
Эмпирика (2026-05-31, modulair-wiki ingest, DESKTOP). Владелец кинул подборку из 10 YouTube URL. Агент выстрелил залпом ~21 запрос подряд: yt-dlp --dump-json ×10 (метаданные — прошли) + yt-transcript ×10 (transcript-api). Первый transcript-вызов достучался (вернул список языков), со второго пошёл HTTP 429 / "YouTube is blocking requests from your IP". Блок IP-wide и держится минутами — упёрлись оба пути: youtube-transcript-api (yt-transcript) И yt-dlp timedtext-subtitle endpoint (метаданные при этом ещё проходили, а субтитры — нет). Что разблокировало: ~4-мин cooldown + запросы по одному с паузами 25–35с + ранний abort если первый не прошёл (чтобы не жечь cooldown впустую).
Второй, смежный баг той же сессии: yt-transcript по умолчанию просит --lang en и промахивается мимо ручных en-US субтитров (видео с manually-created en-US и без en отдаёт "no transcript"). Лечится --lang en-US,en (или вообще автоопределением).
Что добавить в SKILL.md:
-
What NOT to do — новый буллет: «Не пулять в YouTube пачкой запросов. Несколько URL подряд (или metadata+transcript залпом) →
HTTP 429, IP-block на минуты, бьёт оба пути (transcript-api и yt-dlp). Обрабатывай по одному, с паузой ≥25–35с между; при пакете из N URL — последовательно, не параллельно. Если уже словил 429 — cooldown ~3–5 мин перед повтором, проверяй первый запрос и не продолжай залп если он упал.» -
Failure modes — новая строка: симптом
HTTP 429 Too Many Requests/"blocking requests from your IP"→ причина: слишком много запросов подряд (rate-limit, не приватность/регион) → действие: cooldown + по одному с паузами; НЕ retry в цикле без задержки. Отличать отyt-dlp source download failed(это реальная недоступность видео). -
(опц.) Inputs / Flow A — упомянуть
--lang en-US,enкак дефолт-страховку для ручных не-enсубтитров (видео NE/прочие сen-US-only).
Bump: PATCH (поверхностное расширение guidance, не breaking).
TDD: не применим (markdown-документ). Behavioral-смок опционален: «дай 5 URL» → агент обрабатывает последовательно с паузами, не залпом.
Дисциплина: после правки — bump version в frontmatter, commit feat(using-yt-tools): rate-limit guard (no-batch) vX.Y.Z; install/hermes-mapping/push — отдельно, как в прошлых yt-tools-тасках (для PATCH достаточно reload-plugins).
Weight: needs-human
Status: ready — RE-SCOPED 2026-06-08: исходный таргет skills/using-yt-tools/SKILL.md устарел — это deprecated inert stub (v0.4.1), канонический контент мигрировал в plugin-репо OpeItcLoc03/yt-tools (v0.6.0), там же живут секции, на которые ссылается задача (вкл. буллет «Не retry на yt-dlp failures» для расширения). Правило по-прежнему нужно — но вносить его в plugin-репо, не в stub. (Находка автономного агента 2026-06-08; consult по «какой репо править» → halt при consult_policy=human-only; decision-trail в per-task файле.)
Where I stopped: (not started в правильном репо) — баг и фикс зафиксированы по живой сессии 2026-05-31; правка отложена в задачу (владелец просил не лезть в глобальный скил из проекта modulair-wiki).
Next action: В репо OpeItcLoc03/yt-tools (plugin) открыть его SKILL.md, внести пункты 1–3 (rate-limit guard), bump PATCH, commit. Свериться с существующим «Не retry на yt-dlp failures» — расширить его, а не плодить дубль. (НЕ править claude-skills stub.)
Branch: master
🟡 [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
Next action: continue with the next batch — suggest the caveman cluster (caveman, caveman-commit, caveman-review, caveman-help, caveman-compress, compress) since they form a coherent group; or jump to active-platform, find-skills, setup-context7, using-context7, using-markitdown if the caveman cluster needs deduplication first (see compress-dedup task)
Branch: master
⚪ [archive-roundtrip-test] — smoke-test for .skill archive shape
Weight: needs-human
Status: ready
Where I stopped: (not started) — caught the PowerShell-Compress-Archive backslash bug manually; a smoke-test would catch the next regression automatically
Next action: add a script that builds dist/<name>.skill, unzips into a temp dir, and diff -r against skills/<name>/. Fail on any difference. Run from CI or pre-commit if we add one
Branch: (not started)
🟡 [active-platform-eval] — eval-driven tuning of active-platform (description + body), absorbs [active-platform-tuning]
Status: paused
Where I stopped: design doc complete (.wiki/concepts/active-platform-eval-design.md, ~150 lines); per-task file complete (.tasks/active-platform-eval.md); STATUS.md collapsed the two original ⚪ tasks into this one block. Pre-flight verified: claude CLI on PATH at C:\nvm4w\nodejs\claude.ps1 (Claude Code 2.1.128); run_loop.py present at ~/.claude/plugins/cache/claude-plugins-official/skill-creator/unknown/skills/skill-creator/scripts/run_loop.py. Stopped right before eval-set authoring at user request — paused for asynchronous follow-up. No code touched, no tooling launched, no .tasks/active-platform-eval/ workspace dir created yet.
Next action: resume by answering Q2 from the chat ("eval set — write 20 queries solo from current SKILL.md + concept-page open questions, or run skill-creator's HTML review template first for user-driven edits before kickoff?"), then (a) build .tasks/active-platform-eval/eval-set.json, (b) snapshot skill to .tasks/active-platform-eval/skill-snapshot/, (c) launch run_loop.py in background, (d) parallel manual body sweep, (e) apply changes + bump to 1.1.0 + rebuild + reinstall + final report + commit.
Branch: master
⚪ [skills-grouping-revisit] — revisit flat vs grouped skills/ layout if count grows past ~30
Weight: needs-human
Status: ready
Where I stopped: (not started) — current 14 skills fit fine in flat skills/; threshold for revisiting is ~30
Next action: when triggered (skill count crosses threshold), evaluate variant B (grouped by family) vs variant C (flat + manifest) from the original brainstorm in .wiki/concepts/repo-layout.md
Branch: (not started)
⚪ [hermes-converter-ci] — [deferred — после ручной валидации MVP] CI hook (Gitea-pipeline или GitHub-Action если зеркалим): на push to master запустить scripts/build-hermes.py, сравнить diff dist-hermes/, авто-коммит если изменения (или PR-шаблон). Цель — чтобы dist-hermes/ всегда матчил skills/+hermes/mapping.yaml+hermes/skills/ без ручного запуска build. Не блокирует MVP — первая итерация делается ручным запуском конвертера. Дизайн: .wiki/concepts/hermes-skills-rollout-design.md.
Weight: needs-human
Status: ready
Where I stopped: unblocked 2026-05-07 — hermes-mvp-coverage shipped в a003b80; MVP живой на фабрике.
Next action: Выбрать платформу CI (Gitea Actions vs внешняя), написать workflow, прогнать тестовый push.
Branch: master
⚪ [tdd-criteria-precommit-hook] — Optional pre-commit hook script that automates the bright-line checks from tdd-criteria Anti-loophole rules 1 and 4. Project owner opts in per-repo by symlinking / copying to .git/hooks/pre-commit (or via husky / lefthook integration if the project uses them).
Two checks (both bright-line, both fail-closed):
Check 1 — [skip-tdd: <category>] validation. If git diff --cached --name-only includes a *.ts / *.js / *.py / similar code file (excluding tests and Permissive-zoned paths like *.css / *.env* / *.md / *.yaml), require either:
- A
*.test.*/*.spec.*/test_*.py/ similar file present in the same diff, OR - The commit subject (read from
$1arg, line 1 of$1= msg path) matches\[skip-tdd: (visual|spike|oneshot|wrapper)\].
If neither holds → block with message:
TDD policy violation: code change without test or skip marker.
Add a test, or include [skip-tdd: <visual|spike|oneshot|wrapper>] in commit subject.
See claude-skills/.wiki/concepts/tdd-criteria-design.md for which category applies.
Check 2 — Test-modification audit ([test-modify] rule 4). Detect test-modifying changes in git diff --cached:
- Removed line matching
^-\s*(expect|assert|assertThat|chai\.)\((assertion deletion) - Added/removed lines that change argument values inside
expect(...)/assert(...)calls - Added
.skip/\.xit\b/@pytest\.mark\.skip/@Disabled/@Ignoreannotations - Deleted
it(...)/test(...)/def test_*definitions (matches^-\s*(it|test|describe)\(or^-def test_)
If any matched → require commit subject matches \[test-modify: [^:]+: was .+; is .+; reason: .+\]. Block otherwise with message:
Test-modification without [test-modify: ...] marker.
Required format: [test-modify: <name>: was <literal>; is <literal>; reason: <Z>]
The was/is must be the LITERAL assertion expressions, not paraphrased.
See tdd-criteria Anti-loophole rule 4.
ALSO: if git diff --cached --name-only includes both a test-pattern file AND an impl-pattern file → block:
Test changes must be in a separate commit from impl changes (tdd-criteria rule 4b).
Run: git reset HEAD <impl-files> && git commit (test-only) && git add <impl-files> && git commit (impl-only).
Implementation:
- Bash script (single file). Cross-platform: works on Linux/macOS and on Windows under git-bash (which Claude/Hermes both already run on).
- Path:
~/projects/claude-skills/scripts/tdd-criteria-precommit-hook.sh. Plus a Windows wrapper.ps1that delegates if needed. - Tested on a real repo before commit (
booksis a good candidate — it has Jest tests +*.test.jsconvention). - Documented in
claude-skills/.wiki/concepts/tdd-criteria-design.md«See also» section (already linked).
Activation pattern (per-repo):
# Symlink or copy the hook
ln -sf ~/projects/claude-skills/scripts/tdd-criteria-precommit-hook.sh \
.git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
Or via lefthook.yml / .husky/pre-commit if the project already uses one of those.
Out of scope:
- Mutation testing (Stryker, mutmut) — separate heavyweight infra, not this hook.
- Coverage gates — different mechanism, different cost/benefit.
- Visual regression infra (Percy, Chromatic) — Permissive-5 acknowledges this is heavyweight; not bundled.
- Auto-fixing the violation — hook only blocks; fix is human's job.
Why this is optional, not required by the SKILL.md:
The skill is policy that lives in claude-skills and gets pulled into agent context per project. The hook is enforcement that needs per-project setup. Some projects opt out of pre-commit hooks entirely (e.g. karu if it's pure CSS — no code surface to enforce). Forcing the hook into the skill would couple policy to tooling.
Bypass:
Pre-commit hooks have --no-verify. Per project-discipline Rule 4 («never skip hooks unless user explicitly asks») agents must not use --no-verify — but humans can in emergencies. Each --no-verify use should be self-flagged in the commit body («bypassed pre-commit because: ...»). Not enforceable by the hook itself; this is a higher-level audit.
Weight: needs-human
Status: ready
Where I stopped: (not started)
Next action: Решить, нужен ли hook (он опционален) — если да, написать ~/projects/claude-skills/scripts/tdd-criteria-precommit-hook.sh по спеке в description, протестировать на books (Jest-конвенция *.test.js), задокументировать activation pattern. Если нет — закрыть как wontfix с пометкой что fence чисто социальная (commit subject visible в git log).
Branch: master
⚪ [tasks-board-cleanup-2026-05] — Архивная чистка .tasks/STATUS.md: переместить все 🟢 done-блоки в .tasks/.archive/done-2026-05.md, оставить в STATUS.md только header + status legend + 🔴/🟡/⚪/🔵 блоки. Цель — разгрузить файл от исторического шума без потери data (git history + явный архивный файл для текстового поиска).
Предпосылка: на 2026-05-07 в claude-skills/.tasks/STATUS.md накопилось ~18+ 🟢 done-блоков (rolled out за 2026-04-25 — 2026-05-07: tdd-criteria-rollout, hermes-rollout, bootstrap-related, project-creation-lifecycle, recommend-dont-menu и т.д.). Convention в шапке файла говорит «🟢 Done — kept until merged», но проект работает на master-only (нет ветвления для merge), поэтому convention превратилась в «kept forever». Файл рос до ~600 строк / 26K токенов — Read-инструменты упираются в лимит.
После чистки STATUS.md остаётся только активный board (🔴/🟡/⚪/🔵 + closed [bootstrap-upgrade-canonical-triggers] если уже отработал). Архивный файл .tasks/.archive/done-2026-05.md сохраняет полный текст всех перемещённых блоков для grep-поиска и historical context.
Weight: needs-human
Status: ready
Where I stopped: Создана 2026-05-07. После rollout v1.10.0/1.10.1 на STATUS.md накопилось много свежих 🟢 (bootstrap-add-tdd-trigger, refresh-project-bootstrap closed-as-superseded, bootstrap-fix-tdd-recommend-template, bootstrap-upgrade-canonical-triggers если уже отработал). Хороший момент для batch-archive.
Next action: 1) Прочитать .tasks/STATUS.md целиком (Read in chunks if needed). 2) Идентифицировать все блоки ## 🟢 [...] — разделители ---. 3) Создать .tasks/.archive/ директорию (если нет). 4) Записать .tasks/.archive/done-2026-05.md с шапкой:
# Archived — Done batch 2026-05
Перемещено из `.tasks/STATUS.md` 2026-05-07 в рамках board-cleanup. Полный список 🟢 done-тасок, шипанутых в апреле-мае 2026.
Полный source — git history `.tasks/STATUS.md` до commit X.
---
И подряд все 🟢-блоки в исходном виде.
- Edit
.tasks/STATUS.md: убрать все 🟢-блоки + соседние---разделители. Header + status legend + 🔴/🟡/⚪/🔵 блоки оставить. 6) Verify:grep '^## ' .tasks/STATUS.md | wc -l— было ~28+, должно остаться число активных (🔴+🟡+⚪+🔵, ожидание ~10-12). 7) Commitmeta(tasks): archive done batch 2026-05 → .tasks/.archive/done-2026-05.mdс body, описывающим какие группы перемещены (tdd-criteria, hermes, bootstrap, etc.) и итоговый count. 8)tasks_close.
NB: эта таска сама уйдёт в следующий cleanup batch (2026-06 или подобный), так что не пытаться её закрыть+архивировать в одном коммите. Branch: n/a
⚪ [meta-host-routing-install] — Установить новый скил meta-host-routing v0.1.0 (закоммичен локально a7526d1, ещё не установлен — потому не триггерит).
Запустить install.sh в ~/projects/claude-skills/, проверить что скил активируется в новой сессии, /reload-plugins.
Weight: needs-human Status: ready Where I stopped: (not started) Next action: Запустить install.sh, открыть новую CC-сессию, убедиться что meta-host-routing в available-skills, /reload-plugins. Branch: n/a
⚪ [meta-host-routing-test-trigger] — Прогнать триггер-фразы meta-host-routing из description на тестовом сценарии.
Должен активироваться: «project not in cache» от projects-meta; промоушен/таски для проекта с github-remote; «заведи таски в <github-проект>», «промоутни <github-проект>». НЕ должен (false-positive check): обычный Gitea-проект уже в projects-meta (прямой маршрут); 2-3 близкие фразы из соседних доменов (using-projects-meta query, обычный tasks_create в known-проект).
Weight: needs-human Status: ready Where I stopped: (not started) Next action: В чистой сессии прогнать активацию на своих фразах И убедиться что не фаерит на 2-3 чужих близких; зафиксировать результат. Branch: n/a
⚪ [skill-using-system-snapshot] — ## Goal
Создать скил using-system-snapshot в claude-skills.
Назначение
Заменить разрозненные ops-проверки (tasklist, docker ps, meta_status вручную) одним вызовом mcp__projects-meta__meta_system_snapshot в начале сессии.
Содержание скила
- Когда вызывать: старт сессии при ops-контексте; перед любым утверждением о состоянии процессов/поллера
- Что делать: вызвать
mcp__projects-meta__meta_system_snapshot, интерпретировать ответ - Формат вывода: одна строка на секцию — поллер (стоп/работает + проекты), docker (ОК / список проблем), задачи (сводка по проектам)
- Запрет: не утверждать состояние процессов без предварительного вызова snapshot
Acceptance criteria
skills/using-system-snapshot/SKILL.mdсоздан- Trigger-фразы описаны: «что запущено», «состояние системы», «поллер работает?»
- Dependency: инструмент
meta_system_snapshotдолжен быть готов (meta-system-snapshotв .common)
Permissions
- interns: no
- auto-push: yes
Weight
needs-claude
Weight: needs-claude Status: ready Where I stopped: Разблокировано 2026-06-09 — meta-system-snapshot в OpeItcLoc03/common закрыт (review прошёл, live call верифицирован). Next action: Написать skills/using-system-snapshot/SKILL.md Branch: n/a
⚪ [delegate-task-review-weight-inherit] — Исправить delegate-task скил: при создании парной review-таски (Step 5) наследовать weight от impl-таски.
Проблема: review-таски создаются через tasks_create(status=blocked, blocker=<impl-slug>) без weight параметра. Reconciler обрабатывает авто-анблок только задач с **Weight:** needs-claude или **Weight:** cheap-ok в теле. Без поля — задача навечно остаётся 🔵, поллер её не видит. Воспроизводилось трижды за одну сессию (session-break-using-tasks-review, session-break-delegate-task-review, skill-using-system-snapshot-review, using-tasks-status-read-perf-review).
Фикс: в Step 5 шаблона явно указывать weight при tasks_create review-таски. Правило: review-таска наследует weight impl-таски, но не выше needs-claude (review не бывает cheap-ok — риск игнора invoke-инструкций слабыми моделями).
Acceptance criteria:
- Step 5 в SKILL.md явно говорит: создавать review-таску с
weight= weight impl-таски (но minneeds-claude) tasks_createвызов в Step 5 включаетweightпараметр в примере/описании- What-NOT-to-do: не создавать review-таску без weight
Обязательные скилы — вызвать до начала работы
- invoke
using-tasks— для управления статусом задачи - invoke
project-discipline— дисциплина коммитов/пушей - invoke
using-wikiпосле закрытия — заингесть.wiki/concepts/delegate-task-review-weight.md
TDD: нет — markdown policy artifact; behavioral smoke = парная review-таска Разрешения: интерны: да | автопуш: нет weight: needs-claude notify: OpeItcLoc03/workshop
Status: ready
Where I stopped: (not started)
Next action: Открыть skills/delegate-task/SKILL.md, найти Step 5, добавить явное наследование weight при tasks_create review-таски. Bump PATCH.
Branch: n/a
Notify: OpeItcLoc03/workshop
⚪ [using-markitdown-cli-rewrite] — Переписать skills/using-markitdown/SKILL.md: заменить все инструкции по вызову mcp__markitdown__* тулов на вызов CLI markitdown <path|url> (v0.1.6, доступен в системном PATH). Убрать секцию про MCP setup/docker. После обновления SKILL.md — остановить и удалить локальный docker контейнер markitdown-mcp (docker stop markitdown-mcp && docker rm markitdown-mcp). Bump PATCH version в frontmatter скила.
Acceptance criteria:
- SKILL.md не содержит
mcp__markitdown__— только CLI-вызовы docker psне показывает markitdown-mcp- version bumped (PATCH)
Обязательные скилы — вызвать до начала работы
- invoke
using-tasks— для управления статусом задачи - invoke
project-discipline— дисциплина коммитов/пушей - invoke
using-interns— для file-read/grep операций - invoke
using-wikiпосле закрытия — заингесть.wiki/concepts/using-markitdown-design.mdесли существует
TDD: нет — markdown policy artifact; behavioral smoke: markitdown --help выводит usage
Разрешения: интерны: да | автопуш: да
weight: needs-claude
notify: OpeItcLoc03/workshop
Status: ready
Where I stopped: (not started)
Next action: Открыть skills/using-markitdown/SKILL.md, заменить все mcp__markitdown__ вызовы на CLI-эквиваленты, bump PATCH, затем docker stop markitdown-mcp && docker rm markitdown-mcp.
Branch: n/a
Notify: OpeItcLoc03/workshop
🔵 [setup-agents-task-runner-windows-fixes] — Починить setup-agents-task-runner по итогам первого реального Windows-прогона. Скил v0.1.0 устанавливал, но службы вставали сломанными — 5 дефектов, все диагностированы и воркэраунд-починены в OpeItcLoc03/common dev-шаблонах. Нужно перенести в SKILL.md, чтобы fresh-install на новой машине работал без ручной отладки.
Дефекты (с проверенными фиксами в OpeItcLoc03/common)
-
winsw serviceaccount: v3-схема при v2.12.0 пине. Шаблоны:
<username>.\{{USER}}</username>+<allowservicelogonright>(схема winsw v3). Пин — v2.12.0, молча игнорит незнакомые элементы → служба падает на LocalSystem без ошибки. Эталон изsample-allOptions.xmlv2.12.0:<domain>+<user>+<allowservicelogon>. Фикс: коммит 681fcda. → привести serviceaccount-блок шаблонов к v2-схеме + заметка «схема обязана совпадать с major пина winsw». -
projects-meta-mcp не разворачивается в install-layout. appeals импортит
projects-meta-mcp/dist/...(bare,file:../projects-meta-mcpjunction); watchdog —../../../projects-meta-mcp/dist/...(относит., ждёт соседа install-dir). Phase 4 копирует изолированно → junction виснет на%LOCALAPPDATA%\projects-meta-mcp→ ERR_MODULE_NOT_FOUND краш-луп. → Phase 4: развернутьprojects-meta-mcpсоседом install-dir (junction на dev-дерево либо deploy-копия) + перенаправить appeals node_modules junction. -
PORT 3000 — коллизия с дев-портом. Перенесён на 4316 во всех хост-юнитах (winsw/systemd/launchd) + watchdog TASK_RUNNER_URL. Docker-внутренний 3000 не трогали. Коммит 211d662. → дефолт хост-порта 4316.
-
Home-резолюция. Под LocalSystem
os.homedir()→ systemprofile → auth.toml не найден. После фикса run-as-user снимается само. На машине добавлен USERPROFILE/HOME env в рендеренные XML (не в dev-шаблоны). → решить: полагаться на run-as-user ИЛИ добавить env в шаблоны (тест на fresh-машине). -
Phase 8 не ловил LocalSystem (службы Running как SYSTEM, прошли). → Phase 8 ассертить SERVICE_START_NAME/StartName == целевой юзер + порт-проверку.
Мелочь: PIN.md стух (.NET461 заметка vs self-contained Core 18МБ). Фикс 31bd5a9.
Acceptance
- Fresh Windows-установка через обновлённый скил: 3 службы run-as-user (не LocalSystem), не-дев порты, отвечают по HTTP — без ручной правки junction/схемы/порта.
- Phase 8 реально ассертит аккаунт + порты.
- Linux/mac-ветки проверены на тот же класс (sibling-deploy, схема юнитов); winsw-специфична только деф.1.
- ВЕРИФИКАЦИЯ install-результата требует Windows-машины — если раннер на не-Windows, правки портируются и коммитятся, full-install проверка деферится (отметить в close-ноте).
Обязательные скилы — вызвать до начала работы
- invoke
using-tasks— статус задачи - invoke
project-discipline— semver-bump SKILL.md + дисциплина коммитов/пушей - invoke
writing-skills— правка скила по канону (Iron Law: тест-сценарий до правки) - invoke
using-projects-meta— контекст в OpeItcLoc03/common
Контекст: проверенные фиксы — OpeItcLoc03/common коммиты 681fcda / 211d662 / 31bd5a9, шаблоны lib/agents-task-runner/service/. Ops-runbook concepts/agents-task-runner-ops.md (who-does-what).
TDD: нет (правка процедуры; верификация = реальная установка). Разрешения: интерны: нет | автопуш: нет
Weight: needs-claude Notify: OpeItcLoc03/workshop
Дефекты (с проверенными фиксами)
-
winsw serviceaccount: v3-схема при v2.12.0 пине. Шаблоны использовали
<username>.\{{USER}}</username>+<allowservicelogonright>— это схема winsw v3. Пин — v2.12.0, который молча игнорит незнакомые элементы → служба падает на LocalSystem (без ошибки!). Эталон изsample-allOptions.xmlv2.12.0:<domain>+<user>+<allowservicelogon>. Фикс в common: коммит 681fcda. → Skill: serviceaccount-блок шаблонов привести к v2-схеме; добавить заметку «схема обязана совпадать с major пина winsw». -
projects-meta-mcp не разворачивается в install-layout. appeals импортит
projects-meta-mcp/dist/...(bare, черезfile:../projects-meta-mcpjunction); watchdog —../../../projects-meta-mcp/dist/...(относит. путь, ждёт соседа install-dir). Phase 4 копирует appeals/runner изолированно → npm-junction виснет на несуществующий%LOCALAPPDATA%\projects-meta-mcp→ ERR_MODULE_NOT_FOUND краш-луп. → Skill Phase 4: добавить шаг — развернутьprojects-meta-mcpсоседом install-dir (junction на dev-дерево либо deploy-копия) + перенаправить appeals node_modules junction. На этой машине решено единым junction%LOCALAPPDATA%\projects-meta-mcp→ dev-дерево (согласовано с тем, что TASKS_BIN уже ссылается на dev-дерево). -
PORT 3000 — коллизия с дев-портом. Раннер сидел на 3000 (Next/CRA/Express default) — фоновая autostart-служба не должна его занимать. Перенесён на 4316 (рядом с appeals :4317) во всех хост-юнитах (winsw/systemd/launchd) + watchdog TASK_RUNNER_URL. Docker-внутренний 3000 не трогали. Коммит 211d662. → Skill/README: дефолт хост-порта 4316.
-
Home-резолюция под службой. Пока служба была LocalSystem,
os.homedir()давалC:\WINDOWS\system32\config\systemprofile→auth.tomlне находился. На этой машине добавлен<env USERPROFILE>/<env HOME>в РЕНДЕРЕННЫЕ XML (не в dev-шаблоны). После фикса run-as-user (деф.1) проблема снимается сама (USERPROFILE берётся из токена vitya). → Skill: решить — полагаться на run-as-user ИЛИ для надёжности добавить USERPROFILE env в шаблоны (протестировать на fresh-машине без загруженного профиля). -
Phase 8 не ловил LocalSystem. Скил считал успехом «службы Running» — но они прекрасно бежали как LocalSystem (благодаря env-хаку). → Skill Phase 8: ассертить
SERVICE_START_NAME/StartName== целевой юзер, а не только Running. Проверка порта (нет 3000-коллизии) тоже.
Мелочь: PIN.md стух (.NET Framework 4.6.1 — на деле self-contained .NET Core, 18 МБ; .NET461 — отдельный ассет). Фикс 31bd5a9.
Acceptance
- Fresh Windows-установка через обновлённый скил даёт 3 службы run-as-user (не LocalSystem), на не-дев портах, все отвечают по HTTP — БЕЗ ручной правки junction/схемы/порта.
- Phase 8 скила реально ассертит аккаунт + порты.
- Линукс/мак-ветки проверены на тот же класс (sibling-deploy, схема юнитов) — winsw-специфична только деф.1.
Обязательные скилы — вызвать до начала работы
- invoke
using-tasks— управление статусом задачи - invoke
project-discipline— semver-bump SKILL.md (это versioned-артефакт) + дисциплина коммитов/пушей - invoke
writing-skills— правка скила по канону - invoke
using-projects-meta— кросс-проектный контекст (фиксы живут в OpeItcLoc03/common)
Контекст: проверенные фиксы и эталон-схема — в OpeItcLoc03/common (коммиты 681fcda / 211d662 / 31bd5a9, шаблоны lib/agents-task-runner/service/). Ops-runbook concepts/agents-task-runner-ops.md (секция who-does-what).
TDD: нет — правка процедуры скила; верификация = реальная установка на Windows-машине. Разрешения: интерны: нет | автопуш: нет
Status: blocked Where I stopped: exit 1 Next action: Портировать проверенные фиксы в SKILL.md (Phases) + дотянуть dev-шаблоны. См. тело. Branch: n/a Owner: DESKTOP-NSEF0UK:claude-opus:22572 Claim token: ef76904a-43a0-4a30-adb9-d9ed43c126e4
🟡 [agent-neutral-skill-pipeline] — ДОЛГ (идея 19 п.5, буфер claude-to-agents): инсталл/апдейт-пайплайн скилов — claude-only. update-claude-skills ставит только в ~/.claude/skills; pi получил каталог вручную (settings skills array, идея 6). Цель: update-skills обслуживает всех агентов (единый канон + честный per-agent срез). Связано с ренеймом репо (rename-repo-to-skills) и чисткой ~/.agents/skills. Сейчас НЕ исполняем (долг, status=paused) — осознанно отложено.
Status: paused Where I stopped: (not started) Next action: (пауза) После rename-repo-to-skills: спроектировать update-skills с таргетами ~/.claude/skills + ~/.agents/skills + (pi settings), подтвердить у владельца Branch: n/a
🟢 [project-discipline-dist-rebuild] — dist/project-discipline.skill устарел (v0.1.2 внутри vs source v0.2.0) — коммит 42ed5ea не пересобрал пакет (нарушение Rule 3). Найдено: sovereign-catalog-wave2-review (F1).
Status: done
Where I stopped: closed without action — починено воркшопом upstream (d7903c3): dist/project-discipline.skill пересобран, внутри version: 0.2.1. — 42ed5ea bumped project-discipline v0.1.2→v0.2.0 (Rule 4 push-freely) коснувшись только skills/project-discipline/SKILL.md; dist/project-discipline.skill несёт v0.1.2 (ask-before-push семантика). update-skills раскатит старый пакет.
Next action: (none — done upstream d7903c3)
** Пересобрать: bash scripts/build.sh --prune (или build.ps1 -Prune) → проверить version: 0.2.0 внутри dist/project-discipline.skill (unzip -p ... | grep ^version); commit "build(project-discipline): rebuild dist archive v0.1.2→v0.2.0". Автор фикса — имплементер 42ed5ea.
Branch: master
Weight: cheap-ok
Notify: OpeItcLoc03/workshop
🟢 [project-discipline-description-contradiction] — frontmatter description в project-discipline самопротиворечив: новое Rule 4 (push freely) + остаток старого grant-текста («разреши автопуш», session end resets to ask-mode) + Rule 5 продублирован (L13-15 и L18-20). Description идёт в available-skills system prompt → другие проекты получают противоречивую push-политику. Найдено: sovereign-catalog-wave2-review (F2).
Status: done
Where I stopped: closed without action — починено воркшопом upstream (d7903c3): grant-текст + дублированный Rule 5 вычищены из description, source v0.2.1. — skills/project-discipline/SKILL.md L11-20: L11-15 новое Rule 4 + L16-17 старый grant-текст «— grant via "разреши автопуш"…» + L18-20 дубль Rule 5. Тело (L82-103) корректно (push-gate модель).
Next action: (none — done upstream d7903c3)
** Переписать description: выкинуть grant-текст («разреши автопуш»/«allow auto-push»/session reset), свести Rule 5 в один пункт, сохранить push-gate-нюанс (books — auto-deploy). Сверить с телом Rule 4. Bump: PATCH 0.2.1 (текст-фикс) — решение при исполнении. Автор фикса — имплементер 42ed5ea.
Branch: master
Weight: needs-claude
Notify: OpeItcLoc03/workshop
🟢 [de-superpowers-skill-readmes] — 3 per-skill README ещё несут superpowers-ссылки после волны de-superpowers: project-bootstrap/README.md:47 (фактически врёт про шаблон — «use superpowers» уже удалён из CLAUDE.md.template), project-discipline/README.md:13 (docs/superpowers/ пути), recommend-dont-menu/README.md:7 (superpowers:brainstorming). Найдено: sovereign-catalog-wave2-review (F4).
Status: done Where I stopped: done — 3 README вычищены (bootstrap L47 под актуальный шаблон; discipline L13 без docs/superpowers/ + заодно стейл Rule 4 «Commit yes, push no» → «Push freely by default» — тот же класс, что F2; recommend-dont-menu L7 без superpowers:brainstorming). dist пересобран (build.ps1 -Names), lint 39/0. Next action: (none — done) Branch: master Weight: cheap-ok Notify: OpeItcLoc03/workshop
🟢 [skills-live-claudemd-superpowers-trigger] — корневой CLAUDE.md репо skills всё ещё содержит триггер «use superpowers» (L5); шаблон project-bootstrap уже без него (de-superpowers), свой файл не перегенерирован. Найдено: sovereign-catalog-wave2-review (F5).
Status: done Where I stopped: done — «use superpowers» удалён из корневого CLAUDE.md; остальные 12 триггерных строк сверены с установленными скилами (все валидны: caveman, using-wiki, using-tasks, using-projects-meta, pulling-before-work, session-handoff, session-inbox-monitor, project-discipline, tdd-criteria, using-interns, recommend-dont-menu, active-platform). Next action: (none — done) Branch: master Weight: cheap-ok Notify: OpeItcLoc03/workshop
🟢 [using-tasks-archive-path-fix] — skills/using-tasks/SKILL.md документирует .tasks/archive/YYYY-MM.md, реальная конвенция репо — .tasks/.archive/done-YYYY-MM.md (см. done-2026-05.md, done-2026-08.md). Найдено: sovereign-catalog-wave2-review (finding, передано воркшопу 13:43Z).
Status: done
Where I stopped: done — SKILL.md v1.4.0→v1.4.1 (PATCH): 5 путей исправлены (layout → .archive/done-YYYY-MM.md, intro, «Where» + commit-пример + Rules-буллет → .tasks/.archive/done-YYYY-MM.md), README чист. dist пересобран (build.ps1 -Names using-tasks), lint 39/0. Фикс: bff9c62.
Next action: (none — done)
Branch: master
Weight: cheap-ok
Notify: OpeItcLoc03/workshop
🟢 [brainstorming-skill-review] — Review нового скила brainstorming v0.1.0 (не-имплементер сессия). Scope: skills/brainstorming/SKILL.md + dist + README (commit 5d2e455) — адаптация diverging-фазы из obra/superpowers @ 6.2.0 (MIT) под наши конвенции.
Обязательные скилы — вызвать до начала работы
- invoke
pulling-before-work—git pull --ff-onlyПЕРЕД началом ревью (свежий origin, никаких рассинхронов); это же правило при коммите отчёта: pull перед push - invoke
using-tasks— статус задачи
Проверять: (1) HARD-GATE «не имплементировать без одобренного дизайна» присутствует и не ослаблен; (2) spec-location соответствует project-discipline rule 1 (.brainstorm/ в зоне, .wiki/concepts/ в проектах); (3) триггер-дискриминация чистыми pi -p субагентами: «забрендшторми», «поштормим», «накидай идеи», "brainstorm this" → brainstorming; «прогриль мой план» → grilling (не коллизит); «порекомендуй» → recommend-dont-menu (не коллизит); (4) lint 0/0, dist/brainstorming.skill пересобран, ~/.claude/skills/brainstorming синхронен, adapted-from пин корректен (obra/superpowers @ 6.2.0); (5) переход в grilling/промоушен описан, а не в writing-plans. Evidence-метод: clean-context не-имплементер субпроцессы (pi -p). Отчёт писать в .workshop/.brainstorm/brainstorming-skill-review.md. Полосы: доска skills — твоя (close/push), .workshop — моя; отчёт в .workshop — единственное твоё касание зоны.
Status: done Where I stopped: VERDICT PASS 6/6 (HARD-GATE, spec-location Rule 1, transition grilling/промоушен, lint 42/0, dist 0/42, pin obra/superpowers @ 6.2.0, README en+ru). Trigger-дискриминация clean pi -p: pos 4/4 → brainstorming, neg 2/2 (прогриль→grilling, порекомендуй→recommend-dont-menu) без коллизий. 3 информационных findings (using-tasks 1.4.0 installed vs 1.4.1 — вне скоупа; каталог 42 — diagnosing-bugs/writing-skills не ревьюились; протокол полос соблюдён). Отчёт: .workshop/.brainstorm/brainstorming-skill-review.md. Next action: (none — closed by review, VERDICT PASS) (не имплементер): 1) invoke pulling-before-work (pull --ff-only); 2) clean-context pi -p субагенты для триггер-дискриминации + статическая проверка SKILL.md/dist/README; 3) отчёт в .workshop/.brainstorm/brainstorming-skill-review.md; 4) pull перед push доски Branch: n/a Notify: OpeItcLoc03/workshop
🟢 [diagnosing-bugs-writing-skills-review] — Review новых скилов diagnosing-bugs + writing-skills (v0.1.0 оба, не-имплементер сессия). Scope: HARD-GATE не ослаблен (diagnosing: no fixes w/o root cause; writing: no skill w/o failing test); анти-дубль гард (anti-sproul 45+); триггер-дискриминация clean pi -p (коллизии: «зафиксируй» в writing-skills вс гриллинг docs-mode, «почему падает» вс using-vds-ops инциденты); lint/dist/install/pin/README.
Status: done Where I stopped: VERDICT PASS. HARD-GATE'ы целы (no-fixes-without-root-cause / no-skill-without-failing-test), anti-sproul жив, lint 45/0, dist/install sync, pins ok (mattpocock 84fdeffd + obra 6.2.0), README en+ru. Trigger clean pi -p: db 2/2 pos + 1/1 neg; ws 2/2 pos + 2/2 neg; F1: bare «почему падает» → system-snapshot, с субъектом работает; F2: «зафиксируй» пересекается с grilling docs-mode (контекст решает). Отчёт: .workshop/.brainstorm/diagnosing-bugs-writing-skills-review.md. Next action: (none — closed by review, VERDICT PASS) clean-context pi -p субагенты (пос и нег для обоих скилов) + статика; отчёт в .workshop/.brainstorm/diagnosing-bugs-writing-skills-review.md; pull перед push. Branch: n/a Notify: OpeItcLoc03/workshop
⚪ [session-ritual-context7-pins-review] — Не-имплементер ревью трёх изменений волны «7, 16 и 2» (commit 7b80a32): (1) session-handoff v0.4.0 — ритуал закрытия (idea 7: на session-end агент сам предлагает wiki-ingest + закрытия тасок; мутации = предложения, не молча; ритуал только на session-end фразе, не на substantive commit); (2) setup-context7 v2.0.0 — CLI-first переписывание (idea 16: установка ctx7 CLI, ключ в ~/.config/projects-secrets/ctx7.env, миграция с MCP-плагина — uninstall + чистка mcpServers.context7; подтверждение перед мутациями; smoke через ctx7 library); (3) vendored pins backfill (idea 2: caveman×5 → JuliusBrussee/caveman @ 0993277, find-skills → vercel-labs/skills @ c6f69c6, PATCH 0.1.1/1.0.1). Scope: HARD-GATE'ы (ритуал не пишет молча; setup-context7 не мутирует без подтверждения), триггер-дискриминация (ритуал vs using-tasks «закрываем эту таску»; «настрой context7» vs using-context7), lint/dist/install parity, README-таблица провенанса, description ≤1024 (idea 17).
Status: ready Where I stopped: (not started) Next action: Прогнать clean-context review (review-kit-pi-method): структурный аудит трёх SKILL.md + lint 45/0 + dist parity + триггер-дискриминация pi -p для session-handoff (session-end фразы) и setup-context7. Вердикт → письмо в skills/.agents/inbox/ или закрытие таски. Branch: n/a Notify: OpeItcLoc03/skills