Issue Management Examples
These step-by-step workflows cover issue management end to end: triaging open issues, assigning and labeling them, linking related and blocking issues, tracking milestone progress, holding discussions, and searching across projects. Each example pairs the prompt you type with the exact meta-tool action the server runs, so you can reuse the call directly.
Issue triage
Section titled “Issue triage”The triage loop moves an issue from intake to resolution: view open issues, assign and label them, link related issues, track them in a milestone, and either close them or keep the discussion going. The diagram shows that cycle and where it loops back.
View open issues
Section titled “View open issues”Prompt: “Show me all open issues in the backend project with label ‘bug’”
gitlab_issue → action: list, project_id: "my-group/backend", state: "opened", labels: "bug"Returns: issue titles, authors, labels, milestones, assignees, and creation dates.
Assign and label
Section titled “Assign and label”Prompt: “Assign issue #123 to johndoe and add labels ‘priority::high’ and ‘team::backend’”
gitlab_issue → action: update, project_id: "my-group/backend", issue_iid: 123, assignee_ids: [45], add_labels: "priority::high,team::backend"Bulk triage by milestone
Section titled “Bulk triage by milestone”Prompt: “Show me all unassigned issues in the Sprint 15 milestone”
gitlab_issue → action: list, project_id: "my-group/backend", milestone: "Sprint 15", assignee_id: 0Returns: issues without assignees that need attention before the sprint starts.
Close resolved issues
Section titled “Close resolved issues”Prompt: “Close issue #456 with a comment explaining the fix”
gitlab_issue → action: note_create, project_id: "my-group/backend", issue_iid: 456, body: "Fixed in MR !89 — the timeout was caused by..."gitlab_issue → action: update, project_id: "my-group/backend", issue_iid: 456, state_event: "close"AI-powered issue analysis
Section titled “AI-powered issue analysis”There is no dedicated “AI analysis” tool. AI-powered analysis happens when the assistant reads issues with gitlab_issue → action: list or action: get, reasons over their content, and then acts on the result — assigning, labeling, linking, or commenting with the actions below. For example, “Find the open bugs in backend, group them by likely root cause, and label the duplicates” chains a read action with the triage actions in this guide, all within one conversation.
Issue linking
Section titled “Issue linking”Model relationships between issues so dependencies are explicit. Mark issues as related, record blocking relationships, and review every link attached to an issue.
Create related issues
Section titled “Create related issues”Prompt: “Link issue #100 as related to issue #200 in the backend project”
gitlab_issue → action: link_create, project_id: "my-group/backend", issue_iid: 100, target_issue_iid: 200, link_type: "relates_to"Create blocking relationships
Section titled “Create blocking relationships”Prompt: “Mark issue #300 as blocking issue #400”
gitlab_issue → action: link_create, project_id: "my-group/backend", issue_iid: 300, target_issue_iid: 400, link_type: "blocks"View issue links
Section titled “View issue links”Prompt: “Show me all issues related to issue #100”
gitlab_issue → action: link_list, project_id: "my-group/backend", issue_iid: 100Returns: linked issues with relationship types (relates_to, blocks, is_blocked_by).
The three link types answer different questions, and choosing the wrong one hides a real dependency:
link_type | Meaning | Direction | Blocks progress? |
|---|---|---|---|
relates_to | The two issues are associated but neither gates the other | Symmetric | No |
blocks | The source issue must be resolved before the target can start | Source → target | Yes |
is_blocked_by | The inverse view of blocks, as seen from the target issue | Target → source | Yes |
Creating a blocks link from #300 to #400 is what makes #400 report is_blocked_by #300 — you do not create both sides.
Labels and milestones
Section titled “Labels and milestones”Organize and measure work with labels and milestones. Create scoped labels to categorize issues, and check a milestone’s progress to see how close a sprint is to completion.
Organize with labels
Section titled “Organize with labels”Prompt: “Create a scoped label ‘priority::critical’ with red color in the backend project”
gitlab_label → action: create, project_id: "my-group/backend", name: "priority::critical", color: "#CC0000"Track milestone progress
Section titled “Track milestone progress”Prompt: “Show me the progress of milestone Sprint 15”
gitlab_milestone → action: get, project_id: "my-group/backend", milestone_id: 15Returns: completion percentage, open/closed issue counts, start date, due date, and remaining days.
Issue discussions
Section titled “Issue discussions”Keep the conversation on the issue itself. Add a quick comment, open a threaded discussion for a deeper topic, or react with award emoji to acknowledge updates without adding noise.
Add a comment
Section titled “Add a comment”Prompt: “Comment on issue #123: ‘Reproduced on staging — the error only occurs with concurrent requests’”
gitlab_issue → action: note_create, project_id: "my-group/backend", issue_iid: 123, body: "Reproduced on staging — the error only occurs with concurrent requests"Start a threaded discussion
Section titled “Start a threaded discussion”Prompt: “Create a discussion thread on issue #123 about the proposed architecture”
gitlab_issue → action: discussion_create, project_id: "my-group/backend", issue_iid: 123, body: "Let's discuss the proposed architecture for this feature..."Award emoji reactions
Section titled “Award emoji reactions”Prompt: “Add a thumbs-up reaction to issue #123”
gitlab_issue → action: award_emoji_create, project_id: "my-group/backend", issue_iid: 123, name: "thumbsup"Search across projects
Section titled “Search across projects”Find issues beyond a single project. Search globally by keyword across every project you can access, or scope the search to one group to surface issues by label.
Find issues by keyword
Section titled “Find issues by keyword”Prompt: “Search for issues mentioning ‘memory leak’ across all my projects”
gitlab_search → scope: "issues", search: "memory leak"Returns: matching issues across all accessible projects with titles, descriptions, and project paths.
Search within a group
Section titled “Search within a group”Prompt: “Find all open issues with label ‘security’ in the platform group”
gitlab_issue → action: list, group_id: "platform", state: "opened", labels: "security"Returns: security-related issues across all projects in the group.
Frequently asked questions
How do I triage GitLab issues with an AI assistant?
Ask your assistant to list the open issues you care about, then to assign, label, and link them. A typical triage loop is four calls: gitlab_issue with action: list (filtered by state: opened and a label) to see the backlog, action: update to set assignee_ids, labels, and milestone_id, action: link_create to record dependencies, and action: update with state_event: close once resolved. In the default dynamic surface the same operations resolve through gitlab_find_action as issue.list, issue.update, and issue.link_create.
What is the difference between relates_to, blocks, and is_blocked_by?
They are the three link_type values accepted by gitlab_issue with action: link_create. relates_to is a symmetric, non-blocking association — neither issue gates the other. blocks means the source issue must be resolved before the target can proceed. is_blocked_by is the inverse direction of the same relationship, so creating a blocks link from #300 to #400 is what makes #400 report is_blocked_by #300. Listing links with action: link_list returns the relationship type alongside each linked issue.
Can an AI assistant close a GitLab issue for me?
Yes, but closing is a state change, so it follows the same safety rules as any other mutation. The call is gitlab_issue with action: update and state_event: close. If the deployment runs with GITLAB_READ_ONLY=true the action is not registered at all, and under GITLAB_SAFE_MODE=true the server returns a JSON preview of the change instead of applying it.
How do I search issues across several GitLab projects at once?
Use gitlab_search rather than gitlab_issue, because issue listing is scoped to one project. Search accepts an instance, group, or project scope, so scope: issues with a group_id searches every project in that group in one call. Results come back with the project path on each hit, so an assistant can follow up with gitlab_issue action: get on whichever project owns the issue.