publish-tickets-gitlab
Skill1 starsChanged 10 days agoMITView on GitHub
Use when publishing an approved breakdown as dependent GitLab issues in an existing milestone. Not for unapproved drafts or non-GitLab trackers.
1 other project uses a version of this.
Adopted by
Most recently taken up by
- vladcheck/skillsword for word, first seen Nov 1, 2026
Other versions1 project uses a version of this.
Word for word · 1
- vladcheck/skills★ 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 repository19 other files it gives its agents.
- analyze-session-pingpong-logsSkill
- create-glossarySkill
- deepseek-reasoning-tier-clarifierSkill
- defineSkill
- find-alternativesSkill
- get-note-links-from-textSkill
- gitlab-eas-tickets-publishSkill
- gitlab-mr-roundtripSkill
- git-rebuild-branchSkill
- git-sequentialSkill
- gost-report-rebuildSkill
- mattpocock-skills-researchSkill
- mirea-moodle-downloadSkill
- obsidian-add-links-to-noteSkill
- opsx-spec-validateSkill
- paretto-principleSkill
- publish-spec-gitlab-milestoneSkill
- solidSkill
- update-skills-via-skills-shSkill
The file
We split this skill into the rules it gives an agent
6 rules. About 0 are common, 3 are distinctive, and 3 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 13
Follow the repository's tracker conventions for artifact language, title format, triage label, milestone, and assignees.
- Distinctive: line 20
Use this template for every ticket.
- Very specific: line 40
Publish every ticket in strict dependency order: Create or repurpose blockers before dependents.
- Distinctive: line 41
Only when the user explicitly requested anchor repurposing for this ticket, update the existing anchor issue instead of creating a …
- Very specific: line 59
Assign issues only when requested: Run glab issue update <issue-iid> --repo <repo> --assignee <user> for each IID captured in the ticket …
- Very specific: line 61
Edit the milestone description only when requested: Use the global numeric REST <milestone-id>, not an IID, for both GET and PUT.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 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
Publish an approved breakdown to GitLab
Publish the approved numbered breakdown as GitLab issues while preserving its dependency graph and repository tracker conventions.
Prerequisites
- Require explicit user approval of the numbered breakdown, including titles, dependencies, and deliverables. Never publish the quiz or discovery version.
- Follow the repository's tracker conventions for artifact language, title format, triage label, milestone, and assignees. Resolve the triage label from those conventions rather than assuming a label name.
- Confirm that the target milestone already exists. Do not create a milestone as part of publication.
- Resolve
<repo>, the numeric REST<project-id>, the exact milestone title, and, when a description edit is requested, the global numeric REST<milestone-id>. Use<issue-iid>for each project-scoped issue IID. - Record blocking edges in a textual
## Blocked bysection as a portable, reviewable dependency contract, even when native links are unavailable or unused.
Issue body template
Use this template for every ticket. Follow the approved breakdown's artifact language and preserve its deliverables and acceptance criteria:
## Parent
<milestone-url> — ticket <ticket-number>/<ticket-total>
## What to build
<deliverable and scope>
## Acceptance criteria
- [ ] <observable criterion>
## Blocked by
- #<issue-iid> (<blocker-title-without-ticket-number-prefix>)For a ticket without blockers, replace the final list item with None (can start immediately). For multiple blockers, list every real blocker issue IID.
Procedure
Publish every ticket in strict dependency order. Create or repurpose blockers before dependents. For each ticket, write its body to
<ticket-body-file>and substitute the real issue IID of every blocker. Then choose exactly one action:- Only when the user explicitly requested anchor repurposing for this ticket, update the existing anchor issue instead of creating a replacement:
Preserve its labels, milestone, and assignees unless the user requests changes. Record its existing issue IID in the ticket mapping.glab issue update <issue-iid> --repo <repo> --title "<ticket-number>: <title>" --description-file <ticket-body-file> - Otherwise, create a new issue:
Capture the project-scoped issue IID from the create command's output immediately.glab issue create --repo <repo> \ --title "<ticket-number>: <title>" \ --description-file <ticket-body-file> \ --label <triage-label> \ --milestone "<milestone-title>" \ --yes
Never infer an IID from the ticket number, assume contiguous IIDs, or process a dependent before all of its blockers have captured IIDs. Without an explicit repurposing request, leave the anchor issue unchanged. If creation fails, stop that dependency path and resolve the failure before continuing; do not invent a reference or blindly recreate earlier issues.
- Only when the user explicitly requested anchor repurposing for this ticket, update the existing anchor issue instead of creating a replacement:
- Assign issues only when requested. Run
glab issue update <issue-iid> --repo <repo> --assignee <user>for each IID captured in the ticket mapping. Iterate over those captured IIDs, including a repurposed anchor issue; never generate a hard-coded numeric range withseqor assume the IIDs are contiguous. - Edit the milestone description only when requested. Use the global numeric REST
<milestone-id>, not an IID, for both GET and PUT. Fetch the remote description as the source of truth immediately before editing, and pipe API JSON tojqbecauseglab apihas no--jqflag:
Apply the requested edit to the freshly fetched content between these commands. If a planned edit was not pushed or the remote state is uncertain, fetch the description again and reapply the edit instead of overwriting it from a stale local file.glab api projects/<project-id>/milestones/<milestone-id> | jq -r '.description' > <milestone-description-file> glab api -X PUT projects/<project-id>/milestones/<milestone-id> -f description=@<milestone-description-file> - Verify the complete published set. List all issues and compare every captured IID with the result:
Confirm the expected count, titles, triage label, milestone, and requested assignee on every published issue. Spot-read at least two or three ticket body files to confirm that blocker references match the captured IID mapping. Use issue states from the listing when calculating the frontier; do not trust write-command output alone.glab issue list --repo <repo> --all --output json --jq '.[] | {iid, title, state, labels: [.labels[]], milestone: .milestone.title, assignees: [.assignees[].username]}' - Report the publication result. Include a ticket-to-issue IID mapping table, the frontier of tickets with no open blockers, and the dependency graph in prose. Do not close or modify the anchor issue or any other parent or specification issue except for the explicitly requested anchor repurposing in Step 1.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
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.

