원클릭으로
mtg-judge-zh
万智牌中文规则裁判。用于回答规则解释、牌张互动、赛制合法性、比赛政策(MTR/IPG)等问题。当用户询问任何涉及万智牌完整规则(CR)、比赛规则(MTR)、违规处理方针(IPG)的问题时触发。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
万智牌中文规则裁判。用于回答规则解释、牌张互动、赛制合法性、比赛政策(MTR/IPG)等问题。当用户询问任何涉及万智牌完整规则(CR)、比赛规则(MTR)、违规处理方针(IPG)的问题时触发。
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
万智牌全知识库助手。用于回答万智牌规则问题、查询中英文牌张、分析牌张互动、 解释赛制与策略、讲述背景故事。当用户询问万智牌相关内容(牌名、规则概念、赛制、 策略、背景设定)或调用 /mtg-wiki 时触发。基于本地187页Wiki知识库、37,230张牌 数据库、完整CR/MTR/IPG规则库,以及mtgch/Scryfall API。
万智牌限制赛(Limited)学习、单卡评分、系列评测与实战教练。用于解释限制赛、现开、轮抽规则,指导40张限制赛套牌构组,分析轮抽抓位、信号、调度、17Lands数据、现开牌池、对局计划、换备,撰写LSV/ChannelFireball风格的限制赛单卡点评,以及“谁是进攻者/防守方”的攻守角色判断。触发词包括限制赛、现开、轮抽、Draft、Sealed、单卡评分、set review、LSV评分、CFB评分、调度、看信号、组牌、曲线、去除、生物数量、17Lands、P1P1、攻守角色。具体牌张文本、官方译名和规则判定应结合 mtg-wiki 或 mtg-judge-zh,不凭记忆编造单卡信息。
万智牌 Duel Commander(法禁/法式指挥官)1v1 竞技策略分析。用于法禁 meta、套牌拆解、对局优劣、起手调度、禁牌表版本与规则版本边界、20 血资源判断。当用户明确询问法禁、DC、Duel Commander 或法式指挥官竞技策略时触发。边界:精确规则裁定让渡给 mtg-judge-zh;多人 cEDH 让渡给 cedh 相关 skill;通用牌张查询让渡给 mtg-wiki。
万智牌「摩登(Modern)」赛制竞技策略分析。用于摩登 meta 环境查询、套牌运作分析、对局优劣与备牌建议、环境突破口分析、套牌选择推荐。当用户明确询问摩登赛制的竞技策略/套牌/meta 时触发。边界:规则判定与牌张互动让渡给 mtg-judge-zh;通用牌张查询、其他赛制及非竞技问题让渡给 mtg-wiki;本 skill 仅基于 wiki/branches/strategy/ 已记录的策略资料作答,不编造 meta 数据。
万智牌全知识库助手。用于回答万智牌规则问题、查询中英文牌张、分析牌张互动、解释赛制与策略、讲述背景故事。当用户询问万智牌相关内容(牌名、规则概念、赛制、策略、背景设定)或调用 /mtg-wiki 时触发。知识库(187页Wiki、37k卡牌数据库、双语CR/MTR/IPG规则)已打包在 skill 目录内,无需额外克隆仓库。
| name | mtg-judge-zh |
| description | 万智牌中文规则裁判。用于回答规则解释、牌张互动、赛制合法性、比赛政策(MTR/IPG)等问题。当用户询问任何涉及万智牌完整规则(CR)、比赛规则(MTR)、违规处理方针(IPG)的问题时触发。 |
当用户提出以下类型的问题时触发:
┌─────────────────────────────────────────────────────────────────────┐
│ 快速路径判断 │
│ 简单规则解释 → 跳过 ruling-lookup,query-decomposer 可简化 │
│ 单张牌查询 → card-lookup 用 Bash 直接调用,不走 Agent │
└─────────────────────────────────────────────────────────────────────┘
↓
Step 1: query-decomposer → 输出 QueryPlan
↓ 硬编码 Schema 校验 (validation.py)
Step 2: [并行] card-lookup × N (Bash) + rule-lookup × N (Bash) + ruling-lookup(可选, Bash)
↓ 硬编码内容审查 (validation.py)
↓ [如有 error 的 card] → 提前终止并报告
Step 3: interaction-analyzer + checker (合并为 1 个 Agent)
↓ 硬编码引用审查 + 迭代检查 (validation.py)
↓ [如需补充] → 回到 Step 2(最多 2 轮)
Step 4: 输出最终答案
优化后 Agent 调用次数:
对比旧流程:旧流程最坏情况下需要 N+M+3 次 Agent 调用(N=牌数, M=规则关键词数)。优化后最坏情况只需 3 次。
硬编码验证脚本位置:./raw/tools/mtg_wiki/validation.py
验证脚本使用 Python 标准库实现,不依赖外部包。在每个步骤后,将 agent 的 JSON 输出通过脚本验证,确保格式正确性和内容完整性。
项目根目录:./
操作:
Read ./agent/query-decomposer.mdAgent(subagent_type="general-purpose", prompt="...")硬编码 Schema 校验(必须执行):
echo '{agent输出的JSON}' | python3 ./raw/tools/mtg_wiki/validation.py --schema query-plan
校验内容:
根据 QueryPlan 并行调用多个 Agent。
操作(对 QueryPlan.cards 中的每张牌):
方法 A(推荐):直接用 Bash 调用工具脚本
# Step 0: 解析牌名/简称/多组件互动
python3 ./raw/tools/mtg_wiki/card_resolve.py "用户输入" --format judge --intent card
# 若用户输入是组合技或多牌互动,使用 interaction intent
python3 ./raw/tools/mtg_wiki/card_resolve.py "用户输入" --format judge --intent interaction
# Step 1: 对 resolver 选中的 card 或 components 翻译牌名
python3 ./raw/tools/mtg_wiki/name_translator.py "中文牌名"
# Step 2: 查询 Oracle(使用英文牌名)
python3 ./raw/tools/mtg_wiki/card_search.py "English Name"
将 Bash 输出解析为 card-info JSON 格式:
{
"input_name": "中文牌名",
"english_name": "English Name",
"scryfall_id": "...",
"oracle_text": "...",
"mana_cost": "{R}",
"type_line": "Instant",
"power_toughness": null,
"error": null
}
方法 B(fallback):如果 Bash 调用返回错误或多义结果,才启动 Agent
方法 A 与方法 B 的选择标准:
card_resolve.py 已选中唯一实体,且 name_translator.py / card_search.py 成功的情况needs_clarification=true、翻译失败、返回多张候选牌、或需要额外判断时components,必须分别查询每个组件;若任一组件不确定,先追问,不得给规则结论并行化:所有牌的查询是独立的,可以全部并行用 Bash 调用。"general-purpose", prompt="[agent定义] 查询牌名: {card_name}")`
Agent 内部会执行:
python3 ./raw/tools/mtg_wiki/card_resolve.py "牌名或互动输入" --format judge --intent card
python3 ./raw/tools/mtg_wiki/name_translator.py "牌名"
python3 ./raw/tools/mtg_wiki/card_search.py "英文牌名"
硬编码内容审查(必须执行):
echo '{agent输出的JSON}' | python3 ./raw/tools/mtg_wiki/validation.py --schema card-info
校验内容:
输出 Schema(card-info.json):
{
"input_name": "中文牌名",
"english_name": "English Name",
"scryfall_id": "...",
"oracle_text": "...",
"mana_cost": "{R}",
"type_line": "Instant",
"power_toughness": null,
"error": null
}
操作(对 QueryPlan.rule_keywords 中的每个关键词):
方法 A(推荐):直接用 Bash 调用 grep + Read
# Step 1: 查 wiki 决策树
grep -r -l "关键词" ./wiki/branches/referee/decision-trees/
# Step 2: 查 wiki 概念页
grep -r -l "关键词" ./wiki/concepts/
# Step 3: 查 wiki 框架
grep -r -l "关键词" ./wiki/branches/referee/frameworks/
# Step 4: 查 CR
grep -n "关键词" ./raw/cr/*.md
然后用 Read 读取 grep 结果中的具体文件内容。
将查询结果组装为 rule-info JSON 格式:
{
"keyword": "protection",
"matches": [
{
"rule_number": "702.16a",
"rule_text": "...",
"source_file": "raw/cr/7.md",
"source_type": "cr_rule"
}
]
}
方法 B(fallback):如果 grep 返回过多结果或需要跨文件综合判断,才启动 Agent
并行化:所有规则关键词的查询是独立的,可以全部并行用 Bash 调用。"general-purpose", prompt="[agent定义] 查询规则关键词: {keyword}")`
Agent 内部查询策略(wiki 优先):
grep -r -l "关键词" ./wiki/branches/referee/decision-trees/
grep -r -l "关键词" ./wiki/concepts/
grep -r -l "关键词" ./wiki/branches/referee/frameworks/
grep -n "关键词" ./raw/cr/*.md
硬编码内容审查(必须执行):
echo '{agent输出的JSON}' | python3 ./raw/tools/mtg_wiki/validation.py --schema rule-info
校验内容:
输出 Schema(rule-info.json):
{
"keyword": "protection",
"matches": [
{
"rule_number": "702.16a",
"rule_text": "...",
"source_file": "wiki/concepts/protection.md",
"source_type": "wiki_concept"
}
]
}
操作:
方法 A(推荐):直接用 Bash 调用
python3 ./raw/tools/mtg_wiki/scryfall_rulings.py "scryfall_id"
快速路径:简单规则解释(如"践踏是怎么运作的")不涉及具体牌张互动,跳过 ruling-lookup。
优化说明:analyzer 和 checker 原本是两个独立的 Agent 调用,但它们处理的是同一组 Evidence,且 checker 的工作本质上是对 analyzer 输出的审查。合并后可以减少 1 次 LLM 调用。
操作:
Read ./agent/interaction-analyzer.mdRead ./agent/checker.mdAgent(subagent_type="general-purpose", prompt="...")Agent 输出格式要求(合并为一个 JSON):
{
"analysis": {
"conclusion": "结论陈述",
"reasoning": "推理过程",
"confidence": "certain | likely | uncertain",
"cited_rules": ["702.16a"],
"cited_cards": ["Lightning Bolt"],
"assumptions": [{"assumption": "...", "evidence_based": true, "note": "..."}],
"needs_more_evidence": null
},
"verdict": {
"status": "PASS | WARN | BLOCK",
"card_check": "PASS | FAIL",
"rule_check": "PASS | FAIL",
"evidence_check": "PASS | WARN | FAIL",
"citation_check": "PASS | FAIL",
"notes": "说明"
}
}
硬编码校验(必须执行):
# 将 Evidence 包保存到 evidence.json
# 提取 analysis 和 verdict 分别校验
python3 ./raw/tools/mtg_wiki/validation.py --schema analysis --evidence evidence.json analysis.json
python3 ./raw/tools/mtg_wiki/validation.py --schema verdict verdict.json
校验内容:
迭代检查:
verdict 处理:
基于通过审查的证据输出答案:
Bash 优先,Agent fallback。绝大多数数据查询工作可以用 Bash 工具直接完成,不需要启动 LLM Agent。Agent 只用于需要推理、综合、判断的环节。
| 优化项 | 旧方式 | 新方式 | 节省 |
|---|---|---|---|
| card-lookup | N 个 Agent | N 个 Bash 调用 | N-0 次 Agent |
| rule-lookup | M 个 Agent | M 个 Bash 调用 | M-0 次 Agent |
| ruling-lookup | 1 个 Agent | 1 个 Bash 调用 | 1-0 次 Agent |
| analyzer + checker | 2 个 Agent | 1 个 Agent | 1 次 Agent |
| 迭代轮次 | 最多 3 轮 | 最多 2 轮 | 减少 1 轮 |
| 简单规则解释 | 全部步骤 | 跳过 ruling-lookup | 节省 ruling 查询时间 |
| 错误 card | 继续全部步骤 | 提前终止 | 节省后续步骤时间 |
以下情况不能用 Bash 替代,必须使用 Agent:
当用户暗示规则可能有变更(如"这个问题很 tricky"、"裁定已经变了"、"规则更新过"等),必须执行以下额外步骤:
./raw/cr/ 中相关条文的精确措辞published_at 日期,确认该裁定是否仍适用于当前规则版本历史教训:克撒传 vs 腥红之月的互动中,CR 714.4 在规则更新后增加了 "with one or more chapter abilities" 限定语,彻底改变了互动结果。旧裁定(2021-06-18)因此失效。
name_translator.py: ./raw/tools/mtg_wiki/name_translator.pycard_resolve.py: ./raw/tools/mtg_wiki/card_resolve.pycard_search.py: ./raw/tools/mtg_wiki/card_search.pyrule_search.py: ./raw/tools/mtg_wiki/rule_search.pyscryfall_rulings.py: ./raw/tools/mtg_wiki/scryfall_rulings.pymtgch_name_index.py: ./raw/tools/mtg_wiki/mtgch_name_index.pyvalidation.py (硬编码校验): ./raw/tools/mtg_wiki/validation.py./raw/cr/./raw/mtr/./raw/ipg/./wiki/concepts/./wiki/branches/referee/decision-trees/./wiki/branches/referee/frameworks/query-decomposer: ./agent/query-decomposer.mdcard-lookup: ./agent/card-lookup.mdrule-lookup: ./agent/rule-lookup.mdruling-lookup: ./agent/ruling-lookup.mdinteraction-analyzer: ./agent/interaction-analyzer.mdchecker: ./agent/checker.mdquery-plan.json: ./schema/query-plan.jsoncard-info.json: ./schema/card-info.jsonrule-info.json: ./schema/rule-info.jsonanalysis.json: ./schema/analysis.jsonverdict.json: ./schema/verdict.json