安装此技能
npx skills@latest add mattpocock/skills --skill=setup-matt-pocock-skills然后输入 /setup-matt-pocock-skills 来调用它。
本页内容
它的作用
setup-matt-pocock-skills 回答关于一个仓库的三个问题——issue 存在哪里、分流标签叫什么、领域文档放在哪——并把答案以 markdown 文件记录在 docs/agents/.
那些文件是仓库之间唯一变化的东西。技能本身处处相同;它们读取 docs/agents/issue-tracker.md 在运行时并照它说的做。这就是为什么这套技能不绑定 GitHub,也为什么没有任何技能文件需要编辑来指向别处。用「把技能链接到自定义 issue 追踪器」来调用它,适用于任何你能以编程方式连接的东西,技能零改动。
它是一个提示词驱动的技能,不是确定性的脚本。它读取你的 git remote,你现有的 CLAUDE.md,你现有的 CONTEXT.md,提出它的发现,并在写入任何内容前等你确认。
何时使用
你通过输入 /setup-matt-pocock-skills ——这个 agent 不会自动调用它。它被刻意标记为不可调用,所以其他技能无法替你触发它。
每个仓库使用一次,在任何其他工程技能首次使用之前。如果 triage, to-spec, to-tickets or wayfinder 开始猜你的 issue 该放哪里,或应用你的追踪器没有的标签,说明它们还没有在这里配置过。一个项目进行到一半的仓库是运行它的好地方;技能会读取已有内容,先前的工作不会浪费。
前置条件
它写入你运行它的仓库:
| 它写入 | 哪里 |
|---|---|
issue-tracker.md | docs/agents/ |
domain.md | docs/agents/ |
triage-labels.md | docs/agents/,只有当 triage 技能已安装 |
一个 ## Agent skills block | 无论 CLAUDE.md / AGENTS.md 已经存在 |
全部都是已提交的 markdown。没有用户级或全局模式:配置住在仓库里,所以每个仓库都有自己的副本。
三个决策
每个小节先给出推荐答案,并跳过已经敲定的探索。大多数运行是两次确认就完成。
| 决策 | 它提议什么 | 它实际提问的时机 |
|---|---|---|
| Issue 追踪器 | 与你 git remote | 始终——这是唯一真正的选择 |
| 分流标签 | 保留五个标准名称(needs-triage, needs-info, ready-for-agent, ready-for-human, wontfix) | 只有当 triage 技能已安装 |
| 领域文档 | 单上下文:一个 CONTEXT.md plus docs/adr/ 在根目录 | 只有发现 monorepo 信号时才这样,然后它提供一个多上下文 CONTEXT-MAP.md |
追踪器选项:
| 选项 | issue 在哪里 | 需要 |
|---|---|---|
| GitHub | 仓库的 GitHub Issues | the gh CLI |
| GitLab | 仓库的 GitLab Issues | the glab CLI |
| 本地 Markdown | 位于 .scratch/<feature>/ 在这个仓库中 | 什么都没有——根本没有远程 |
| 其他 | 无论你说哪里 | 你描述工作流的一段话 |
前三个以模板形式随技能发布,开箱即用。本地 markdown 是一等选项,不是兜底:没有远程的个人项目完全支持。一个值得重复的提醒:如果你在用 GitHub,就不要用本地 markdown。它们是替代关系,不是分层。
「其他」也不是一个占位符。它是 Jira、Linear、Azure DevOps 和 Beads 都能工作的原因:你描述工作流,技能把你的描述记录在 docs/agents/issue-tracker.md,而下游技能跟随这段描述。社区已经这样做过——一个基于 Jira 的MCP 变体,一个形似 gh,一个手工搭建的本地看板。
常见问题
我必须使用 GitHub 吗?
不。GitHub、GitLab 和 .scratch/ 都作为现成模板提供,其他一切通过「其他」路径工作。这是记录中被重复最多的问题,大致是这样问的: 「硬锁定到 github」, 「我可以用 GitLab / Jira 吗」, 「那 Azure DevOps 呢」。每次的答案都是:追踪器是配置层面的答案,不是技能属性。
更新技能后我需要重跑它吗?
在 v1.1 之后被直接问到这个问题时,Matt 说可以。技能自己的收尾信息则更温和——它告诉你只有切换追踪器或重新开始时才需要重跑。两者都说得通,差距存在的原因也是真实的:种子模板在版本之间会变化,所以 docs/agents/issue-tracker.md 由旧版本写下的内容,对照现在读取它的技能可能会过时。如果下游技能开始做与文档描述不同的事,重跑就是便宜的修复。
它写入了 CLAUDE.md,但我用的是 Codex。
已知缺口,仍然开放。文件选择规则是「编辑 CLAUDE.md 如果存在,否则 AGENTS.md「——它检查哪个文件存在,而不是哪个 运行框架 正在运行。一个带有 CLAUDE.md 从 Claude Code 遗留下来的会得到它的 ## Agent skills 块放在 Codex 永远不会读取的地方。有两种变通方案在流传:把块移到 AGENTS.md 手动,或者保持 AGENTS.md 标准,并让 CLAUDE.md 一个指向它的一行指针。如果两个文件都不存在,技能会问你创建哪个,而不是自己选——这让那些期望它直接决定的人感到困惑。
它没有创建我的分流标签。
它不会。 docs/agents/triage-labels.md 是一个 mapping ——它告诉 /triage 你的追踪器中哪些字符串对应五个标准角色。它不会运行 gh label create。在一个全新的 GitHub 仓库里,标签确实还不存在,这已被不止一次地当作 bug 上报。两个后续:
- 如果你的追踪器已经使用标准名称,映射就是一张恒等表,无需配置任何东西。这是预期的常见情况,不是缺失的步骤。
- wayfinder的
wayfinder:mapandwayfinder:<type>标签在这里也不会被创建,而gh issue create --label <missing>直接失败,而不是创建标签。在 GitHub 仓库上第一次运行 wayfinder 之前,请手动创建它们。
我能在这里配置其他技能的行为吗—— 追问审视 节奏、提问格式、语气?
不。它配置三样东西:追踪器、标签、文档布局。一直有直接请求让它成为每用户偏好的家,而一贯的回答是技能保持有主张: 「配置即死亡。」 偏好属于你的 CLAUDE.md 作为纯文本指令,每个技能都已经在读取。
我能把配置保存在 ~/.claude 而不是把它提交到每个仓库?
目前没有。有一个来自跨多个仓库运行技能的人的开放请求,而用户级模式不存在。每个仓库都带着自己的 docs/agents/.
让一个技能配置其他技能,不奇怪吗?
一个长期存在的抱怨说是的,原话如下: 「用一个技能来设置另一个技能,我感觉不太对——这意味着 LLM 在配置它自己的技能。」 权衡真实且被承认:配置步骤的替代方案是把追踪器指令复制进每个接触 issue 的技能。输出是可检查、可编辑的 markdown,这正是缓解措施——你可以阅读它写的每个文件并手动修改,日常调整正是这样,而不是再跑一次。
做到以下就算成功
docs/agents/issue-tracker.mdanddocs/agents/domain.md存在,加上triage-labels.mdiftriage已安装。- 一个
## Agent skills部分出现在你的运行框架实际读取的指令文件中,每一行摘要指向那些文件中的一个。 - 它提议的追踪器与你真正使用的远程匹配,标签字符串与追踪器中真实存在的标签匹配。
- 之后,
/to-tickets发布时不问你在哪里管 issue,而/triage应用现有标签,而不是发明标签。 - 技能文件本身没有任何改变。如果配置修改了
SKILL.md,出问题了。
在流程中的位置
setup-matt-pocock-skills 是 一次性的配置 对于工程流程来说,它是其他一切的前提假设,而不是链上的一步。它的邻居就是它的读者: triage,它应用了这里写下的标签词汇; to-spec and to-tickets,它们发布到此处指定的追踪器;而 wayfinder,它读取同一追踪器文件中的「Wayfinding 操作」部分,以了解地图和子 tickets 存储。它记录的领域文档布局,正是 domain-modeling 稍后填写——它创建 CONTEXT.md 和 ADR 是惰性的,在术语或决策真正被解决时才记录,所以配置后仓库为空是预期状态。接下来该用哪个技能, ask-matt 路由整个技能集。
技能操作
npx skills@latest add mattpocock/skills安装整套技能,然后在智能体中输入 /setup-matt-pocock-skills 来调用它。