> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jinba.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Linear

> Linearの課題・チーム・プロジェクト進捗を管理

## 概要

LinearツールはLinear GraphQL APIに接続し、ワークフローから課題の作成・更新、コメントの追加、チームの検索、プロジェクト進捗の取得を自動化できます。

## 主な機能

* `LINEAR_CREATE_ISSUE`
  * Linearのチームに新しい課題を作成します。
  * 主な入力: `team_id`(必須)、`title`(必須)、`description`(Markdown)、`state_id`、`assignee_id`、`project_id`、`label_ids`、`subscriber_ids`、`priority`(整数 0〜4)、`estimate`(0以上の整数)
* `LINEAR_GET_ISSUES`
  * サーバーサイドのフィルター条件付きで課題の一覧を取得します。
  * 主な入力: `team_id`、`state_id`、`assignee_id`、`project_id`、`label_ids`(指定したラベルのいずれかを含む課題に一致)、`updated_after` / `updated_before`(ISO 8601形式、例: `2024-01-01T00:00:00Z`)、`first`(1〜100、デフォルト20)
* `LINEAR_UPDATE_ISSUE`
  * 既存の課題のフィールドを更新します。更新フィールドを最低1つ指定する必要があります。
  * 主な入力: `issue_id`(必須)に加えて、`title`、`description`、`state_id`、`assignee_id`、`project_id`、`label_ids`、`subscriber_ids`、`priority`、`estimate` のいずれか
* `LINEAR_ADD_ISSUE_COMMENT`
  * 課題にコメントを追加します。トリアージ内容の記録やワークフローからの通知に便利です。
  * 主な入力: `issue_id`(必須)、`comment_body`(必須、Markdown)
* `LINEAR_LIST_TEAMS`
  * チームの一覧を取得し、内部ID・名前・キーを確認できます。
  * 主な入力: `first`(1〜100、デフォルト20)
* `LINEAR_GET_PROJECT_PROGRESS`
  * プロジェクトの進捗と状態(スコープ、完了スコープ、ヘルス、マイルストーン、メンバー、直近のプロジェクト更新など)を取得します。
  * 主な入力: `project_id`(必須)

## 認証

すべてのLinearツールは**パーソナルAPIキー**で認証します(OAuthは未対応です)。Linearの **Settings** → **Security & access** → **Personal API keys** でAPIキーを発行し、ワークスペースのシークレットに `LINEAR_API_KEY` として保存してください。

各ステップのconfigフィールドは1つだけです。

| Configフィールド | 説明                               |
| ----------- | -------------------------------- |
| `api_key`   | LinearのAPIキー(ワークスペースのシークレットから選択) |

**注意**: APIキーは機密情報として扱い、公開リポジトリにコミットしないでください。

## 使用例

### 例: チームを検索して課題を作成

まずチーム一覧から内部チームIDを確認し、そのチームに課題を作成します。

```yaml theme={null}
- id: list_teams
  tool: LINEAR_LIST_TEAMS
  config:
    - name: api_key
      secret: "YOUR_LINEAR_SECRET"
  input:
    - name: first
      value: 50
- id: create_issue
  tool: LINEAR_CREATE_ISSUE
  config:
    - name: api_key
      secret: "YOUR_LINEAR_SECRET"
  input:
    - name: team_id
      value: "TEAM_UUID_FROM_LIST_TEAMS"
    - name: title
      value: "チェックアウトのエラー急増を調査"
    - name: description
      value: |
        ## 概要
        直近のデプロイ以降、チェックアウトAPIのエラー率が2倍になっています。
    - name: priority
      value: 2
```

### 例: 週次進捗レポート

過去1週間に更新された課題とプロジェクトの現況を取得し、AIステップで要約します。

```yaml theme={null}
- id: recent_issues
  tool: LINEAR_GET_ISSUES
  config:
    - name: api_key
      secret: "YOUR_LINEAR_SECRET"
  input:
    - name: project_id
      value: "PROJECT_UUID"
    - name: updated_after
      value: "2026-07-07T00:00:00Z"
    - name: first
      value: 100
- id: project_progress
  tool: LINEAR_GET_PROJECT_PROGRESS
  config:
    - name: api_key
      secret: "YOUR_LINEAR_SECRET"
  input:
    - name: project_id
      value: "PROJECT_UUID"
- id: write_digest
  tool: OPENAI_INVOKE
  input:
    - name: prompt
      value: |
        以下のデータをもとに、週次のステータスレポートを簡潔に作成してください。

        ==最近更新された課題==
        {{steps.recent_issues.result.issues}}

        ==プロジェクト進捗==
        {{steps.project_progress.result.project}}
```

## 注意事項

* **名前ではなくIDを指定**: `team_id`、`state_id`、`assignee_id`、`project_id`、`label_ids` はいずれもLinearの内部識別子です。`LINEAR_LIST_TEAMS` や `LINEAR_GET_ISSUES` でIDを確認してください。
* **リスト形式の入力**: `label_ids` と `subscriber_ids` はJSON配列(例: `["id1", "id2"]`)またはカンマ区切りの文字列(`id1, id2`)を受け付けます。
* **更新時はリストが置き換わる**: `LINEAR_UPDATE_ISSUE` では `label_ids` と `subscriber_ids` は既存のリストに追加されるのではなく、丸ごと置き換えられます。
* **フィールドは空にできない**: 更新時に空の値は無視されるため、タイトルや説明を空欄にすることはできません(上書きのみ可能です)。また、`LINEAR_UPDATE_ISSUE` は更新フィールドが1つもない場合エラーになります。
* **ページネーション**: `LINEAR_GET_ISSUES` と `LINEAR_LIST_TEAMS` は1回の実行で最大100件まで取得します。出力には `pageInfo`(`hasNextPage`、`endCursor`)が含まれますが、カーソルを入力する手段がないため、1ステップで取得できるのは最初のページのみです。件数が多い場合はフィルターで絞り込んでください。
* **エラーハンドリング**: `LINEAR_GET_PROJECT_PROGRESS` はリクエストが失敗した場合、ステップを失敗させる代わりに出力の `error` オブジェクトとしてエラーを返します。
