glab クイックアクション
glab CLI を使って GitLab のクイックアクション(スラッシュコマンド)を実行し、1 回の API 呼び出しで複数の状態変更をまとめて行います。
クイックスタート
# Post a single quick action on an issue
glab issue note 123 -m "/assign @alice"
# Batch multiple quick actions in one comment
glab issue note 123 -m "/assign @alice
/label ~bug ~priority::high
/milestone %\"Sprint 5\""
# Post quick actions on a merge request
glab mr note 456 -m "/assign_reviewer @bob
/label ~needs-review
/estimate 2h"
主な考え方:CLI による一括処理
glab には個々の操作を行うためのネイティブコマンド(glab issue update、glab mr update など)が多数ありますが、glab issue note または glab mr note でクイックアクションを投稿すると、1 回の API 呼び出しで複数の状態変更をまとめてアトミックに実行できます。
# Native commands — 3 separate API calls
glab issue update 123 --assignee @alice
glab issue update 123 --label bug,priority::high
glab issue update 123 --milestone "Sprint 5"
# Quick actions — 1 API call, same result
glab issue note 123 -m "/assign @alice
/label ~bug ~priority::high
/milestone %\"Sprint 5\""
一括処理が適している場合:
- 1 つの Issue/MR に 3 つ以上の変更を適用する場合
- 複数の項目にわたるトリアージのワークフローをスクリプト化する場合
glab update のフラグでは公開されていないアクション(例:/spend、/epic、/promote_to)を実行する場合
構文ルール
| ルール | 詳細 |
|---|
| 接頭辞 | すべてのクイックアクションは / で始まります |
| 大文字と小文字 | 大文字と小文字は区別されません(/Assign = /assign) |
| 配置 | 1 行につき 1 コマンドです。コメント/説明のどこにでも記述できます |
| パラメーター | コマンド名の後にスペースで区切って指定します |
| ラベル | ~ を付けます(例:~bug、~"priority::high") |
| マイルストーン | % を付けます(例:%"Sprint 5") |
| ユーザー | @ を付けます(例:@alice、@me) |
| MR/Issue の参照 | 同じプロジェクトでは #、プロジェクトをまたぐ場合は group/project#IID を付けます |
| エピック | & を付けます(例:&42) |
| 引用符 | 複数語の値には引用符を使用します:~"priority::high"、%"Sprint 5" |
| 無視されるテキスト | クイックアクション以外の行は通常のコメントテキストとして投稿されます |
Issue のクイックアクション
担当者
| コマンド | パラメーター | 説明 |
|---|
/assign | @user [@user2 ...] | 1 人以上のユーザーを割り当てます |
/unassign | @user [@user2 ...] または指定なし | 特定の担当者を解除するか、すべて解除します |
/reassign | @user [@user2 ...] | すべての担当者を指定したユーザーに置き換えます |
glab issue note 123 -m "/assign @alice @bob"
glab issue note 123 -m "/reassign @charlie"
glab issue note 123 -m "/unassign"
ラベル
| コマンド | パラメーター | 説明 |
|---|
/label | ~label1 ~label2 ... | ラベルを追加します |
/unlabel | ~label1 ... または指定なし | 特定のラベルを削除するか、すべて削除します |
/relabel | ~label1 ... | すべてのラベルを指定したラベルに置き換えます |
glab issue note 123 -m "/label ~bug ~\"priority::high\""
glab issue note 123 -m "/relabel ~\"type::feature\""
glab issue note 123 -m "/unlabel ~needs-triage"
マイルストーンとスケジュール
| コマンド | パラメーター | 説明 |
|---|
/milestone | %milestone | マイルストーンを設定します |
/remove_milestone | — | マイルストーンを削除します |
/due | <date> | 期限を設定します(YYYY-MM-DD、tomorrow、next week) |
/remove_due_date | — | 期限を削除します |
glab issue note 123 -m "/milestone %\"Sprint 5\""
glab issue note 123 -m "/due 2024-03-31"
glab issue note 123 -m "/due next week"
時間の記録
| コマンド | パラメーター | 説明 |
|---|
/estimate | <time> | 所要時間の見積もりを設定します(例:1h30m、3d) |
/remove_estimate | — | 所要時間の見積もりを削除します |
/spend | <time> [<date>] | 作業時間を記録します(例:2h、減算する場合は -30m) |
/remove_time_spent | — | 作業時間の記録をすべて削除します |
glab issue note 123 -m "/estimate 4h"
glab issue note 123 -m "/spend 1h30m 2024-03-15"
glab issue note 123 -m "/spend -30m"
状態の変更
| コマンド | パラメーター | 説明 |
|---|
/close | — | Issue をクローズします |
/reopen | — | クローズした Issue を再オープンします |
/confidential | — | Issue を機密扱いにします |
/done | — | 完了としてマークします(To-Do 用) |
/todo | — | 自分の To-Do リストに追加します |
glab issue note 123 -m "/close"
glab issue note 123 -m "/reopen"
関連付け
| コマンド | パラメーター | 説明 |
|---|
/duplicate | #issue | 別の Issue の重複としてマークします |
/relate | #issue [#issue2 ...] | 関連する Issue へのリンクを追加します |
/blocks | #issue [#issue2 ...] | この Issue がほかの Issue をブロックしていることを示します |
/blocked_by | #issue [#issue2 ...] | この Issue がほかの Issue にブロックされていることを示します |
/unrelate | #issue | 別の Issue との関連付けを解除します |
glab issue note 123 -m "/duplicate #456"
glab issue note 123 -m "/relate #789 #790"
glab issue note 123 -m "/blocks #800"
計画と階層
| コマンド | パラメーター | 説明 |
|---|
/epic | &epic or group&epic | エピックに追加 |
/remove_epic | — | エピックから削除 |
/iteration | *iteration:"name" | イテレーション/スプリントを設定 |
/remove_iteration | — | イテレーションを削除 |
/weight | <number> | イシューのウェイトを設定 |
/clear_weight | — | イシューのウェイトをクリア |
/health_status | on_track, needs_attention, at_risk | ヘルスステータスを設定 |
/clear_health_status | — | ヘルスステータスを削除 |
/board_move | ~list-label | イシューをボードリストに移動 |
glab issue note 123 -m "/epic &42"
glab issue note 123 -m "/iteration *iteration:\"Sprint 7\""
glab issue note 123 -m "/weight 3"
glab issue note 123 -m "/health_status on_track"
高度な操作
| コマンド | パラメーター | 説明 |
|---|
/copy_metadata | #issue or !mr | 別のアイテムからラベルとマイルストーンをコピー |
/clone | [path/to/project] | イシューを別のプロジェクトに複製 |
/move | path/to/project | イシューを別のプロジェクトに移動 |
/create_merge_request | [branch-name] | このイシューから MR を作成 |
/promote_to | incident or epic | イシューを別の種類に昇格 |
glab issue note 123 -m "/copy_metadata #456"
glab issue note 123 -m "/move group/other-project"
glab issue note 123 -m "/create_merge_request 123-my-feature"
glab issue note 123 -m "/promote_to incident"
MR クイックアクション
承認
| コマンド | パラメーター | 説明 |
|---|
/approve | — | MR を承認 |
/unapprove | — | 自分の承認を取り消し |
glab mr note 456 -m "/approve"
割り当て
| コマンド | パラメーター | 説明 |
|---|
/assign | @user [@user2 ...] | 1 人以上のユーザーに MR を割り当て |
/unassign | @user ... or none | 担当者を削除 |
/reassign | @user ... | すべての担当者を置き換え |
/assign_reviewer | @user [@user2 ...] | レビュアーを追加 |
/unassign_reviewer | @user ... or none | レビュアーを削除 |
/reassign_reviewer | @user ... | すべてのレビュアーを置き換え |
/request_review | @user [@user2 ...] | 1 人以上のユーザーにレビューを依頼 |
glab mr note 456 -m "/assign_reviewer @alice @bob
/label ~needs-review"
ラベルとマイルストーン
| コマンド | パラメーター | 説明 |
|---|
/label | ~label1 ... | ラベルを追加 |
/unlabel | ~label1 ... or none | ラベルを削除 |
/relabel | ~label1 ... | すべてのラベルを置き換え |
/milestone | %milestone | マイルストーンを設定 |
/remove_milestone | — | マイルストーンを削除 |
時間の記録
| コマンド | パラメーター | 説明 |
|---|
/estimate | <time> | 所要時間の見積もりを設定 |
/remove_estimate | — | 所要時間の見積もりを削除 |
/spend | <time> [<date>] | 作業時間を記録 |
/remove_time_spent | — | 記録した作業時間をすべて削除 |
マージの制御
| コマンド | パラメーター | 説明 |
|---|
/merge | — | パイプライン成功時にマージ |
/draft | — | MR をドラフトとしてマーク |
/ready | — | MR をレビュー可能としてマーク |
/rebase | — | ソースブランチをターゲットブランチにリベース |
/squash | — | マージ時のスカッシュを有効化 |
/target_branch | <branch> | ターゲットブランチを変更 |
glab mr note 456 -m "/approve
/merge"
glab mr note 456 -m "/draft"
glab mr note 456 -m "/ready
/assign_reviewer @lead"
状態とその他
| コマンド | パラメーター | 説明 |
|---|
/close | — | MR をクローズ |
/reopen | — | クローズした MR を再オープン |
/copy_metadata | #issue or !mr | 別のアイテムからラベルとマイルストーンをコピー |
/react | :emoji: | 絵文字でリアクションを追加 |
/title | <new title> | MR のタイトルを変更 |
/todo | — | 自分の ToDo リストに追加 |
/done | — | ToDo を完了としてマーク |
/subscribe | — | MR の通知を購読 |
/unsubscribe | — | MR の通知の購読を解除 |
/relate | #issue [#issue2 ...] | 関連するイシューのリンクを追加 |
/blocks | #issue [#issue2 ...] | この MR がイシューをブロックしていることを示す |
/blocked_by | #issue [#issue2 ...] | この MR がイシューによってブロックされていることを示す |
クイックアクションとネイティブの glab コマンドを使い分けるタイミング
| シナリオ | 推奨される方法 |
|---|
| 単一フィールドの更新 | glab issue update / glab mr update(明示的なフラグ) |
| 3 件以上の変更を一度に行う | 1 つのコメントでクイックアクションをまとめて実行 |
update のフラグにないアクション | クイックアクション(例:/spend、/epic、/promote_to、/rebase) |
| 多数のアイテムのトリアージをスクリプト化する | glab issue note のクイックアクションをループで実行 |
| フラグの自動補完が必要 | ネイティブの glab update コマンド |
| コメントによる監査証跡が必要 | クイックアクション(アクティビティフィードに表示) |
| 承認とマージをまとめて行う | 同じコメント内で /approve の後に /merge |
選択ガイド
Do you need to update a single field?
├─ Yes → Use native glab command (e.g., glab issue update --label)
│
├─ No, multiple fields at once?
│ ├─ 2-3 fields supported by --flags → native glab update
│ └─ 3+ fields OR unsupported fields → quick actions batch
│
└─ Is the action not available in glab update?
└─ Yes → Quick actions only (e.g., /spend, /epic, /promote_to, /rebase, /merge)
自動化の例
トリアージスクリプト:ラベル付け+担当者の割り当て+マイルストーンの設定を一度に行う
#!/usr/bin/env bash
# triage-issues.sh — apply triage metadata to a list of issue IDs
# Usage: ./triage-issues.sh 123 456 789
ASSIGNEE="${ASSIGNEE:-@me}"
LABEL="${LABEL:-~needs-triage}"
MILESTONE="${MILESTONE:-%\"Sprint 5\"}"
for IID in "$@"; do
glab issue note "$IID" -m "/assign $ASSIGNEE
/label $LABEL
/milestone $MILESTONE"
echo "Triaged #$IID"
done
古いイシューを一括クローズする
#!/usr/bin/env bash
# close-stale.sh — close all issues with label ~stale
glab issue list --label stale --state opened --output json \
| jq -r '.[].iid' \
| while read -r IID; do
glab issue note "$IID" -m "/close
/unlabel ~stale"
echo "Closed #$IID"
done
MR をレビュー可能にしてレビュー担当者を割り当てる
#!/usr/bin/env bash
# ready-for-review.sh — mark current branch MR ready and request review
MR_IID=$(glab mr list --source-branch "$(git branch --show-current)" --output json | jq -r '.[0].iid')
glab mr note "$MR_IID" -m "/ready
/assign_reviewer @team-lead
/label ~needs-review"
echo "MR !$MR_IID marked ready"
時間追跡:CLI から作業時間を記録する
#!/usr/bin/env bash
# log-time.sh — log time spent on an issue
# Usage: ./log-time.sh 123 2h30m "2024-03-15"
IID="$1"
TIME="$2"
DATE="${3:-}"
if [[ -n "$DATE" ]]; then
glab issue note "$IID" -m "/spend $TIME $DATE"
else
glab issue note "$IID" -m "/spend $TIME"
fi
echo "Logged $TIME on #$IID"
スプリントのローテーション:イシューを次のマイルストーンに移動する
#!/usr/bin/env bash
# rotate-sprint.sh — move open issues from one milestone to the next
OLD_MILESTONE="Sprint 5"
NEW_MILESTONE="Sprint 6"
glab issue list --milestone "$OLD_MILESTONE" --state opened --output json \
| jq -r '.[].iid' \
| while read -r IID; do
glab issue note "$IID" -m "/milestone %\"$NEW_MILESTONE\""
echo "Moved #$IID to $NEW_MILESTONE"
done
承認してマージをキューに追加する
# Approve an MR and queue it to merge when pipeline passes
glab mr note 456 -m "/approve
/merge"
注意事項と制限
/merge や /approve など、特定の権限を必要とするクイックアクションは、必要なロールがない場合、通知なしに失敗します。
/merge は、パイプラインが成功したときに MR をマージするようキューに追加します。即座に強制マージするわけではありません。
- イシューや MR の説明に含まれるクイックアクションは、作成時と編集時に処理されます。
- GitLab の特定のプランでのみ利用できるクイックアクションもあります(例:
/epic、/iteration、/weight、/health_status には GitLab Premium または Ultimate が必要です)。
- コメントとして投稿したクイックアクションは、後から編集できません。必要に応じて訂正コメントを投稿してください。
glab CLI は、投稿前にクイックアクションの構文を検証しません。ユーザー名やラベル名の入力ミスがないか確認してください。
関連サブスキル
glab-issue — ネイティブのイシュー作成/更新/クローズコマンド
glab-mr — ネイティブの MR 作成/更新/承認/マージコマンド
glab-label — /label を使う前にラベルを管理する
glab-milestone — /milestone を使う前にマイルストーンを管理する
glab-iteration — /iteration を使う前にイテレーションを管理する
参考資料