glab-quick-actions
Skill1 starsChanged 7 months agoMITView on GitHub
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.
We split this skill into the rules it gives an agent
1 rule. About 0 are common, 0 are distinctive, and 1 is very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 8
Use GitLab quick actions (slash commands) via the glab CLI to batch multiple state changes in a single API call.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
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.
# 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 updateflags (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"
doneBulk 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"
doneMR 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"
doneApprove 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. /mergequeues 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_statusrequire GitLab Premium or Ultimate). - Quick actions posted as comments are not editable after the fact — post a corrective comment if needed.
- The
glabCLI 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 commandsglab-mr— native MR create/update/approve/merge commandsglab-label— manage labels before using/labelglab-milestone— manage milestones before using/milestoneglab-iteration— manage iterations before using/iteration
References
- GitLab Quick Actions documentation
glab issue note --helpglab mr note --help
Other versions2 projects use a version of this.
Word for word · 2
- vince-winkintel/gitlab-cli-skills★ 49100% same
- cormacc/dotagents★ 1100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository52 other files it gives its agents.
- gh-cliSkill
- glab-aliasSkill
- glab-apiSkill
- glab-attestationSkill
- glab-authSkill
- glab-changelogSkill
- glab-check-updateSkill
- glab-ciSkill
- glab-clusterSkill
- glab-completionSkill
- glab-configSkill
- glab-deploy-keySkill
- glab-duoSkill
- glab-gpg-keySkill
- glab-helpSkill
- glab-incidentSkill
- glab-issueSkill
- glab-iterationSkill
- glab-jobSkill
- glab-labelSkill
- glab-mcpSkill
- glab-milestoneSkill
- glab-mrSkill
- glab-opentofuSkill
- glab-releaseSkill
- glab-repoSkill
- glab-runner-controllerSkill
- glab-runnerSkill
- glab-scheduleSkill
- glab-securefileSkill
- glab-snippetSkill
- glab-ssh-keySkill
- glab-stackSkill
- glab-todoSkill
- glab-tokenSkill
- glab-userSkill
- glab-variableSkill
- glab-versionSkill
- glab-workitemsSkill
- gitlab-cli-skillsSkill
- ui-color-palette-audit-paletteSkill
- ui-color-palette-build-color-systemSkill
- ui-color-palette-figmaSkill
- ui-color-palette-framerSkill
- ui-color-palette-generate-codeSkill
- ui-color-palette-generate-semantic-codeSkill
- ui-color-palette-generate-source-colorsSkill
- ui-color-palette-helpSkill
- ui-color-palette-manage-palettesSkill
- ui-color-palette-penpotSkill
- ui-color-palette-scale-paletteSkill
- ui-color-palette-sketchSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

