ops-go について
ops-goは、インフラ、リポジトリ、PR、CI、メッセージ、カレンダー、プロジェクトのロードマップをまとめるClaudeスキルです。運用状況を把握し、対応事項を整理したいチーム向けです。
主な機能
- 01優先度付きの朝のブリーフィング
- 02インフラとCIの状態確認
- 03未読メッセージと予定の集約
- 04ロードマップとPRの追跡
- 05フォローアップタスクと定期実行
活用シーン
- 01朝に運用上の問題を確認
- 02対応が必要なPRやCI失敗を特定
- 03メッセージ、予定、ロードマップから作業を計画
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ davepoon/ buildwithclaude --skill ops-goインストール後、Claude Code で/ops-goを入力して読み込まれたか確認します。
詳細
OPS ► 朝のブリーフィング
ランタイムコンテキスト
実行する前に、利用可能なコンテキストを読み込みます。
-
設定:
${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.jsonを読み取ります。owner— あいさつの見出しで使用します(「おはようございます、[owner]」)timezone— すべてのタイムスタンプをこのタイムゾーンで表示しますdefault_channels— 未読の概要に含めるチャネル
-
デーモンの稼働状況:
${CLAUDE_PLUGIN_DATA_DIR}/daemon-health.jsonを読み取ります。action_neededが null でない場合 → ブリーフィングの前に提示します- WhatsApp の未読件数を含める前に、
wacli-syncの状態を確認します - ライブ認証状態も
~/.wacli/.healthで確認します
-
WhatsApp の事前確認:
~/.wacli/.healthにstatus=connectedと表示されている場合のみ、WhatsApp のデータを含めます。
CLI/API リファレンス
wacli(WhatsApp)
ヘルスファイル — wacli コマンドを実行する前に ~/.wacli/.health を確認します。
status=connected→ 続行しますstatus=needs_authまたはstatus=needs_reauth→ ユーザーに QR コードのスキャンを促します
| コマンド | 用途 | 出力 |
|---|---|---|
wacli doctor --json | 認証/接続/ロック/FTS の確認 | {data: {authenticated, connected, lock_held, fts_enabled}} |
wacli chats list --json | すべてのチャット | {data: [{JID, Name, Kind, LastMessageTS}]} |
gog CLI(Gmail/Calendar)
| コマンド | 用途 | 出力 |
|---|---|---|
gog calendar events primary --today --json | 今日のカレンダー予定 | カレンダーの予定 |
gog gmail search -j --results-only --no-input --max 30 "in:inbox" | 受信トレイを検索 | JSON 配列のスレッド |
Agent Teams のサポート
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1 が設定されている場合は、ブリーフィングデータを並行して収集する際に Agent Teams を使用します。これにより、以下が可能になります。
- エージェントがコンテキストを共有し、処理の途中で連携できます
- 優先順位をリアルタイムで調整できます
- エージェントは作業の完了に応じて進捗を報告します
チームのセットアップ(フラグが有効な場合のみ):
TeamCreate("go-team")
Agent(team_name="go-team", name="infra-scanner", prompt="Check ECS health, Vercel status, and CI failures across all clusters")
Agent(team_name="go-team", name="inbox-scanner", prompt="Scan unread messages across WhatsApp, Email, Slack, Telegram, Notion")
Agent(team_name="go-team", name="pr-scanner", prompt="Find open PRs needing action — reviews, CI fixes, merge-ready")
Agent(team_name="go-team", name="sprint-scanner", prompt="Check Linear sprint progress and GSD phase state across projects")
フラグが設定されていない場合は、標準のファイア・アンド・フォーゲット方式のサブエージェントを使用します。
事前収集データ
以下のデータはすべて、シェルスクリプトによって 10 秒未満で収集されました。
インフラストラクチャ
${CLAUDE_PLUGIN_ROOT}/bin/ops-infra 2>/dev/null || echo '{"clusters":[],"error":"infra check failed"}'
Git の状態(すべてのプロジェクト)
${CLAUDE_PLUGIN_ROOT}/bin/ops-git 2>/dev/null || echo '[]'
オープン PR
${CLAUDE_PLUGIN_ROOT}/bin/ops-prs 2>/dev/null || echo '[]'
CI の失敗(過去 24 時間)
${CLAUDE_PLUGIN_ROOT}/bin/ops-ci 2>/dev/null || echo '[]'
未読メッセージ
${CLAUDE_PLUGIN_ROOT}/bin/ops-unread 2>/dev/null || echo '{}'
GSD の状態(進行中のロードマップ)
for d in $(jq -r '.projects[] | select(.gsd == true) | .paths[]' "${CLAUDE_PLUGIN_ROOT}/scripts/registry.json" 2>/dev/null); do
expanded="${d/#\~/$HOME}"
if [ -f "$expanded/.planning/STATE.md" ]; then
alias=$(basename "$expanded")
phase=$(grep -m1 'current_phase' "$expanded/.planning/STATE.md" 2>/dev/null | head -1 || echo "unknown")
progress=$(grep -m1 'progress' "$expanded/.planning/STATE.md" 2>/dev/null | head -1 || echo "unknown")
echo "$alias: $phase | $progress"
fi
done
外部プロジェクト(リポジトリ以外)
${CLAUDE_PLUGIN_ROOT}/bin/ops-external 2>/dev/null || echo '[]'
カレンダー(今日)
gog calendar events primary --today --json 2>/dev/null | head -20 || echo "calendar unavailable"
あなたのタスク
上記の事前収集データをすべて分析し、朝のブリーフィングとして提示してください。ops-briefing の出力スタイルに従ってください。
形式:
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
OPS ► MORNING BRIEFING — [DATE]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
FIRES (fix now)
[table of production issues, CI failures, broken deploys]
PRs NEEDING ACTION
[table: repo, PR#, title, status, action needed]
PORTFOLIO DASHBOARD
[table: project, phase, branch, uncommitted, CI, next action]
EXTERNAL PROJECTS
[table: alias, source, status, details — from ops-external data]
MARKETING
Health: [N]/100 ([Healthy/Warning/Critical]) | Blended ROAS: [X]x | Top channel: [channel]
Meta: $[X] spent (7d) [X]x ROAS | Google: $[X] spent (7d) [X]x ROAS | Email: [N] subs
[If health < 70: "⚠ Run /ops:marketing optimize for recommendations"]
[If no marketing configured: "(marketing not configured — /ops:marketing setup)"]
UNREAD
[WhatsApp: N, Email: N, Slack: check MCP, Notion: N items, Calendar: N events today]
TODAY'S PRIORITIES (ranked by revenue impact + urgency)
1. [action] — [project] — [why]
2. ...
3. ...
──────────────────────────────────────────────────────
マーケティングセクションのデータソース:事前収集データのセクションにある ops-marketing-dash の事前収集出力を読み取ります。ダッシュ出力にマーケティングデータが含まれている場合は、ops-marketing の SKILL.md にあるヘルススコアの計算式に従って、ヘルススコアをその場で計算します。ops-marketing-dash が設定されていない、またはマーケティングデータが空の場合は、(marketing not configured — /ops:marketing setup) と表示します。
優先順位:重大な問題 > 劣化したインフラ > CI の失敗 > 未読の連絡 > マージ可能な PR > 収益を生み出す GSD 作業 > 停滞中のプロジェクト。
$ARGUMENTS にプロジェクトの別名が含まれている場合は、そのプロジェクトだけに焦点を当てたブリーフィングを行います。
ブリーフィングの後、「次は何をしますか?」のプロンプトに対して、バッチ化した AskUserQuestion 呼び出し(各呼び出し最大 4 件の選択肢)を使用します。最初の呼び出しでは、優先度の高いアクション 3 件と [More...] を表示し、2 回目の呼び出しでは、残りのアクションと [/ops-yolo — let me run your business today] を表示します。適切な ops スキルまたはプロジェクトに振り分けてください。
Slack の件数について:事前収集データに "count": -1 とある場合は、クエリに in:channel を指定して mcp__claude_ai_Slack__slack_search_public_and_private を使用し、実際のメッセージ件数を取得してください(is:unread は使用せず、最近のアクティビティ全体をスキャンしてください)。ほかのデータを分析する間に、これを並列ツール呼び出しとして実行してください。
Notion の件数について:NOTION_MCP_ENABLED=true で、事前収集データに Notion が利用可能と示されている場合は、query: "" を指定し、last_edited_time の降順で並べ替えて mcp__claude_ai_Notion__notion-search を使用し、最近アクティブなページを表示してください。次に、上位の結果に対して mcp__claude_ai_Notion__notion-get-comments を呼び出し、返信が必要なコメントを探してください。注:Notion 検索は日付範囲フィルターをサポートしていません。代わりに、更新日時の新しい順に並べ替え、先頭の 10~20 件に絞り込んでください。
ネイティブツールの使用
タスク — ブリーフィングのアクション追跡
ブリーフィングを提示した後、推奨する優先アクションごとに TaskCreate を作成します。ユーザーがそれらに取り組む(またはスキルへの振り分けを依頼する)際は、TaskUpdate で更新してください。これにより、セッションをまたいで継続性が保たれます。
Cron — 定期ブリーフィングのスケジュール設定
最初のブリーフィングの後、AskUserQuestion を使って定期ブリーフィングのスケジュール設定を提案してください。
[Schedule daily at 9am] [Schedule weekday mornings] [No schedule]
CronCreate を使用してスケジュールを設定します。既存のスケジュールは CronList で表示してください。
WebFetch — カレンダー情報の補完
gog calendar が失敗した場合は、フォールバックとして Google Calendar API を WebFetch で使用してください。
WebFetch(url: "https://www.googleapis.com/calendar/v3/calendars/primary/events?timeMin=<today>T00:00:00Z&timeMax=<today>T23:59:59Z")