Todo archive
Archive checked TODO.md tasks into `.ai/todos/TODO_UNTIL_YYYY_MM_DD.md`, leaving unchecked tasks.From its SKILL.md
npx -y skills add PaulRBerg/agent-skills --skill todo-archiveAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
SKILL.md
3.5 KB, 803 tokens by cl100k_base, as published. Nobody here has run it
TODO Archive
TODO.md and .ai/ are conventionally git-ignored, so they are untracked and git diff shows nothing for them.
Inspect changes against the filesystem, not git.
Arguments
path(optional): Repository root or any path inside the repository. Default to the current directory.--hint TEXT(optional): Archive only the section whose heading containsTEXT(case-insensitive substring), including its subsections. Without it, archive checked tasks from the whole file. Checked tasks outside the matched section stay inTODO.md.--date YYYY-MM-DD|YYYY_MM_DD(optional): Archive date. Default to today's local date.--dry-run(optional): Preview target paths and rendered content without writing.--force(optional): Overwrite the date-only archive in place instead of rolling a same-day re-run over to a timestamped file.
Workflow
-
Resolve the repository root:
git rev-parse --show-toplevelIf the command fails, use the provided
pathor current directory as the root. -
Verify
TODO.mdexists at the root. If it is missing, stop and report the path checked. -
Run the helper from this skill directory:
uv run python scripts/archive_todo.py --root "$repo_root"Pass through
--hint,--date,--dry-run, or--forcewhen the user requested them. -
Report the rewritten
TODO.md, the created archive path, the matched section (when--hintwas given), and the archived/remaining task counts. If an archive for the date already exists, the helper rolls the new batch over toTODO_UNTIL_YYYY_MM_DD_HHMM.mdand keeps the earlier file; report both paths. If the helper reports no checked tasks, treat it as a no-op. If--hintmatches no heading, the helper exits non-zero and lists the available sections; relay them. When--forcereplaces an existing archive, say⚠️ Overwrote existing archive, neverCreated. -
If useful, inspect only the touched paths.
TODO.mdand.ai/are git-ignored, so use the filesystem rather thangit diff:cat TODO.md && ls .ai/todos/
Helper Behavior
scripts/archive_todo.py reads only <root>/TODO.md, writes archived tasks to
<root>/.ai/todos/TODO_UNTIL_YYYY_MM_DD.md, and rewrites <root>/TODO.md with the remaining tasks (a minimal # TODO
stub if everything was archived). With --hint, it restricts archiving to the matched heading's subtree and exits
non-zero listing available headings when nothing matches. It rolls a same-day re-run over to a timestamped
TODO_UNTIL_YYYY_MM_DD_HHMM.md sibling instead of clobbering the earlier archive, unless --force is passed.
Completion
Completion evidence is the helper's archive path plus archived and remaining task counts; a no-checked-task result is a
successful no-op. Dry-run completion requires rendered paths/content with no filesystem changes. Finish with
### 📦 Archived <count> checked tasks and concise TODO/archive/scope/count rows; use
### ✅ Nothing to archive — no files written for a no-op and ### 🔎 Archive preview — no files written for dry runs.
Do not repeat full dry-run document content in the final message or add decoration to TODO/archive files, paths,
commands, or helper diagnostics.
What ships with it: 2 files
12.0 KB alongside SKILL.md, 1 of them executable
agents/
- openai.yaml43 B
scripts/
- archive_todo.pyruns12.0 KB