用途
template-check 用于比较 issue 或 pull request 正文中的标题与该仓库应遵循的模板标题。它报告每个缺失、重命名、顺序错位或内容为空的模板标题。该技能仅作报告,不负责修复;调用方拥有正文必须满足的规则,并负责修改正文。
主要能力
- 检查正文中的 Markdown 标题(ATX 形式,如
## Title)是否与模板逐项一致:存在、原文相同、顺序正确且有内容。 - 报告不匹配的模板标题。
- 支持检查草稿(
--body FILE或--body -读取标准输入)以及已发布的正文(--pr N或--issue N)。 - 支持按 GitHub 的查找位置自动发现模板:
- PR:根目录、
docs/、.github/下的pull_request_template.md或PULL_REQUEST_TEMPLATE/文件夹。 - Issue:
issue_template.md或ISSUE_TEMPLATE/文件夹中的模板与 issue 表单。
- PR:根目录、
--root可指定另一份检出目录。--repo OWNER/REPO为--pr和--issue指定仓库;在没有--root时从其默认分支读取模板。- 存在多个模板时,用
--template-name按模板 front matter 名称或文件名指定正文遵循的模板。未指定时使用最接近的匹配,出现平局则报错。应根据正文用途(如 issue 或 PR 的标签、标题)选择;仅在无法判断时才询问。--template PATH可跳过模板发现。 --json输出一个包含相同结果的 JSON 对象。
使用方式
在正文所属仓库的检出目录中,以如下方式运行:
python3 "$SKILL_DIR/scripts/check_template.py"
其中 SKILL_DIR 为该技能的目录。
检查草稿:使用 --body FILE,或 --body - 从标准输入读取,并配合 --kind issue 或 --kind pr。检查已发布正文:使用 --pr N 或 --issue N。
结果解读
- 退出码 0 且
match:每个模板标题都按顺序原文出现且有内容。 - 退出码 0 且
no-template:仓库没有带标题的模板,无可比较内容。 - 退出码 1 且
mismatch:按报告逐项修复正文中的标题后重新检查。 - 退出码 2 且
operational-error:检查无法比较(例如不在 git 检出中、仓库不可达、无法读取 issue 表单,或正文同时同等匹配多个模板)。应按其提示的原因修复,并按提示传入--repo、--template-name或--template PATH;绝不能将其视为通过。
限制
- 仅识别 ATX 形式的 Markdown 标题(
## Title);不识别 Setext 标题和列表项内的标题。 - 读取会在 pull request 的 review note 处停止(即空行后的
---分隔线之后跟一行Edit:),使该 note 不被视为最后一个模板章节的内容。 - 该技能只报告差异,不修改正文。