# Schengen Visa Guide

> Use EXCLUSIVELY when user mentions Schengen visa (申根签/申根签证/办申根签) or wants to apply for a tourist visa to Schengen countries (France, Italy, Spain, Germany, Switzerland, etc.). Covers ALL Chinese mainland passport holders — student, employed, retired, freelancer, unemployed, or minor. This skill ONLY covers Schengen short-stay tourist visas.

- Skill: `endlessbluewjl/schengen-visa-guide` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds@latest add endlessbluewjl/schengen-visa-guide`
- Raw SKILL.md: https://api.skillmd.com/api/skills/endlessbluewjl/schengen-visa-guide/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: EndlessBlueWJL (https://skillmd.com/u/endlessbluewjl)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/endlessbluewjl/schengen-visa-guide

---


# Schengen Visa Guide

> ⚠️ **信息时效**：本指南信息截至 2025-07。签证政策、费率、网址及各国每日参考金额会调整，所有材料要求**最终以申请国使领馆官网为准**。涉及具体数字时，提醒用户以官网为准。

## GATE

Every session starts here. Before any flow output：

1. 读 progress.md（路径按平台自适应，见下方 PROGRESS FILE 段；目录不存在则创建）。
2. 检查 `current_step`。
3. 跳到对应步骤执行。

**单点咨询例外**：若用户只是问一个独立问题（如"法国签证费多少""意大利 VFS 网址是什么"），直接回答即可，不必启动完整流程。只有当用户确实要**办申根签**时才进入下面的主流程。

若 progress.md 不存在 → 用底部模板新建 → 进入 Step 1。

---

## MAIN FLOW (FIXED — DO NOT BRANCH)

```
Step 1: 询问身份
Step 2: 给出材料清单 + 流程图
Step 3: 询问申请国家
Step 4: 给出预约方法 + 时间费用提示
Step 5: 逐项准备资料
Step 6: 最终核对
```

**不要跳步、不要重排、不要偏离主线**，除非用户明确要求别的。

---

## Step 1: 询问身份

**current_step = identity**

向用户说明（须包含全部选项，可用自然语气）：

> 你目前的身份是？
>
> 在校学生 / 在职 / 退休 / 自由职业 / 无业 / 未成年人（18 岁以下）

**After user answers:** 写身份到 progress.md。Set current_step = checklist. Go to Step 2.

---

## Step 2: 给出材料清单 + 流程图

**current_step = checklist**

1. 读 `references/checklist.md`，**展示与用户身份匹配的小节**（证件类 + 对应身份的 6-8 项 + 旅行保障 + 资金类 + 行程机酒 + 已婚附加 + 解释信 + 预约凭证）。
2. 未成年人额外展示"未成年人（18 岁以下）"专节。
3. 展示底部"通用流程"流程图。
4. 提醒用户：信息以官网为准；完成一项告诉你就好，会逐项勾掉。

**不要在此步追问任何问题**，只展示清单 + 流程。

**After showing:** 写 checklist 到 progress.md。Set current_step = country. Go to Step 3.

---

## Step 3: 询问申请国家

**current_step = country**

向用户说明（须包含推荐三国及理由）：

> 你想申请哪个申根国家？首次申请推荐这三个：
>
> 1. 法国 — 不分领区，全国任意城市都能递签，不用回老家。通过 TLScontact 预约，流程清晰。
> 2. 意大利 — 通过率不错，对学生和自由职业比较友好。
> 3. 西班牙 — 有时给的停留天数会比行程单写的多几天，比较大方。

**不要追问日期、护照、婚姻等其他信息。**

**After user answers:** 写目标国家到 progress.md。Set current_step = appointment. Go to Step 4.

---

## Step 4: 给出预约方法 + 时间费用提示

**current_step = appointment**

1. 读 `references/country-notes.md`，按用户所选国家展示对应预约网址 + 流程 + 领区判定。
2. 展示"录指纹"提醒（首次本人录十指，59 个月有效；12 岁以下免录但需到场）。
3. 展示"时间与费用"提示（处理时间约 15 天最长 45 天，建议提前 1-1.5 个月；签证费成人约 €90，6-12 岁 €45，6 岁以下免费；服务费约 ¥200-300；以官网为准）。
4. 提醒：行程单里该国天数写最长，出入境机票最好也走该国，酒店日期城市与行程单对齐。

预约网址路由表（详情见 country-notes.md）：

| Country | System | URL |
|---|---|---|
| France | TLScontact | ① https://france-visas.gouv.fr/zh → ② https://visas-fr.tlscontact.cn |
| Italy | VFS Global | https://visa.vfsglobal.com/chn/zh/ita |
| Spain | BLS | https://web.blscn.cn |
| Germany | VFS Global | https://visa.vfsglobal.com/chn/zh/deu |
| Switzerland | VFS Global | https://visa.vfsglobal.com/chn/zh/che |
| Netherlands | VFS Global | https://visa.vfsglobal.com/chn/zh/nld |
| Other | See references/country-notes.md | — |

**After user confirms appointment done:** Set current_step = documents. Go to Step 5.

---

## Step 5: 逐项准备资料

**current_step = documents**

按下列固定分类顺序引导，一次一类。用户确认一类 → 在 progress.md 勾掉 → 报进度 → 下一类。各项详细说明见 `references/checklist.md`。

**Fixed order:**

| # | Category | Action |
|---|---|---|
| 1 | 证件类 | Remind only（含护照签发≤10年）|
| 2 | 身份材料 | Remind only（按身份选模板；未成年人见专节）|
| 3 | 旅行保险 | Remind + recommend 京东/支付宝 |
| 4 | 资金类 | Remind + 预算测算公式（见下方）|
| 5 | 行程与机酒 | 行程单(can generate) → 机票(trip.com) → 酒店(多平台) |
| 6 | 解释信 + 已婚附加 + 预约凭证 | 解释信(can generate), 已婚(如有则提醒), 预约凭证(打印) |

---

### Category 1: 证件类

向用户说明（须含全部要点）：
- 护照原件 + 所有面复印件 ×2 份：有效期超过离开申根区后 3 个月、≥2 空白页、**签发不超过 10 年**（三条都是硬性）。
- 旧护照复印件：有则复印个人信息页+签证页+出入境盖章页，无则跳过。
- 身份证原件 + 复印件：正反面复印在同一面。
- 户口本整本复印件：封面到最后一页全部复印。
- 两寸白底证件照：现场拍也行，自带要近期。

完成后用户说"证件好了"。

---

### Category 2: 身份材料

读 `references/checklist.md` 中与用户身份匹配的小节并展示要点。未成年人额外展示出生医学证明公证+海牙认证、父母同意出行委托书公证+海牙认证、父母身份及关系材料、本人到场/12岁免指纹等提醒。

完成后用户说"身份材料好了"（学生/在职/退休按对应话术）。

---

### Category 3: 旅行保险

向用户说明（须含全部要点）：
- 京东或支付宝搜"申根保险"。
- 保额至少 3 万欧元，覆盖整个申根区，日期完整覆盖行程。
- 出签前别退保，出签后可退。彩色打印前两页。

完成后用户说"保险好了"。

---

### Category 4: 资金类 + 预算测算

向用户说明（须含全部要点）：
- 近 3-6 个月银行流水：银行打印，余额需覆盖整个行程。
- **预算测算**：**不向用户展示公式**，只简要说明"按天数、参照中介/签证中心实操量级估算"，然后直接给出金额数字。若用户已知天数则直接算；若未知则问"你计划总共去多少天？"再算。计算用公式见 `references/checklist.md`（≤15 天 ¥2,000×天数；>15 天 ¥30,000 + ¥4,000×(天数−15)），agent 自行算出不展示。申瑞士等贵国上浮 20-30% 并说明。结果后附一句免责：实操参考值、非硬门槛、以官网为准、不要为凑此数临时大额转账。
- 房产证/车产复印件：有就提供（只交复印件），没有跳过。
- 父母/配偶出资另需出资人流水+在职证明，不在同一户口本需亲属关系公证+海牙认证。

完成后用户说"资金好了"。

---

### Category 5: 行程与机酒

三个子步，按顺序。

**5a: 行程单**

参考 `references/itinerary.md`。向用户说明（须含全部要点）：
- 可以帮你生成，直接显示在聊天里，同时给 PDF（打印递签）+ Excel（可编辑，订完机酒后填）两份文件。
- 强烈建议先用「行程助手」app 自己做一遍，加深印象，应对电调。
- 要生成的话告诉我：想去哪些城市、出发日期、总共几天。

**生成行程单时**（规则见 references/itinerary.md）：
1. 直接在聊天里显示行程表。
2. 生成 PDF + Excel 两个文件（生成方式按环境降级，见 itinerary.md）。
3. 景点顺序顺路、节奏宽松（一天 2-3 个，最多 4）。
4. 验证每个景点真实开放时间，不安排在闭馆日。
5. PDF 填合理占位的酒店/交通；Excel 的酒店/交通栏留空。
6. 生成后必须提醒用户：PDF 可直接打印；Excel 酒店交通栏自己填；一定要仔细看一遍记住每天行程以应对电调；景点开放时间出发前再去官网确认一次。

完成后用户确认 → 勾掉 → 进 5b。

**5b: 机票预订单**

向用户说明（须含全部要点）：
- 机票去 trip.com（携程海外版），不用付款，走到支付页面停，截图或下载确认单。
- 出入境城市呼应行程单。
- ⚠️ 德国等部分领区有时要求已付款机票，递签前以该领区官网要求为准。

完成后用户确认 → 勾掉 → 进 5c。

**5c: 酒店预订单**

向用户说明（须含全部要点）：
- 酒店去携程 / Agoda / Booking 等任意平台都行，筛选"免费取消"或"先用后付"，下单后下载确认单。
- 酒店城市和日期必须跟行程单一模一样。
- 可问用户：要列出每个城市需要什么日期的酒店吗？

完成后用户确认 → 勾掉 → 进 Category 6。

---

### Category 6: 解释信 + 已婚附加 + 预约凭证

**6a: 解释信**

参考 `references/cover-letter.md`。向用户说明（须含全部要点）：
- 可以帮你写，直接显示在聊天里，再给一份 Word 可编辑版本（无 Word 库则退化为 .txt/.md）。
- 解释信最重要的是真实，模板只是骨架。建议先告诉三件事：钱的真实来源（含大额转账真实原因）、国内拴着你的东西、去欧洲的真实目的。
- 这些写清楚再润色成英文。

用户提供信息并确认后 → 生成解释信 + Word 文件 → 勾掉 → 进 6b。

**6b: 已婚附加**

仅当清单含此项。向用户说明：已婚的话准备结婚证复印件 + 英文翻译件（网上有模板）；未婚说"跳过"。

用户确认 → 勾掉或跳过 → 进 6c。

**6c: 预约凭证**

向用户说明：
- 签证申请表：签证中心网站填完表生成的 PDF，打印。
- 签证中心预约单：预约成功后的确认单，打印。

用户确认 → 勾掉 → Set current_step = review → 进 Step 6。

---

## Step 6: 最终核对

**current_step = review**

向用户逐项核对（须含全部要点）：
1. 护照有效期超过离开申根区后 3 个月？≥2 空白页？**签发不超过 10 年？**
2. 旧护照复印了？（没有跳过）
3. 身份证、户口本（整本封面到最后一页）都复印好了？
4. 身份证明材料准备齐了？签字+公章都有？（未成年人：出生证明/父母同意书公证+海牙认证都办了？）
5. 保险日期覆盖全程？保额≥3 万欧元？彩打前两页？
6. 银行流水最近 3-6 个月？余额按预算公式够？**没有临时大额转账**？
7. 行程单里申请国天数最长？
8. 机票预订单出入境城市呼应行程单？姓名跟护照一致？（德国注意是否要求付款）
9. 酒店预订单日期城市跟行程单一致？姓名跟护照一致？
10. 解释信讲清楚了资金来源+回国约束力+旅行目的？
11. 已婚的话：结婚证+英文翻译件准备好了？
12. 签证申请表和预约单都打印了？
13. 所有文件没有订书钉或回形针？按顺序叠好了？

全部确认 → 用户说"全部好了" → Set current_step = done → 进 Done。

---

## Done

**current_step = done**

向用户说明（须含全部要点）：
- 全部就绪，可以去递签了。
- 当天提醒：准时到签证中心；文件不要用订书钉或回形针，按顺序叠好；**首次递签需现场录十指指纹**（59 个月有效，12 岁以下免录但仍需到场）；可能会电话核实，照实回答。
- 出签后旅行保险可以退掉。
- 祝顺利出签。

---

## PROGRESS FILE

### 路径

progress.md 写到该 Agent 的用户数据目录下 `schengen-visa-guide/` 子目录，按平台自适应定位（优先读已存在的）：

1. 优先 `~/.claude/skills-data/schengen-visa-guide/progress.md`（Claude Code）；
2. 若 `~/.claude` 不存在，用 `~/.codex/skills-data/schengen-visa-guide/progress.md`（Codex）；
3. 两者都不存在（其他 Agent），退化为 skill 安装目录下 `.data/progress.md`。

目录不存在则创建。**不要写到当前工作目录**，避免跨会话找不到。

### Rules

1. 回复用户**之前**先更新 progress.md。
2. 每次步骤切换都更新 current_step。
3. 用户确认一项立即勾掉。

### New User Template

```markdown
# Schengen Visa Progress

current_step: identity
身份：待确认
目标国家：待确认
```

Step 2 后插入与身份匹配的完整 checklist（从 references/checklist.md 摘取）。

---

## REFERENCE FILES

| Need | Read |
|---|---|
| 完整材料清单 + 预算公式 + 时间费用 + 未成年人 | `references/checklist.md` |
| 各国网址 + 领区判定 + 录指纹 + 90/180 | `references/country-notes.md` |
| 解释信模板 | `references/cover-letter.md` |
| 行程单生成规则 | `references/itinerary.md` |

---

## HARD CONSTRAINTS

1. 中文输出（面向用户）。
2. 一次一类，不要一次性甩出多类。
3. 回复前先更新 progress.md。
4. 会话开始先读 progress.md。
5. 敏感材料 = 只提醒，绝不生成或索要。
6. 非敏感材料（行程单、解释信）= 可生成。
7. 非申根国 = 说"这不是申根国家，这个 skill 覆盖不了。"
8. 文件不要订书钉或回形针。
9. 申请国天数必须在行程单里最长。
10. 话术用自然语气表达，**须包含各步列出的全部要点**，但不必逐字照抄模板。
11. 流程固定：Step 1 → 2 → 3 → 4 → 5 → 6，除非用户明确要求偏离。
12. 不追问婚姻、年龄、收入等个人隐私。条件性材料已在清单里用"如有/已婚者准备，XX 跳过"标注。天数是为算预算而问，不属隐私。
13. 涉及具体数字（费率、每日参考金额等）时，附"以官网为准"。

