Task Runner

フォルダ型のタスクチケットを1回に1件ずつ拾って実行し、結果をチケットに書き戻し、看板ボードを更新するスキル。

API不要 Python 3 定期実行

スキルパッケージをダウンロード (.skill) GitHubでソースを見る

目次

1. 概要

タスクは tasks/ フォルダに置いた1つの Markdown ファイルです。ファイルがどのフォルダにあるかが、そのままステータスになります。Claude は実行のたびに todo/ から期日の来た最も古いタスクを取り、計画カードを書き、作業し、完了条件を確かめてから done/ か blocked/ へ移します。毎回 tasks/dashboard.html の看板ボードも作り直すので、全タスクの状況を1枚で確認できます。

Cowork のスケジュール実行などから、1時間ごとに呼ぶ想定のスキルです。1回に処理するのは1件だけで、迷ったら止まります。人が1分ほどで判断して戻せる状態で渡すことを重視しています。


2. 使う場面

  • 集計、要約、下書きなどの定型作業を、チケット単位で裏で進めてほしいとき
  • メール送信など外部に触れる操作は、人が承認してから実行させたいとき
  • 未着手、実行中、要確認、完了の状況を1枚で見たいとき

「タスクを1件処理して」「tasksフォルダをチェックして」「タスク管理の初期設定」「タスクの状況を見せて」「看板ボード」といった依頼で動きます。


3. 前提条件

  • APIキーは不要です。
  • scripts/build_dashboard.py に Python 3 を使います。Python がない環境では、Claude が同じ構成の HTML を直接書きます。
  • Claude を定期的に呼べる仕組みが必要です。例は Cowork のスケジュール実行です。PC がスリープ中やアプリ終了中は、定期実行が動かないことがあります。

4. クイックスタート

  1. スキルをインストールします。
  2. 作業フォルダで「task-runnerの初期設定をして」と依頼します。tasks/ フォルダ、設定ファイル、チケットのひな形、サンプルタスク3件ができます。モードは最初 dry-run です。
  3. 「task-runnerでタスクを1件処理して」を3回実行します。dry-run では、各タスクに計画カードが書かれ、タスクは todo/ に戻ります。
  4. tasks/_config.md の mode を live に変え、もう3回実行します。サンプルのうち2件は done/ に移ります。報告メールのサンプルは外部操作が許可されていないため、blocked/ に移ります。
  5. 「task-runnerスキルで tasks フォルダのタスクを1件処理して」を、1時間ごとのスケジュール実行に登録します。
  6. tasks/dashboard.html をブラウザで開きます。

5. フォルダ構成

tasks/
  _config.md      # mode: dry-run または live
  _template.md    # 新規チケットのひな形
  log.md          # 1回の実行につき1行
  dashboard.html  # 毎回再生成される。手で編集しない
  todo/           # 未着手
  doing/          # 実行中。ロックの役割も持つ
  blocked/        # 人の対応待ち。承認、情報不足、失敗
  done/YYYY-MM/   # 完了。月別
  output/         # 成果物の既定の置き場

ステータスはフォルダだけで表します。チケットにステータス欄を持たないので、両者が食い違うことはありません。

フォルダ 人がやること
todo/ タスクを置く
doing/ 基本は触らない
blocked/ 理由を読んで対応し、todo/ に戻す
done/YYYY-MM/ 結果を確認する

6. チケットの書き方

ファイル名は YYYYMMDD_優先度_件名.md です。例は 20260923_1_請求書チェック.md です。日付が今日以前のチケットだけが実行対象になり、処理はファイル名の昇順なので、同じ日付なら優先度1が2より先になります。10 は 2 より先に並ぶため、優先度は1〜9の1桁にしてください。_ で始まるファイルは無視します。

ひな形の項目は次のとおりです。

項目 意味
目的 何のためのタスクか
入力 使うファイルや情報
手順メモ やり方の指定があれば書く
完了条件 終わったと確かめられる具体的な状態。曖昧だと判定できない
出力先 成果物の置き場。既定は tasks/output/
外部操作 既定は 不可。許可 のときだけ、メール送信、削除、外部システムへの書き込みを行う
計画確認 要 なら作業前に計画の承認を待つ。空欄なら 外部操作: 許可 のときだけ待つ。不要 なら待たない

「〇〇のタスクを追加して」と頼めば、Claude がひな形からファイルを作ります。


7. 1回の実行の流れ

  1. ロック確認:doing/ にチケットが1件でもあれば、skip と記録してダッシュボードを更新し、次のチケットを始めずに終わります。60分超、または開始日時が欠落・不正・未来時刻の場合は「停止の疑い」と表示しますが、doing/ に残します。前回の実行が終了したことと外部操作・成果物の状態を人が確認してから、その指示で blocked/ に移します。
  2. 選択:todo/ からファイル名順で、期日の来た最初のチケットを選びます。なければ idle と記録して静かに終わります。
  3. 計画カード:作業の前に、チケットへ ## 計画カード を書きます。中身は、できあがるもの、タグ付きの3〜7手順、外部に触れることと触れないこと、AI が自分で決めた前提、人に確認してほしいこと最大3つ、チェック欄にした終わりの条件です。
  4. モードと承認の確認:次の順に判定します。dry-run では、計画カードを書いたところで止め、成果物の作成も外部操作もせずにチケットを todo/ に戻します。計画の承認が要るチケットでも同じで、その場合は結果の1行に「live では計画の確認待ちになる」と添えます。live で計画の承認が要るのに 計画承認: の行がなければ、## 結果 の1行目を 計画の確認待ち にして blocked/ へ移します。「未返信メールの下書き作成 OK」のように件名を添えて伝えると、次の回に実行されます。
  5. 作業:それ以外の場合、live モードでは計画どおりに作業します。計画を変える必要が出たとき、情報が足りないとき、外部操作が許可されていないときは、理由と人がやることを書いて blocked/ へ移します。
  6. 完了判定:実際の成果物で完了条件を確かめてから、done/YYYY-MM/ へ移します。
  7. ログとダッシュボード:tasks/log.md に1行追記し、ダッシュボードを作り直します。idle や skip の回も同じです。

Claude がチケットに書き込むのは、開始・完了の日時、計画カード、結果、実行ログ、人からの承認と追加指示だけです。結果は1行目が常に今の状態を表すよう毎回置き換え、実行ログは追記します。人が書いた部分は書き換えません。


8. ダッシュボード

tasks/dashboard.html は外部 CDN を使わない単一の HTML で、ライトとダークの両方に対応しています。

  • 列は未着手、実行中、要確認、完了の4つです。完了は直近14日分を表示します。
  • 上部に件数のサマリーと現在のモードを表示します。
  • カードには、予定、停止の疑い、外部操作あり、計画の確認待ち、要確認の件数がバッジで付きます。停止の疑いは、実行中のまま60分を超えたもの、または開始日時が不明・未来時刻のものです。
  • 要確認のカードには、止まった理由が赤字で出ます。
  • カードを押すと計画カードが開きます。手順は流れ図で表示され、外部に触れる手順は赤枠になります。
  • 検索欄と、log.md の直近8件があります。

手動で作り直す場合は次のとおりです。

python3 scripts/build_dashboard.py tasks
python3 scripts/build_dashboard.py tasks --done-days 30 --out ~/Desktop/board.html

スクリプトはタスクファイルを読むだけで、書き換えません。


9. リソース

  • SKILL.md:実行手順、計画カードの書式、ダッシュボード、初期設定、依頼への対応
  • README.md:利用者向けの導入ガイド
  • scripts/build_dashboard.py:看板ボードの生成
  • assets/config.md、assets/task_template.md:初期設定で tasks/ にコピーされる
  • assets/samples/:サンプルチケット3件とサンプルデータ