SuperAPI AI Directory

glab-quick-actions

General & other

View repository

Updated 10-16 01:10

About this skill

glab quick-actions

Use GitLab quick actions (slash commands) via the glab CLI to batch multiple state changes in a single API call.

Quick start

# 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"


## Key concept: batching via CLI

While `glab` has native commands for many individual operations (`glab issue update`, `glab mr update`, etc.), posting quick actions via `glab issue note` or `glab mr note` lets you **batch multiple state changes atomically in a single API call**.

```bash
# 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\""

When batching is the right choice:

  • Applying 3+ changes to a single issue/MR
  • Scripting triage workflows across multiple items
  • Triggering actions not exposed by glab update flags (e.g., /spend, /epic, /promote_to)

Syntax rules

Rule Detail
Prefix Every quick action starts with /
Case Case-insensitive (/Assign = /assign)
Placement One command per line; can appear anywhere in a comment/description
Parameters Separated by space after the command name
Labels Prefix with ~ (e.g., ~bug, ~"priority::high")
Milestones Prefix with % (e.g., %"Sprint 5")
Users Prefix with @ (e.g., @alice, @me)
MR/Issue refs Prefix with # for same-project, group/project#IID for cross-project
Epics Prefix with & (e.g., &42)
Quoting Use quotes for multi-word values: ~"priority::high", %"Sprint 5"
Ignored text Non-quick-action lines are posted as normal comment text

Issue quick actions

Assignment

Command Parameters Description
/assign @user [@user2 ...] Assign one or more users
/unassign @user [@user2 ...] or none Remove specific assignees or clear all
/reassign @user [@user2 ...] Replace all assignees with given users
glab issue note 123 -m "/assign @alice @bob"
glab issue note 123 -m "/reassign @charlie"
glab issue note 123 -m "/unassign"

Labels

Command Parameters Description
/label ~label1 ~label2 ... Add labels
/unlabel ~label1 ... or none Remove specific labels or clear all
/relabel ~label1 ... Replace all labels with given ones
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 & scheduling

Command Parameters Description
/milestone %milestone Set milestone
/remove_milestone — Remove milestone
/due <date> Set due date (YYYY-MM-DD, tomorrow, next week)
/remove_due_date — 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"

Time tracking

Command Parameters Description
/estimate <time> Set time estimate (e.g., 1h30m, 3d)
/remove_estimate — Remove time estimate
/spend <time> [<date>] Log time spent (e.g., 2h, -30m to subtract)
/remove_time_spent — Remove all 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"

State changes

Command Parameters Description
/close — Close the issue
/reopen — Reopen a closed issue
/confidential — Make issue confidential
/done — Mark as done (for todos)
/todo — Add to your to-do list
glab issue note 123 -m "/close"
glab issue note 123 -m "/reopen"

Relations

Command Parameters Description
/duplicate #issue Mark as duplicate of another issue
/relate #issue [#issue2 ...] Add related issue links
/blocks #issue [#issue2 ...] This issue blocks others
/blocked_by #issue [#issue2 ...] This issue is blocked by others
/unrelate #issue Remove relation to another issue
glab issue note 123 -m "/duplicate #456"
glab issue note 123 -m "/relate #789 #790"
glab issue note 123 -m "/blocks #800"

Planning & hierarchy

Command Parameters Description
/epic &epic or group&epic Add to epic
/remove_epic — Remove from epic
/iteration *iteration:"name" Set iteration/sprint
/remove_iteration — Remove iteration
/weight <number> Set issue weight
/clear_weight — Clear issue weight
/health_status on_track, needs_attention, at_risk Set health status
/clear_health_status — Remove health status
/board_move ~list-label Move issue to board list
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"

Advanced

Command Parameters Description
/copy_metadata #issue or !mr Copy labels and milestone from another item
/clone [path/to/project] Clone issue to another project
/move path/to/project Move issue to another project
/create_merge_request [branch-name] Create MR from this issue
/promote_to incident or epic Promote issue to another type
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 quick actions

Approval

Command Parameters Description
/approve — Approve the MR
/unapprove — Remove your approval
glab mr note 456 -m "/approve"

Assignment

Command Parameters Description
/assign @user [@user2 ...] Assign MR to one or more users
/unassign @user ... or none Remove assignees
/reassign @user ... Replace all assignees
/assign_reviewer @user [@user2 ...] Add reviewer(s)
/unassign_reviewer @user ... or none Remove reviewer(s)
/reassign_reviewer @user ... Replace all reviewers
/request_review @user [@user2 ...] Request review from user(s)
glab mr note 456 -m "/assign_reviewer @alice @bob
/label ~needs-review"

Labels & milestone

Command Parameters Description
/label ~label1 ... Add labels
/unlabel ~label1 ... or none Remove labels
/relabel ~label1 ... Replace all labels
/milestone %milestone Set milestone
/remove_milestone — Remove milestone

Time tracking

Command Parameters Description
/estimate <time> Set time estimate
/remove_estimate — Remove time estimate
/spend <time> [<date>] Log time spent
/remove_time_spent — Remove all time spent

Merge control

Command Parameters Description
/merge — Merge when pipeline succeeds
/draft — Mark MR as draft
/ready — Mark MR as ready for review
/rebase — Rebase source branch on target
/squash — Enable squash on merge
/target_branch <branch> Change target branch
glab mr note 456 -m "/approve
/merge"

glab mr note 456 -m "/draft"
glab mr note 456 -m "/ready
/assign_reviewer @lead"

State & other

Command Parameters Description
/close — Close the MR
/reopen — Reopen a closed MR
/copy_metadata #issue or !mr Copy labels and milestone from another item
/react :emoji: Add emoji reaction
/title <new title> Change MR title
/todo — Add to your to-do list
/done — Mark todo as done
/subscribe — Subscribe to MR notifications
/unsubscribe — Unsubscribe from MR notifications
/relate #issue [#issue2 ...] Add related issue links
/blocks #issue [#issue2 ...] This MR blocks issues
/blocked_by #issue [#issue2 ...] This MR is blocked by issues

When to use quick actions vs native glab commands

Scenario Recommended approach
Single field update glab issue update / glab mr update (explicit flags)
3+ changes at once Quick actions batch in one comment
Action not in update flags Quick actions (e.g., /spend, /epic, /promote_to, /rebase)
Scripting triage of many items Loop with glab issue note quick actions
Need flag autocomplete Native glab update commands
Audit trail via comment Quick actions (visible in activity feed)
Approve + merge atomically /approve then /merge in same comment

Decision guide

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)

Automation examples

Triage script: label + assign + milestone in one pass

#!/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

Bulk close stale issues

#!/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 ready for review + assign reviewer

#!/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"

Time tracking: log spent time from 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"

Sprint rotation: move issues to next milestone

#!/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 and queue merge

# Approve an MR and queue it to merge when pipeline passes
glab mr note 456 -m "/approve
/merge"

Notes & limitations

  • Quick actions that require specific permissions (e.g., /merge, /approve) will silently fail if you lack the role.
  • /merge queues the MR to merge when the pipeline succeeds — it does not force-merge immediately.
  • Quick actions in issue/MR descriptions are processed on creation and on edit.
  • Some quick actions are only available on specific GitLab tiers (e.g., /epic, /iteration, /weight, /health_status require GitLab Premium or Ultimate).
  • Quick actions posted as comments are not editable after the fact — post a corrective comment if needed.
  • The glab CLI does not validate quick action syntax before posting — check for typos in user/label names.

Related sub-skills

  • glab-issue — native issue create/update/close commands
  • glab-mr — native MR create/update/approve/merge commands
  • glab-label — manage labels before using /label
  • glab-milestone — manage milestones before using /milestone
  • glab-iteration — manage iterations before using /iteration

References