AgentStack
SKILL verified Apache-2.0 Self-run

Gitlab Issue

skill-grasscaograss-awesomeweldoneskills-gitlab-issue · by grasscaograss

与开发人员协作创建 GitLab Issue。触发场景:(1) 用户说"建个 issue"、"提个 bug"、"记录一个问题"、"有个新需求";(2) 用户描述了一个问题或需求并要求记录到 GitLab

No reviews yet
0 installs
1 views
0.0% view→install

Install

$ agentstack add skill-grasscaograss-awesomeweldoneskills-gitlab-issue

✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Gitlab Issue? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

GitLab Issue 协作创建

引导开发人员明确 Issue 内容,自动推断标签,通过 API 创建。

GitLab 配置

| 配置项 | 值 | |--------|-----| | URL | http://gitlab.roboticplus.com:2022 | | Project ID | 305 | | API Base | http://gitlab.roboticplus.com:2022/api/v4/projects/305 | | Token | 环境变量 $env:GITLAB_TOKEN 或用户提供 |

Token 检查(步骤 0)

每次开始工作前,使用 pwsh 7 会话(默认 UTF-8)检查 $env:GITLAB_TOKEN 是否已设置:

if ($env:GITLAB_TOKEN) { 'Token exists' } else { 'Token not set' }

> ⚠️ 必须使用 pwsh 7。如果通过外层 shell 调用,使用 pwsh -NoProfile -Command 并用单引号包住脚本,避免 $env: 被外层 shell 展开。

  • 已设置(输出 Token exists)→ 直接进入步骤 1
  • 未设置 → 引导用户创建并配置:
  1. 告诉用户:当前未配置 GitLab Token,需要创建一个才能操作 Issue
  2. 引导用户打开 http://gitlab.roboticplus.com:2022/-/profile/personal_access_tokens,创建一个 Personal Access Token,勾选 api 权限
  3. 让用户在终端执行以下命令设置环境变量(永久生效):

``pwsh # 在 pwsh 7 profile 中持久化 Add-Content -Path $PROFILE -Value "n$env:GITLAB_TOKEN = ''" $env:GITLAB_TOKEN = '' ``

  1. 或者让用户在 Claude Code 中直接输入 ! $env:GITLAB_TOKEN = '' 来临时设置
  2. 设置完成后继续步骤 1

注意:不要自己生成或猜测 Token 值,必须由用户提供。

工作流程

步骤 1:理解意图

从用户的描述中提取:

  • 类型:根据语义自动判断
  • 初步内容:问题/需求的核心描述

类型判断规则: | 用户表达 | 类型 | |---------|------| | 崩溃、报错、异常、不对、不生效、失败了、bug | 类型::缺陷 | | 新功能、需要、能不能、想要、需求、支持 | 类型::功能 | | 优化、改进、太慢、不好用、重构、改善 | 类型::优化 | | 重构、整理、清理、迁移 | 类型::重构 |

步骤 2:引导补充内容

根据类型,引导用户补充关键信息(用自然对话方式,不要一次性抛出所有问题)。

类型::缺陷

引导获取(按顺序,已有信息跳过):

  1. 问题现象:具体表现是什么?
  2. 复现步骤:怎么触发这个问题?
  3. 期望行为:应该是什么样子?
  4. 影响范围:哪些场景受影响?现场/研发?
  5. 环境信息:分支、工件版本(可选)

生成正文格式:

## 问题现象

{描述}

## 复现步骤

1. {步骤1}
2. {步骤2}

## 期望行为

{描述}

## 实际行为

{描述}

## 影响范围

{描述}
类型::功能

引导获取:

  1. 需求背景:为什么要做?谁提出?
  2. 功能描述:具体要实现什么?怎么使用?
  3. 验收标准:做到什么程度算完成?

生成正文格式:

## 需求背景

{描述}

## 功能描述

{描述}

## 验收标准

- [ ] {标准1}
- [ ] {标准2}
类型::优化 / 类型::重构

引导获取:

  1. 现状:当前有什么问题?
  2. 目标:改进后达到什么效果?
  3. 影响范围:涉及哪些模块?需要注意什么?

步骤 3:推断模块

从用户描述中匹配关键词,自动推断模块标签:

| 关键词 | 模块 | |--------|------| | 焊缝、打断、合并、WSG、WeldSeamGroup | 模块::焊缝规划 | | 模板、工艺、参数、焊道 | 模块::焊接模板 | | 粗定位、点云、匹配、coarse | 模块::粗定位 | | 精定位、视觉、拍照、fine、iLaser | 模块::精定位 | | 扫描、校准、MapMatrix、calibration | 模块::扫描校准 | | 机器人、外部轴、驱动、E1、E2 | 模块::机器人控制 | | 双臂、包角、协同、wrapping | 模块::双臂协同 | | 状态机、FSM、流程、工作流 | 模块::状态机 | | 前端、Blazor、React、页面、UI、组件 | 模块::前端 | | 插件、ZMJ、AGV、Rhino | 模块::插件 | | CI、构建、迁移、发布、electron | 模块::基础设施 | | 产能、统计、焊丝、消耗 | 模块::产能统计 |

如果无法推断,用 AskUserQuestion 让用户从列表选择。

步骤 4:确认并创建

向用户展示完整的 Issue 摘要:

📋 Issue 预览
━━━━━━━━━━━━━━━━━━
标题:{标题}
类型:{类型}
优先级:{优先级}
模块:{模块}
━━━━━━━━━━━━━━━━━━
{正文预览}

用户确认后,通过 API 创建:

$Headers = @{ "PRIVATE-TOKEN" = $Token; "Content-Type" = "application/json" }
$Body = @{
    title = "{标题}"
    description = "{正文}"
    labels = "类型::xxx,优先级::xxx,模块::xxx,阶段::待办"
} | ConvertTo-Json -Compress
Invoke-RestMethod -Uri "$ApiBase/issues" -Method Post -Headers $Headers -ContentType "application/json" -Body $Body

创建成功后返回 Issue 链接:http://gitlab.roboticplus.com:2022/robimweld/weldone/-/issues/{iid}

步骤 5:上传附件(可选)

用户可能要求上传截图、视频等附件到 Issue。

上传流程:先调 POST $ApiBase/uploads 上传文件拿 markdown 引用,再调 POST $ApiBase/issues/{iid}/notes 发布为评论。

关键约束

  • 中文文件名必须先 cp 为 ASCII 名再上传,否则 GitLab API 返回 Bad Request
  • 上传接口返回 JSON,取 markdown 字段放入评论 body 即可在 Issue 中展示

规则

  1. 标签必打齐:每个 Issue 必须有 类型 + 优先级 + 模块 + 阶段,四类标签缺一不可
  2. 创建前必须获取已有标签:每次创建 Issue 前,必须先调用 GET /projects/:id/labels?per_page=100 获取项目已有标签列表,只从中选择。绝不允许使用列表中不存在的标签——GitLab API 会自动创建新标签,这是错误行为。如果已有标签中没有合适的,必须先向用户确认
  3. 优先级默认:如果用户未指定,缺陷默认 优先级::P1 高,功能/优化/重构默认 优先级::P2 中,但必须告知用户
  4. 对话优先:用自然对话引导,不要一次性列出所有问题让用户填表
  5. 信息充分才创建:核心信息(现象/需求+模块)不完整时主动追问,不要创建空泛的 Issue
  6. 中文标题:标题用中文,简洁概括核心内容,不超过 50 字
  7. 不重复创建:创建前搜索是否已有类似 Issue,避免重复
  8. 不写代码级分析:Issue 正文只记录问题现象、复现步骤、期望/实际行为等用户可感知的信息。不要在正文中写入原因分析、代码定位、修复方案等内容——这些属于开发过程,不应由 Issue 创建时自动生成

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.