todo-archive について
todo-archiveは、`.ai/TODO.md`のチェック済みタスクを日付付きのファイルへ移すリポジトリ向けスキルです。セクション指定、日付指定、書き込み前のプレビューに対応します。
主な機能
- 01セクションまたはファイル単位で完了タスクをアーカイブ
- 02アーカイブ日付の指定
- 03書き込まずに変更をプレビュー
- 04対象外のタスクをTODOに保持
活用シーン
- 01リポジトリの完了タスクをアーカイブ
- 02特定セクションのアーカイブを事前確認
- 03TODOに未完了タスクを残す
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ paulrberg/ agent-skills --skill todo-archiveインストール後、Claude Code で/todo-archiveを入力して読み込まれたか確認します。
同梱ファイルagents/openai.yamlscripts/archive_todo.py
詳細
TODO アーカイブ
スラッシュまたはドル記号による呼び出しですでにこれらの指示が会話に追加されている場合は、そのまま従ってください。 その場合、スキルツールを使ってこのスキルを再度呼び出さないでください。
引数
path(任意):リポジトリのルート、またはリポジトリ内の任意のパスです。既定値は現在のディレクトリです。--hint TEXT(任意):見出しにTEXTが含まれるセクション(大文字・小文字を区別しない部分一致)とその下位セクションのみをアーカイブします。指定しない場合は、ファイル全体からチェック済みのタスクをアーカイブします。一致したセクションの外にあるチェック済みタスクは.ai/TODO.mdに残ります。--date YYYY-MM-DD|YYYY_MM_DD(任意):アーカイブの日付です。既定値は今日のローカル日付です。--dry-run(任意):書き込みを行わず、出力先のパスと生成内容をプレビューします。
ワークフロー
-
指定された
pathを解決します。省略された場合は現在のディレクトリを使用します。既存のファイルの場合は、そのファイルを含むディレクトリを使用します。ディレクトリの場合は、そのディレクトリを使用します。絶対パスのディレクトリをstart_dirに保存し、その後、Git ルートを解決します。git -C "$start_dir" rev-parse --show-toplevel結果を
repo_rootとして保存します。start_dirが Git リポジトリの外にある場合は、それをrepo_rootとして使用します。入力パスが見つからない場合、またはその他の解決エラーが発生した場合は停止します。 -
ルートの下に
.ai/TODO.mdが存在することを確認します。存在しない場合は、確認したパスを報告して停止します。 -
スキルディレクトリを解決し、ヘルパーを実行します。
uv run python "<skill-dir>/scripts/archive_todo.py" --root "$repo_root"ユーザーが指定した場合は、
--hint、--date、または--dry-runを引き継ぎます。 -
書き換えた
.ai/TODO.md、作成または統合したアーカイブのパス、一致したセクション(--hintが指定された場合)、およびアーカイブ済み/残りのタスク数を報告します。その日付のアーカイブがすでに存在する場合、ヘルパーは新しいバッチを追加し、一致する最上位の見出しを1つだけ残します。ヘルパーがチェック済みタスクなしと報告した場合は、変更なしとして扱います。--hintに一致する見出しがない場合、ヘルパーはゼロ以外の終了コードを返し、利用可能なセクションを一覧表示します。その場合は、それらを伝えてください。 -
必要に応じて、
<repo_root>/.ai/TODO.mdと、ヘルパーが返した正確なアーカイブパスのみを確認します。Git がそれらを無視する場合は、git diffに頼らず、ファイルシステムのスナップショットを比較します。
ヘルパーの動作
scripts/archive_todo.py は <root>/.ai/TODO.md と、その日付の既存アーカイブを読み込み、アーカイブするタスクを <root>/.ai/todos/YYYY-MM/DD.md に書き込み、残りのタスクを含むように <root>/.ai/TODO.md を書き換えます。タスクのないセクションと文章はそのまま保持します(すべてがアーカイブされた場合に限り、元の最初の見出し、または # TODO を含む最小限のスタブを残します)。--hint を指定すると、一致した見出しのサブツリーにアーカイブ対象を限定します。一致する見出しがない場合は、利用可能な見出しを一覧表示してゼロ以外の終了コードで終了します。同じ日に再実行すると、その日のファイルに新しいバッチを追加します。新しい先頭の H1 が既存のアーカイブの先頭の H1 と完全に一致する場合に限り、その H1 を削除します。
完了
完了の証拠は、ヘルパーが返したアーカイブパスと、アーカイブ済みおよび残りのタスク数です。チェック済みタスクがない場合は、正常に変更なしで完了したものとします。ドライランの完了には、ファイルシステムへの変更がなく、生成されたパスと内容が必要です。ただし、最終メッセージは以下の1行形式に従います。--hint が指定された場合に限り、(scope: "<hint>") を追加します。アーカイブパスはリポジトリルートからの相対パスで報告してください。
- 成功:
📦 Archived <n> → <archive path> (created|merged) · <remaining> remaining - 変更なし:
✅ Nothing to archive · <remaining> remaining - ドライラン:
🔎 Would archive <n> → <archive path> (would create|would merge) · <remaining> would remain
ドライランの文書全体を最終メッセージに再掲したり、TODO/アーカイブファイル、パス、コマンド、ヘルパーの診断メッセージに装飾を加えたりしないでください。