Lov Clash Tun Doctor logo

Lov Clash Tun Doctor

Organization
lovstudio
lov-clash-tun-doctor

Diagnose and repair application connectivity failures caused by Clash Verge Rev TUN routing, rule precedence, stale runtime state, proxy timeouts, or unusable IPv6 paths. Trigger for symptoms such as WeChat images failing to send, Moments images loading slowly, an app hanging after TUN is enabled, or requests unexpectedly matching DIRECT/proxy rules. Also trigger when the user mentions "Clash TUN 排障", "微信图片发不出去", "朋友圈图片加载慢", "修复微信 TUN 网络", or "diagnose Clash TUN app connectivity".

Overview

Publisherlovstudio
Repositoryskills
Skill namelov-clash-tun-doctor
Stars
67
Forks
17
Bundled files
6
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 6 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by lovstudio on GitHub. Read the source before you install it.

Installation

Install the Lov Clash Tun Doctor AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/lovstudio/skills.git /tmp/skills
mkdir -p .claude/skills
cp -r /tmp/skills/skills/clash-tun-doctor .claude/skills/lov-clash-tun-doctor
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Lov Clash Tun Doctor in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Lov Clash Tun Doctor on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Lov Clash Tun Doctor is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Clash 网络医生 · Clash Network Doctor

Evidence-first diagnosis and reversible repair for application networking failures behind Clash Verge Rev TUN mode.

When to Use

  • An application works without TUN but fails, stalls, or loses media with TUN.
  • WeChat text works while image uploads or Moments images fail.
  • A rule change makes the symptom worse or the app remains stuck on Loading.
  • The subscription says ipv6: false, but runtime traffic still uses IPv6.
  • Clash logs contain no route to host, context deadline exceeded, or an unexpected rule/strategy for the affected process.

Do not use this skill for generic subscription acquisition, node purchasing, or bypassing organizational network policy.

Workflow (MANDATORY)

Step 0: Resolve the skill and Clash data directories

Resolve SKILL_DIR from the installed skill context. For manual execution:

bash
export SKILL_DIR="/path/to/lov-clash-tun-doctor"

The CLI resolves the Clash Verge Rev data directory in this order:

  1. --data-dir
  2. SKILL_CLASH_TUN_DOCTOR_DATA_DIR
  3. macOS Clash Verge Rev default under ~/Library/Application Support/

Never hard-code a user's home directory.

Step 1: Diagnose before proposing a rule

Run the read-only command first:

bash
python3 "$SKILL_DIR/scripts/clash_tun_doctor.py" diagnose --app wechat

Report concrete evidence from all available layers:

  • App-level config.yaml overrides.
  • Generated clash-verge.yaml top-level and DNS IPv6 values.
  • Runtime /configs, /rules, and /connections through Mihomo's Unix socket.
  • Recent service-log failures for the target application.

Treat screenshots and runtime state as truth. A rule saying DIRECT does not prove the connection succeeded.

Step 2: Choose the narrowest repair

Use references/troubleshooting.md to map evidence to a repair. For the proven WeChat pattern, use the built-in repair:

bash
python3 "$SKILL_DIR/scripts/clash_tun_doctor.py" fix-wechat

This is a dry run. It previews:

  • Direct rules for the WeChat processes and media domains.
  • Disabling the app-level IPv6 override that can supersede subscription and extension settings.
  • The exact files that would be backed up and changed.

Do not route the whole application through a proxy merely because direct media failed. First check proxy health and IPv6 errors; a proxy timeout can turn one failed image into a fully stuck application.

For a browser site or application with multiple dependency hosts, generate one evidence-backed DIRECT list instead of adding domains one by one:

bash
python3 "$SKILL_DIR/scripts/clash_tun_doctor.py" direct-list \
  --app miracleplus \
  --host apply.miracleplus.com \
  --output ./miracleplus-direct.yaml

The command reads active connections and recent rotated service logs, deduplicates hostnames, and includes only:

  • Hosts explicitly supplied with --host.
  • Hosts previously observed through a non-DIRECT route.
  • Hosts already maintained as explicit DIRECT rules.

Hosts observed only through a healthy DIRECT route are reported as ignored instead of bloating the explicit list.

Step 3: Apply only with user authorization

For a DIRECT list, preview first, then persist and hot-load it:

bash
python3 "$SKILL_DIR/scripts/clash_tun_doctor.py" direct-list \
  --app miracleplus \
  --host apply.miracleplus.com \
  --apply

This path must merge with existing prepend rules, create a timestamped backup, update the generated config, hot-load Mihomo through its Unix socket, and verify every listed host as an exact DOMAIN -> DIRECT runtime rule. Keep Clash Verge running throughout this rule-only flow.

For the specialized WeChat IPv6 repair, run:

bash
python3 "$SKILL_DIR/scripts/clash_tun_doctor.py" fix-wechat --apply

The command must:

  1. Stop Clash Verge before editing its generated global settings.
  2. Create a timestamped backup and manifest.
  3. Set the global IPv6 override to false.
  4. Prepend persistent WeChat DIRECT rules in the current profile's rule file.
  5. Restart Clash Verge and verify final/runtime state.

If verification fails, report the backup path and do not claim success.

Step 4: Restart the affected application and verify the user path

Close stale connections or restart the affected application. Re-run diagnosis:

bash
python3 "$SKILL_DIR/scripts/clash_tun_doctor.py" diagnose --app wechat --json

For the WeChat IPv6 failure, success requires all of the following:

  • Runtime ipv6 is false.
  • WeChat rules resolve to DIRECT.
  • New WeChat destinations are IPv4.
  • New logs no longer show WeChat no route to host errors.
  • The user can send an image and load Moments images.

Step 5: Roll back when needed

bash
python3 "$SKILL_DIR/scripts/clash_tun_doctor.py" rollback --apply

Rollback restores the newest backup by default. Never delete backups automatically.

CLI Reference

Command / optionDefaultDescription
diagnoseRead configuration, runtime state, connections, and logs.
direct-listDiscover, export, or apply an evidence-backed DIRECT host list.
fix-wechatdry runPreview or apply the proven WeChat repair.
rollbackdry runPreview or restore the latest repair backup.
--data-dir PATHautoClash Verge Rev application data directory.
--socket PATH<data-dir>/mihomo.sock fallbackMihomo controller Unix socket; standard /tmp/verge/verge-mihomo.sock is auto-detected.
--app NAMEwechatApplication filter used by diagnosis.
--host HOSTSeed an exact host in a DIRECT list; repeatable.
--output PATHSave a Mihomo classical rule-provider YAML list.
--log-limit N4000Recent lines inspected in each rotated service log.
--applyfalseAuthorize filesystem changes and restart/restore actions.
--no-reloadfalsePersist a DIRECT list without runtime hot-load.
--no-restartfalseApply changes without restarting Clash Verge.
--jsonfalseEmit machine-readable diagnosis output.

Dependencies

Python 3.8+ standard library only.

Runtime context (shared)

运行前读取本 Skill 包的 skill.yaml,由宿主提供 skill-runtime/v1 上下文。字段解析顺序为:当前请求、项目上下文、个人 Preferences、品牌 Profile、通用默认值。

  • 只使用 Manifest 声明的字段;Profile 保存公开品牌事实,Preferences 保存个人工作偏好。
  • required: true 字段缺失时,按 Manifest 的问题配置向用户提出一个聚焦问题;用户明确同意后再保存回答。
  • 报错提供可复制的 context_id、字段路径与来源,诊断内容避开秘密、完整私人路径和原始配置。

通用反馈闭环

用户在 Skill 驱动任务中提出修改意见时,继续当前产物前必须执行:

  1. 先判断意见是 task-specific(仅本次)还是 reusable(可跨任务复用)。
  2. task-specific 只修改当前任务,不改 Skill。
  3. reusable 先确定作用域:领域规则先更新对应 canonical Skill;适用于所有 Skill 的规则先更新共享规范。
  4. 完成规则更新、版本、lint 与分发核验后,再把修改应用到当前任务。
  5. reusable 修改会使此前的“确认”“继续”“发吧”失效;完成当前产物修改和回读后必须停下,等待用户下一步指示,不自动进入发布、提交或其他外部写入。

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Lov Clash Tun Doctor AI skill do?

Diagnose and repair application connectivity failures caused by Clash Verge Rev TUN routing, rule precedence, stale runtime state, proxy timeouts, or unusable IPv6 paths. Trigger for symptoms such as WeChat images failing to send, Moments images loading slowly, an app hanging after TUN is enabled, or requests unexpectedly matching DIRECT/proxy rules. Also trigger when the user mentions "Clash TUN 排障", "微信图片发不出去", "朋友圈图片加载慢", "修复微信 TUN 网络", or "diagnose Clash TUN app connectivity".

Why use Lov Clash Tun Doctor on TypingMind?

Because you install it once and use it with any model. Lov Clash Tun Doctor is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Lov Clash Tun Doctor in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/lovstudio/skills/tree/main/skills/clash-tun-doctor. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Lov Clash Tun Doctor?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Lov Clash Tun Doctor?

As many as you like. As long as a model supports skills, you can use Lov Clash Tun Doctor with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Lov Clash Tun Doctor AI skill free?

Yes. It is published on GitHub by lovstudio under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇