mcpField
G
glab-quick-actions

glab-quick-actions

github.com/vince-winkintel開発49101 回インストール1 日前に更新
リポジトリ

glab-quick-actions について

GitLab の issue とマージリクエストに `glab` からクイックアクションを適用するコマンドラインスキルです。1 件のコメントで複数の状態変更をまとめ、標準の更新フラグにない操作も実行できます。

主な機能

  1. 011 件のコメントで複数操作を実行
  2. 02issue の担当者、ラベル、マイルストーン管理
  3. 03マージリクエストのレビューとマージ状態の変更
  4. 04時間の記録と見積もり設定
  5. 05シェルスクリプトによるトリアージ自動化

活用シーン

  1. 011 件の issue に複数のトリアージ変更を適用
  2. 02マージリクエストをレビュー可能にしてレビューを依頼
  3. 03承認とマージ操作をまとめて実行
  4. 04複数の issue をスクリプトで更新

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/vince-winkintel/gitlab-cli-skills --skill glab-quick-actions

インストール後、Claude Code で/glab-quick-actionsを入力して読み込まれたか確認します。

詳細

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_statuson_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]イシューを別のプロジェクトに複製
/movepath/to/projectイシューを別のプロジェクトに移動
/create_merge_request[branch-name]このイシューから MR を作成
/promote_toincident 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 を使う前にイテレーションを管理する

参考資料

コメント