Skip to main content

/moai todo NEW

更新 2026-08-15 7分で読めます GitHub で編集 ↗
NEW · v3.1

次にやることを一行ずつ積んでおくバックログキューです。カンバンボードの backlog 列には担当セッションがおらず、誰も自分から仕事を流し込みません。したがって、カードをボードに入れることは常に人の判断であり、/moai todo がその窓口です。

情報
一行要約: /moai todo は「次に何をやるか書き留める行」です。項目を入れ、一覧を見て、終わったものを消し、次に着手するひとつを選びます。SPEC でも計画でもなく、選んだ瞬間にはじめて SPEC になります。
情報
スラッシュコマンド: Claude Code で /moai:todo を入力するとすぐ実行されます。/moai だけを入力すると、利用可能なすべてのサブコマンドの一覧が表示されます。

概要

バックログの項目は意図の一行です。SPEC でも計画書でも見積もりでもありません。人がその項目を選び、リードセッションが plan セッションへディスパッチしてはじめて SPEC になります。

キューは意図的に薄く作られています。SPEC や git 履歴、ボードがよりよく記録するものは格納せず、人が次に何を望むかだけを残します。

flowchart TD
    Add["/moai todo 説明
項目追加"] --> Queue["バックログキュー"] Queue --> Pick["リードの質問チャネルで
人がひとつ選択"] Pick --> Plan["plan セッションへディスパッチ
ここで SPEC 作成"] Plan --> Spec["SPEC ID を項目に記録"]

使い方

bash
# 項目追加
> /moai todo "認証ミドルウェアのエラー経路を整理"

# キューを表示
> /moai todo
呼び出し動作
/moai todo "<説明>"項目をキューの末尾に追加し、追加された項目と位置を表示します。
/moai todoキューを順に、位置番号付きで表示します。

項目の削除と次のカードの選択はスラッシュ表面にはありません。その2つは、下記のターミナル CLI(moai todo donemoai todo next)またはリードセッションを通じた選択が担います。

その他の引数の形は説明として扱われます。/moai todo CI キャッシュ不安定を解決 はエラーではなく項目追加です — 聞き間違えた場合のコストが、人が一行消すことだけだからです。

状態ファイル

キューは .moai/state/kanban/backlog.json に保存されます。プロジェクト内にのみ存在し、コミットされません。

json
{
  "version": 1,
  "items": [
    {
      "id": "t1",
      "text": "認証ミドルウェアのエラー経路を整理",
      "added_at": "<RFC3339 時刻>",
      "spec_id": null,
      "state": "queued"
    }
  ]
}
フィールド意味
id追加時に付く短く安定した識別子。削除後に再利用されません。
spec_idSPEC 識別子への任意の接続です。選択時に --spec で渡せばそのとき埋まり、不明なままなら picked 状態でも null のままです。
stateライフサイクルの判別子です。queued · picked · dropped のいずれかで、「まだバックログの項目」と「すでにボード上のカード」を分けるのはこの値です。選んだ項目もファイルに残り、何が進行中かが見えます。キューから項目を消す方法は moai todo done ひとつだけで、人が直接実行します — 仕事が終わっても自動的に消える経路はありません。(dropped はレコードスキーマに定義された値であり、これを設定するコマンドはありません。)

ファイルは原子的に書かれます(一時ファイルに書いて名前を変えます)。書き込み途中で死んでもキューが途切れないためです。ファイルがなければエラーではなく空のキューであり、壊れたファイルは報告だけして触りません — ここに収められた人の意図は、再生できない唯一の値だからです。

次のカードを選ぶ

選択は、リードセッションの質問チャネルを通じて人が行います。リードがキューを選択肢として表示します — 古いものからひと項目ずつ、ツールが許す4つまで表示し、残りは本文に要約して何も隠されないようにします。/clear 後の初手としてキューを提示するときも同じ方法です。ターミナルから候補を確認したいだけなら、引数なしの moai todo next が同じ一覧を読み取り専用で出力します。

注意
選ぶ主体は人です。 事前選択せず、推定した優先度で並べ替えず、「上から順に」をデフォルトにしません。キューが空なら空と伝えて止まります — 空のバックログは正常な状態であって、仕事をでっち上げろという合図ではありません。

複数のカードを一度に承認することもできます。カードを指差すか、キューが空になるまで順に進めるよう伝える方法です。これも人の選択であり、一枚ずつの代わりに一度にしただけです。リードは承認された順にカードを入れ、再度尋ねません。ただしその承認が許す範囲はそれだけです — 項目を追加したり、順序を変えたり、承認範囲外の判断が必要になったカードを代わりに決める根拠にはなりません。

カードを選んだ後はこう続きます。

  1. 選んだ項目を moai todo next <n> [--spec <SPEC-ID>] の一度のロックされた書き込みで picked とマークします。識別子が既知ならその場で添付します。
  2. カンバンディスパッチ規約に従い plan セッションへ渡します。カードは plan 列に入り、SPEC 作成はここではなくあちらで行われます。
  3. 選択時に識別子が不明だった場合は、判明した後で moai todo next <n> --spec <SPEC-ID> を再度実行して項目に添付します。この後続の添付を自動化する経路はありません — ディスパッチも後続添付も、リードセッションが行う指示であって、キューが自分で行うことではありません。

カンバンモードの外で

/moai todo はごく普通の単一セッションでもそのまま動きます — ただのキューだからです。ただしディスパッチはしません。同伴セッションがいなければ指示する相手がいないので、キューの読み書きまでがすべてで、残りは人が直接進めます。

境界

  • 作業管理ツールではありません。 優先度も担当者も期限も依存関係もありません。それらが必要な仕事はissueトラッカーや SPEC の領分です。
  • ボードではありません。 カードがどの列にいるかはリードセッションと SPEC 状態が握っており、このファイルではありません。
  • 進行中の仕事の原本ではありません。 カードに SPEC ができてからは SPEC 成果物が基準で、バックログ項目はそれを指す標識にすぎません。
  • 勝手に埋まりません。 TODO コメントやオープンな issue、監査結果をツールが勝手に拾ってくることはありません。項目を入れるのは人です。

CLI 表面

同じキューをターミナルからも操作できます。スラッシュコマンド /moai todo は Claude Code のチャットで、ターミナル CLI moai todo はシェルで呼ぶ別個の表面です — 同じファイルを扱いますが、文法は異なります。

bash
# 項目追加 — 発行された id とキュー位置を一行で出力
$ moai todo add "認証ミドルウェアのエラー経路を整理"

# キューを表示 (id · 状態 · 本文)
$ moai todo list

# 構造化レコードとして表示
$ moai todo list --json

# 項目削除 — 番号(t4)も明示的 id も受け付けます
$ moai todo done 4

# 待機中の項目を古いものから出力(読み取り専用)
$ moai todo next

# ひとつの項目を選択として記録 — SPEC 識別子も一緒に
$ moai todo next 4 --spec SPEC-AUTH-001
コマンド動作
moai todo add "<text>"項目を追加し、発行された id と位置を出力します。
moai todo list / --jsonキューを表示します。--json はレコード全体を JSON で出力します。
moai todo done <n>n 番の項目を削除します。明示的な t<n> id 推奨 — 同時追加で位置が動きうるためです。
moai todo next待機中の項目を古いものから表示します。読み取り専用です。
moai todo next <n> [--spec <SPEC-ID>]項目を picked とマークし、--spec を渡すと識別子をそのまま記録します。一度のロックされた書き込みで行われます。

CLI はプロンプトを出しません。引数とフラグを受け取り一行を出力し、エラーは stderr へ — スクリプトや CI で安全に使える形です。

両表面は同じ保存層を共有します。変更はキューファイル横のロックファイル(backlog.lock)を握った後、同ディレクトリの一時ファイルに書いて名前を変える原子的書き込みで反映され、読み取りはロックなしで行われます。項目 id はロック内で、ファイルに残った最高水準標識(last_seq)から発行されるため、削除された項目の id が再利用されることはありません。

情報
インストール済みバイナリ: CLI は main に反映済みで配信されます。すでにインストールされた moai バイナリは、再インストールしてはじめてこのコマンドを得られます。

関連ドキュメント