card-refresh
Invoked by cron (or manually) to refresh the widgets on the ai-desk-card e-ink display with fresh data. Reads the current widget…
Onboard a user setting up AI Desk Card for the first time, or after moving to a new machine, plugging the device into a new network, or after a firmware update. Detects daemon state, USB / BLE / Wi-Fi connection, firmware version, and mDNS visibility — then walks the user
Claude Code
$ npx -y skills add op7418/ai-desk-card --skill card-onboard --agent claude-code
Codex
$ npx skills add op7418/ai-desk-card --skill card-onboard -a codex -y
Cursor
$ npx skills add op7418/ai-desk-card --skill card-onboard -a cursor -y
Gemini CLI
$ npx skills add op7418/ai-desk-card --skill card-onboard -a gemini-cli -y
GitHub Copilot
$ npx skills add op7418/ai-desk-card --skill card-onboard -a github-copilot -y
OpenCode
$ npx skills add op7418/ai-desk-card --skill card-onboard -a opencode -y
Windsurf
$ npx skills add op7418/ai-desk-card --skill card-onboard -a windsurf -y
name: card-onboard description: | Onboard a user setting up AI Desk Card for the first time, or after moving to a new machine, plugging the device into a new network, or after a firmware update. Detects daemon state, USB / BLE / Wi-Fi connection, firmware version, and mDNS visibility — then walks the user through whatever's missing (install firmware, plug USB, pair BLE, provision Wi-Fi). Use whenever the user says "first-time setup" / "刚拿到设备" / "卡片没反应" / "刷固件" / "怎么连卡片" / "ai-desk-card 连不上". trigger_keywords: - card onboard - 入职 - 第一次用 - first-time setup - 刷固件 - 怎么连卡片 - ai-desk-card 连不上 - 配对 - 配 wifi allowed-tools: - Bash - Read
把用户从"刚拿到设备/啥都没装"带到"四个 widget 在屏上、Wi-Fi 在线、推帧 0.2 秒到位"。
次拿全所有状态。
现在去查串口..."。不要静默操作。
1-32 秒,BLE 命令通但 frame 不通(已知问题)。
bash $CLAUDE_PLUGIN_ROOT/skills/card-onboard/scripts/probe.sh
输出结构(JSON):
{
"daemon": { "running": bool, "pid": int|null },
"transport": { "connected": bool,
"type": "SerialTransport|BLETransport|WiFiTransport|null" },
"firmware": { "our": bool, "note": str, "banner": str|null },
"serial_ports": [ "/dev/cu.usbserial-..." ],
"mdns_peer": { "ip": "192.168.x.y", "port": 9880,
"txt": { "fw": "0.8.0", "proto": "1" } } | null
}`firmware.our=true` = 设备上跑的是我们的固件(daemon 发了 `cmd:owner` 2.5 秒内收到 `ack:owner`)。 `mdns_peer != null` = **设备已经在 LAN 上播 Wi-Fi**,这是最理想的状态。
最理想状态被错过了。设备已在 Wi-Fi,但 daemon 没用 Wi-Fi。告诉用户:
> 设备在 Wi-Fi `<ip>` 已上线。你 daemon 没用它,估计是之前没重启过 daemon。
跑:
/card-stop && /card-start
回到 probe,应该看到 `transport.type == "WiFiTransport"`。
Daemon 没跑。跑 `/card-start`(自动选 Wi-Fi > USB > BLE)。等 1-2 秒重新 probe。
设备完全离线 — 没插 USB、Wi-Fi 也没起来。可能场景:
USB 把 daemon 连起来,再走 BLE pair → `/card-wifi-setup` 喂凭据。让 用户插一条 USB-C **数据线**(注意不是充电线)。
网。让用户检查 Wi-Fi 是不是手机热点或公司客网。
USB 端口在但 daemon 没接上。最常见原因:上次 daemon 没释放干净,或者 M5Paper 那一头 USB 还在 boot。跑:
/card-stop && /card-start
还不行 → 给我看 probe + `tail -20 "${TMPDIR:-/tmp}/ai_desk_card_daemon.log"`。
USB 通了但固件不是我们的(裸板 / M5 出厂 demo / 旧 buddy 固件)。问:
> 设备已连接,但运行的不是 AI Desk Card 固件。要现在刷上吗? > (刷固件会清掉设备上的其他程序,30 秒内完成)
用户同意 → `/card-install flash`,等 5 秒重新 probe。
固件就位但 Wi-Fi 没配过。强烈推荐配 Wi-Fi(之后单 widget 0.2 秒)。让 用户给出 SSID + 密码:
> 设备就绪。要不要现在配 Wi-Fi?这样以后推 widget 0.2 秒一帧,比 USB 快 100 倍。 > 告诉我 SSID 和密码,我帮你写到设备 NVS(凭据只存设备本地,不进 git)。
收到凭据 → 跑:
/card-wifi-setup "<SSID>" "<密码>"
等 15 秒重新 probe,看到 `mdns_peer.ip` → 成功。
如果用户不想配 Wi-Fi("只是想看看效果"),直接进 **分支 F**。
✅ 一切就位。问用户:
> 推一组默认 widget 上去看看?默认布局: > top-left = weather, top-right = ai-status, > middle = focus, bottom = todo
同意 → 切到 **card-widget** skill。
USB / Wi-Fi 都不想用的场景。**注意:BLE 推 widget 数据不稳**(已知问题, 小命令通、大块数据 device 端 onWrite 不触发)。提醒用户后:
1. 拔 USB,daemon 自动 fallback 到 BLE 2. `/card-stop && /card-start` 3. daemon 自动扫描 `Card-*` 设备 → 1-2 分钟连上 4. 重 probe → `transport.type == "BLETransport"` 5. 推 widget 失败时回到此分支建议配 Wi-Fi
限。**Wi-Fi 是 0.2 秒**。强烈建议配 Wi-Fi。
池满电时也会显示 USB 模式,几分钟后会回归正常。
跑 `/card-sleep` 推送名片帧。
如果用户卡某一步:
bash $CLAUDE_PLUGIN_ROOT/skills/card-onboard/scripts/probe.sh
tail -30 "${TMPDIR:-/tmp}/ai_desk_card_daemon.log"
ioreg -p IOUSB | grep -i 'usb\|m5\|silab\|ftdi' | head -10把这些汇集给用户、问要不要发 issue 到 https://github.com/op7418/m5-paper-buddy
🌏 English version: README.en.md 一个适配 Claude Code / Codex 等 Agent 的桌面副屏 Skill。把 M5Paper V1.1 4.7 寸墨水屏立在显示器旁边,由 AI Agent 推送 widget:天气、日程、todo、PR 队列、AI 状态、休息提醒…… 装上 Skill 后,烧固件 / 配 Wi-Fi / 推内容 / 设置定时全部由 Agent 引导,你不用自己跑一行 pio 或 curl。
Invoked by cron (or manually) to refresh the widgets on the ai-desk-card e-ink display with fresh data. Reads the current widget…
Push live data to the user's ai-desk-card M5Paper e-ink companion display. Use whenever the user asks to show todos, calendar,…
Walk a user through provisioning Wi-Fi on their AI Desk Card device. After provisioning, device joins the user's home Wi-Fi,…
Personalized audit that teaches the advanced Paradev (formerly Superset) features the user isn't using yet (automations, parallel…
Direct actions on one Orchestrator session or PR: stop or interrupt, resume, merge a PR, start a review, screenshot a session's…
Your capability catalog — read this at boot. Lists the temporal date-range skills and the external integrations (reached via the…