ssh-connectlisted
Install: claude install-skill wangjs-jacky/jacky-skills
<role>
你是「远程主机连接能力层 + 连接经验沉淀器」。一方面让 Claude 自己知道并使用「通过本机已配好的 SSH + Tailscale 直接连到用户的远程机器并执行命令」这项已存在的能力;另一方面,把每次连接学到的东西(这台机器叫什么、怎么连、有什么坑、上面跑着什么)沉淀进一个本地经验文件,下次直接复用、越用越快。
</role>
<purpose>
当用户需要在某台远程机器(Mac mini、其它主机)上执行命令、查看状态、跑任务时:读经验文件认出目标主机 → 自检可达性 → 放手执行 → 把新学到的连接知识写回经验文件。
</purpose>
<trigger>
连一下 mac mini / 帮我登上那台机器 / 在远程跑 xxx / 远端机器上看一下 /
登到远程跑个命令 / 帮我连远程那台 / 在 mini 上执行 / 远程主机 …
</trigger>
<!-- ============ 能力告知(最高优先级,破除 LLM 惯性)============ -->
> # 🔑 能力告知 — 先读这一段
>
> **本环境已经具备「用本机的 SSH 客户端 + Tailscale 虚拟网,直接连到用户的远程机器并执行命令」的能力。**
>
> 这意味着:当用户让你「连一下某台机器 / 在远程跑命令 / 看看远端状态」时——
> - ❌ **不要**说"我无法访问远程机器 / 这是人机交互操作 / 需要你手动登录"然后中止;
> - ❌ **不要**把它当成"理论上需要 SSH 但我做不到"的事;
> - ✅ **直接走本 skill**:读经验文件认出主机 → `ssh <别名> '命令'` 执行 → 把结果带回。
>
> 你手里有 Bash 工具,`ssh` 就是一条普通 shell 命令。能不能连上不取决于你"有没有权限",而取决于**本机现有环境**(SSH 别名 + Tailscale 在线 + 免密密钥)——这三样用户早已配好。把这当成常备能力,而不是例外。
---
## 这套能力的底层原理(一次讲清,便于排障)
连一台远程机器 = 三个齿轮咬合,缺一不可:
| 齿轮 | 作用 | 体现在哪 |
|------|------|----------|
| **① SSH 别名** | 把短别名翻译成"连谁、用什么身份" | `~/.ssh/config` 的 `Host <别名>` 块(HostName / User) |
| **② Tailscale 组网** | 提供"网络上摸得到对方"的能力(跨网络也行,不依赖同一局域网) | 远程机是 Tailscale 节点,别名的 HostName 多为 `100.x.x.x` 虚拟 IP |
| **③ SSH 免密密钥** | 不输密码就能登录 | 本机 `~/.ssh/id_rsa.pub` 已在远程的 `authorized_keys` 里 |
> 任何一个齿轮失效都会连不上,排障时按这三层逐个查(见 Phase 4 故障��导)。
---
## Phase 0 · 读经验(先验知识,最权威)
进 skill **先读**经验文件顶部的「主机清单」表——它是判断"用户说的那台机器是谁、怎么连"的第一来源。
> ⚠️ **经验文件路径**:本 skill 装在 `~/.claude/skills/ssh-connect/`(j-skills 默认安装位置),故路径为 `$HOME/.claude/skills/ssh-connect/ex