一键导入
team-issue-publish-gitlab
将本地工程 issue 草稿发布到 GitLab Issues,并回写发布结果。Publish local engineering issue drafts to GitLab Issues and write back publication status.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
将本地工程 issue 草稿发布到 GitLab Issues,并回写发布结果。Publish local engineering issue drafts to GitLab Issues and write back publication status.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
创建、审阅和优化团队自有项目 README.md,以准确事实和自上而下的信息层级呈现定位、快速开始、使用与维护入口。Create, review, and improve README.md for team-owned projects using verified facts and a progressive top-to-bottom reading flow.
将代码库事实转化为面向业务、产品和管理者的能力说明、场景材料和影响分析。Turn codebase evidence into business-facing capability briefs, scenario narratives, and impact analysis.
从已有代码仓库提取可追溯的功能清单、架构说明和 AI 接手上下文。Extract traceable feature inventory, architecture notes, and AI onboarding context from an existing codebase.
基于 onboarding 产物和源码,围绕功能清单做代码库走读、问答和证据追踪。Guide developers through codebase features with walkthroughs, Q&A, and source-backed explanations.
为已完成的单个 issue 分支推送代码并创建关联 issue 的 GitLab Merge Request。Push a completed issue branch and create an issue-linked GitLab Merge Request.
为已完成的单个 issue 分支推送代码并创建关联 issue 的 GitHub Pull Request。Push a completed issue branch and create an issue-linked GitHub Pull Request.
| name | team-issue-publish-gitlab |
| description | 将本地工程 issue 草稿发布到 GitLab Issues,并回写发布结果。Publish local engineering issue drafts to GitLab Issues and write back publication status. |
| license | MIT |
| metadata | {"author":"coolbeevip","version":"1.0"} |
| triggers | ["发布到 GitLab","发布 issue 到 GitLab","批量创建 GitLab Issues","把 issue 草稿发布到 GitLab","发布单个 issue 到 GitLab","帮我发 GitLab issue","publish to GitLab","publish issue to GitLab","create GitLab issues from drafts","create GitLab issue from draft","batch publish issues to GitLab","publish issue drafts to GitLab"] |
这个技能用于把 team-prd-to-issues 生成的本地 issue 草稿发布到 GitLab Issues。默认会按依赖顺序发布整个 slug 下的所有 issue;如果用户指定单个 issue,则只发布那一个。它关注“可重复执行、可追踪、可恢复”,避免重复创建和依赖顺序错误。
v1 仅支持 GitLab。不要在同一个技能中混合 GitHub 与 GitLab 发布逻辑;GitHub 请使用独立技能。
team-issue-publish-github;用户要实现 issue 时,转交 team-issue-implement 或 team-issue-batch-implement。统一读取目标项目根目录 team-spec/config.yml:
language: zh-CN
version_control:
system: git
trunk_branch: main
contribution_model: fork-pull
source_remote: origin
target_remote: upstream
access_policy:
mode: default-readonly
directory_file: team-spec/access_policy/default.md
user_file_template: team-spec/access_policy/{user_name}.md
语言优先级:用户本轮明确指定或脚本 --language > team-spec/config.yml > en-US 兜底。若配置不存在,技能执行时应先按团队规范询问语言偏好并创建配置;固定脚本独立运行时不交互,使用 en-US 兜底。
远端 GitLab Issue 正文模板标题、兜底文案和检查项必须使用 language;本地草稿已有内容保持原文。
仓库定位优先级:用户显式参数 > team-spec/config.yml 的 version_control > git 命令推断 > 询问用户。若 version_control 缺失,先用 git remote -v、git branch --show-current、git config --get branch.{branch}.remote 和 remote URL 推断;无法唯一判断时再询问用户,并在用户确认后回写 team-spec/config.yml。
team-spec/config.yml;如果存在 access_policy,先应用目录访问边界,再进入任何发布流程。发布 GitLab issue 时,优先使用本技能目录下的固定脚本,不要临时重写 GitLab API 调用代码:
./scripts/publish_gitlab_issues.py
脚本依赖同目录下的公共辅助模块 ./scripts/_team_common.py(vendored copy,与仓库根目录 scripts/_team_common.py 保持同步)。复制本技能目录时需一并复制该文件。
脚本能力:
team-spec/active/{slug}/issues/ 或显式 --issues-dir,并兼容旧布局 team-spec/active/issues/{slug}/。--issue 只发布指定的单个 issue。Blocked by 生成依赖顺序。./scripts/templates/issue_body.md.tpl 按 language 渲染 GitLab 友好的 issue 正文,固定包含摘要、验收清单和实现备注;正文只保留对协作有用的摘要字段,不直接发布完整草稿原文。# 标题或 Title 段,不能回退到文件名;标题过短、过泛或缺少对象时会拒绝发布。--project、team-spec/config.yml 或 git remote 推断 GitLab 项目,多个 remote 时按配置优先,其次优先 upstream。--execute 时创建 GitLab Issues,并把发布结果回写到本地 issue 草稿。Local-Issue-Key 做幂等检查,避免重复创建。推荐 dry-run:
GITLAB_URL=https://gitlab.example.com python3 {skill_dir}/scripts/publish_gitlab_issues.py --slug {slug}
用户确认后正式发布:
GITLAB_URL=https://gitlab.example.com GITLAB_TOKEN=... python3 {skill_dir}/scripts/publish_gitlab_issues.py --slug {slug} --execute
其中 {skill_dir} 是当前技能目录。技能内部定位脚本时应使用相对 SKILL.md 的路径 ./scripts/publish_gitlab_issues.py,执行命令时再解析成实际文件路径。
常用参数:
--issue 001-add-export-filter.md:只发布指定的单个 issue,可传入文件名、文件路径或草稿标识。GITLAB_URL=https://gitlab.example.com:GitLab 平台地址,必须通过环境变量提供;脚本不提供命令行覆盖参数,也不会默认猜测平台地址。--project namespace/project:显式指定项目,优先级高于 remote 推断。--remote upstream:显式指定用于推断项目的 remote;不传时优先参考 team-spec/config.yml 的 version_control.target_remote。--label label-name:可重复传入多个 label。--milestone-id 123:指定 milestone。--assignee-id 123:可重复传入多个 assignee。--force:忽略本地 Publish Status,重新检查 GitLab;仍会使用远端 Local-Issue-Key 做幂等检查,不应直接重复创建。--language zh-CN:显式覆盖远端 issue 正文模板语言;不传时读取 team-spec/config.yml。--json:输出机器可读 JSON。标题规则:
# 标题,其次使用 Title 段的首行。Fix、Update、Refactor 这类泛化词。正文模板规则:
What to build 映射为 Summary / 摘要。Acceptance criteria 转换为适合人类阅读的可勾选验收清单;本地草稿里的 Given/When/Then 验收场景不得原样发布到远端正文。Notes 映射为 Implementation notes / 实现备注。Parent、Type 和 Blocked by 不进入远端 issue 正文;Blocked by 仅用于发布排序、循环依赖检查和 dry-run 汇总。Local-Issue-Key 仅作为隐藏 HTML 注释写入远端正文,用于幂等检查;不得显示 Source / 来源 章节。主输入:
team-spec/active/{slug}/issues/ 下的 issue 草稿文件。--issue 可选参数:只发布指定的单个 issue 草稿。必须参数:
GITLAB_URL 读取;不得通过命令行参数临时覆盖,未设置时脚本必须停止。namespace/project 或可唯一定位项目的项目 ID;如果用户未显式提供,可按下面“仓库定位规则”从 git remote 推断。team-spec/active/{slug}/issues/)。建议参数:
dry-run 开关(默认建议先开)。前置条件:
team-prd-to-alignment 生成 team-spec/active/{slug}/prd/alignment.md 并完成评审讨论。team-prd-to-issues 已产出可发布草稿;如果只发单个 issue,则该 issue 草稿已存在。如果无法唯一确定 slug、项目或 token 来源,必须停止并向用户确认,不得猜测。
当用户没有显式提供 GitLab 项目 ID 或 namespace/project 时,先读取 team-spec/config.yml 和当前仓库的 git remote:
version_control.target_remote 已配置,默认使用该 remote 对应的上游项目创建 issue。version_control.contribution_model: fork-pull 且未配置 target_remote,优先使用名为 upstream 的 GitLab remote。origin。从 remote URL 提取项目时,兼容 HTTPS 与 SSH 格式,例如:
https://gitlab.com/group/project.git -> group/projectgit@gitlab.com:group/project.git -> group/project自建 GitLab 场景下,remote host 必须与平台地址一致;如果不一致,应要求用户确认平台地址和目标项目。
当仓库中存在多个 remote 时,先结合 remote 名称判断工作模式:
origin 和 upstream,并且 origin 指向开发者 fork、upstream 指向上游仓库。此时 issue 应默认创建到 upstream 对应的上游仓库。team-spec/config.yml 已声明 contribution_model、source_remote 或 target_remote,以配置为准;如果配置缺失但 git remote 能唯一推断,应在 dry-run 中说明推断依据,并在用户确认后回写配置。无论是哪种模式,真正执行 --execute 之前,都必须先输出 dry-run 结果,并由人类确认目标项目、issue 列表和发布计划没有问题。
published。created / skipped / failed),保留在 Publish Status 章节用于重试与诊断,不替代 issue 生命周期状态。优先回写原 issue 草稿;若原文件结构不便回写,再在同目录新增发布结果文件。
--issue 指定单个 issue,则只发布该 issue,不会发布同 slug 下其它草稿。dry-run 预览发布计划,用户确认后再正式发布。每个本地 issue 在发布前必须做唯一性检查。推荐组合键:
team-prd-to-issues 已生成的 {local-seq}-{short-issue-slug}.md 格式,其中 local-seq 直接取自现有文件名前缀,用作本地唯一标识,不是远端 GitLab issue IID/ID)。Title)。若远端已存在匹配项,则标记为 skipped 并回写现有 issue URL,不重复创建。
发布时必须把本地唯一键持久化到远端 issue 描述的隐藏 HTML 注释中,例如:<!-- Local-Issue-Key: {local-seq}-{short-issue-slug}.md -->。
推荐匹配逻辑:
## Publish Status。如果 Status 为 created 或 skipped,且已有 GitLab URL 或 GitLab IID,默认标记为 skipped,不再创建远端 issue。--force,或本地没有有效发布记录,则按远端 issue 描述中的 Local-Issue-Key 精确匹配(完全一致)。Local-Issue-Key 候选内按标题精确匹配(去除首尾空白后比较)。failed,要求人工确认,避免误关联。GITLAB_URL,不得通过命令行参数覆盖或编造;若项目来自 git remote,按“仓库定位规则”优先选择上游仓库。team-spec/active/{slug}/issues/ 下所有待发布 issue 草稿。Blocked by 关系并生成依赖有向图。dry-run,输出将创建/跳过的完整清单。--execute 执行正式发布。dry-run 且发布计划可执行,选项 1 必须是“立即发布”,即使用相同参数追加 --execute 正式创建 GitLab Issues;后续再列继续实现、补充权限、修复依赖或手动处理失败项。推荐格式:
## 下一步可选
1. 立即发布:确认 dry-run 计划无误后,用相同参数追加 `--execute` 创建 GitLab Issues。
2. `team-issue-batch-implement`:发布完成且存在多个可执行 `AFK` issue 时,按依赖顺序连续实现并逐个验证。
3. `team-issue-implement`:只处理一个明确的 `AFK` issue。
4. 修复失败项:如果有失败或跳过异常,先处理报告中的失败原因后重试发布。
GITLAB_URL 读取;不要把平台地址作为命令行参数传入。team-spec/ 或任何仓库文件。必须包含:
published 生命周期状态和 Publish Status 操作结果。