FUCK TEAMBUILDING// INTERACTIVE
PROGRESS
LESSON 5 COURSES
ME
FUCK TEAMBUILDING//5 COURSES

FUCK TEAMBUILDING

платформа для психов, которые в одиночку меняют мир (ну не совсем в одиночку — с ИИ всё-таки)
COURSE_01//SOLO
SOLOPRENEUR CAMP
От идеи до масштабирования продукта: 4 воркшопа, 17 уроков, 15 тренажёров.
0%
17 LESSONS · 0/17 DONEначать →
COURSE_02//AI-WORK
AI для реальной работы
Практический AI-воркшоп: процессы, автоматизация рутины, свой софт, агенты и локалки. 5 воркшопов, 13 уроков.
0%
13 LESSONS · 0/13 DONEначать →
COURSE_03//CRMKT
КРИЕЙТОР-МАРКЕТИНГ для солопренёров
Как солопренёру стать креатором: ресёрч аудитории, сторителлинг, личность и контент-конвейер. 3 воркшопа, 8 уроков.
0%
8 LESSONS · 0/8 DONEначать →
COURSE_04//UBT
УБТ-машина
Первые пользователи без бюджета: Reddit, Threads, Telegram, виральные форматы — пошагово. 3 воркшопа, 7 уроков.
0%
7 LESSONS · 0/7 DONEначать →
COURSE_05//AIDEV
ИИ В ПРОД
Для тех, кто пишет код руками: границы доверия, поведенческое тестирование, секреты, slopsquatting, лицензии и TDD с ИИ. 4 воркшопа, 11 уроков.
0%
11 LESSONS · 0/11 DONEначать →
ЖЕЛЕЗО//HARDWARE

Claude Code + твои девайсы

Практические памятки: как заставить Claude Code работать с реальным железом — достать данные и писать прошивку, не наступая на грабли, которые не ловятся сборкой.
H/W_01HiDock AI + claude codeДостать аудио с диктофона HiDock и получить текст со спикерами — руками Claude Code.[ ОТКРЫТЬ ]
Как достать аудио со своего диктофона HiDock и получить текст — руками Claude Code. Программировать не нужно: вставляешь один промпт и следуешь шагам. Записи превращаются в текстовые файлы с разбивкой по спикерам и таймкодами, оригинальное аудио сохраняется, с устройства ничего не удаляется.
Рут / взлом устройства не нужен
Никакого рута, джейлбрейка или спецпрошивки. Диктофон общается с компьютером по обычному USB своим штатным протоколом. «Получить доступ» здесь — это всего лишь поставить пару бесплатных инструментов и разрешить Claude Code их запустить. Гарантию это не нарушает, устройство не портит.
Что понадобится · собрать за 5 минут
Mac
компьютер Apple, инструкция под macOS
Диктофон HiDock
модель H1, H1E или P1 + его USB-кабель
Claude Code
установлен на компьютере (claude.com/claude-code)
Ключ AssemblyAI
бесплатный — assemblyai.com → регистрация (можно через Google) → в Dashboard найди API key и скопируй. Держи под рукой, вставишь в шаге 3. Ключ как пароль — лишний раз не свети
Расшифровка через AssemblyAI платная по минутам аудио, но у сервиса есть бесплатный стартовый баланс — на пробу хватит. Языки определяются автоматически (в т.ч. русский), спикеры распознаются.
Шаги
01
Подключи диктофон
Вставь HiDock в Mac USB-кабелем. Если на устройстве есть переключатель — просто чтобы оно было включено.
02
Открой Claude Code
Открой Terminal, создай пустую папку и запусти там Claude Code. Не знаешь как — попроси его самого: «Создай новую папку hidock на рабочем столе и работай в ней».
03
Вставь промпт
Скопируй промпт кнопкой ниже, замени ВСТАВЬТЕ-СЮДА-СВОЙ-КЛЮЧ на свой ключ AssemblyAI и отправь Claude Code. Дальше он всё сделает сам: поставит инструменты, найдёт записи, скачает и расшифрует.
04
Забери результат
Claude Code скажет, где лежат файлы: текстовые .md со спикерами и таймкодами + папка с оригинальным аудио (.mp3). Повторный запуск обрабатывает только новые записи — старые не трогает.
Промпт для Claude Code
Скопируй, замени ВСТАВЬТЕ-СЮДА-СВОЙ-КЛЮЧ на свой ключ AssemblyAI — и отправь Claude Code.
У меня к этому Mac подключён по USB диктофон HiDock (модель H1, H1E или P1). Я не
программист. Пожалуйста, настрой всё сам и преврати мои записи в текстовые
расшифровки. Делай всё за меня, коротко поясняя шаги. Ничего с устройства не
удаляй.

1. Убедись, что установлены Homebrew и libusb (`brew install libusb`) и есть
   Python 3.
2. Склонируй открытый репозиторий с проверенным кодом доступа к HiDock:
   `git clone https://github.com/sgeraldes/hidock-next` в текущую папку. В нём есть
   `apps/desktop/src/hidock_device.py` (класс HiDockJensen) и
   `apps/desktop/src/constants.py` (USB-идентификаторы устройств).
3. Создай Python-виртуальное окружение и установи в него `pyusb`.
4. Напиши скрипт `sync.py`, который:
   - Сам находит подключённый HiDock на USB по вендор-ID (0x10D6 и 0x3887) и
     product-ID из constants.py — не хардкодь одну модель.
   - Подключается через HiDockJensen (libusb-backend, указывающий на dylib libusb
     из Homebrew), получает список записей и для каждой ещё не обработанной:
     - скачивает байты через stream_file. Файлы устройства `.hda` — это на самом
       деле MP3: сохраняй их как `.mp3` без конвертации;
     - отправляет аудио в AssemblyAI: POST /v2/upload (сырые байты) → POST
       /v2/transcript с {"speaker_labels": true, "language_detection": true} →
       опрашивай GET /v2/transcript/{id} пока status не станет completed.
       (language_detection обязателен — без него неанглийское аудио может вернуться
       пустым. Не отправляй language_code вместе с language_detection.)
     - записывает Markdown-файл: короткий фронтматтер (title/date/duration/language)
       и транскрипт блоками `### Speaker X · mm:ss`;
     - отмечает готовую запись в маленьком файле-журнале (леджере), чтобы никогда
       не обрабатывать её повторно.
   - Печатает компактный отчёт (сколько новых / готово / ошибок).
   - Читает ключ AssemblyAI из переменной окружения ASSEMBLYAI_API_KEY.
5. Запусти его, подставив мой ключ: ASSEMBLYAI_API_KEY=ВСТАВЬТЕ-СЮДА-СВОЙ-КЛЮЧ
6. Если устройство не найдено или видишь «health check failed» — попроси меня
   вынуть и снова вставить HiDock, затем повтори. На macOS для USB-команд может
   понадобиться запуск без песочницы.

Когда закончишь, скажи, в какой папке лежат текстовые расшифровки.
Если что-то пошло не так
«Устройство не найдено» / «health check failed»
Вынь кабель, вставь снова, подожди пару секунд и попроси «попробуй ещё раз». USB капризничает при первом обращении — со второй попытки обычно работает.
Claude Code говорит про «песочницу» (sandbox)
Разреши ему выполнить команду без песочницы — под ней доступ к USB заблокирован.
Расшифровка пустая / «no spoken audio»
В записи почти нет речи (тихо/пусто). Это не ошибка — просто нечего расшифровывать.
Просит поставить Homebrew или ключ
Homebrew — бесплатный установщик, можно разрешить. Ключ AssemblyAI — из блока «Что понадобится».
Под капотом. Скрипт читает записи с диктофона по USB (протокол Jensen, библиотека libusb — без прав администратора), сохраняет аудио и отправляет его на распознавание речи, а результат складывает в текстовые файлы. Всё локально на твоём компьютере, кроме самой расшифровки — она идёт через сервис AssemblyAI.
H/W_02Голосовой ассистент на Cardputer ADVНастроить Claude Code, чтобы он писал прошивку и не переизобретал грабли.[ ОТКРЫТЬ ]
Голосовой ассистент на Cardputer ADV. Короткая инструкция: что положить в проект, чтобы AI-агент не переизобретал грабли, на которые ты уже наступил.
В чём вообще проблема
Claude Code сам правит файлы в твоём проекте. Для обычного кода он хорош: написал, запустил, увидел ошибку, поправил. С прошивкой так не работает — агент видит только исходники и то, что печатает консоль. Он не видит устройство: не знает, что микрофон записывает тишину, что карта отвалилась, что клавиатура мертва. Для него всё в порядке: код собрался.

И это главная ловушка. Три самых частых бага на Cardputer ADV — молчащий микрофон, капризная SD-карта и просадка питания — компиляцию проходят молча. Агент отрапортует «готово», а устройство не работает. Поэтому настройка сводится к одному: всё, что нельзя проверить сборкой, надо заранее положить агенту в голову.
Четыре инструмента и когда какой
CLAUDE.md — памятка на стене
Агент читает её каждый раз, когда ты запускаешь сессию. Сюда идёт то, что нужно всегда: как собирать проект и какие правила нельзя нарушать никогда.
.claude/rules/ — справочники на полке
Каждый файл можно привязать к определённым файлам проекта. Открыл агент код аудио — подтянулся справочник по аудио. Так держишь под рукой 30 страниц матчасти, не забивая ими каждую сессию.
.claude/skills/ — готовые команды
Описываешь процедуру в файле один раз, а потом просто набираешь её название через слэш — и Claude делает всё по инструкции. Файл .claude/skills/flash/SKILL.md даёт команду /flash. Название любое, хоть по-русски.
.claude/settings.json — предохранитель
Маленькие скрипты (хуки), которые запускаются автоматически и могут запретить агенту действие.
Памятка — это просьба: агент ей обычно следует, но не всегда (чем длиннее сессия, тем сильнее ранние инструкции вытесняются свежими). Предохранитель — это запрет, он срабатывает всегда. Правило: если нарушение стоит дорого — делай хук, а не абзац текста.
Шаг 1 · памятка (CLAUDE.md)
Держи её короткой — до 200 строк. Чем длиннее файл, тем хуже агент ему следует. Проверка для каждой строки: «если убрать — он ошибётся?» Если нет — убирай. Сам большой справочник в памятку не копируем: он лежит отдельно в docs/, а памятка просто говорит, где искать.
CLAUDE.md
# Cardputer ADV — прошивка «cli ai audio»

## Команды
- Сборка: `~/.platformio/penv/bin/pio run`
- Прошивка: только через /flash
- Проверка на устройстве: /check — обязательна перед «готово»

## Чего нельзя делать никогда
1. Ставить флаг -DBOARD_HAS_PSRAM. У этого чипа PSRAM физически нет.
2. Включать микрофон, не выключив динамик. Они делят одни провода.
   Строго: Speaker.end() → Mic.begin() → запись → Mic.end() → Speaker.begin()
3. Вызывать SD.begin() раньше SPI.begin(40,39,14,12).
4. Держать Wi-Fi включённым во время записи. На батарее это роняет карту.
5. Понижать версии библиотек: M5Cardputer 1.1.0+, M5Unified 0.2.9+, M5GFX 0.2.10+.
   Ниже — устройство не заведётся, причём молча, без ошибки.
6. Переходить на pioarduino / Arduino 3.x. Там сломан захват звука.

## Что значит «готово»
Собралось — это не готово. Готово — это когда прошли /check на живом
устройстве, включая проверку на батарее (не на USB).

## Матчасть
Подробности в docs/CARDPUTER-ADV-FIRMWARE.md. Перед правками аудио,
карты памяти, питания или клавиатуры открой соответствующий раздел
этого файла целиком, а не полагайся на общие знания об ESP32.
Шаг 2 · справочники по темам (.claude/rules/)
Каждый файл начинается с блока paths: — список файлов проекта, при работе с которыми справочник подгрузится. Так же делаешь pins.md (распиновка), storage.md (карта памяти), toolchain.md (сборка, привязать к platformio.ini).
.claude/rules/audio.md
---
paths:
  - "src/audio/**"
---

# Аудио на Cardputer ADV

Микрофон и динамик — это один чип ES8311, и они делят одни и те же провода.
Работать одновременно не могут. Отсюда строгий порядок вызовов
(см. памятку, пункт 2). Побочный эффект: пикнуть во время записи нельзя.

Пишем 16 кГц моно. Не 44100: файл получается почти в три раза меньше,
меньше нагрузка на карту и на Wi-Fi, ниже пиковый ток. Качество не страдает —
распознавание речи всё равно приводит звук к 16 кГц.

Если запись слишком тихая — поднимать усиление микрофона (регистр 0x16,
значения 0x03–0x05) уже ПОСЛЕ вызова Mic.begin(). Не крутить magnification:
это программное усиление, оно поднимает шум вместе с голосом.
Главное правило для распиновки: истина лежит в исходниках библиотек M5, а не в туториалах. Инструкции для обычного Cardputer для ADV частично врут — у него другой звук и другая клавиатура при тех же номерах ножек.
Шаг 3 · готовые команды (.claude/skills/)
Самая нужная — прошивка. После каждой прошивки USB-порт устройства пропадает на несколько секунд — это нормально, так устроен чип. Но агент этого не знает: видит ошибку и начинает «чинить» рабочий код. Строчка disable-model-invocation: true означает «запускает только человек» — прошивка зависит от положения выключателя и кабеля, а этого агент не видит.
.claude/skills/flash/SKILL.md
---
description: Собрать и прошить Cardputer ADV
disable-model-invocation: true
---

PIO=~/.platformio/penv/bin/pio
PORT=/dev/cu.usbmodem2101

1. Собери: `$PIO run`
2. Дождись порта — он пропадает после ребута, это норма, не ошибка:
   `for i in $(seq 1 12); do [ -e $PORT ] && break; sleep 1; done`
3. Залей: `$PIO run -t upload --upload-port $PORT`
4. Снова дождись порта тем же циклом.
5. НЕ запускай `pio device monitor` — он зависает. Читай лог отдельным
   скриптом с таймаутом.
6. Скажи, что прошилось и что написано в первых строках лога.

Если устройство не отвечает: выключатель OFF → зажать кнопку G0 →
воткнуть USB → отпустить. Это делает человек — попроси и жди.
Вторая команда — /check. Прошил устройство, набрал /check — и Claude ведёт тебя по списку проверок. Именно этот список отличает «собралось» от «работает».
.claude/skills/check/SKILL.md
---
description: Проверка новой сборки на живом устройстве
disable-model-invocation: true
---

Проверь по порядку. Пункты со значком 👤 может подтвердить только человек —
останавливайся, спрашивай результат и жди ответа. Не додумывай и не отмечай
их выполненными сам.

1. 👤 Прошилось, устройство загрузилось, на экране видна строка загрузки,
   паники нет.
2. 👤 Карта памяти определилась: тест записи проходит, свободное место
   показывает адекватную цифру.
3. 👤 Запись 10 секунд на 16 кГц: файл появился на карте, открывается,
   звук слышно. Отправка на сервер прошла целиком — в логе сервера
   должно быть «complete», а не «truncated».
4. 👤 То же самое на рабочей частоте записи, если она отличается.
5. 👤 Три записи подряд без перезагрузки — карта не отваливается.
6. 👤 Запись во время отправки предыдущего файла (если это уже реализовано) —
   следим за памятью, устройство не перезагружается.
7. 👤 ВСЁ ТО ЖЕ САМОЕ на батарее, а не на USB. Это главный пункт: на USB
   проблемы с питанием не проявляются. Не пропускать и не предлагать
   пропустить.
8. 👤 Если на карте лежат другие прошивки — они по-прежнему грузятся.
   Перед экспериментами с картой напомни сделать резервную копию
   файла настроек.

Если хоть один пункт не прошёл — задача не закрыта. Не пиши «готово»,
опиши, что именно сломалось, и предложи гипотезу.
Самый ценный тут пункт 7. На батарее микрофон, карта и Wi-Fi одновременно тянут ток, питание проседает, первой отваливается карта — и файловая система бьётся. На USB ты этого не увидишь ни разу.
Шаг 4 · предохранители (хуки)
Простым языком: собирать проект можно свободно, прошивать — только спросив, а форматировать диски и сносить папки нельзя вообще. Последнее не паранойя: агент, разбирающийся со сбойной картой, вполне логично предложит её отформатировать. А там лежат твои данные.
.claude/settings.json
{
  "permissions": {
    "allow": ["Bash(~/.platformio/penv/bin/pio run*)"],
    "ask":   ["Bash(~/.platformio/penv/bin/pio run -t upload*)"],
    "deny":  ["Bash(rm -rf *)", "Bash(diskutil eraseVolume*)"]
  },
  "hooks": {
    "PreToolUse": [{
      "matcher": "Edit|Write",
      "hooks": [{ "type": "command", "command": ".claude/hooks/guard.sh" }]
    }]
  }
}
Сам скрипт .claude/hooks/guard.sh — десяток строк. Он читает, что агент собирается записать в файл, и если находит запрещённое — возвращает код 2, и правка не проходит. Не пугайся синтаксиса — попроси Claude Code написать этот скрипт за тебя, показав ему список запретов из памятки.
.claude/hooks/guard.sh
#!/usr/bin/env bash
content=$(cat | jq -r '.tool_input.content // .tool_input.new_string // ""')

if echo "$content" | grep -q 'BOARD_HAS_PSRAM'; then
  echo "Стоп: у этого чипа нет PSRAM, флаг всё ломает." >&2
  exit 2
fi

if echo "$content" | grep -qE 'M5Cardputer\s*@\s*1\.0'; then
  echo "Стоп: старая версия библиотеки — клавиатура работать не будет." >&2
  exit 2
fi
exit 0
Как выглядит работа
обсудили план → агент правит код → сборка → /flash → /check → записали новое знание в справочник
01
Сначала план, потом код
Особенно в аудио, карте памяти и питании. Там «давай попробуем и посмотрим» стоит битой файловой системы и часа восстановления.
02
Одна правка за заход
Не меняй частоту записи и логику Wi-Fi одновременно — если сломается, не поймёшь, из-за чего.
03
Проверка на батарее обязательна
На USB всё зелёное, проблемы вылезают именно на аккумуляторе. Агент честно предложит этот пункт пропустить как долгий. Не соглашайся.
04
Новое знание — в файл, а не в чат
Выяснил что-то про своё железо — допиши строку в справочник. Иначе через две сессии это забудется.
Чего агент не должен решать сам
Впиши этот список в памятку отдельным разделом:
  • менять версии библиотек или платформу сборки;
  • менять частоту и формат записи;
  • форматировать карту памяти;
  • убирать «лишние» вызовы вроде Speaker.end() — они выглядят избыточно, но это как раз то, без чего микрофон молчит.
Частые ошибки настройки
Скопировать весь справочник в CLAUDE.md
Тридцать килобайт в каждой сессии, и агент начинает хуже слушаться. Справочник — в docs/, ссылки — в правилах.
Написать инвариант только текстом
Работает в большинстве случаев, но не во всех. Дорогие запреты — в хуки.
Считать сборку готовностью
Уже говорили, но это стоит повторить: все главные баги этого устройства компиляцию проходят.
Один длинный сеанс на весь рефакторинг
Контекст переполняется, ранние инструкции вытесняются. Лучше короткие сессии — правила и памятка подгрузятся заново.
С чего начать · 15 минут
mkdir -p .claude/{rules,skills,hooks} docs
cp CARDPUTER-ADV-FIRMWARE.md docs/
claude
Дальше внутри сессии:
  1. /init — Claude сам просмотрит проект и набросает черновик CLAUDE.md. Замени его содержимое разделом «Шаг 1» отсюда.
  2. Попроси: «прочитай docs/CARDPUTER-ADV-FIRMWARE.md и разнеси матчасть по файлам в .claude/rules — отдельно распиновка, аудио, карта памяти, сборка; каждому пропиши paths».
  3. Попроси написать команды /flash и /check и хук guard.sh по описанию выше.
Проверка, что всё работает: попроси Claude добавить -DBOARD_HAS_PSRAM в platformio.ini. Если настроено правильно — он не сможет, хук заблокирует правку.