Task lifecycle management with stable task IDs. Add, complete, defer, remove, and review tasks with deterministic action routing and fail-closed ambiguity handl
复制下面这句话,粘贴给 Claude Code、Codex、Cursor 等 AI 编程工具,它会读取安装说明并在你确认后完成安装。
请阅读 https://ai.atlankj.com/install/asset/gh-daily-task-manager-7fe2a87f1663 ,按照其中的说明把「daily-task-manager」安装到你(当前 AI 工具)中。执行前先告诉我将运行的命令和写入的位置,等我确认。
查看 AI 将读取的安装说明正在读取 GitHub 原文…
内容来自 GitHub 原始文件,由原作者维护。在 GitHub 查看
This 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.