一键导入
issue-to-mr
從 Issue 分析結果自動產生 Draft MR 建議。需先執行 /issue-analyze 取得影響分析,再根據分析結果產生程式碼修改建議與 Draft MR。當使用者說「issue 轉 MR」、「自動開 MR」、「issue to MR」、「從 issue 建 MR」時觸發。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
從 Issue 分析結果自動產生 Draft MR 建議。需先執行 /issue-analyze 取得影響分析,再根據分析結果產生程式碼修改建議與 Draft MR。當使用者說「issue 轉 MR」、「自動開 MR」、「issue to MR」、「從 issue 建 MR」時觸發。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
分析 GitLab Issue 的影響範圍,跨 repo 搜尋相關程式碼與 MR,產生影響評估報告。當使用者說「分析 issue」、「analyze issue」、「issue 影響分析」、「這個 issue 會影響什麼」、「評估 issue」時觸發。
智慧建立 GitLab Issue,支援討論式建立和指令式建立。當使用者討論 bug/功能需求到一個段落時,主動詢問是否建立 Issue。也可用指令直接建立。當使用者說「建立 issue」、「create issue」、「新增 issue」、「開 issue」、「開票」,或在討論 bug/feature 時說「好」、「開吧」、「建起來」時觸發。
將當前 LLM 對話討論轉為結構化 GitLab Issue,整合 issue-create 和 issue-split 功能。當使用者說「把討論建成 issue」、「discuss to issue」、「整理成 issue」、「從對話建立 issue」時觸發。
互動式初始化 .issue-config.json,自動偵測 GitLab 專案資訊並設定 Issue 管理規則。當使用者說「init issue」、「初始化 issue 設定」、「setup issue config」、「issue init」時觸發。
批量整理舊有 GitLab Issue,補充標籤、建立關聯、重新分類。當使用者說「整理 issue」、「organize issues」、「清理 issue」、「整理舊 issue」時觸發。
將大型 GitLab Issue 拆分為多個子 Issue,AI 語義理解自動識別子任務並建立關聯。當使用者說「拆分 issue」、「split issue」、「拆 issue」、「分拆」時觸發。
| name | issue-to-mr |
| description | 從 Issue 分析結果自動產生 Draft MR 建議。需先執行 /issue-analyze 取得影響分析,再根據分析結果產生程式碼修改建議與 Draft MR。當使用者說「issue 轉 MR」、「自動開 MR」、「issue to MR」、「從 issue 建 MR」時觸發。 |
從 GitLab Issue 的影響分析結果,產生程式碼修改建議並建立 Draft MR。此 Skill 需要先執行 /issue-analyze 取得分析報告,或在執行時自動觸發分析。
/issue-to-mr #123
/issue-to-mr #123 --project=bizform-web
/issue-to-mr #123 --auto-analyze
/issue-to-mr #123 --dry-run
| 參數 | 必要 | 說明 |
|---|---|---|
#IID 或 URL | 是 | 目標 Issue |
--project | 否 | 目標 MR 的專案 key |
--auto-analyze | 否 | 自動先執行 /issue-analyze |
--dry-run | 否 | 只顯示建議,不建立 MR |
.issue-config.json 存在。按以下優先順序搜尋:
./.issue-config.json~/.claude/.issue-config.json若均不存在,提示:「找不到 .issue-config.json,請先執行 /issue-init 建立設定。」
Issue 已有分析報告(或使用 --auto-analyze)
信心度必須 >= MEDIUM(50+),LOW 和 INSUFFICIENT 不允許建立 MR
.issue-config.json(專案層級優先於使用者層級)/issue-analyze 報告
--auto-analyze → 先執行 analyze--auto-analyze → 提示先執行 /issue-analyze #IID讀取分析報告中的信心度分數:
AI 根據分析報告產生修改計畫:
對每個影響檔案:
get_file_contents 讀取當前檔案完整內容修改計畫格式:
📋 修改計畫 - Issue #{iid}
檔案 1: src/api/webhook.ts (bizform-web)
位置: 第 15-20 行
修改: 移除 pageSize=0,改為分頁參數
信心度: HIGH
檔案 2: src/hooks/webhook/useWebhooks.ts (bizform-web)
位置: 第 8-12 行
修改: 加入分頁 hook
信心度: MEDIUM
在建立 MR 前,必須檢查目標 repo 是否有 MR template:
get_repository_tree 查看 .gitlab/merge_request_templates/ 目錄get_file_contents 讀取檢查目標 repo 是否有相關的既有測試:
get_repository_tree 搜尋 test/ 或 tests/ 目錄NotificationUtils.cs → 尋找 NotificationUtilsTests.cs)安全策略檢查(不可跳過):
檔案白名單/黑名單檢查
變更範圍檢查
analyze.maxFilesPerMR(預設 5)個檔案敏感模式偵測
needs-security-reviewusing / import 完整性檢查
using 語句(C#)或 import 語句(TS/JS)已包含使用 AskUserQuestion 展示完整修改計畫:
問題: 「即將為 Issue #{iid} 建立 Draft MR,確認修改計畫?」
顯示:
ai-generated, draft選項:
建立流程:
ai/issue-{iid}-{short-title}create_or_update_file)Draft: [AI] {Issue title}ai-generated + 原 Issue labelsMR 建立後,自動進入 pipeline 監控循環:
最大重試次數: 3
監控間隔: 30 秒
list_pipelines 查詢目標分支的最新 pipelineget_pipeline 輪詢 pipeline 狀態pending / running → 繼續等待success → 進入 Step 8(回寫成功)failed → 進入 7.3(錯誤分析)canceled → 報告取消,結束list_pipeline_jobs 找到失敗的 job(scope=failed)get_pipeline_job_output 讀取失敗 job 的 log(limit=200)| 錯誤類型 | 處理方式 |
|---|---|
| 編譯錯誤(CS/TS error) | 可自動修正 → 7.4 |
| 缺少 using/import | 可自動修正 → 7.4 |
| 測試失敗 | 可嘗試修正 → 7.4(最多 1 次) |
| 環境/infra 錯誤 | 不可修正 → 報告後結束 |
| 風格/lint 警告(非 error) | 可嘗試修正 → 7.4 |
create_or_update_file 推送修正到同一分支fix: {錯誤描述}若 3 次修正後仍失敗:
使用 GraphQL createNote mutation 在 Issue 討論串新增備註:
mutation CreateNote($noteableId: NoteableID!, $body: String!) {
createNote(input: { noteableId: $noteableId, body: $body }) {
note { id url }
errors
}
}
noteableId 格式: gid://gitlab/Issue/{id}(注意是 id 不是 iid,需從 get_issue 取得)
備註內容:
## 🤖 AI Draft MR 已建立
**MR !{mr_iid}** — [標題](URL)
<details>
<summary>變更檔案摘要(N 個檔案)</summary>
| 檔案 | 變更 |
|------|------|
| `file1.cs` | 變更描述 |
</details>
### Pipeline 狀態: ✅ 通過 / ❌ 失敗(需人工介入)
---
*由 `/issue-to-mr` 自動產生*
✓ Draft MR 已建立: !{mr_iid}
Issue: #{iid} - {title}
專案: {project}
分支: ai/issue-{iid}-{short-title}
Labels: ai-generated
Pipeline: ✅ 通過 / ❌ 失敗(原因)
修改檔案:
- {file1} (+{added} -{removed})
- {file2} (+{added} -{removed})
⚠️ 這是 AI 自動產生的 Draft MR,請務必人工審查後再合併。
| Step | 工具 | 用途 |
|---|---|---|
| 1 | get_issue | 取得 Issue(含分析報告) |
| 3 | get_file_contents | 讀取要修改的檔案 |
| 3.5 | get_repository_tree | 檢查 MR template |
| 3.5 | get_file_contents | 讀取 MR template |
| 3.6 | get_repository_tree | 搜尋測試目錄 |
| 3.6 | get_file_contents | 讀取既有測試風格 |
| 4 | — | using/import 完整性靜態分析 |
| 6 | create_branch | 建立新分支 |
| 6 | create_or_update_file | 修改檔案 |
| 6 | create_merge_request | 建立 Draft MR |
| 7 | list_pipelines | 查詢 pipeline |
| 7 | get_pipeline | 監控 pipeline 狀態 |
| 7 | list_pipeline_jobs | 找失敗 job |
| 7 | get_pipeline_job_output | 讀取 job log |
| 7.4 | create_or_update_file | 推送自動修正 |
| 8 | execute_graphql | 回寫 Issue(createNote) |
ai-generated — 標記為 AI 產生needs-security-reviewai/issue-{iid}-{short-title}create_issue_note 有 404 bug,回寫一律使用 GraphQL createNote mutation# 從已分析的 Issue 建立 MR
/issue-to-mr #123
# 自動先分析再建立 MR
/issue-to-mr #123 --auto-analyze
# 只產生修改建議,不實際建立 MR
/issue-to-mr #123 --dry-run
# 指定目標專案
/issue-to-mr #123 --project=bizform-api
# 1. 先分析 Issue
/issue-analyze #123
# 2. 審查分析結果,確認信心度
# 3. 產生 Draft MR(自動監控 pipeline)
/issue-to-mr #123
# 4. AI 自動監控 pipeline,修正編譯錯誤(最多 3 次)
# 5. Pipeline 通過後,在 GitLab 審查 MR
# 6. 移除 Draft 狀態,進入正常 Code Review 流程