diff --git a/dist/setup-tasks.skill b/dist/setup-tasks.skill index c094f88..047c50a 100644 Binary files a/dist/setup-tasks.skill and b/dist/setup-tasks.skill differ diff --git a/dist/using-tasks.skill b/dist/using-tasks.skill index 37bd34c..693df07 100644 Binary files a/dist/using-tasks.skill and b/dist/using-tasks.skill differ diff --git a/skills/setup-tasks/SKILL.md b/skills/setup-tasks/SKILL.md index b0f856d..c21a5e4 100644 --- a/skills/setup-tasks/SKILL.md +++ b/skills/setup-tasks/SKILL.md @@ -126,7 +126,7 @@ In migrate mode, do *not* try to auto-parse the old flat STATUS.md. The old layo 1. Show the user the old STATUS.md content (or a summary). 2. Ask: "Which of these are real, in-flight tasks you want to keep?" Get a list. -3. For each task, ask the four canonical fields (slug, status, branch, where-stopped, next-action). The skill never invents these. +3. For each task, ask the canonical fields (slug, status, branch, where-stopped, next-action). The skill never invents these. 4. Build a fresh canonical `.tasks/STATUS.md` from those answers. 5. Create `.tasks/yyyy-mm-dd-#####-.md` for each active or paused task using the per-task template (Goal, Key files, Decisions log, Open questions, Completed steps, Notes). File name format v2: date + 5-digit number (from the task's header `[#n slug]`) + slug, no `#`: `2026-05-08-00057-fbs-picking-list-pdf.md`. 6. Leave the `.bak-` file in place — historical record. @@ -194,7 +194,7 @@ If invoked from `project-bootstrap`, return control silently. 1. `rm -rf .tasks/` (greenfield rollback) or - `mv .tasks/STATUS.md.bak- .tasks/STATUS.md` (migrate rollback) and `rm .tasks/.md` for any newly created per-task files. + `mv .tasks/STATUS.md.bak- .tasks/STATUS.md` (migrate rollback) and `rm .tasks/.md` for any newly created per-task files; if per-task files were moved to `.tasks/done/` during the migration, remove those too. 2. `git reset HEAD .tasks/` if a git repo. 3. Tell user what failed. diff --git a/skills/using-tasks/SKILL.md b/skills/using-tasks/SKILL.md index dca1bf7..9205ddd 100644 --- a/skills/using-tasks/SKILL.md +++ b/skills/using-tasks/SKILL.md @@ -44,7 +44,7 @@ If `.tasks/` is **missing**, or `STATUS.md` exists but is non-canonical (e.g. fl Commit `.tasks/` to git. Decision history is valuable; diffs show how thinking evolved. -`STATUS.md` is the **active** board — it must stay lean so orientation reads stay cheap. Closed 🟢 tasks are archived to `.archive/done-YYYY-MM.md` once they pile up; their **per-task files** move to `.tasks/done/` (see "### Task completion" step 9). +`STATUS.md` is the **active** board — it must stay lean so orientation reads stay cheap. Closed 🟢 tasks are archived to `.archive/done-YYYY-MM.md` once they pile up; their **per-task files** move to `.tasks/done/` (see "### Task completion" step 7). > **`.tasks/.lock` must be listed in `.gitignore`** (add `.tasks/.lock` to your project's `.gitignore`). The lock file is ephemeral runtime state, not project history — it must never be committed. @@ -195,31 +195,31 @@ self-implemented work closed with the coverage check. - Missing evidence on any criterion → flag to user and ask "закрывать или подождать coverage'а?". Never silently close. - If acceptance criteria are policy / docs-only and have no testable shape, an explicit user "ok, closed by inspection" is required (record this in the close-note). 2. Resolve or drop all open questions. -5. Set status to 🟢 in STATUS.md. -6. **Notify-письмо при закрытии (кросс-проектные таски).** Если закрываемая +3. Set status to 🟢 in STATUS.md. +4. **Notify-письмо при закрытии (кросс-проектные таски).** Если закрываемая таска пришла из другого проекта (в блоке есть `**Notify:**` или ``) — отправить письмо комиссионеру в его инбокс: `/.agents/inbox/Z-<своя-папка>.md`, frontmatter `event: closed`, `slug: `, тело = итог (сделано, acceptance, ссылки). Поллер пишет это письмо за авто-раны; **живая сессия пишет сама** — статус 🟢 на борде ≠ комиссионер узнал. -7. Append final summary line to Decisions log. -8. Remind user to delete the branch after merge. -9. **Move the per-task file to `.tasks/done/`** (format v2): `git mv .tasks/yyyy-mm-dd-#####-.md .tasks/done/`. The board block is 🟢 (archived to `.archive/done-YYYY-MM.md` when it piles up); the deep-context file leaves the active folder. -10. **Session-break check (after close, before claiming the next task).** Once the task is 🟢 and committed — and **before** any `tasks_claim_next` or starting the next task — read the closed task's `session_break` marker (its frontmatter `session_break`, or the `**Session break:**` field in its STATUS.md block). If present: +5. Append final summary line to Decisions log. +6. Remind user to delete the branch after merge. +7. **Move the per-task file to `.tasks/done/`** (format v2): `git mv .tasks/yyyy-mm-dd-#####-.md .tasks/done/`. The board block is 🟢 (archived to `.archive/done-YYYY-MM.md` when it piles up); the deep-context file leaves the active folder. +8. **Session-break check (after close, before claiming the next task).** Once the task is 🟢 and committed — and **before** any `tasks_claim_next` or starting the next task — read the closed task's `session_break` marker (its frontmatter `session_break`, or the `**Session break:**` field in its STATUS.md block). If present: - Print this line **verbatim**, substituting the closed task's slug for `[slug]` and the marker's string value for `[value | "см. STATUS.md"]` (use the literal `см. STATUS.md` when the marker is just `true`): `🔚 SESSION BOUNDARY — [slug] закрыта. Рекомендую завершить текущую сессию. Следующий трек: [value | "см. STATUS.md"]` - **Stop.** Do not claim or start the next task. - If the marker is absent → behaviour is unchanged: proceed to claim / start the next task as usual. -11. **Archival check.** After the close is committed, if `STATUS.md` now holds **≥ 10** 🟢 done blocks, archive them (see "### Archiving done tasks"). This keeps the board lean for the next orientation read. +9. **Archival check.** After the close is committed, if `STATUS.md` now holds **≥ 10** 🟢 done blocks, archive them (see "### Archiving done tasks"). This keeps the board lean for the next orientation read. ### Archiving done tasks 🟢 done blocks accumulate in `STATUS.md` and bloat it — and since orientation reads the whole board, a bloated file burns context on every session start (the recurring "huge STATUS.md" complaint). Keep the board lean: done blocks stay only until merged, then move to a monthly archive. -**Threshold.** When `STATUS.md` holds **≥ 10** 🟢 done blocks, archive them. Check at two moments: (a) right after closing a task (Task completion step 8), and (b) at session start, before orienting (Session start step 7). The threshold is a ceiling, not a target — archive in batches; don't churn one block at a time. +**Threshold.** When `STATUS.md` holds **≥ 10** 🟢 done blocks, archive them. Check at two moments: (a) right after closing a task (Task completion step 9), and (b) at session start, before orienting (Session start step 7). The threshold is a ceiling, not a target — archive in batches; don't churn one block at a time. **Where.** Append the archived blocks to `.tasks/.archive/done-YYYY-MM.md` — one file per calendar month, keyed by the date of archival. Create `.tasks/.archive/` and the month file if absent. If the month file already exists, **append**; never overwrite. @@ -283,7 +283,7 @@ Pair: `using-projects-meta` declares local-first for **reads**; this rule extend - **One active task at a time** — only one 🔴 in STATUS.md. - **Keep the board lean** — orientation reads the local `STATUS.md` whole, so archive 🟢 done blocks to `.tasks/.archive/done-YYYY-MM.md` once ≥10 pile up. Never enumerate the current project's board via `tasks_aggregate` (cross-project cache) or `tasks_get_status` (single-task, by slug). See "### Archiving done tasks". - **Never close a task without a coverage check** — see "### Task completion" step 1. Acceptance criteria with no evidence → ask, don't auto-close. -- **Honour `session_break`** — a closed task carrying a `session_break` marker means stop after close; never chain into `tasks_claim_next`. See "### Task completion" step 7. +- **Honour `session_break`** — a closed task carrying a `session_break` marker means stop after close; never chain into `tasks_claim_next`. See "### Task completion" step 8. - **Local-first recommendations** — cwd-project board comes first; cross-project urgents are at most one footnote line. - **Notify-письмо при закрытии** — кросс-проектная таска закрыта → письмо комиссионеру (event: closed). Поллер пишет за авто-раны; живая сессия — сама. See "### Task completion" step 4. - **Design → impl tasks ⇒ review umbrella** — N≥1 impl tasks derived from a design get a `-review` umbrella (status=blocked, blocker=impl-slugs, reviewer = non-implementer session). See "### Design-derived impl tasks — review umbrella".