diff --git a/dist/using-tasks.skill b/dist/using-tasks.skill index fe030a3..af3e8e9 100644 Binary files a/dist/using-tasks.skill and b/dist/using-tasks.skill differ diff --git a/skills/using-tasks/README.md b/skills/using-tasks/README.md index 497243f..aa560fe 100644 --- a/skills/using-tasks/README.md +++ b/skills/using-tasks/README.md @@ -103,10 +103,36 @@ hypotheses, links). ### Task completion -1. Resolve or drop all open questions. -2. Set status to 🟢 in `STATUS.md`. -3. Append a final summary line to the Decisions log. -4. Remind the user to delete the branch after merge. +1. **Pre-close coverage check** — list acceptance criteria, locate + evidence (tests, smoke-test artefacts, manual checklist ticks, design + doc refs). Missing evidence → ask the user before closing; never auto-close. +2. Resolve or drop all open questions. +3. Set status to 🟢 in `STATUS.md`. +4. Append a final summary line to the Decisions log. +5. Remind the user to delete the branch after merge. + +### Post-commit task closure prompt + +After a `feat:` / `fix:` commit the agent prompts: +"эта работа закрывает таску ``?". Slug candidates: commit-message +scope, current branch, most recent `Where I stopped`. If yes → run the +coverage check above. Skips `chore:` / `meta:` / `docs:` commits. + +Forces a fresh-while-fresh decision, instead of letting shipped code sit +under a stale ⚪ block. + +### Recommendations / "what's next" trigger + +When the user asks «что дальше», «срочные», «куда копаем», "what next", +"status", or on session-start — recommend in this order: + +1. **Local cwd-project board** ranked 🔴 → 🟡 → ⚪. Cite slugs. +2. **One footnote line** if relevant: `Cross-project: N 🔴 in other repos + (см. mcp__projects-meta__tasks_aggregate).` Only if N>0 and no local 🔴. + +Explicit "по всем проектам" / "across all projects" flips the order. +Pairs with `using-projects-meta`'s local-first rule (which covers reads; +this one covers recommendations). ## Rules @@ -120,6 +146,10 @@ hypotheses, links). - **Always confirm orientation at session start.** State understanding before acting. - **One active task at a time** — only one 🔴 in `STATUS.md`. +- **Never close without coverage check.** See "### Task completion" + step 1. +- **Local-first recommendations.** cwd-project first; cross-project at + most one footnote line. ## Install diff --git a/skills/using-tasks/SKILL.md b/skills/using-tasks/SKILL.md index 9b8b428..1f158d3 100644 --- a/skills/using-tasks/SKILL.md +++ b/skills/using-tasks/SKILL.md @@ -1,6 +1,6 @@ --- name: using-tasks -version: 1.0.0 +version: 1.1.0 description: > Policy skill for working with an existing `.tasks/` board (per-task files + STATUS.md). Use whenever the user is switching between tasks, resuming a paused task, starting a new @@ -124,10 +124,40 @@ Temporary hypotheses, links, names of people to consult. 4. Create and checkout branch if it doesn't exist. ### Task completion -1. Resolve or drop all open questions. -2. Set status to 🟢 in STATUS.md. -3. Append final summary line to Decisions log. -4. Remind user to delete the branch after merge. +1. **Pre-close coverage check.** Before setting 🟢: + - List acceptance criteria from the per-task `.md` (or the STATUS block if no per-task file). + - For each criterion, locate evidence: a test name in the diff, a smoke-test artefact, a manual-checklist tick in the per-task file, or a design-doc reference. + - 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. +3. Set status to 🟢 in STATUS.md. +4. Append final summary line to Decisions log. +5. Remind user to delete the branch after merge. + +### Post-commit task closure prompt + +After any implementation commit (`feat:` / `fix:` / similar), prompt the user once: + +> Эта работа закрывает таску ``? + +Slug candidates, in priority: (a) commit message scope, (b) current branch name, (c) the most recent `Where I stopped` field that mentions a now-shipped artefact. If user says yes → run the pre-close coverage check from "### Task completion". If no → silent. + +Skip on `chore:` / `meta:` / `docs:` / `style:` commits — they rarely close work. + +This exists because shipped code can sit while the task block stays ⚪ ready (e.g. `extend-project-discipline-brainstorm-workspaces` lived as ⚪ for a day after `215afdd` shipped Rule 5). The prompt forces a one-line decision while the work is fresh. + +### Recommendations / "what's next" trigger + +When the user asks «что дальше», «срочные», «куда копаем», «status», «what next», or session-start lands on a project — recommend in this order: + +1. **Local cwd-project board** ranked 🔴 → 🟡 → ⚪. Group by status, summarize one line each. Cite slugs. +2. **One footnote line** if cross-project state is relevant: `Cross-project: N 🔴 active in other repos (см. mcp__projects-meta__tasks_aggregate).` Only when N>0 and there is no active 🔴 in the current cwd. Never bury local recommendations under it. + +Cross-project urgents are *information*, not the driver of "what to do here". The user chose this cwd; that's the implicit scope. + +If the user explicitly asks "across all projects" / "по всем проектам" / "cross-project status" — flip the order: cross-project first, local as footnote. + +Pair: `using-projects-meta` declares local-first for **reads**; this rule extends local-first to the **recommendation phase**. --- @@ -140,3 +170,5 @@ Temporary hypotheses, links, names of people to consult. - **Commit after every session end** — git log is the history of thinking. - **Always confirm orientation at session start** — state understanding before acting. - **One active task at a time** — only one 🔴 in STATUS.md. +- **Never close a task without a coverage check** — see "### Task completion" step 1. Acceptance criteria with no evidence → ask, don't auto-close. +- **Local-first recommendations** — cwd-project board comes first; cross-project urgents are at most one footnote line.