ワンクリックで
todo
Use when work must be tracked across heartbeats, including durable multi-step todos, time-bound commitments, or scheduled reminders.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
メニュー
Use when work must be tracked across heartbeats, including durable multi-step todos, time-bound commitments, or scheduled reminders.
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
SOC 職業分類に基づく
Use when designing or scaffolding a Codex-based long-running business agent, including deciding what belongs in AGENTS.md, skills, and subagents.
Create or modify hidden per-workdir heartbeat extensions for this harness. Use when asked to add pre-heartbeat prompt injection, post-heartbeat accounting/export/audit, or customize heartbeat lifecycle behavior for this deployed agent.
Default workflow for non-trivial iterative heartbeats. Use when advancing the assigned goal, continuing a task, handling a non-trivial human request, or doing work that needs an episode record and evaluator. Skip only for quick human responses, acknowledgements, status syncs, or other simple mailbox interactions.
On-demand workflow for software project development. Use when the task is to build or substantially rework a software system/module/tool. Drives an Assume → PRD → Plan state machine, each transition gated by human approval over mailbox.
Operate the mailbox system with three commands -> mailbox-send for sending messages, mailbox-read for reading messages, and mailbox-contacts for listing contacts.
| name | todo |
| description | Use when work must be tracked across heartbeats, including durable multi-step todos, time-bound commitments, or scheduled reminders. |
Use this skill to persist multi-step, time-bound, or cross-heartbeat work. It provides two concepts:
done boolean. Todos are stored one JSON file per day under todo_list/<YYYYMM>/<DD>.json. The file path encodes the day — there is no date field inside a todo.scheduled_tasks.json. Has no done field — it is a timer that makes the next heartbeat a reminder-kind heartbeat when its fire minute arrives.Use it when:
Do NOT use it for:
Todos are edited with the SDK-native Read / Edit / Write tools. The path is computed from now_minute:
todo_list/<YYYYMM>/<DD>.json
# today example: todo_list/202604/19.json
Each file holds a JSON list of Todo objects:
{
"id": "t<n>",
"title": "string",
"description": "string (free-form, may be empty)",
"subtasks": [ { "id": 1, "text": "...", "done": false } ],
"done": false
}
Rules: id is t<n> where n is the next sequential integer within this day's file. Subtask id is a plain sequential integer within its enclosing todo.
uv run python {skills-dir}/todo/scripts/_write_today.py \
--title "Triage PR queue" \
--description "Look at the three open PRs on main."
# --date YYYY-MM-DD optional; defaults to today
# --agent-workdir PATH optional; defaults to cwd
# prints the new todo id (e.g. "t1") on stdout
Internal utility — prefer direct Edit/Write for agent-driven planning.
# Add a weekly scheduled task:
uv run python {skills-dir}/todo/scripts/add_scheduled.py \
--title "..." --kind weekly --time HH:MM --weekdays MON,TUE
# Add a one-shot scheduled task:
uv run python {skills-dir}/todo/scripts/add_scheduled.py \
--title "..." --kind date --time HH:MM --date YYYY-MM-DD
# List all scheduled tasks:
uv run python {skills-dir}/todo/scripts/list_scheduled.py
# Delete a scheduled task by id:
uv run python {skills-dir}/todo/scripts/delete_scheduled.py --id s<n>
The pre-heartbeat hook (pre_heartbeat.py) is invoked by the runtime before each wake-up prompt. It reads scheduled_tasks.json and writes Runtime/due_reminders.json; the runtime renders a "Due reminders this minute" section plus today's Todo list into the wake-up prompt.
uv run python {skills-dir}/todo/scripts/fetch_today.py
# prints today's todos (JSON); --date and --agent-workdir optional
<agent_workdir>/
todo_list/
<YYYYMM>/
<DD>.json
scheduled_tasks.json
Runtime/
due_reminders.json
scheduled_delivered.json
Writes use tempfile + os.replace for atomic rename.
_write_today.py only when a script-level append is needed.add_scheduled / delete_scheduled — never hand-edit scheduled_tasks.json.fetch_today.py is convenience; cat the day file works too.now_minute injected by the runtime — do not shell out to date or call datetime.now() in agent prompts.