用途:challenge 属于 Gauntlet 系列技能,用于从知识库中生成并展示代码库挑战题(选择题与追踪练习),评估贡献者的回答,从而检验其对代码库的了解。
主要能力:读取 .gauntlet/knowledge.json 与开发者进度;若存在 .gauntlet/state/pending_challenge.json,会先把开发者最近一条消息当作答案评估,再生成新题;使用自适应加权选择知识条目与挑战类型;展示带上下文的题目;对回答评分(pass/partial/fail);记录结果并更新进度与连续答对次数。评分规则:pass 得 1.0 分、连续次数 +1;partial 得 0.5 分、连续次数重置;fail 得 0.0 分、连续次数重置。通过时若来自 pre-commit 门禁则写入 pass token,会话中继续展示下一题;失败时先展示正确答案与解释,再给出新题。
使用方式:在 Claude Code 内运行前,需先注册 in-loop 变体提供者,避免仅为生成同级 Claude 而调用 Anthropic API: from gauntlet.providers.in_loop import ( register_in_loop_provider_if_inside_claude_code, ) register_in_loop_provider_if_inside_claude_code() 在 Claude Code 之外该调用为空操作,默认 Anthropic 提供者仍生效。
适用场景:测试贡献者对代码库的知识掌握。
限制与不适用:知识库尚不存在时不应使用(应改用 gauntlet:extract);为新贡献者准备分阶段路径时不应使用(应改用 gauntlet:onboard)。退出条件要求:生成挑战前 .gauntlet/knowledge.json 必须存在且可读,否则技能会报错并建议运行 gauntlet:extract;每次挑战尝试都要把分数写入开发者进度存储并更新连续次数;存在 pending_challenge.json 时必须先评估再生成新题,评估后删除或更新该文件;失败时必须先展示正确答案与解释,不得静默跳过。