用途:按 Drupal issue 生命周期推进贡献,确保贡献有意义而非重复。该技能由 /drupal-ai-contrib:issue 调用,并通过 dev-guides-navigator 加载 drupal/contributing/drupal-issue-lifecycle、issue-forks-merge-requests、contribution-etiquette-rtbc-credit、contributing-with-ai/issue-creation 等知识层。
主要能力与流程:
- 先审查已有工作:读取现有评论、issue 状态和开放的合并请求,判断是否会重复进行中的工作;若有人正在处理,应提示协调而非竞争。此审查为强制步骤。
- 识别 issue 系统:通过项目的 Issues 链接区分 drupal.org 经典队列与 GitLab,两者状态分类不同(经典状态 vs GitLab state::* 作用域标签),按 issue-lifecycle 指南处理双模式。
- 执行操作:创建 issue(drupalorg-cli 无 issue:create 命令,需在 Web UI 起草并提交,再以新 issue ID 继续)、评论 issue(感谢→有效之处→反馈→下一步)、认领 issue(设置相应状态后进入 fork 检出)。
- Fork 检出三态处理:自己的 fork 则检出其 issue 分支继续;他人的 fork/分支则提示并协调,不得覆盖;尚无 fork 则先通过 /do:fork 或 Drupal.org 管理页创建(fork 不能通过推送或 API 创建),再添加 remote 与分支。迁移到 GitLab 的项目将 fork 创建、remote 设置与推送委托给 drupal-gitlab 技能,遵循两主机规则:SSH 推送至 git.drupal.org,HTTPS/glab 至 git.drupalcode.org。分支命名须含 issue 编号,目标为最新开发分支。
- 读取用 drupalorg-cli(PATH 上可执行文件为 drupalorg,用 command -v drupalorg 检测),issue:show、issue:search、mr:list 等为公开只读;认证写入委托 drupal-gitlab。推送需在 drupal.org 账户注册 SSH 密钥,被拒时优先检查密钥。
- 报告:汇总 issue、系统与状态、先前工作发现、fork/分支状态及所做操作,并指向开发阶段。
限制:不得用用户输入拼接子命令;issue ID 须匹配 ^[0-9]+$,项目机器名须匹配 ^[a-z][a-z0-9_]*$,不匹配则拒绝;不得插值未净化输入;凭据归贡献者本人,不得存储或传输;不得伪造 fork 或推送状态。若先前工作已完全解决问题,应提示贡献可能不必要。