Tracker — 進捗する作業を追跡する は何をしますか?
このスキルが適切な場面
判断のきっかけとなる質問: 「…のステータスは?」 または 「これは誰が担当している?」
トラッカーとは、ステータスが変化し、担当者と期限を持ち、履歴を保存する価値のあるアイテムを扱うものです。
ルーティング判定テスト
トラッカーを導入するには、以下のうち 少なくとも2つ が必要です:
- 時間とともに変化するステータス(属性ではなく 「動き」)
- 人間の担当者
- 期限日
- 階層構造:グループ → サブグループ → アイテム
2つ未満の場合は → registry を使用します。⚠️ デフォルトは常にレジストリです。
構築方法
1つのエンジン、多数のスキーマ。
<tracker-dir>/
schema.json ステータス、優先度、階層ラベル、追加フィールド
tracker.db SQLite: アイテム + グループ + item_history
エンジン: engine/tracker.py (このSKILL.mdと同じ階層) · Python 3.9+ · 依存関係なし (標準のsqlite3を使用)。
階層: group → subgroup → item。ラベルはドメインごとに変わります。タスクなら project → module → task、バグなら product → component → bug、請求書なら client → subscription → invoice です。
ユーザーとの連携方法
- ルーティング判定テストを実行する。 フラットなリスト →
registry。 - スキーマを提案する: どのステータス、何を「完了」とするか、どの優先度、階層は何か、どの追加フィールドが必要か。提案し、承認を得る。
presets/にプリセットがないか確認する。initで作成し、グループを追加し、ワークスペースレベルのregistries.jsonインデックスにトラッカーを 登録 する。- 更新は自然言語で報告できることを説明する — エージェントがそれをコマンドに変換する。
コマンド
パスはワークスペースルートからの相対パスです。SKILL_DIR はこのスキルがインストールされている場所に適宜変更してください(例: .pi/skills/tracker)。
T=<SKILL_DIR>/engine/tracker.py
D=trackers/bugs
python3 $T --dir $D init --preset bugs
python3 $T --dir $D group add webapp --name "Web App"
python3 $T --dir $D group add checkout --name "Checkout" --parent webapp
python3 $T --dir $D add "カレンダーの重複予約" --group webapp --subgroup checkout \
--assignee dana --priority sev2 --client acme --due 2026-08-05
python3 $T --dir $D update 3 --status in-progress --notes "再現確認済み"
python3 $T --dir $D list --assignee dana --group-by status
python3 $T --dir $D list --status blocked
python3 $T --dir $D show 3
python3 $T --dir $D history 3
python3 $T --dir $D report # サマリー: ステータス別、担当者別、期限超過、ブロック中
python3 $T --dir $D delete 3 --yes # ⚠️ 完全削除
list はフィルタなしで閉じたアイテムを自動的に非表示にします。--all ですべて表示します。
利用可能なプリセット
tasks タスク · bugs バグとクライアント課題 · invoices 請求書と回収 ·
features 機能パイプライン
プリセット解決順序
init --preset <name> は <name>.json を以下の順序で解決します — 最初に見つかったものが優先されます:
<workspace>/trackers/presets/<name>.json— ワークスペースローカルのプリセット。エンジンが実行されるワーキングディレクトリからの相対パス。<SKILL_DIR>/presets/<name>.json— 上記の組み込みプリセット
組み込みと同じ名前のワークスペースローカルプリセットは組み込みを上書きします。存在しないプリセットを指定すると、両方の場所にあるすべてのプリセット名が [space] / [built-in] のタグ付きで一覧表示されます。
ワークスペースローカルプリセットの作成方法: スキーマJSON(schema.json と同じ形式。組み込みプリセットを参照)を trackers/presets/ に配置します。このディレクトリは明示的に --preset <name> が指定された場合のみ読み込まれ、その他のファイルは無視されます。
鉄則
- 📊 トラッカーが唯一の真実源である — エージェントのメモリにステータスを保持しない。常にクエリすること。
- ⛔
blockedステータスには理由が必要 — メモに記載されていないブロックは無価値。 - 🗑️ 削除には
--yesと明示的なユーザー確認が必要。 デフォルトで「キャンセル済み」ステータスは存在しない — 必要な場合は、削除する代わりにスキーマに追加すること。 - 📜 すべての変更は
item_historyに記録される — データベースを手動で編集しないこと。 - 🔁 ステータスが3つ以下で、担当者も期限もない場合 = レジストリにすべきだった。