ops-linear について
ops-linear は Linear の課題、スプリントボード、バックログを確認・管理する Claude スキルです。GSD の進行中フェーズと Linear の課題状態の同期にも対応します。
主な機能
- 01現在のスプリントとバックログの表示
- 02Linear の課題の作成と更新
- 03サイクル間での課題の移動
- 04GSD フェーズの同期
- 05Linear MCP または GraphQL による代替
活用シーン
- 01現在のスプリントの作業計画を確認
- 02Linear の課題を作成または編集
- 03Linear の課題と GSD フェーズを整合
MCP 対応
Linear MCP ツールでチームと課題を一覧表示し、課題を作成します。MCP ツールが利用できない、または失敗した場合は Linear GraphQL API に切り替えます。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ davepoon/ buildwithclaude --skill ops-linearインストール後、Claude Code で/ops-linearを入力して読み込まれたか確認します。
詳細
OPS ► LINEAR COMMAND CENTER
ランタイムコンテキスト
実行する前に、利用可能なコンテキストを読み込みます。
-
シークレット:MCP フォールバッククエリには Linear API キーが必要です。
シークレットの解決
$LINEAR_API_KEY環境変数を確認します- 次に、Doppler MCP ツール(
mcp__doppler__*)を確認します(Doppler MCP サーバーが設定されている場合) - 次に、
doppler secrets get LINEAR_API_KEY --plainを実行します(設定で doppler CLI が構成されている場合) - 次に、
${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.jsonのpassword_manager_config.query_cmdを使用します - 利用できない場合は、Linear MCP ツールのみを使用します(curl へのフォールバックはできません)
-
設定:
${CLAUDE_PLUGIN_DATA_DIR}/preferences.jsonを読み込み、secrets_manager/dopplerの設定を確認します。
CLI/API リファレンス
Linear GraphQL(MCP が利用できない場合のフォールバック)
| コマンド | 使用方法 | 出力 |
|---|---|---|
curl -X POST https://api.linear.app/graphql -H "Authorization: $LINEAR_API_KEY" -H "Content-Type: application/json" -d '{"query":"{ issues(filter: {state: {type: {in: [\"started\",\"unstarted\"]}}}) { nodes { id title state { name } priority assignee { name } } } }"}' | アクティブな課題 | JSON |
curl -X POST https://api.linear.app/graphql -H "Authorization: $LINEAR_API_KEY" -H "Content-Type: application/json" -d '{"query":"{ cycles(filter: {isActive: {eq: true}}) { nodes { id number startsAt endsAt } } }"}' | 現在のサイクル | JSON |
フェーズ 1 — データの読み込み
並行して実行します。
mcp__linear__list_teams— すべてのチーム ID を取得しますmcp__linear__list_issues— サイクルフィルターを使用して課題を取得します(必要に応じてサイクルクエリには GraphQL フォールバックを使用します)
次に、現在のサイクル ID でフィルターした mcp__linear__list_issues を使って、現在のサイクルの課題を取得します。
$ARGUMENTS に応じた振り分け
| 引数 | アクション |
|---|---|
| (空)、sprint | 現在のスプリントボードを表示します |
| backlog | 未割り当て/未スケジュールの課題を表示します |
| create [title] | 新しい課題を作成します(詳細を確認します) |
| update [id] | ID で課題を更新します |
| sync | GSD フェーズを Linear の課題に同期します |
| [issue-id] | 指定した課題を表示して編集します |
スプリントボード表示
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
LINEAR ► SPRINT [N] — [start] → [end]
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
IN PROGRESS
[id] [priority] [title] [assignee] [estimate]
TODO
[id] [priority] [title] [assignee] [estimate]
DONE THIS SPRINT
[id] [title] [completed date]
BLOCKED / CANCELLED
[id] [title] [reason]
──────────────────────────────────────────────────────
Sprint velocity: [done points] / [total points] ([%])
──────────────────────────────────────────────────────
AskUserQuestion の呼び出しはバッチ処理(各呼び出しで最大 4 個の選択肢)にします。
AskUserQuestion 呼び出し 1:
[Create new issue]
[Update issue status]
[Move issue to/from sprint]
[More...]
AskUserQuestion 呼び出し 2(「More...」の場合のみ):
[View backlog]
[Sync with GSD phases]
課題の作成フロー
ユーザーから情報を収集します(または $ARGUMENTS から解析します)。
- タイトル
- チーム(曖昧な場合は選択肢を表示します)
- 優先度(urgent/high/medium/low)
- サイクル(現在のスプリントまたはバックログ)
- 担当者(任意)
- 見積もり(任意)
mcp__linear__create_issue を使用して作成します。確認メッセージ:Created [id]: [title]
GSD 同期フロー
プロジェクト全体から、アクティブな GSD STATE.md ファイルをすべて読み込みます。アクティブなフェーズごとに、次の操作を行います。
- 対応するフェーズ参照を持つ Linear の課題が存在するか確認します。
- 存在しない場合は、作成を提案します。
- ステータスが異なる場合(GSD では完了、Linear では進行中など)は、同期を提案します。
GSD フェーズの完了ステータスに一致するように、Linear の課題を更新します。
ビューを表示した後、次のアクションを確認するために AskUserQuestion を使用します。
ネイティブツールの使用
タスク — スプリント作業の追跡
ユーザーが Linear の課題に取り組み始めたら、TaskCreate を使用してローカルで追跡します。課題の進行に応じて TaskUpdate で更新します。これにより、Linear の状態とローカルセッションの状態を連携できます。
WebFetch — Linear API のフォールバック
Linear MCP ツールがクォータ制限に達した場合、または失敗した場合は、Linear GraphQL API に WebFetch でフォールバックします。
WebFetch(url: "https://api.linear.app/graphql", method: "POST", headers: {"Authorization": "$LINEAR_API_KEY"}, body: '{"query":"{ issues(filter: {cycle: {id: {eq: \"<id>\"}}}}) { nodes { id title state { name } } } }"}')