Answers from the documentation; checking which model is on duty
Hi - I answer from the OpenSmartRoute documentation: routing, the API, plans and quotas, self-hosting. Ask away, or open a support ticket if you need a person.
Grounded in the docs - follow a source before acting on it.
glab-quick-actions - Skill - OpenSmartRoute
Skillv1.0.0
glab-quick-actions
Use GitLab quick actions — text-based slash commands in comments, descriptions, and MR/issue bodies — via glab CLI. Quick actions execute automatically when saved.
Imported from vince-winkintel/gitlab-cli-skills (glab-quick-actions/SKILL.md). Install upstream with npx skills add vince-winkintel/gitlab-cli-skills --skill glab-quick-actions. Copyright stays with the author.
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 issueglab issue note 123 -m "/assign @alice"# Batch multiple quick actions in one commentglab issue note 123 -m "/assign @alice/label ~bug ~priority::high/milestone %\"Sprint 5\""# Post quick actions on a merge requestglab 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.
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 789ASSIGNEE="${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 ~staleglab 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 reviewMR_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"fiecho "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 nextOLD_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 passesglab 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.
Install glab-quick-actions and it becomes one more candidate the router can pick - when it fits.
A listing is a routing target with a manifest: what it does, which domains it covers, what it costs and who publishes it. Once installed it sits beside your own models and tools, is scored like any other candidate for each request, and shows up in the trace when it wins. Ratings come from workspaces that installed it, one per account.
When a provider is down or over quota the request moves on; the trace says it did.
Use it
Copy one of these into your project. Installing also returns the manifest and these snippets.
# after Install: the listing is in your workspace's routing pool - a plan picks it for its slotcurl-s-X POST https://api.opensmartroute.ai/api/v1/route -H 'Authorization: Bearer $OSR_API_KEY' -H 'Content-Type: application/json' -d '{"text": "...", "plan": true}'
Manifest
An Open Capability Manifest: the router reads it to know what this does, what it costs and when to pick it.