write-task

star 0

精緻化されたタスクやレビュー指摘を .artifacts/features/<feature>/phases/<phase>/task_<phase_num>_<task_num>.md へ書き込む時に使用する。 アトミックなタスク仕様をテンプレートに沿って構造化する。refiner・reviewer サブエージェントが使用する。

Ag-2O By Ag-2O schedule Updated 6/15/2026

name: write-task description: >- 精緻化されたタスクやレビュー指摘を .artifacts/features//phases//task__.md へ書き込む時に使用する。 アトミックなタスク仕様をテンプレートに沿って構造化する。refiner・reviewer サブエージェントが使用する。 user-invocable: false allowed-tools: [Read, Write, Edit, Glob]

task_<phase_num>_<task_num>.md 書き込みワークフロー

アトミックなタスク仕様を .artifacts/features/<feature>/phases/<phase>/task_<phase_num>_<task_num>.md へ 書き込む手順を定義する。refiner(精緻化タスク)と reviewer(レビュー指摘タスク)が使用する。

タスク命名規約

タスクファイルの命名と ID 規則は次のとおりとする。

  • ファイル名: .artifacts/features/<feature>/phases/<phase>/task_<phase_num>_<task_num>.md (例: phase_1/task_1_1.mdphase_2/task_2_3.md
  • タスク ID: ファイル名の task_<phase_num>_<task_num> 部分をそのまま用いる (例: task_1_1task_2_3)。state.db 上の ID もこの形式で揃える。
  • 採番ルール: タスク番号 <task_num> は phase ごとに 1 から開始する。 別 phase であれば同じ番号を使ってよい(例: task_1_1task_2_1 は別タスク)。
  • review-fix の採番: レビューで起票する review-fix タスクは、対象タスクと同じ phase の続番を割り当てる (例: phase_1 で既存タスクが task_1_5 まであれば、次の review-fix は task_1_6)。
  • 採番は state.db で予約する(必須): タスク番号は operate-sqlite スキルの state_dao.py reserve-task --feature <feature> --phase <phase> で予約する。 このコマンドは SQLite のトランザクション(BEGIN IMMEDIATE)で MAX(task_no) + 1 を原子的に採番し、 予約した task_<phase_num>_<task_num> を標準出力へ返す。返ってきた ID でファイルを作成する。 Glob で最大番号を読んでから採番する方式は read-then-write の競合を起こすため使わない。
  • 並列起票での衝突回避: 複数のサブエージェント(refiner / reviewer)が同 phase へ並列に起票する場合でも、 各自が起票の冒頭で reserve-task を呼べば、state_dao.py 側でロックが直列化され重複しない番号を得られる。 これにより後勝ち上書きによる起票内容の消失を防ぐ。

書き込み手順

  1. Read./template.md を読み込む。
  2. 採番が未確定の場合は、state_dao.py reserve-task --feature <feature> --phase <phase> で タスク番号を原子的に予約し、返ってきた task_<phase_num>_<task_num> を採用する (Glob で最大番号を読む方式は使わない)。これにより state.db 上の予約とファイル名が同時に確定する。
  3. タスク ID に対応するファイル名(例: task_1_1.mdtask_2_3.md)で、 .artifacts/features/<feature>/phases/<phase>/ 配下に新規作成する。 ファイル名・フロントマター id・本文見出しの ID は完全に一致させる。
  4. テンプレートのセクション構成を維持し、フロントマターとタスク本体を埋める。
  5. プレースホルダーはすべて実際の内容で置き換える。

type フィールドの使い分け

  • impl: refiner が生成する通常の実装タスク。
  • review-fix: reviewer がレビュー指摘から生成する修正タスク。depends_on に対象タスクを記載する。
  • タスクファイルは読み取り専用として扱う: task_<phase_num>_<task_num>.md は coder へのプロンプトとして扱い、 完了後も書き換えない。
  • 完了状態は state.db に置く: 完了状態は task_<phase_num>_<task_num>.md ではなく state.db に記録する (operate-sqlite スキル経由)。state.db 上のタスク ID もファイル名と同じ task_<phase_num>_<task_num> 形式で揃える。
  • 意味のある verify を指定する: <verify> には単体テスト・型チェック・AST ベースのリンタなど 意味のある手段を指定する。grep -c のような単純なテキストマッチングは避ける (コメントにマッチし、テストを通すための改ざんを招くため)。
  • 移動・リネームタスクは移動元の不在を検証する: ファイルやディレクトリの移動・リネーム・再配置を 伴うタスクでは、<verify> に「移動先に存在すること」と「移動元が存在しないこと」の両方を必ず含める。 コピーで済ませて移動元が残る二重化を防ぐため、移動元パスの不在チェック(例: test ! -e <旧パス>)を 明示する。<done> にも移動元が消えた最終状態を記述する。
  • 採番は reserve-task で原子的に行う: state_dao.py reserve-task で番号を予約してからファイルを作る。 Glob で最大番号を読む read-then-write 方式は並列起票で衝突するため使わない。
Install via CLI
npx skills add https://github.com/Ag-2O/claude-code-small --skill write-task
Repository Details
star Stars 0
call_split Forks 0
navigation Branch main
article Path SKILL.md
More from Creator