feat(label): add guarded batch label shortcuts #318

Closed
ohanabi wants to merge 0 commits from ohanabi/gitlink-cli:feat/label-batch-safety into master
Contributor

feat(label): add guarded batch label shortcuts

PR 内容:

合并请求描述

本次合并请求增强 Label Shortcut 的安全性和批量操作能力,新增批量创建、批量删除标
签能力,并为单个删除标签增加 dry-run/yes 保护,减少误删风险,提升项目标签初始
化、治理和清理效率。

相关Issue

关联Issue编号:暂无

变更内容

1. 增强了标签删除安全保护

  • label +delete 新增 --dry-run,可预览删除请求。
  • label +delete 真实删除必须显式传入 --yes
  • 避免删除操作在未确认情况下直接修改远端状态。

2. 增强了批量创建标签能力

  • 新增 label +batch-create
  • 支持通过 --labels 'name:color:description;name:color:description' 一次创建多
    个标签。
  • 支持 dry-run 预览请求列表。
  • 未指定颜色时默认使用 #1E90FF
  • 创建前会校验颜色格式,避免部分无效请求进入远端 API。

3. 增强了批量删除标签能力

  • 新增 label +batch-delete
  • 支持通过 --ids 3,5,8 批量删除标签。
  • 支持 dry-run 预览请求列表。
  • 真实执行必须显式传入 --yes
  • 客户端会去重重复 ID,减少重复删除请求。

4. 增强了批量执行结果输出

  • 批量真实执行后输出统一摘要。
  • 包含 countsucceededfailed 和逐条 results
  • 部分失败时保留执行结果并返回错误,便于排查失败项。

5. 完善了文档和 Skill

  • 更新 README 和 README.zh-CN 的标签管理示例。
  • 更新 skills/gitlink-label,补充批量命令和安全模型。
  • 更新 skills/gitlink-issue-tag,将常用 Raw API 示例替换为 label Shortcut。
  • 更新 skills/gitlink-stale-issue-manager,使用 label +batch-create 预创建
    stale 标签。
  • 新增 doc/changes/label-batch-safety.md 变更说明。

问题描述

现有 Label Shortcut 已支持 list/create/update/delete,但删除标签会直接执行,缺少
dry-run 和显式确认保护。同时,批量初始化标签体系或批量清理标签时,需要手动重复调
用单个命令或 Raw API,效率低且容易出错。

问题复现步骤

  1. 使用 gitlink-cli label +delete -i <id> 删除标签。
  2. 命令会直接发起 DELETE 请求,缺少预览和二次确认。
  3. 如果需要批量创建或删除多个标签,只能重复执行多条命令或手写 Raw API。
  4. Agent 场景下批量标签治理缺少统一、安全、可解析的执行入口。

根本原因

Label Shortcut 只覆盖了基础单项操作,没有为破坏性操作建立 dry-run/yes 安全模型,
也没有封装批量标签创建和删除流程,导致复杂标签治理仍依赖人工重复操作或 Raw API。

修复方案

shortcuts/label 中新增和增强以下能力:

  • label +delete 增加 --dry-run--yes
  • 新增 label +batch-create,解析分号分隔的标签规格并逐条调用创建接口。
  • 新增 label +batch-delete,解析逗号分隔的标签 ID 并逐条调用删除接口。
  • 增加批量请求预览结构和执行结果摘要。
  • 增加单元测试覆盖 dry-run、确认保护、解析校验、真实请求路径、去重和部分失败。
  • 同步更新 README、中文 README、Skill 文档和 change note。
feat(label): add guarded batch label shortcuts PR 内容: ## 合并请求描述 本次合并请求增强 Label Shortcut 的安全性和批量操作能力,新增批量创建、批量删除标 签能力,并为单个删除标签增加 dry-run/yes 保护,减少误删风险,提升项目标签初始 化、治理和清理效率。 ## 相关Issue 关联Issue编号:暂无 ## 变更内容 ### 1. 增强了标签删除安全保护 - `label +delete` 新增 `--dry-run`,可预览删除请求。 - `label +delete` 真实删除必须显式传入 `--yes`。 - 避免删除操作在未确认情况下直接修改远端状态。 ### 2. 增强了批量创建标签能力 - 新增 `label +batch-create`。 - 支持通过 `--labels 'name:color:description;name:color:description'` 一次创建多 个标签。 - 支持 dry-run 预览请求列表。 - 未指定颜色时默认使用 `#1E90FF`。 - 创建前会校验颜色格式,避免部分无效请求进入远端 API。 ### 3. 增强了批量删除标签能力 - 新增 `label +batch-delete`。 - 支持通过 `--ids 3,5,8` 批量删除标签。 - 支持 dry-run 预览请求列表。 - 真实执行必须显式传入 `--yes`。 - 客户端会去重重复 ID,减少重复删除请求。 ### 4. 增强了批量执行结果输出 - 批量真实执行后输出统一摘要。 - 包含 `count`、`succeeded`、`failed` 和逐条 `results`。 - 部分失败时保留执行结果并返回错误,便于排查失败项。 ### 5. 完善了文档和 Skill - 更新 README 和 README.zh-CN 的标签管理示例。 - 更新 `skills/gitlink-label`,补充批量命令和安全模型。 - 更新 `skills/gitlink-issue-tag`,将常用 Raw API 示例替换为 label Shortcut。 - 更新 `skills/gitlink-stale-issue-manager`,使用 `label +batch-create` 预创建 stale 标签。 - 新增 `doc/changes/label-batch-safety.md` 变更说明。 ## 问题描述 现有 Label Shortcut 已支持 list/create/update/delete,但删除标签会直接执行,缺少 dry-run 和显式确认保护。同时,批量初始化标签体系或批量清理标签时,需要手动重复调 用单个命令或 Raw API,效率低且容易出错。 ## 问题复现步骤 1. 使用 `gitlink-cli label +delete -i <id>` 删除标签。 2. 命令会直接发起 DELETE 请求,缺少预览和二次确认。 3. 如果需要批量创建或删除多个标签,只能重复执行多条命令或手写 Raw API。 4. Agent 场景下批量标签治理缺少统一、安全、可解析的执行入口。 ## 根本原因 Label Shortcut 只覆盖了基础单项操作,没有为破坏性操作建立 dry-run/yes 安全模型, 也没有封装批量标签创建和删除流程,导致复杂标签治理仍依赖人工重复操作或 Raw API。 ## 修复方案 在 `shortcuts/label` 中新增和增强以下能力: - 为 `label +delete` 增加 `--dry-run` 和 `--yes`。 - 新增 `label +batch-create`,解析分号分隔的标签规格并逐条调用创建接口。 - 新增 `label +batch-delete`,解析逗号分隔的标签 ID 并逐条调用删除接口。 - 增加批量请求预览结构和执行结果摘要。 - 增加单元测试覆盖 dry-run、确认保护、解析校验、真实请求路径、去重和部分失败。 - 同步更新 README、中文 README、Skill 文档和 change note。
ohanabi added 1 commit 2026-07-02 14:12:56 +08:00
wbtiger closed this pull request 2026-07-14 22:57:02 +08:00
wbtiger reopened this pull request 2026-07-14 23:02:17 +08:00
wbtiger closed this pull request 2026-07-14 23:05:42 +08:00

Pull request closed

Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: Gitlink/gitlink-cli#318
No description provided.