gitlab-automation について
gitlab-automation は、Rube MCP と Composio の GitLab ツールキットを通じて GitLab 操作を自動化するスキルです。プロジェクト、イシュー、マージリクエスト、リポジトリ、CI/CD、メンバー管理を扱い、認可確認と安全な変更を重視します。
主な機能
- 01プロジェクトとブランチの管理
- 02イシューの一覧表示と更新
- 03マージリクエストの絞り込み
- 04CI/CD パイプラインの監視
- 05ユーザーとメンバーの検索
- 06認可と変更安全性の確認
活用シーン
- 01プロジェクトのイシュー検索と更新
- 02マージリクエストとブランチの確認
- 03パイプラインとジョブの状態確認
- 04プロジェクトメンバーの検索と担当割り当て
MCP 対応
Rube MCP 経由で GitLab ツールキットに接続します。利用前に最新のツールスキーマを取得し、GitLab 接続が ACTIVE であることを確認します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill gitlab-automationインストール後、Claude Code で/gitlab-automationを入力して読み込まれたか確認します。
詳細
Rube MCP による GitLab の自動化
Composio の GitLab ツールキットを通じて、プロジェクト管理、課題追跡、マージリクエストのワークフロー、CI/CD パイプラインの監視、ブランチ管理、ユーザー管理などの GitLab 操作を自動化します。
前提条件
- Rube MCP が接続されていること(RUBE_SEARCH_TOOLS が利用可能)
RUBE_MANAGE_CONNECTIONSを通じて、ツールキットgitlabで GitLab に接続していること- 現在のツールスキーマを取得するため、必ず最初に
RUBE_SEARCH_TOOLSを呼び出すこと
セットアップ
Rube MCP の取得:クライアント設定で https://rube.app/mcp を MCP サーバーとして追加します。エンドポイントを追加しただけでは、GitLab へのアクセスは許可されません。MCP クライアントを認証し、返されたサポート対象の認証フローを通じて、対象の GitLab アカウントに接続します。
RUBE_SEARCH_TOOLSが応答することを確認し、Rube MCP が利用可能であることを確かめます- ツールキット
gitlabを指定してRUBE_MANAGE_CONNECTIONSを呼び出します - 接続が ACTIVE でない場合は、返された認証リンクに従って GitLab OAuth を完了します
- ワークフローを実行する前に、接続ステータスが ACTIVE であることを確認します
操作を実行する前に、GitLab インスタンス、アカウント、プロジェクトを確認してください。一覧表示の許可は、課題やプロジェクト、ブランチの作成、ユーザー変更、マージ操作の許可を意味しません。ユーザーが承認した対象と操作を使用してください。保護設定を維持し、破壊的な変更は事前にプレビューし、書き込み結果が不確かな場合は再試行する前に状況を確認してください。トークンや非公開リポジトリの内容を、無関係なサービスに送信しないでください。
主なワークフロー
1. 課題の管理
使用する場面:ユーザーが GitLab プロジェクトで課題の作成、更新、一覧表示、検索を希望する場合
ツールの実行順序:
GITLAB_GET_PROJECTS- 対象プロジェクトを検索し、ID を取得します[前提条件]GITLAB_LIST_PROJECT_ISSUES- プロジェクトの課題を一覧表示し、絞り込みます[必須]GITLAB_CREATE_PROJECT_ISSUE- 新しい課題を作成します[作成時に必須]GITLAB_UPDATE_PROJECT_ISSUE- 既存の課題(タイトル、ラベル、状態、担当者)を更新します[更新時に必須]GITLAB_LIST_PROJECT_USERS- 割り当てるユーザー ID を検索します[任意]
主なパラメーター:
id:プロジェクト ID(整数)または URL エンコードされたパス(例:"my-group/my-project")title:課題のタイトル(作成時に必須)description:課題の本文(最大 1,048,576 文字)labels:カンマ区切りのラベル名(例:"bug,critical")add_labels/remove_labels:既存のラベルをすべて置き換えずに追加または削除しますstate:"all"、"opened"、"closed"で絞り込みますstate_event:課題の状態を変更する"close"または"reopen"assignee_ids:ユーザー ID の配列。すべての割り当てを解除するには[0]を使用しますissue_iid:プロジェクト内の課題 ID(更新時に必須)milestone:マイルストーンのタイトルで絞り込みますsearch:タイトルと説明を検索しますscope:"created_by_me"、"assigned_to_me"、または"all"page/per_page:ページネーション(per_pageのデフォルト値:20)
注意点:
idは整数のプロジェクト ID または URL エンコードされたパスを受け付けます。誤った ID を指定すると 4xx エラーになりますissue_iidはプロジェクト内の ID(#42 のように表示)であり、グローバルな課題 ID とは異なりますlabelsフィールドを指定すると既存のラベルがすべて置き換えられます。段階的に変更するにはadd_labels/remove_labelsを使用しますassignee_idsを空の配列にしても割り当ては解除されません。代わりに[0]を使用しますupdated_atフィールドを使用するには、管理者またはプロジェクト/グループのオーナー権限が必要です
2. マージリクエストの管理
使用する場面:ユーザーがプロジェクト内のマージリクエストの一覧表示、絞り込み、またはレビューを希望する場合
ツールの使用順序:
GITLAB_GET_PROJECT- プロジェクトの詳細を取得し、アクセスを確認します [前提条件]GITLAB_GET_PROJECT_MERGE_REQUESTS- マージリクエストの一覧表示と絞り込みを行います [必須]GITLAB_GET_REPOSITORY_BRANCHES- ソースブランチ/ターゲットブランチを確認します [任意]GITLAB_LIST_ALL_PROJECT_MEMBERS- レビュアー/担当者を探します [任意]
主なパラメーター:
id:プロジェクト ID、または URL エンコードされたパスstate:"opened"、"closed"、"locked"、"merged"、または"all"scope:"created_by_me"(デフォルト)、"assigned_to_me"、または"all"source_branch/target_branch:ブランチ名で絞り込みますauthor_id/author_username:MR の作成者で絞り込みますassignee_id:担当者で絞り込みます(未割り当ての場合はNone、割り当て済みの場合はAnyを使用)reviewer_id/reviewer_username:レビュアーで絞り込みますlabels:カンマ区切りのラベルで絞り込みますsearch:タイトルと説明を検索しますwip:ドラフト MR の場合は"yes"、ドラフト以外の場合は"no"order_by:"created_at"(デフォルト)、"title"、"merged_at"、"updated_at"view:最小限のフィールドを返す場合は"simple"iids[]:特定の MR 内部 ID で絞り込みます
注意点:
- デフォルトの
scopeは"created_by_me"で、結果が制限されます。すべてを一覧表示するには"all"を使用してください author_idとauthor_usernameは同時に指定できませんreviewer_idとreviewer_usernameは同時に指定できませんapprovedフィルターにはmr_approved_filter機能フラグが必要です(デフォルトでは無効)- MR の履歴が多いと情報が煩雑になるため、フィルターと適度な
per_page値を使用してください
3. プロジェクトとリポジトリの管理
使用する場面:ユーザーがプロジェクトの一覧表示、新しいプロジェクトの作成、またはブランチの管理を希望する場合
ツールの使用順序:
GITLAB_GET_PROJECTS- フィルターを指定して、アクセス可能なすべてのプロジェクトを一覧表示します [必須]GITLAB_GET_PROJECT- 特定のプロジェクトの詳細情報を取得します [任意]GITLAB_LIST_USER_PROJECTS- 特定のユーザーが所有するプロジェクトを一覧表示します [任意]GITLAB_CREATE_PROJECT- 新しいプロジェクトを作成します [作成時に必須]GITLAB_GET_REPOSITORY_BRANCHES- プロジェクト内のブランチを一覧表示します [ブランチ操作時に必須]GITLAB_CREATE_REPOSITORY_BRANCH- 新しいブランチを作成します [任意]GITLAB_GET_REPOSITORY_BRANCH- 特定のブランチの詳細を取得します [任意]GITLAB_LIST_REPOSITORY_COMMITS- コミット履歴を表示します [任意]GITLAB_GET_PROJECT_LANGUAGES- 言語の内訳を取得します [任意]
主なパラメーター:
name/path:プロジェクト名と URL で使用できるパス(作成時は両方必須)visibility:"private"、"internal"、または"public"namespace_id:プロジェクトの配置先となるグループまたはユーザーの IDsearch:プロジェクトを大文字と小文字を区別せず、部分一致で検索しますmembership:ユーザーがメンバーであるプロジェクトに限定する場合はtrueowned:ユーザーが所有するプロジェクトに限定する場合はtrueproject_id:ブランチ操作に使用するプロジェクト IDbranch_name:新しいブランチの名前ref:新しいブランチ作成時のソースブランチまたはコミット SHAorder_by:"id"、"name"、"path"、"created_at"、"updated_at"、"star_count"、"last_activity_at"
注意点:
- すべてのプロジェクトを網羅するには
GITLAB_GET_PROJECTSのページネーションが必要です。最初のページで停止すると、プロジェクトを見落とします - 一部のレスポンスでは項目が
data.detailsの下に格納されています。実際に返されたリスト構造を解析してください - 後続の呼び出しのほとんどは正しい
project_idに依存するため、まずGITLAB_GET_PROJECTで確認してください branch_name/ref/shaが無効だとクライアントエラーが発生します。まずGITLAB_GET_REPOSITORY_BRANCHESでブランチの存在を確認してくださいGITLAB_CREATE_PROJECTではnameとpathの両方が必須です
4. CI/CD パイプラインを監視する
使用する状況:ユーザーがパイプラインのステータスを確認したい場合、ジョブを一覧表示したい場合、または CI/CD の実行を監視したい場合
ツールの順序:
GITLAB_GET_PROJECT- プロジェクトへのアクセスを確認します[前提条件]GITLAB_LIST_PROJECT_PIPELINES- フィルターを使ってパイプラインを一覧表示します[必須]GITLAB_GET_SINGLE_PIPELINE- 特定のパイプラインの詳細情報を取得します[任意]GITLAB_LIST_PIPELINE_JOBS- パイプライン内のジョブを一覧表示します[任意]
主なパラメーター:
id:プロジェクト ID または URL エンコードされたパスstatus:"created"、"waiting_for_resource"、"preparing"、"pending"、"running"、"success"、"failed"、"canceled"、"skipped"、"manual"、"scheduled"で絞り込みますscope:"running"、"pending"、"finished"、"branches"、"tags"ref:ブランチ名またはタグ名sha:特定のコミット SHAsource:パイプラインのソース(子パイプラインには"parent_pipeline"を使用します)order_by:"id"(デフォルト)、"status"、"ref"、"updated_at"、"user_id"created_after/created_before:ISO 8601 形式の日付フィルターpipeline_id:ジョブを一覧表示するための特定のパイプライン IDinclude_retried:再試行されたジョブを含める場合はtrue(デフォルトはfalse)
注意点:
- パイプラインの履歴が多いと結果が煩雑になることがあります。
status、ref、日付フィルターを使って結果を絞り込んでください - 出力を扱いやすくするため、
per_pageには適度な値を使用してください - パイプラインジョブの
scopeには、単一のステータス文字列またはステータスの配列を指定できます yaml_errors: trueを指定すると、設定が無効なパイプラインのみが返されます
5. ユーザーとメンバーを管理する
使用する状況:ユーザーを検索したい場合、プロジェクトメンバーを一覧表示したい場合、またはユーザーのステータスを確認したい場合
ツールの順序:
GITLAB_GET_USERS- GitLab ユーザーを検索して一覧表示します[必須]GITLAB_GET_USER- ID を指定して特定のユーザーの詳細を取得します[任意]GITLAB_GET_USERS_ID_STATUS- ユーザーのステータスメッセージと在席状況を取得します[任意]GITLAB_LIST_ALL_PROJECT_MEMBERS- すべてのプロジェクトメンバー(直接メンバーと継承メンバー)を一覧表示します[メンバー一覧の表示に必須]GITLAB_LIST_PROJECT_USERS- 検索フィルターを使ってプロジェクトユーザーを一覧表示します[任意]
主なパラメーター:
search:名前、ユーザー名、または公開メールアドレスで検索しますusername:ユーザー名を指定して特定のユーザーを取得しますactive/blocked:ユーザーの状態で絞り込みますid:メンバーを一覧表示するためのプロジェクト IDquery:名前、メールアドレス、またはユーザー名でメンバーを絞り込みますstate:"awaiting"または"active"でメンバーを絞り込みます(Premium/Ultimate)user_ids:特定のユーザー ID で絞り込みます
注意点:
- 多くのユーザーフィルター(admins、auditors、extern_uid、two_factor)は管理者専用です
GITLAB_LIST_ALL_PROJECT_MEMBERSには、直接メンバー、継承メンバー、招待されたメンバーが含まれます- ユーザー検索では大文字と小文字は区別されませんが、メールアドレスのドメインの一部だけでは一致しない場合があります
- Premium/Ultimate の機能(state フィルター、シート情報)は無料プランでは利用できません
よくあるパターン
ID の解決
GitLab では、プロジェクトを識別するために次の 2 種類の形式を使用します:
- 数値 ID:整数のプロジェクト ID(例:
123) - URL エンコードされたパス:Namespace/project 形式(例:
"my-group%2Fmy-project"または"my-group/my-project") - Issue IID と ID:
issue_iidはプロジェクト内の番号(#42)です。グローバルなidとは異なります - ユーザー ID:数値です。
searchまたはusernameを指定してGITLAB_GET_USERSで解決します
ページネーション
GitLab では、オフセットベースのページネーションを使用します:
page(1 から開始)とper_page(1~100、デフォルトは 20)を設定します- レスポンスの項目数が
per_pageより少なくなるか、レスポンスが空になるまで、pageを増やし続けます - 合計件数はレスポンスヘッダー(
X-Total、X-Total-Pages)で確認できる場合があります - 正確な結果を得るため、最後までページネーションを行ってください
URL エンコードされたパス
プロジェクトのパスを識別子として使用する場合:
- スラッシュは URL エンコードする必要があります。
my-group/my-projectはmy-group%2Fmy-projectになります - エンコードされていないパスを受け付けるツールもあります。各ツールのスキーマを確認してください
- 信頼性を高めるため、数値 ID が利用できる場合はそちらを優先してください
既知の注意点
ID 形式
- プロジェクトの
idフィールドは整数と文字列(URL エンコードされたパス)の両方を受け付けます - Issue の
issue_iidはプロジェクトスコープです。グローバルな issue ID と混同しないでください - パイプライン ID はプロジェクトスコープの整数です
- ユーザー ID は GitLab インスタンス全体でグローバルな整数です
レート制限
- GitLab にはユーザーごとのレート制限があります(プランに応じて通常 1 分あたり 300~2000 リクエスト)
- 大規模なパイプラインや issue の履歴では、日付とステータスのフィルターを使用して結果セットを削減してください
- 適度な
per_page値で責任を持ってページネーションしてください
パラメータの癖
labelsフィールドはすべてのラベルを置き換えます。増分変更にはadd_labels/remove_labelsを使用してくださいassignee_ids: [0]はすべての担当を解除します。空の配列は何も行いませんscopeのデフォルトは異なります: MR では"created_by_me"、issue では"all"author_idとauthor_usernameは MR フィルターでは同時に使用できません- 日付パラメータは ISO 8601 形式を使用します:
"2024-01-15T10:30:00Z"
プランの制限
- 一部の機能には Premium/Ultimate が必要です:
epic_id、weight、iteration_id、approved_by_ids、メンバーのstateフィルター - 管理者専用の機能: ユーザー管理フィルター、
updated_atの上書き、カスタム属性 mr_approved_filter機能フラグはデフォルトで無効になっています
クイックリファレンス
| タスク | ツールスラッグ | 主要パラメータ |
|---|---|---|
| プロジェクトの一覧表示 | GITLAB_GET_PROJECTS | search、membership、visibility |
| プロジェクトの詳細取得 | GITLAB_GET_PROJECT | id |
| ユーザーのプロジェクト | GITLAB_LIST_USER_PROJECTS | id、search、owned |
| プロジェクトの作成 | GITLAB_CREATE_PROJECT | name、path、visibility |
| issue の一覧表示 | GITLAB_LIST_PROJECT_ISSUES | id、state、labels、search |
| issue の作成 | GITLAB_CREATE_PROJECT_ISSUE | id、title、description、labels |
| issue の更新 | GITLAB_UPDATE_PROJECT_ISSUE | id、issue_iid、state_event |
| マージリクエストの一覧表示 | GITLAB_GET_PROJECT_MERGE_REQUESTS | id、state、scope、labels |
| ブランチの一覧表示 | GITLAB_GET_REPOSITORY_BRANCHES | project_id、search |
| ブランチの取得 | GITLAB_GET_REPOSITORY_BRANCH | project_id、branch_name |
| ブランチの作成 | GITLAB_CREATE_REPOSITORY_BRANCH | project_id、branch_name、ref |
| コミットの一覧表示 | GITLAB_LIST_REPOSITORY_COMMITS | プロジェクト ID、ブランチ ref |
| プロジェクトの言語 | GITLAB_GET_PROJECT_LANGUAGES | プロジェクト ID |
| パイプラインの一覧表示 | GITLAB_LIST_PROJECT_PIPELINES | id、status、ref |
| パイプラインの取得 | GITLAB_GET_SINGLE_PIPELINE | project_id、pipeline_id |
| パイプラインジョブの一覧表示 | GITLAB_LIST_PIPELINE_JOBS | id、pipeline_id、scope |
| ユーザーの検索 | GITLAB_GET_USERS | search、username、active |
| ユーザーの取得 | GITLAB_GET_USER | ユーザー ID |
| ユーザーステータス | GITLAB_GET_USERS_ID_STATUS | ユーザー ID |
| プロジェクトメンバーの一覧表示 | GITLAB_LIST_ALL_PROJECT_MEMBERS | id、query、state |
| プロジェクトユーザーの一覧表示 | GITLAB_LIST_PROJECT_USERS | id、search |
使用する場合
このスキルは、概要で説明されているワークフローまたはアクションを実行する場合に適用されます。
例
ユーザーリクエスト:
Rube MCP(Composio)を介して、GitLab のプロジェクト管理、issue、マージリクエスト、パイプライン、ブランチ、ユーザー操作を自動化します。
制限事項
- このスキルは、タスクが上記で説明した範囲に明確に一致する場合にのみ使用してください。
- 出力を、環境固有の検証、テスト、または専門家によるレビューの代替手段として扱わないでください。
- 必要な入力、権限、安全境界、または成功基準が欠けている場合は、停止して明確化を求めてください。