swain-roadmap について
swain-roadmap は、アーティファクトグラフからプロジェクトのロードマップを再生成し、結果を開くスキルです。プロジェクト全体、指定アーティファクトのスライス、テキスト形式のコマンドライン要約に対応します。
主な機能
- 01プロジェクトのロードマップ再生成
- 02範囲を指定したスライスの作成
- 03優先度と依存関係の表示
- 04アーティファクトから意図のプレースホルダーを補完
- 05コマンドラインで状態と要約を表示
活用シーン
- 01プロジェクトのロードマップを更新
- 02ビジョンやイニシアチブのスライスを確認
- 03ターミナルで優先度と依存関係を確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cristoslc/ swain --skill swain-roadmapインストール後、Claude Code で/swain-roadmapを入力して読み込まれたか確認します。
詳細
ロードマップ
状態を変更する操作を行う前に、アクティブなセッションがあるか確認してください:
REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
bash "$REPO_ROOT/.agents/bin/swain-session-check.sh" 2>/dev/null
JSON 出力の "status" が "active" 以外の場合は、オペレーターに「アクティブなセッションがありません。/swain-init で開始しますか?」と伝えてください。オペレーターが断った場合は続行してください。
アーティファクトグラフから ROADMAP.md を再生成して開きます。主な処理は swain-design の chart.sh roadmap が行います。このスキルはユーザー向けのエントリーポイントです。
呼び出されたとき
1. chart.sh の場所を特定する
REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
CHART_SH="$REPO_ROOT/.agents/bin/chart.sh"
chart.sh が見つからない場合は、swain-design がインストールされていないことをユーザーに伝えて終了してください。
2. ロードマップを再生成する
引数を解析します。ユーザーがアーティファクト ID(例:swain-roadmap VISION-001)を指定した場合は、SCOPE_ID にその ID を設定します。それ以外の場合は、SCOPE_ID を空にします。
SCOPE_ID が設定されている場合:
bash "$CHART_SH" roadmap --scope "$SCOPE_ID"
スコープ対象のアーティファクトのフォルダーに roadmap.md を書き込みます。
SCOPE_ID が空の場合:
bash "$CHART_SH" roadmap
プロジェクトのルートに ROADMAP.md を書き込み、各 Vision および Initiative のアーティファクトフォルダーにある roadmap.md のスライスもすべて再生成します。
プロジェクト全体の ROADMAP.md には、次の内容が含まれます:
- 4 象限チャート — 優先度マトリクスを PNG 形式で表示(
mmdcが利用できない場合は、インライン Mermaid にフォールバック) - 凡例 — エピックを象限ごとにグループ化し、短縮 ID を表示
- アイゼンハワーテーブル — Do First / Schedule / In Progress / Backlog の各項目に、進捗、ブロック解除数、オペレーターによる判断の必要性を表示
- ガントタイムライン — 優先度を反映したスケジュールと依存関係のリンク
- 依存関係グラフ — 優先度の境界をまたぐブロック関係(依存関係がある場合のみ)
各アーティファクトのスライスには、意図の概要、子アーティファクトのリンクと進捗を含むテーブル、集計進捗バー、最近の git コミット、アイゼンハワー優先度のサブセットが含まれます。
2.5. 意図のプレースホルダーを後処理する
chart.sh の完了後、出力ファイルをスキャンし、{{INTENT: <ID>}} プレースホルダーを探します。それぞれについて、次の手順を実行します:
- 元のアーティファクトの Markdown を読みます。
- Vision の場合は
## Value Proposition、Initiative の場合は## Goal / Objectiveの最初の文を抽出します。 {{INTENT: <ID>}}マーカーを抽出した文に置き換えます。- ファイルを書き戻します。
セクションが見つからない場合は、プレースホルダーをそのまま残してください(オペレーターが手動で入力するか、SPEC-144 を通じて brief-description フロントマターに値が設定されるのを待つことができます)。
3. ロードマップを開く
SCOPE_ID が設定されている場合は、スコープ対象のスライスを開きます。グラフキャッシュからアーティファクトのファイルパスを取得して、そのフォルダーを特定します:
ARTIFACT_FILE="$(bash "$CHART_SH" show "$SCOPE_ID" 2>/dev/null | grep -oE 'docs/[^ ]+' | head -1)"
if [ -n "$ARTIFACT_FILE" ]; then
open "$REPO_ROOT/$(dirname "$ARTIFACT_FILE")/roadmap.md"
fi
スコープが指定されていない場合は、プロジェクト全体のロードマップを開きます:
open "$REPO_ROOT/ROADMAP.md"
チャートや図を含む全体をオペレーターが確認できるよう、必ずレンダリングされたファイルを開いてください。オペレーター自身に開くよう伝えてはいけません。こちらで開いてください。
4. CLI の概要を表示する
ROADMAP.md には、ターミナルではレンダリングされないテーブル、Mermaid 図、画像参照が含まれています。--cli フラグを使用して、整形済みのプレーンテキストの概要を取得します:
bash "$CHART_SH" roadmap --cli
このコマンドは、アイゼンハワーの象限(Do First、Schedule、In Progress、Backlog)ごとにグループ化された、決定的で整列済みの概要を出力します。各 Initiative の下には、すべての第 1 階層の子(EPIC、SPEC、SPIKE)がネストされます。この出力をそのまま表示し、再フォーマットしたり、絞り込んだりしないでください。
CLI 出力の前に「ROADMAP.md を更新して開きました。」と伝えてください。スコープを指定した実行の場合は、代わりに「{SCOPE_ID} のロードマップスライスを更新して開きました。」と伝えてください。
コンテキストを含めた表示
ロードマップ項目(アイゼンハワーの各象限、ガントタイムライン)を一覧表示するときは、各アーティファクトを ID だけでなく、コンテキストを含む行として表示します:
REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
bash "$REPO_ROOT/.agents/bin/artifact-context.sh" <ID> 2>/dev/null
ユーティリティが利用できない場合は、<ID> — <title> を使用してください。
6. フォーカスレーンのコンテキスト
.agents/session.json にフォーカスレーンが設定されている場合は、最後にその内容に触れてください。
FOCUS="$(bash "$REPO_ROOT/.agents/bin/swain-focus.sh" 2>/dev/null)"
フォーカスが設定されている場合は、「フォーカス:{FOCUS}。推奨事項はこのレーンに限定されています。」と伝えてください。
最新状態の確認(他のスキル向け)
他のスキルは、古さに基づく再生成のために chart.sh を直接呼び出せます。このスキルは常に無条件で再生成するため、「強制更新」の経路です。
ステータスダッシュボード(ADR-023、以前はSPEC-122)
オペレーターが「ステータス」「次は何をする?」「ダッシュボード」「概要」「現在の状況は?」「何に取り組めばいい?」と言った場合、ステータススクリプトを実行します。
REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || pwd)"
STATUS_SCRIPT="$REPO_ROOT/.agents/bin/swain-status.sh"
[ -f "$STATUS_SCRIPT" ] && bash "$STATUS_SCRIPT" --refresh || echo "status dashboard script not found"
コンパクトモード(MOTD)では、bash "$STATUS_SCRIPT" --compact を実行します。
キャッシュ
ステータスは120秒のTTLで .agents/status-cache.json に書き込みます。キャッシュを迂回するには --refresh、生の出力を取得するには --json を使用します。
推奨事項
JSONキャッシュから .priority.recommendations[0] を読み取ります。フォーカスレーンが設定されている場合、推奨事項の対象はそのビジョン/イニシアチブに絞られます。
モードの推定
- 両方の仕様書がレビュー中で、戦略的な決定も保留中の場合 -> オペレーターに確認します
- 仕様書がレビュー待ちの場合 -> 詳細モード
- フォーカスレーンがあり、決定が保留中の場合 -> ビジョンモード
- 対応事項がない場合 -> ビジョンモード(マスタープランのミラー)
必要な決定(ロードマップとの統合)
Eisenhower分類には chart.sh roadmap --json を使用します。オペレーターの決定が必要な「先に実行」と「スケジュール」象限から上位5件を表示します。
エラー処理
- chart.sh が失敗した場合は、エラー出力を表示し、
swain-doctorの実行を提案します - ROADMAP.md が存在していても chart.sh を利用できない場合は、既存ファイル(古い可能性があります)を鮮度に関する警告とともに表示します
- 決して処理を完全に失敗させず、利用可能な情報をすべて表示します