mcpField
O
ops-go

ops-go

github.com/davepoon生産性3.7k70 回インストール今日更新
リポジトリ

ops-go について

ops-goは、インフラ、リポジトリ、PR、CI、メッセージ、カレンダー、プロジェクトのロードマップをまとめるClaudeスキルです。運用状況を把握し、対応事項を整理したいチーム向けです。

主な機能

  1. 01優先度付きの朝のブリーフィング
  2. 02インフラとCIの状態確認
  3. 03未読メッセージと予定の集約
  4. 04ロードマップとPRの追跡
  5. 05フォローアップタスクと定期実行

活用シーン

  1. 01朝に運用上の問題を確認
  2. 02対応が必要なPRやCI失敗を特定
  3. 03メッセージ、予定、ロードマップから作業を計画

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/davepoon/buildwithclaude --skill ops-go

インストール後、Claude Code で/ops-goを入力して読み込まれたか確認します。

詳細

OPS ► 朝のブリーフィング

ランタイムコンテキスト

実行する前に、利用可能なコンテキストを読み込みます。

  1. 設定:${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json を読み取ります。

    • owner — あいさつの見出しで使用します(「おはようございます、[owner]」)
    • timezone — すべてのタイムスタンプをこのタイムゾーンで表示します
    • default_channels — 未読の概要に含めるチャネル
  2. デーモンの稼働状況:${CLAUDE_PLUGIN_DATA_DIR}/daemon-health.json を読み取ります。

    • action_needed が null でない場合 → ブリーフィングの前に提示します
    • WhatsApp の未読件数を含める前に、wacli-sync の状態を確認します
    • ライブ認証状態も ~/.wacli/.health で確認します
  3. 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")

コメント