tonydzi/second-brain-starter-kit/whatsapp-pair
Claude Code and agent skill by tonydzi/second-brain-starter-kit
- community
Checking that the SKILL.md file is still in the repository.
Привязать (или ПЕРЕпривязать) WhatsApp к этой машине — единственный шаг, который нельзя сделать за Антона, потому что… Триггеры «/whatsapp-pair», «/wa-pair», «подключи ватсап», «привяжи ватсап», «спарь ватсап», «ватсап отвалился», «ватсап не спарен», «перепривяжи whatsapp», «покажи QR ватсапа», «второй ватсап», «два ватсапа», «ватсап 2 аккаунта», «pair whatsapp», «relink whatsapp»
Install
npx vskill@latest install tonydzi/second-brain-starter-kit/whatsapp-pairSKILL.md
OBJECTIVE: за один заход вернуть WhatsApp из RED в GREEN. Мою часть (мост, QR, страница, детект, проверка) делаю сам; от Антона нужен ровно один физический жест — поднести телефон к экрану. Финал = не «страница открылась», а зелёный вердикт независимого пробника.
Почему скилл вообще есть (замеры, не теория)
- ⚠️ 21.09.2026, замер хаба: `read-only mode` — это НЕ «ватсап отвалился», и перепривязка тут не лечит. Оба MCP (
mcp__whatsapp__*иmcp__whatsapp2__*) вернули «another process holds the WhatsApp connection» с PID 47960 и 44656 — то есть рельса ЗАНЯТА чужой живой сессией, мост при этом здоров. Чужие PID НЕ убиваем. Прежде чем звать Антона с телефоном, отличи одно от другого:python ~/.claude/scripts/wa_broker.py --status. - ⚠️ Порт owner-брокера = 8791, а не 8768. Документированный в старых сидах
127.0.0.1:8768на хабе закрыт (Test-NetConnection→ False), а owner слушает на 8791 и отвечает{"error":"Unauthorized"}на голый GET; токена в открытых конфигах (~/.claude/*.json,scripts/*.py) нет, значит HTTP-дверь без токена бесполезна и «порт закрыт» про 8768 — не доказательство смерти рельсы. Проверять надо ОБА порта и называть в отчёте именно поверхность. - ⚠️ LEGACY stdio инстансы = лок-война, а не один занявший. 20.09 их было 2, 21.09 — 34. Растущий список в
--statusозначает, что процессы-сироты плодятся и отбирают лок друг у друга; это отдельный класс поломки (кандидат в reaper), а не повод перепривязывать аккаунт. - 01.07 → 05.08.2026 мост стоял мёртвым 35 суток:
auth_info/creds.jsonпуст, входящие не
доходили (возможны потерянные лиды). Рецепт починки каждый раз добывался заново — по кускам из трёх заметок и двух скриптов. Теперь он один и исполняемый.
- Терминальный ASCII-QR на Windows = мозаика, телефон её не берёт (видно в
server.logживьём). - QR живёт ~20с. Антон сканировал протухший и получал «check your connection and try again
later» — это НЕ проблема сети, это старый код. Отсюда страница, которая сама берёт свежий.
- Антон не работает в терминале: ему нужно окно, куда просто смотришь.
Движок (вся логика там, скилл — тонкая обёртка)
python "$USERPROFILE\.claude\scripts\wa_qr_live.py" · паспорт: ~/.claude/scripts/docs/wa_qr_live.md
| команда | что делает | |
|---|---|---|
--check | диагноз без побочек: привязан? среда цела? сколько живых клиентов? | |
| (без флагов) | боевой заход: мост + QR + живая страница http://127.0.0.1:8799 | |
--selftest | проверка детали без телефона (гоняется в регресс-сетке) | |
--heal-patch | вернуть вендору печать сырого QR (её сносит любой npm update) | |
--force | погасить чужих whatsapp-клиентов и стартовать всё равно | |
--account wa2 | работать со ВТОРЫМ аккаунтом (комбинируется с любой командой выше) |
Коды выхода: 0 привязан · 1 таймаут/QR не пришёл · 2 уже привязан · 3 среда не готова · 4 крэш. Дефолтный таймаут 900с; --port если дефолтный занят.
Два аккаунта на одной машине (с 03.09.2026)
Вендор кладёт ВСЁ состояние (auth_info, store, lock) под $XDG_DATA_HOME/whatsapp-mcp, поэтому второй аккаунт = тот же вендор с другим XDG. Изоляция полная: свой линк, свой лок, AUTH_KEY_DUPLICATED МЕЖДУ аккаунтами невозможен — блокирует только второй клиент ТОГО ЖЕ аккаунта (движок различает их по argv-маркеру --wa-account=<имя>).
| main | wa2 | ||
|---|---|---|---|
| auth/store | ~\.local\share\whatsapp-mcp\ | ~\.local\share\wa-wa2\whatsapp-mcp\ | |
| страница QR | порт 8799, ~\.claude\whatsapp-mcp\ | порт 8809, ~\.claude\whatsapp-mcp-wa2\ | |
| MCP-сервер | whatsapp | whatsapp2 (env XDG_DATA_HOME зашит в .claude.json) | |
| пробник | wa_probe.py --json | XDG_DATA_HOME=$USERPROFILE/.local/share/wa-wa2 python wa_probe.py --json |
Спаривать оба можно ПАРАЛЛЕЛЬНО: две страницы на двух портах, Антон сканирует каждую своим телефоном/аккаунтом. Патч QR_RAW один на двоих (общий dist вендора).
Ход работы
Шаг 0. Диагноз — до всякой стройки.
привязан : ДА→ скан НЕ нужен. Молчание канала при живых кредах — это другая болезнь
(демон/лок/вендор), иди в wa_probe.py --json и wa_broker.py --status, не гоняй Антона за телефоном.
среда : ...патч...→ сперва--heal-patch, потом заново. Без патча QR виден только кашей.живых клиентов : N>0→ второй клиент на одном линке даёт AUTH_KEY_DUPLICATED и рвёт
привязку у всех. Гаси их (или --force), но сперва пойми, кто это: node с живым родителем-claude.exe — легальная сессионная копия, а не зомби.
Шаг 1. Спроси, телефон в руках? Коды сгорают по одному каждые 20с, окно 15 минут. Запускать «на всякий случай» = жечь цикл впустую. Одна строка: «телефон рядом? запускаю».
Шаг 2. Подними страницу.
Запускать в фоне (run_in_background), иначе блокирует сессию на весь скан. Скрипт печатает адрес страницы. Дальше — обязательно доведи картинку до глаз Антона, а не просто дай URL:
- открой
http://127.0.0.1:8799в браузере (preview) и дай скриншот — канон §2.5 «убедись,
что он видит»;
- назови вслух путь
%USERPROFILE%\.claude\whatsapp-mcp\index.html— ссылки у Антона не кликаются; - инструкция на самой странице уже написана (Настройки → Связанные устройства → Привязка устройства).
Шаг 3. Жди и следи. Страница сама показывает поколение кода и переключается на «готово». Со стороны сессии смотри status.json: state=QR + растущий generation = живой цикл; generation не растёт больше минуты = мост встал, смотри server.log.
Шаг 4. Проверь ЧУЖИМ прибором (обязательно). Свой же скрипт не считается доказательством — сторож не живёт в том, что сторожит:
status:"GREEN" = готово. RED с «МОЛЧИТ N суток» сразу после привязки — нормально: креды есть, а свежих сообщений ещё нет; перепроверь после первого входящего, не объявляй победу заранее.
Шаг 5. Прибери верстак. Фоновый процесс сам гасит мост и не оставляет клиентов. Проверь --check → живых клиентов : 0. Если привязка удалась — сними задачу 10-Tasks/task-2026-08-05-wa-qr-relink.md и пни connector-health-daily, чтобы табло позеленело.
Границы
- Скан = руки Антона. Обойти нечем: не пароль из store и не OTP. Если он НЕ у экрана хаба —
это не «жди», а другая рельса: node "$USERPROFILE\.claude\scripts\wa_pair.mjs" <телефон без +> просит у WhatsApp 8-значный код (телефон → Связанные устройства → «Связать по номеру телефона»). Код доезжает текстом в Telegram, QR — нет. Страница для этой рельсы не нужна.
- Ничего наружу. Скилл не шлёт ни одного сообщения в WhatsApp; привязка устройства обратима
(телефон → Связанные устройства → выйти) и не Tier-2.
- Не чинит доставку. Спаренный мост ≠ работающая рассылка: тем занимается
wa_broker.py
(один владелец линка на машину) и связка демонов MCP.
Грабли, за которые уже платили
npm updateсносит патчQR_RAW_BEGIN→ QR исчезает молча.--checkэто ловит.terminate()/kill()на Windows не валит node надёжно → накапливаются клиенты → следующий
заход ловит AUTH_KEY_DUPLICATED. Движок гасит через taskkill /F /T.
- stdio-сервер гасит сам себя, как только закрыт stdin. Движок держит трубу открытой, поэтому
отдельный keepalive.js больше не нужен.
- «Профиль отвечает, чаты видны» ≠ мост жив: это локальный кэш, он врал нам 26 дней.
Доказательство живости = свежесть данных + наличие кредов, и только оно.
Канон: память [[whatsapp-mcp-integration]] (стек, пути, патчи), [[whatsapp-dead-since-july-and-watchdog-lied]] (почему сторож молчал), [[hub-connectors]]; CLAUDE.md §2.5 (покажи экран), §5.5 (сторож), §5.8 (тест+док+счётчик).
<!--kit-footer-->
Like this skill? It is part of second-brain-starter-kit: the second brain we built for ourselves and run every day at Palo Alto AI Research Lab. Install the whole set with npx skills add tonydzi/second-brain-starter-kit. Everything is open source and free, so take what you need.
Flagships worth a look on their own: secondop-panel (a second opinion from a panel of external models), claude-memory-tidy (stop your agent's memory from rotting), telegram-mcp-kit (your own Telegram over MCP in about 15 minutes).
Author: Anton Dziatkovskii, Palo Alto AI Research Lab. Telegram @tonydzi - WhatsApp +1 341 222 9178 - X @Tony_Stef_
Engineers: want to test-drive this setup? Message me. I hand out free starter seeds to engineers who test and report back, and custom skill requests are welcome.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/whatsapp-pair/SKILL.md
Popularity
- Repository stars
- 8
- Repository forks
- 2
- 7-day trend score
- 11
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/tonydzi/second-brain-starter-kit/whatsapp-pair)