gitlab について
AI エージェントが `glab` CLI で GitLab の課題、マージリクエスト、CI、API クエリを扱うためのスキルです。セルフホスト環境の指定方法も含みます。
主な機能
- 01課題とマージリクエストの操作
- 02CI とパイプラインの確認
- 03リリースとリポジトリのコマンド
- 04REST と GraphQL のリクエスト
- 05JSON 出力とページネーション
活用シーン
- 01プロジェクトの課題の一覧表示や更新
- 02マージリクエストのレビューとマージ
- 03パイプラインの状態やジョブログの確認
- 04GitLab プロジェクトデータの照会
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ acedatacloud/ skills --skill gitlabインストール後、Claude Code で/gitlabを入力して読み込まれたか確認します。
詳細
すべての操作に glab CLI を使用してください。ユーザーの OAuth アクセストークンは
$GITLAB_TOKEN としてエクスポートされています。glab はこれを自動的に読み取ります(ツールとの
互換性のため、トークンは GITLAB_ACCESS_TOKEN と OAUTH_TOKEN でも受け付けられます)。デフォルトのホストは
gitlab.com です。セルフホストの場合は GITLAB_HOST を設定するか、各コマンドで --hostname <host> を指定してください。
glab --help と glab <subcommand> --help は常に最新の情報を表示します。
glab の呼び出し方は 2 通り — サブコマンドを優先してください
スタイル A:専用サブコマンド — まずはこちらを使用
glab issue、glab mr、glab repo、glab ci、glab job、glab pipeline、
glab release、glab snippet、glab variable、glab label、
glab milestone、glab schedule。デフォルトでは整形されたテキストを出力し、
--output json で JSON を出力します。
スタイル B:glab api による REST/GraphQL の直接呼び出し
REST には glab api <path>、GraphQL には glab api graphql -f query='…' を使用します。
主なフラグ:
-X POST|PATCH|PUT|DELETE— メソッドを上書きします(デフォルトはGETです。--field/--raw-fieldを 設定するとPOSTになります)。-f key=value— 値の型を自動判定します(true/false/nullのリテラルや整数は JSON 型になり、先頭に@filenameを指定するとファイルから読み込みます)。-F key=value—-fと同じですが、値を常に文字列として扱います。--paginate—Link: rel="next"をたどって自動的にページを取得します。--hostname <host>— デフォルトとは異なる GitLab ホストを指定します。- パスのプレースホルダー:git チェックアウト内で実行すると、
:fullpath/:branch/:userはリポジトリから自動的に設定されます。一般的な シェルから実行する場合は、パスを手動でエンコードしてください(レシピを参照)。
レシピ
プロジェクトの未解決イシューを一覧表示する
glab issue list --repo OWNER/PROJECT --opened --output json
glab issue list --repo OWNER/PROJECT --assignee=@me --output json
コメント付きでイシューを表示する
glab issue view 42 --repo OWNER/PROJECT --comments
glab issue view 42 --repo OWNER/PROJECT --output json
イシューを作成/コメント/クローズする
glab issue create --repo OWNER/PROJECT --title "Bug: foo" --description "Repro steps…" --label bug
glab issue note 42 --repo OWNER/PROJECT --message "Acknowledged."
glab issue close 42 --repo OWNER/PROJECT
自分に割り当てられた/自分が作成した MR を一覧表示する
glab mr list --repo OWNER/PROJECT --assignee=@me --opened --output json
glab mr list --repo OWNER/PROJECT --author=@me --opened
差分と CI パイプラインを含めて MR を表示する
glab mr view 99 --repo OWNER/PROJECT
glab mr diff 99 --repo OWNER/PROJECT
glab ci view --repo OWNER/PROJECT --branch <BRANCH>
MR を承認/マージ/コメントする
glab mr approve 99 --repo OWNER/PROJECT
glab mr note 99 --repo OWNER/PROJECT --message "Looks good — ready when CI is green."
glab mr merge 99 --repo OWNER/PROJECT --squash --remove-source-branch
デフォルトブランチからファイルを読み込む(生バイト列)
# URL-encode the project path AND the file path because both contain '/'.
PROJECT=$(printf '%s' 'OWNER/PROJECT' | jq -sRr @uri)
FILE=$(printf '%s' 'src/main.go' | jq -sRr @uri)
glab api "projects/${PROJECT}/repository/files/${FILE}/raw?ref=main"
ブランチの最新パイプラインを一覧表示する
glab ci list --repo OWNER/PROJECT --status running,success,failed
glab ci view --repo OWNER/PROJECT --branch main
glab ci trace --repo OWNER/PROJECT <JOB_ID> # stream a job log
グループのイシューを横断検索する
glab api "groups/GROUP_PATH_OR_ID/issues?state=opened&search=keyword" \
--paginate \
| jq '.[] | {iid, title, project: .references.full, web_url}'
GraphQL の例:プロジェクトのメタデータと未解決 MR の件数
glab api graphql -f query='
query($path: ID!) {
project(fullPath: $path) {
name webUrl
mergeRequests(state: opened) { count }
}
}' -f path=OWNER/PROJECT
注意事項
--repo OWNER/PROJECTには、OWNER/PROJECT、GROUP/SUBGROUP/PROJECT、 完全な HTTPS URL、または git URL を指定できます。--repoではプロジェクトパスをそのまま指定します(URL エンコードは不要です)が、glab apiのパス内で使用する場合はjq @uriでエンコードする必要があります。- セルフホストの GitLab では、ユーザーが正しい
hostへの接続を承認している必要があります。存在が確認できている プロジェクトで 404 が発生する場合、通常はプロジェクトが別のホストにあるにもかかわらず接続先が gitlab.com になっています。この点をユーザーに伝えてください。 - 多くの
glabコマンドには--outputフラグがあり、text(デフォルト)またはjsonを指定できます。glab issue listとglab mr listには、別個の一覧専用フォーマッターである--output-format(details/ids/urls)もあります。短いフラグの混同(-Oと-F)を避けるため、 長いフラグ--output jsonを指定してください。
コメント
Markdown 対応