游戏王卡组完整分析流程的 parent skill。当用户提供 .ydk 文件并要求分析卡组时使用此 skill。负责建立工作目录、追踪进度、按顺序调用 deck-parser 和 deck-analyzer,并生成最终人类可读报告。触发词:分析卡组、.ydk、卡组分析、帮我看看这套卡。
这是整个分析流程的协调者(orchestrator)。
负责:
不负责:
每个卡组建立独立目录,命名规则为 {ydk文件名}_analysis/。
{deck_name}_analysis/
├── TODO.md # 进度追踪,每步完成后更新
├── deck_raw.csv # Step 1 产物:CLI 原始返回数据(CSV格式)
├── deck_parsed.json # Step 2 产物:deck-parser 输出
├── deck_analysis.json # Step 3 产物:deck-analyzer 输出
└── report.md # Step 4 产物:最终人类可读报告
开始前,先检查工作目录是否已存在:
TODO.md → 找到第一个未完成的步骤,从该步骤继续.ydk 文件名创建工作目录,并创建 TODO.mdmkdir -p {deck_name}_analysis && touch {deck_name}_analysis/TODO.md
TODO.md,内容如下:# {deck_name} 分析进度
## 文件
- ydk: {ydk_filename}
- 开始时间: {timestamp}
## 步骤
- [ ] Step 1: 获取原始卡片数据 → deck_raw.csv
- [ ] Step 2: 解析卡组结构 → deck_parsed.json
- [ ] Step 3: 对局分析 → deck_analysis.json
- [ ] Step 4: 生成报告 → report.md
TODO.md 中将 Step 1 标记为进行中。使用 ygo-db-cli CLI 工具获取卡片信息:
ygo-db-cli get-cards-by-ydk -i {ydk文件路径} -o deck_raw.csv
CLI 工具会将数据(CSV格式)完整 dump 到 deck_raw.csv。
保存原始数据的目的:如果后续解析逻辑有问题,可以直接重跑解析步骤,不需要重新调用 CLI。
完成后更新 TODO.md:
- [x] Step 1: 获取原始卡片数据 → deck_raw.csv
读取 deck_raw.csv,调用 deck-parser skill 进行卡组结构解析。
输入:deck_raw.csv
输出:按 deck-parser skill 定义的 JSON schema 生成结果,dump 到 deck_parsed.json。
完成后更新 TODO.md:
- [x] Step 2: 解析卡组结构 → deck_parsed.json
读取 deck_raw.csv 和 deck_parsed.json,调用 deck-analyzer skill 进行完整对局分析。
输入:deck_raw.csv + deck_parsed.json
输出:按 deck-analyzer skill 定义的 JSON schema 生成结果,dump 到 deck_analysis.json。
完成后更新 TODO.md:
- [x] Step 3: 对局分析 → deck_analysis.json
在生成报告前,执行以下校验。如果校验失败,不得进入 Step 5,必须先修正。
校验逻辑:
从 deck_parsed.json 中提取所有 endboard 卡片名称:
maindeck_endboard 中的所有卡片extradeck_monsters 中 role 为 endboard 或 both 的所有卡片从 deck_analysis.json 的 first_turn_board.typical_endboard 中提取所有已出现的卡片名称(遍历 core / synergy_tech / protection 三个数组)
对比两个列表,找出在 Parser 中标记为 endboard 但在 Analyzer 的终场描述中完全未出现的卡片
如果存在缺失卡片:
[VALIDATION FAILED] 以下 endboard 卡片未在终场分析中出现:{卡名列表}deck_analysis.json如果无缺失:
[VALIDATION PASSED] 所有 endboard 卡片均已在终场分析中覆盖完成后更新 TODO.md:
- [x] Step 4.5: 一致性校验 → PASSED / FAILED+修正
读取 deck_parsed.json 和 deck_analysis.json,生成自然语言分析报告,dump 到 report.md。
报告格式见下方「报告模板」。
完成后更新 TODO.md:
- [x] Step 4: 生成报告 → report.md
## 完成
- 完成时间: {timestamp}
report.md 必须使用以下结构:
# {archetype} 卡组分析报告
**卡组类型**:{deck_type} | **操作难度**:{difficulty}
**主卡组**:{main}张 | **额外卡组**:{extra}张 | **副卡组**:{side}张
---
## 卡组概览
{用2-3句话描述卡组的核心机制和风格}
**主引擎**:{primary_engine}
**副引擎 / Package**:{secondary_engines}
---
## 起手稳定性
- Starter({starter_total_copies}张)开出率:刚好1张 {starter_exactly_1} / 刚好2张 {starter_exactly_2} / 至少1张 {starter_at_least_1} / 至少2张 {starter_at_least_2}
- 手坑({handtrap_total_copies}张)开出率:刚好1张 {handtrap_exactly_1} / 刚好2张 {handtrap_exactly_2} / 至少1张 {handtrap_at_least_1} / 至少2张 {handtrap_at_least_2}
{用1-2句话说明稳定性的含义,例如"平均每4手有3手能正常启动"}
---
## 典型先攻终场
**终场类型**:{board_type}
**妨碍数量**:{interaction_count}
| 终场卡片 | 作用 |
|---|---|
**抗性**:{抗性说明}
**自锁风险**:{self_lock_risk}
> 如果终场类型为 `RESOURCE_DENIAL_BOARD`,在此说明对手的哪些资源会被破坏,以及通常在第几回合让对手断粮。
---
## 展开多样性
**整体评价**:{overall_verdict} — {overall_reason}
| 干扰类型 | 应对能力 | 说明 |
|---|---|---|
{干扰类型列表}
---
## 终场弱点
**最大威胁**:{biggest_threat} — {biggest_threat_reason}
**盘面突破手段**
| 去除手段 | 有效程度 | 原因 |
|---|---|---|
{盘面突破列表}
**机制封锁手段**
| 封锁类型 | 有效程度 | 原因 |
|---|---|---|
{机制封锁列表}
---
## 系统性弱点
{对每个系统性弱点用一段话说明:依赖什么机制、哪些卡能针对、被针对后还能做什么、这类卡在当前 meta 中是否常见}
---
## 手坑敏感度
| 手坑 | 影响程度 | 被打断时机 |
|---|---|---|
{手坑列表}
---
## 关键 Chokepoint
{对每个 chokepoint 用一段话说明:是什么、为什么关键、怕什么、有没有替代路}
---
## 后攻能力
{用自然语言描述后攻突破手段、效率、突破后余力、OTK 潜力}
---
## 资源续航
{用自然语言描述检索机制、墓地循环、面对增殖G的策略、长局能力}
---
## 六维评分
| 维度 | 分数 | 说明 |
|---|---|---|
| 起手稳定性 consistency | {value}/10 | {reason} |
| 终场上限 ceiling | {value}/10 | {reason} |
| 抗干扰能力 resilience | {value}/10 | {reason} |
| 后攻能力 going_second | {value}/10 | {reason} |
| 资源续航 grind | {value}/10 | {reason} |
| 展开多样性 route_diversity | {value}/10 | {reason} |
---
## 总结
**优势**
{优势列表}
**弱点**
{弱点列表,包含具体卡名和场景}
如果某个步骤失败: