Claude
Skills
Sign in
Back

glab-quick-actions

Included with Lifetime
$97 forever

Use GitLab quick actions — text-based slash commands in comments, descriptions, and MR/issue bodies — via glab CLI. Quick actions execute automatically when saved. Multiple commands can be combined in one comment, making them powerful for batching state changes in a single API call. Triggers on quick actions, slash commands, batch update, /assign, /label, /merge, /approve, /close, /estimate.

Backend & APIs

What this skill does


# 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

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

```bash
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 |

```bash
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 |

```bash
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 |

```bash
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 |

```bash
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 |

```bash
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 |

```bash
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 |

```bash
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 |

```bash
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) |

```bash
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 |
|----

Related in Backend & APIs