fix(skills): setup-tasks/using-tasks review fixes — field count, rollback done/, step numbering
This commit is contained in:
BIN
dist/setup-tasks.skill
vendored
BIN
dist/setup-tasks.skill
vendored
Binary file not shown.
BIN
dist/using-tasks.skill
vendored
BIN
dist/using-tasks.skill
vendored
Binary file not shown.
@@ -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).
|
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.
|
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.
|
4. Build a fresh canonical `.tasks/STATUS.md` from those answers.
|
||||||
5. Create `.tasks/yyyy-mm-dd-#####-<slug>.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`.
|
5. Create `.tasks/yyyy-mm-dd-#####-<slug>.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-<ts>` file in place — historical record.
|
6. Leave the `.bak-<ts>` file in place — historical record.
|
||||||
@@ -194,7 +194,7 @@ If invoked from `project-bootstrap`, return control silently.
|
|||||||
|
|
||||||
1. `rm -rf .tasks/` (greenfield rollback)
|
1. `rm -rf .tasks/` (greenfield rollback)
|
||||||
or
|
or
|
||||||
`mv .tasks/STATUS.md.bak-<ts> .tasks/STATUS.md` (migrate rollback) and `rm .tasks/<task-slug>.md` for any newly created per-task files.
|
`mv .tasks/STATUS.md.bak-<ts> .tasks/STATUS.md` (migrate rollback) and `rm .tasks/<task-slug>.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.
|
2. `git reset HEAD .tasks/` if a git repo.
|
||||||
3. Tell user what failed.
|
3. Tell user what failed.
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
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.
|
> **`.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.
|
- 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).
|
- 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.
|
2. Resolve or drop all open questions.
|
||||||
5. Set status to 🟢 in STATUS.md.
|
3. Set status to 🟢 in STATUS.md.
|
||||||
6. **Notify-письмо при закрытии (кросс-проектные таски).** Если закрываемая
|
4. **Notify-письмо при закрытии (кросс-проектные таски).** Если закрываемая
|
||||||
таска пришла из другого проекта (в блоке есть `**Notify:**` или
|
таска пришла из другого проекта (в блоке есть `**Notify:**` или
|
||||||
`<!-- created-by: … from: <другой-проект> -->`) — отправить письмо
|
`<!-- created-by: … from: <другой-проект> -->`) — отправить письмо
|
||||||
комиссионеру в его инбокс: `<notify-проект>/.agents/inbox/<ts>Z-<своя-папка>.md`,
|
комиссионеру в его инбокс: `<notify-проект>/.agents/inbox/<ts>Z-<своя-папка>.md`,
|
||||||
frontmatter `event: closed`, `slug: <task-slug>`, тело = итог (сделано,
|
frontmatter `event: closed`, `slug: <task-slug>`, тело = итог (сделано,
|
||||||
acceptance, ссылки). Поллер пишет это письмо за авто-раны; **живая сессия
|
acceptance, ссылки). Поллер пишет это письмо за авто-раны; **живая сессия
|
||||||
пишет сама** — статус 🟢 на борде ≠ комиссионер узнал.
|
пишет сама** — статус 🟢 на борде ≠ комиссионер узнал.
|
||||||
7. Append final summary line to Decisions log.
|
5. Append final summary line to Decisions log.
|
||||||
8. Remind user to delete the branch after merge.
|
6. 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-#####-<slug>.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.
|
7. **Move the per-task file to `.tasks/done/`** (format v2): `git mv .tasks/yyyy-mm-dd-#####-<slug>.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:
|
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`):
|
- 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"]`
|
`🔚 SESSION BOUNDARY — [slug] закрыта. Рекомендую завершить текущую сессию. Следующий трек: [value | "см. STATUS.md"]`
|
||||||
|
|
||||||
- **Stop.** Do not claim or start the next task.
|
- **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.
|
- 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
|
### 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.
|
🟢 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.
|
**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.
|
- **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".
|
- **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.
|
- **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.
|
- **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.
|
- **Notify-письмо при закрытии** — кросс-проектная таска закрыта → письмо комиссионеру (event: closed). Поллер пишет за авто-раны; живая сессия — сама. See "### Task completion" step 4.
|
||||||
- **Design → impl tasks ⇒ review umbrella** — N≥1 impl tasks derived from a design get a `<topic>-review` umbrella (status=blocked, blocker=impl-slugs, reviewer = non-implementer session). See "### Design-derived impl tasks — review umbrella".
|
- **Design → impl tasks ⇒ review umbrella** — N≥1 impl tasks derived from a design get a `<topic>-review` umbrella (status=blocked, blocker=impl-slugs, reviewer = non-implementer session). See "### Design-derived impl tasks — review umbrella".
|
||||||
|
|||||||
Reference in New Issue
Block a user