关于 linear-close
linear-close 是一种基于仓库流程的技能,在实施证据齐备后完成 Linear 问题收尾。它验证合并、提交或发布证据,并处理问题状态、面板和流程标签。
主要功能
- 01验证合并、提交或发布证据
- 02检查主线和 CI 结果
- 03更新问题面板
- 04发布最终状态评论
- 05移除流程标签和认领锁
适用场景
- 01合并 PR 后关闭问题
- 02凭直接提交证据完成问题收尾
- 03凭已验证的压缩或导入发布完成关闭
MCP 相关
使用 Linear MCP 工具读取问题和评论、发布收尾证据、更新面板与状态并移除流程标签。若无法使用写入工具,则输出所需变更。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ lkshrk/ linear-ai --skill linear-close安装后在 Claude Code 中输入/linear-close确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/closer.mdopenai.yamldocs/agent-required-passes.mdcomment-validation.mdtools.mdworkflow.mdschemas/linear-ai.claim.v1.schema.yamllinear-ai.dashboard.v1.schema.yamllinear-ai.plan.v1.schema.yamllinear-ai.review-ledger.v1.schema.yamllinear-ai.status.v1.schema.yamlscripts/validate_marked_comments.tsverify_closeout.tstemplates/linear-claim-block.mdlinear-status-comment.md详细介绍
Linear 关闭
在实现经过审查后,当 PR 已合并、存在直接包含问题 ID 的提交,或压缩合并/导入的发布证据证明预期文件和内容已存在于当前 main 且 release/main CI 已通过时使用此流程。如果当前 Linear 问题 ID 与工单证据中记录的已实现问题 ID 因问题被移动到其他团队而具有不同的团队前缀,请按照相同的关闭规则手动验证旧的已实现 ID,然后关闭当前问题,并在备注中注明这两个 ID。
请阅读并遵循:
agents/closer.mddocs/workflow.mddocs/agent-required-passes.mddocs/comment-validation.mddocs/tools.mdtemplates/linear-status-comment.md
不要实现代码、合并 PR 或更改审查策略。此技能仅用于在存在已合并 PR 证据、问题 ID 提交证据或压缩合并/导入发布证据后完成工作。
运行此技能时,问题可能已经处于 Done 状态,因为实现者的关闭魔法词(Fixes HCL-123)会使 Linear 在合并时自动移动问题。请将问题已经处于 Done 视为预期情况:仍需验证证据、更新仪表板、发布关闭备注,并移除 llm-* 和 in-use。此时将状态移至 Done 不会产生任何变化。不要重新打开问题,也不要将其已处于 Done 视为错误,或视为跳过关闭流程收尾工作的理由。
声明锁
遵循 docs/workflow.md 中的声明锁规则。开始时重新读取问题;如果问题已有 in-use 标签,且本次运行不是在继续自己的声明,则停止并报告问题已被认领,不做任何更改。否则,在认领问题时添加 in-use 标签。in-use 不属于 llm-* 命名空间,因此关闭流程中移除 llm-* 的操作不会将其移除;请在最终处理时明确移除 in-use(在因阻塞或放弃而停止时也要移除)。
认领时,使用 claimed_by: linear-close 和 ISO 8601 格式的 claimed_at,将 linear-ai:claim 块(templates/linear-claim-block.md)写入问题描述。在最终处理时,移除声明块以及 in-use 标签。
Linear MCP 合约
在可用时使用以下 Linear MCP 工具:
get_issue- 读取问题描述仪表板、标签、状态、项目、分支元数据和链接。list_comments- 查找最新的带标记计划/状态备注以及之前的关闭证据。save_comment- 发布最终的不可变带标记状态/关闭备注,或受阻关闭证据。save_issue- 更新问题描述仪表板,将状态移至Done,移除所有llm-*标签,移除in-use声明,并保留累积的sp-*标签。
在可用时使用 Git/GitHub 证据:
gh pr view <PR> --json url,state,isDraft,baseRefName,mergeCommit,statusCheckRollup,commits > pr.json
git pull
git merge-base --is-ancestor <merge-commit> origin/main
对于直接提交关闭,请收集包含问题 ID 和已完成状态检查的提交证据:
{
"oid": "replace-with-commit-sha",
"subject": "fix(HCL-123): example issue commit",
"statusCheckRollup": [
{ "name": "test", "status": "COMPLETED", "conclusion": "SUCCESS" }
]
}
对于压缩合并/导入发布关闭,请收集发布证据,其中包含成功的 release/main 检查,以及可针对当前主线引用进行验证的文件断言:
{
"statusCheckRollup": [
{ "name": "release main CI", "status": "COMPLETED", "conclusion": "SUCCESS" }
],
"files": [
{ "path": "dist/manifest.json", "contains": "\"version\":\"2026.06.14\"" }
]
}
使用以下命令验证关闭证据:
scripts/verify_closeout.ts --issue-id <ISSUE-ID> --pr pr.json --repo . --base origin/main
scripts/verify_closeout.ts --issue-id <ISSUE-ID> --commit commit.json --repo . --base origin/main
scripts/verify_closeout.ts --issue-id <CURRENT-ISSUE-ID> --implemented-issue-id <OLD-ISSUE-ID> --commit commit.json --repo . --base origin/main
scripts/verify_closeout.ts --issue-id <ISSUE-ID> --release release.json --repo . --base origin/main
仅当问题被移动后当前问题键与已实现问题键具有不同的 Linear 团队前缀时,才使用 --implemented-issue-id。对于 PR 证据,请包含 PR 提交,以便辅助工具验证某个提交提及了旧的已实现 ID。关闭备注必须说明 <CURRENT-ISSUE-ID> 是从 <OLD-ISSUE-ID> 移动而来或在其名下实现,并且已根据旧 ID 手动验证实现、主线和 CI 证据。
使用以下命令验证最终带标记的备注和问题描述仪表板:
scripts/validate_marked_comments.ts --description <issue-description-file> <status-comment-file>
使用 Agent 可用的本地 JavaScript 包管理器或运行时:Bun 可直接运行 .ts 脚本;Node/npm/pnpm/yarn 环境应通过 tsx 等 TypeScript 运行器执行脚本。
收尾要求
将问题移至 Done 前,必须证明以下所有事项:
- 关联 PR 已合并
- 或直接提交证据中包含问题 ID
- 或对于跨团队转移的问题,PR 提交证据或直接提交证据中包含原已实现问题 ID,且当前问题 ID 的团队前缀不同
- 或 squash/import 发布证据证明预期文件路径和内容已存在于当前主分支上
- 或对于父级跟踪问题,每个子问题均为 Done,且有经过验证的收尾证据,并且父级审核关卡已确认父级要求均已覆盖
- 主线包含合并提交、直接包含问题 ID 的提交、等效的远程主线证据、预期的发布文件/内容证据,或(对于父级跟踪问题)子问题经过验证的主线证据
- 合并 PR、合并提交、直接包含问题 ID 的提交或发布/主线证据的 CI 已完成且成功;对于父级跟踪问题,每个子问题经过验证的 CI 证据即满足此要求
- 最终仪表板/状态证据不与收尾结论相矛盾
- 所有
llm-*工作流状态标签和in-use占用标签都将被移除 - 累积的
sp-*标签将予以保留
如果缺少任何必需证据,请勿关闭问题。发布受阻证据,或输出 REQUIRED_LINEAR_MUTATIONS。
最终处理
成功收尾必须:
- 如果问题描述中有标记的仪表板区块,则更新该区块
- 发布一条最终的、不可变的标记状态/收尾评论;如果收尾使用了团队变更后的旧已实现问题 ID,则同时包含两个 ID;如果收尾使用了 squash/import 发布证据,则包含经过验证的文件/内容和发布/主线 CI 证据
- 将 Linear 状态移至
Done(如果关闭用魔法词已将其移至该状态,则无需操作) - 移除
llm-refine、llm-ready、llm-active、llm-blocked和llm-review - 移除
in-use占用标签 - 保留累积的
sp-*标签,例如sp-clarify、sp-plan、sp-tdd、sp-implement、sp-verify和sp-review
当关闭的问题是子问题时,在同一轮最终处理中应用 docs/workflow.md 中的父级和子问题规则。如果仍有未完成的子问题,则根据剩余同级问题汇总父级的 llm-* 状态和状态。如果这是最后一个未完成的子问题,则运行父级审核关卡:确认合并后的子问题工作是否完整覆盖父级要求和验收标准;如果已覆盖,将父级移至 llm-review 和 In Review,以便进行其自身的收尾;如果仍有差距,则对父级应用 llm-refine 并记录差距。
如果 Linear MCP 写入工具不可用,请勿声称标签、状态、仪表板或评论已更新。请输出 REQUIRED_LINEAR_MUTATIONS,其中包含确切的问题描述、最终收尾评论、标签和状态变更,包括任何父级汇总变更。
步骤完成交接
收尾完成或受阻时,报告变更内容、合并证据、CI 证据、仪表板/状态证据、当前 Linear 标签/状态以及建议的下一步。
询问用户是否还要为此收尾步骤补充内容。如果是,则继续当前步骤,检查该收尾证据或更新收尾报告。如果否,则建议进入下一工作流步骤,通常是 linear-status,以确认问题已关闭或检查是否还有遗留问题。
用户回答“不”后,询问用户是否要继续执行建议的下一项技能。明确说出建议的下一项技能,并等待用户确认;不要自动运行它。
使用以下回复格式:
- 当前阶段
- 变更内容
- 证据
- 缺失证据
- 未解决的阻塞项
- 建议的下一步
- 建议的下一项技能
- 问题:继续之前,是否还有内容要补充?
- 问题:是否要继续执行建议的下一项技能?