From 750a1c9351d75cb15a7a6abca80cec1b9feb8bdc Mon Sep 17 00:00:00 2001 From: Benjamin Borbe Date: Sat, 20 Jun 2026 18:21:38 +0200 Subject: [PATCH] feat(work-on-task-assistant): readiness nudge before final report MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Emit one-line readiness check (Phase 7.5) for Obsidian tasks: `✅ looks execution-ready` when phase != planning AND `# Success Criteria` section exists AND has ≥1 unchecked box; otherwise `⚠ . Run /vault-cli:plan-task first.` Shallow file-level check only — substance still belongs to `/vault-cli:plan-task` (5 hard non-negotiable checks + task-auditor). Preserves work-on-task's content-agnostic core: no questions, no edits, no blocking. Closes the friction where a user starts work on a half-baked task without being nudged toward the planning gate. Skips silently for Jira-only tasks (no local file) and recurring tasks (no Success Criteria by design). --- CHANGELOG.md | 4 ++++ agents/work-on-task-assistant.md | 27 +++++++++++++++++++++++++++ 2 files changed, 31 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0908cb0..c07418d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,10 @@ Please choose versions by [Semantic Versioning](http://semver.org/). * MINOR version when you add functionality in a backwards-compatible manner, and * PATCH version when you make backwards-compatible bug fixes. +## Unreleased + +- feat: `work-on-task-assistant` emits a one-line readiness nudge for Obsidian tasks (`✅ looks execution-ready` / `⚠ phase=planning / no Success Criteria / ... — run /vault-cli:plan-task first`). Shallow file-level check only — substance still belongs to `/vault-cli:plan-task`. Preserves work-on-task's content-agnostic core (no questions, no edits, no blocking) while closing the gap where a user starts work on a half-baked task without being nudged toward the planning gate. + ## v0.81.0 - feat: Date fields on Task / Goal / Objective / Theme frontmatter now flow as typed `*libtime.DateOrDateTime` end-to-end — setters store the typed value (no pre-stringification), `FrontmatterMap.GetTime` handles `time.Time` / `libtime.DateOrDateTime` / `string` shapes, JSON projection uses the type's own `String()` / `MarshalJSON`. Both `formatDateOrDateTime` helpers removed (`pkg/domain/task_frontmatter.go` + `pkg/ops/frontmatter.go`); the type itself is now the single source of truth for on-disk + on-wire format. Closes the silent-divergence risk between two independently-maintained format helpers. diff --git a/agents/work-on-task-assistant.md b/agents/work-on-task-assistant.md index c264e80..05cb778 100644 --- a/agents/work-on-task-assistant.md +++ b/agents/work-on-task-assistant.md @@ -186,6 +186,27 @@ When the task description, a related log entry, or any retrieved file references - Optionally invoke `Task(subagent_type='vault-cli:task-manager-agent')` if more structured progress is needed - Show "Completed: …" and "Remaining: …" (max 10 items, truncate at 80 chars) +## Phase 7.5: Readiness nudge (Obsidian tasks only) + +Shallow check — file-level presence/absence, not substance. Substance belongs to `/vault-cli:plan-task` (which runs `task-auditor` + 5 hard non-negotiable checks). + +Compute three booleans from the already-loaded task file: + +- `PHASE_OK` = frontmatter `phase` is one of `execution`, `ai_review`, `human_review`, `done` (NOT `planning` or empty / `todo`) +- `SC_PRESENT` = task body contains a literal `# Success Criteria` heading +- `SC_HAS_UNCHECKED` = ≥ 1 `- [ ]` checkbox under that heading + +If all three true → emit `✅ Readiness: looks execution-ready` in the report. + +Otherwise emit `⚠ Readiness: . Run /vault-cli:plan-task first.` where `` is the first failing check in this order: + +1. `phase=planning — gate not cleared` +2. `phase=/todo — gate not run` +3. `no \`# Success Criteria\` section` +4. `all Success Criteria already ticked — task may be complete; run /vault-cli:complete-task` + +**Do NOT** ask, edit the file, or call `AskUserQuestion`. The nudge is informational — the owner is trusted to act on it. Skip silently for Jira-only tasks (no local Obsidian file) and for recurring tasks (frontmatter `recurring: true`, which intentionally have no Success Criteria). + ## Phase 8: Verify mutations, then report **Verification gate — runs before rendering the report. Do NOT skip.** @@ -252,6 +273,11 @@ Remaining: ○ 🎯 Next: +[Always when Obsidian task file exists (non-recurring) — never silently skipped:] +✅ Readiness: looks execution-ready +[OR:] +⚠ Readiness: . Run /vault-cli:plan-task first. + --- Ready to work on this task. ``` @@ -288,4 +314,5 @@ Suggested task name: