skills/issue-raiser/SKILL.md
Raises well-structured GitLab issues with root cause analysis, proposed solutions, and correct assignees based on git history. Adapts to any GitLab instance and project conventions automatically. Triggers: raising issues, reporting bugs, creating tickets, filing defects, feature requests, refactoring proposals.
npx skillsauth add developerinlondon/agent-skills issue-raiserInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create professional, well-researched GitLab issues that include root cause analysis, concrete proposed solutions, and correctly identified assignees. This skill adapts to whatever GitLab setup the current repository uses.
Before doing anything, auto-detect the project's GitLab setup. Do NOT assume any specific host, group, or project structure.
# List all remotes — the user may have multiple (mirrors, forks, etc.)
git remote -v
# Determine the GitLab hostname from the remote URL
# SSH: [email protected]:group/project.git → host=gitlab.example.com, path=group/project
# HTTPS: https://gitlab.example.com/group/project.git → same extraction
If multiple remotes exist, ask the user which one to target unless context makes it obvious.
glab auth status
glab command needs GITLAB_HOST=<detected-host> prefixed.glab auth login --hostname <host>.Based on discovery, construct the prefix you'll use for all commands in this session:
# For gitlab.com (default host):
glab issue list -R <group/project>
# For self-hosted:
GITLAB_HOST=<detected-host> glab issue list -R <group/project>
Store this mentally and use it consistently. Never hardcode a host.
Every project has its own style. Discover it:
# List recent open issues to learn the format
<prefix> glab issue list -R <path> --per-page 10
# Read 2-3 issues to understand structure, tone, and depth
<prefix> glab issue view <recent-issue-number> -R <path>
Look for:
# Labels
<prefix> glab label list -R <path>
# Milestones — try project-level first, then group-level
<prefix> glab api "projects/<url-encoded-path>/milestones?state=active"
<prefix> glab api "groups/<group>/milestones?state=active"
Choose labels and milestones that match the issue type. If unsure, match what similar recent issues used.
<prefix> glab issue list -R <path> --search "<keywords>"
If a related issue exists, reference it rather than duplicating.
Never file a bug based solely on deployed code — it may already be fixed:
# Fetch latest
git fetch <remote> --tags
# Check the relevant file on the latest default branch
git show <remote>/main:<path/to/file>
# Compare with what's deployed (look at image tags, helm values, etc.)
If the bug is fixed on latest but still deployed, note that in the issue.
This is what separates a useful issue from a vague bug report. Always include:
# Who last modified the file?
git log <remote>/main --format='%an <%ae> | %s' -- <file> | head -10
# Who introduced the specific problematic code?
git log <remote>/main -S "<pattern>" --format='%h %an <%ae> | %s' -- <file>
# What does the blame say for the specific lines?
git blame <remote>/main -- <file> | grep -A2 -B2 "<pattern>"
# Is someone already working on a fix?
git branch -r | grep -i "<keyword>"
git log <remote>/<branch> --format='%an | %s' -5
Adapt the structure to match the project's existing conventions (discovered in Phase 1). Use this as a baseline — add or remove sections as the project's style dictates:
## Description
<What is happening? Include exact error messages. Be specific about where — which
page, endpoint, environment.>
## Root Cause
<WHY it happens. Reference exact file paths, line numbers, and include code snippets.
Explain the logic flaw, not just the symptom.>
## Proposed Solution
<Concrete code changes with before/after snippets. If multiple approaches exist,
list them with tradeoffs and state which one is recommended.>
## Files to Change
| File | Change |
| -------------- | ---------------------- |
| `path/to/file` | What to change and why |
## Acceptance Criteria
- [ ] <Specific, testable statement>
- <Include edge cases and non-regression>
Match the project's existing pattern. If none is apparent, use:
Bug: <component> — <symptom>UI: <description>Refactor: <description>Feat: <description><prefix> glab issue create -R <path> \
--title "<title>" \
--label "<label1>,<label2>" \
--milestone "<milestone>" \
--description "$(cat <<'EOF'
<issue body using heredoc to preserve formatting>
EOF
)"
Always use a heredoc (<<'EOF') for the description to preserve markdown formatting,
code blocks, and special characters.
# Primary contributors to the affected files
git log <remote>/main --format='%an <%ae>' -- <file> | sort | uniq -c | sort -rn | head -5
# Who introduced the specific code in question
git log <remote>/main -S "<code-pattern>" --format='%h %an <%ae> | %s' -- <file>
# Who is actively working on related feature branches
git log <remote>/<related-branch> --format='%an <%ae> | %s' -5
Git commit names don't always match GitLab usernames. Search for them:
# Search project/group members
<prefix> glab api "projects/<url-encoded-path>/members/all" | python3 -c "
import json, sys
for m in json.load(sys.stdin):
print(f\"{m['username']:30s} {m['name']}\")"
# If not found in project, check group
<prefix> glab api "groups/<group>/members/all" | python3 -c "..."
# If still not found, search all users
<prefix> glab api "users?search=<name>" | python3 -c "..."
<prefix> glab issue update <number> -R <path> --assignee "user1,user2"
Before submitting, verify:
development
Enforces strict Test-Driven Development (TDD) workflow: RED-GREEN-REFACTOR cycle. Tests MUST be written BEFORE implementation. Every change starts with a failing test. Applies to any language (Rust, TypeScript, Python, Go, etc.). Triggers: writing new features, fixing bugs, adding endpoints, refactoring, any code change.
content-media
Structured project planning: break down a new project idea into plan files covering architecture, file structure, and implementation roadmap. Triggers: 'new project', 'plan a feature', 'break down', 'architecture', 'roadmap', 'design a system'.
development
GitOps operations master for ArgoCD + Kargo. Diagnose stuck stages, verify deployments, manage promotions, configure verification and retry. Triggers: 'stage stuck', 'sync failed', 'promote', 'verify stage', 'kargo', 'argocd', 'gitops', 'pipeline', 'freight'
development
Documentation standards: ASCII box-drawing diagrams (not Mermaid), structured plan format, compact tables for comparisons. Use when writing docs, plans, READMEs, or architecture documents in any project.