linear について
linearは、Linearの公開GraphQL APIを操作する、依存関係のないコマンドラインスキルです。範囲を限定した読み取りやissue・プロジェクトの変更に対応し、JSON出力と、変更前のdry-run・確認手順を備えています。
主な機能
- 01依存関係のないLinear CLIラッパー
- 02issueとドキュメントの検索・読み取り
- 03issue、プロジェクト、サイクルの管理
- 04JSON出力と範囲指定読み取り
- 05dry-runと確認後の変更
活用シーン
- 01識別子や語句によるissue検索
- 02チームのワークフロー状態の確認
- 03プレビュー後のissue作成・更新
- 04ターミナルからのプロジェクト読み取り・更新
MCP 対応
このスキルはMCPサーバーではなく、公開GraphQL APIを通じてLinearを操作します。Linear内にライブエージェントを組み込む場合、READMEはLinearネイティブのMCPまたはagent-session/webhook APIを案内しています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ magnus919/ agent-skills --skill linearインストール後、Claude Code で/linearを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdevals/evals.jsonreferences/domain-and-workflows.mdgraphql-contract.mdintegration-boundaries.mdsources.mdscripts/lineartests/test_linear.py詳細
Linear
このスキルディレクトリの scripts/linear を使用してください。これは依存関係のない、Linear の公開 GraphQL API 用の小さなラッパーであり、MCP サーバーではありません。回答にコマンドリファレンス全体をコピーするのではなく、コマンドごとの --help を使用してください。
セットアップ
- 利用可能なコマンドと関連する名詞を確認します:
scripts/linear --helpとscripts/linear issue --help。 - ライブリクエストでは、プロセス環境に認証情報をちょうど1つ設定します。個人用キーには
LINEAR_API_KEY、OAuth にはLINEAR_ACCESS_TOKENを使用してください。どちらも表示、永続化、コマンドの記録への記載はしないでください。 - 範囲を限定して調査を始めます。読み取りのデフォルトは
--limit 10で、最大値は100です。 - 出力は常に JSON です。
--jsonを指定するとコンパクトになり、指定しない場合はインデントされます。--dry-runはネットワークリクエストを行わず、操作をプレビューします。
コマンド一覧
| 必要な操作 | コマンド |
|---|---|
| 現在のユーザーを確認する | scripts/linear whoami --json |
| チームを確認する | scripts/linear team list --limit 20 --json |
| チームのワークフロー状態を一覧表示する | scripts/linear state list --team ENG --json |
| 既知の課題セットを絞り込む | scripts/linear issue list --team ENG --state "In Progress" --json |
| キーワードで課題を検索する | scripts/linear issue search "customer import" --json |
| 既知の課題を1件読み取る | scripts/linear issue get ENG-42 --json |
| プロジェクト、サイクル、階層、コメント、関連情報とともに課題を読み取る | scripts/linear issue get ENG-42 --detail --json |
| プロジェクト、親課題、担当者、ラベル、状態、期日を指定して課題を作成する | scripts/linear issue create --team ENG --title "Fix login" --project "Platform" --parent ENG-1 --assignee "Ada Lovelace" --label bug --state "In Progress" --due 2026-08-31 |
| 課題の担当者、ラベル、期日、プロジェクトを更新する | scripts/linear issue update ENG-42 --assignee "Ada Lovelace" --label bug --remove-label p2 --due 2026-08-31 --project "Platform" |
| 課題をアーカイブまたはアーカイブ解除する | scripts/linear issue archive ENG-42 または scripts/linear issue unarchive ENG-42 |
| プロジェクトを一覧表示または読み取る | scripts/linear project list --team ENG --json または scripts/linear project get "Roadmap" --json |
| プロジェクトを更新する | scripts/linear project update "Roadmap" --description "Q3 plan" --status started |
| サイクルを一覧表示または読み取る | scripts/linear cycle list --team ENG --json または scripts/linear cycle get UUID --json |
| キーワードでドキュメントを検索する | scripts/linear document search roadmap --json |
| UUID、スラッグ、URLでドキュメントを読み取る | scripts/linear document get REF --json |
| ドキュメント化された未対応の GraphQL 操作を使用する | scripts/linear raw 'query { viewer { id } }' --json |
必要最小限の読み取りを選ぶ
| 状況 | 使用するコマンド |
|---|---|
| 課題の識別子または UUID がわかっている | issue get |
| 識別子はわからないがキーワードがある | issue search または document search |
| フィルターを使って範囲を限定した一覧が必要 | issue list、document list、project list、または cycle list |
| チームのワークフロー状態が必要 | state list --team ENG |
| 集中型 CLI の範囲外にある、ドキュメント化された操作が必要 | 明示的な GraphQL クエリを指定して raw |
raw は通常のコマンドの代わりではなく、最後の手段です。クエリの範囲を限定し、フィールド名と権限は公式の GraphQL ドキュメントで確認してください。
状態の変更
操作する前に、対象、範囲、ロールバック方法を確認してください。読み取り専用の調査は確認なしで進められます。
issue create、issue update、issue move、issue comment、issue archive、issue unarchive、
project update、および GraphQL の生のミューテーションを実行する場合:
- 読み取りコマンドを使って、課題/チーム/プロジェクト/状態を特定します。
- 実行する変更内容と復旧方法をユーザーに正確に伝えます。
- 同じコマンドを
--dry-run --json付きで実行します。これには認証情報もネットワークも必要ありません。 - 確認を得た後、
--confirm --json付きで再実行します。 - 認証情報を公開せずに、返された識別子と結果を報告します。
課題、プロジェクト、サイクルの一覧で --team を使う場合は、チームキーを正確に指定する必要があります。issue create
は作成前にチームキーまたは完全一致する名前を解決し、コメント、更新、アーカイブの前に課題の識別子を解決します。また、UUID または完全一致する名前でプロジェクトを解決し、完全一致する名前またはメールアドレスで担当者を解決します。ラベルは課題のチーム内で、移動先のワークフロー状態はその課題のチーム内でのみ解決します。project update は UUID または完全一致する名前でプロジェクトを、名前または種類でステータスを解決します。ID、ワークフロー状態、ラベル、プロジェクトのステータスを推測することはありません。安全なミューテーションの手順と Linear のワークフローの仕様については、references/domain-and-workflows.md を読み込んでください。
エラーと復旧
- 認証情報がない場合:サポート対象の環境変数を1つだけコマンド実行中に設定するか、
--dry-runでリクエストを確認します。 - GraphQL エラー:CLI は最初に見つかった有用な Linear のエラーメッセージを stderr に書き込み、HTTP ステータスが 200 の場合も含めて、ゼロ以外の終了コードで終了します。権限、識別子の正確さ、ドキュメントに記載されたフィールドの利用可否を確認してください。
- チームが特定できない場合:
team listで正確なキーまたは名前を選びます。ID を推測して再試行しないでください。 - 状態を特定できない場合:まず
state list --teamでチームの状態一覧を取得し、その中から正確な名前を使います。このエラーには、課題のチームで利用可能な状態も表示されます。 - ラベルを特定できない場合:このエラーには、課題のチームで利用可能なラベルが表示されます。その中から正確な名前を使います。
- プロジェクトのステータスを特定できない場合:このエラーには、利用可能なステータスが表示されます。正確な名前または種類(例:
planned、started、paused、completed、canceled)を使います。 - プロジェクトの説明が拒否された場合:Linear の
projectUpdateでは、255文字を超える説明は拒否されます。プロジェクトの説明は255文字以内にしてください。 - 上限エラー:1〜100の値を指定します。CLI は意図的に自動ページネーションを行いません。
- レート制限または通信エラー:待ってから、同じ範囲を限定した読み取りを再試行します。リトライループを追加せず、Linear のレート制限に関するガイダンスに従ってください。
参考資料
| 必要な情報... | 読み込むファイル... |
|---|---|
| Linear のデータモデル、ワークフローの仕様、安全なミューテーションの手順 | references/domain-and-workflows.md |
| GraphQL エンドポイント、認証、フィルター、ページネーション、エラー、レート制限 | references/graphql-contract.md |
| CLI、MCP、生の GraphQL、Agent Session の選択基準 | references/integration-boundaries.md |
| ソース URL、アクセス日、スキーマの検証手順 | references/sources.md |
検証
変更後にオフラインテストとリポジトリ検証ツールを実行します。
python3 -m unittest linear/tests/test_linear.py
ruby scripts/validate-skills.rb
使用しない場合
ターミナルから Linear を操作するのではなく、Linear 内にライブエージェントを組み込むタスクには、Linear のネイティブ MCP またはエージェントセッション/Webhook API を使用してください。