Task lifecycle management with stable task IDs. Add, complete, defer, remove, and review tasks with deterministic action routing and fail-closed ambiguity handling. Maintains a running task list as a brain page.
64
76%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./skills/daily-task-manager/SKILL.mdThis skill guarantees:
ops/tasks.md) with structured format and a stable id per taskAfter every action, report a structured result so callers (including sub-agents) can chain reliably:
{action, task_id, status: ok|not_found|ambiguous|needs_confirmation, priority, date, page: "ops/tasks.md", saved: true|false}For review, return the grouped active-task list instead of a single task_id. When invoked with the trigger "task list json", return a JSON array of task objects {id, description, priority, due, status} instead of markdown.
Use ONLY the declared tools. get_page("ops/tasks.md") to read, put_page("ops/tasks.md", …) to write, add_timeline_entry for the audit trail, search for cross-referencing. Do not shell out to gbrain CLI verbs from this skill; the tools are the interface. (When the user runs this manually outside an agent, the CLI equivalents are gbrain get ops/tasks / gbrain put ops/tasks — equivalents only, not the skill's interface.)
Map user intent deterministically before touching state:
get_page("ops/tasks.md"). First run: if the page does not exist, create it from the Output Format template, then proceed.id when given; otherwise fuzzy-match description against ACTIVE tasks only. Zero matches → return not_found, do not mutate. Multiple matches → list candidates with IDs, return ambiguous, do not mutate.t-YYYYMMDD-NN, NN = next free ordinal that day). Add a timeline entry.[x], move to Completed with (completed: YYYY-MM-DD).put_page("ops/tasks.md") after any mutation. Diff-mindset: touch only the affected lines; preserve all other content, including sections this skill doesn't recognize.status: ok, note "initialized".ops/tasks.md exists but doesn't match the schema, do NOT rewrite it wholesale. Append/edit within it minimally, preserve unknown content verbatim, and flag the malformation in the reply.YYYY-MM-DD) everywhere. Compute "today"/"next week" with code/clock, never guess.ops/tasks.md (with extension) in tool calls; this is the single canonical location.get_page("ops/tasks.md") → edit → put_page("ops/tasks.md"). put_page replaces the WHOLE page and has no compare-and-swap, so two mutations that interleave are last-writer-wins: the second put_page overwrites the first's change (a completed task reappears, an added task vanishes), and the t-YYYYMMDD-NN minting can hand the same ordinal to two concurrent adds (duplicate IDs). Serialize task edits — never run parallel task mutations (multiple subagents, concurrent chat turns) against ops/tasks.md. If a mutation might race, re-get_page immediately before put_page and re-derive the next free ordinal from the freshly-read page.Each task carries a stable ID so later actions can target it safely:
# Tasks
## P0 — Urgent
- [ ] <!-- id: t-20260115-01 --> {task description} (due: {date})
## P1 — Today
- [ ] <!-- id: {task-id} --> {task description} (due: {date optional})
## P2 — This Week
- [ ] <!-- id: {task-id} --> {task description} (due: {date optional})
## P3 — Backlog
- [ ] <!-- id: {task-id} --> {task description}
## Deferred
- [ ] <!-- id: {task-id} --> {task description} (deferred until: {date}; reason: {reason})
## Completed
- [x] <!-- id: {task-id} --> {task description} (completed: {date})After a mutation: one concise line — action, task ID, priority/status, relevant date, saved-or-not. For review: active tasks grouped by priority. Keep replies compact; avoid tables on narrow chat surfaces.
Each with its corrective action:
(completed: YYYY-MM-DD).get_page/put_page/search/add_timeline_entry only.ops/tasks.md (searchable).ops/tasks.md → last-writer-wins whole-page put_page silently loses updates and mints duplicate IDs; serialize edits, re-read immediately before writing.get_page/put_page as tools but instructed CLI verbs in the body — models picked one at random. The declared tools are now the interface; CLI is relegated to a human-equivalent note.t-YYYYMMDD-NN IDs + fail-closed ambiguity handling fix this.ops/tasks.md exists made a missing page undefined behavior. Create-from-template on first run fixes this.9dadfb9
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.