Лендинг
Одна живая страница с простым оффером: кому нужен бот, какую боль решает, что получит пользователь, и кнопка “Открыть в Telegram”.
В этом workshop итог не абстрактный. На выходе у тебя есть публичный лендинг, контентный агент в Claude Code, skill под Telegram-посты, Telegram-бот как канал доставки и понятный путь деплоя: либо бот присылает черновик тебе в личку, либо публикует готовый пост в канал.
/tg-post — единый playbook для оформления постовtg-content-agent — отдельный редактор под Telegram/insights как отчёт о том, где процесс тормозитНе “у нас есть идея бота”, а “у нас есть собранный микро-продукт, который можно показать команде, руководителю или первым пользователям”.
Одна живая страница с простым оффером: кому нужен бот, какую боль решает, что получит пользователь, и кнопка “Открыть в Telegram”.
Владелец продукта даёт brief в терминале Claude Code, получает готовый черновик через agent + skill, а бот отправляет утверждённый текст в личку или в канал.
/tg-post держит единый стандарт: структура поста, hook, CTA, длина, тональность, запреты и формат результата.
tg-content-agent работает как отдельный редактор: придумывает angle, усиливает подачу и не раздувает основной контекст лишними размышлениями.
На старте бот безопасно отдаёт пост тебе в личку. Следующий шаг — добавить публикацию в канал, когда бот получает нужные права администратора.
Есть git-история, GitHub-репозиторий, preview-ссылки на каждую итерацию и production-версия после merge или явного прод-деплоя.
CLAUDE.md/agents и skill через SKILL.md, это уже рабочий учебный контур прямо в терминале. Отдельный backend нужен позже — когда захочешь, чтобы бот сам принимал brief, помнил диалог и жил как автономный продукт.
Заходит в Claude Code и работает в папке проекта.
Тема, цель поста, аудитория, тон, CTA.
При необходимости вызывает tg-content-agent и skill /tg-post.
Смотришь short / standard / punchy и утверждаешь нужный текст.
Claude или твой script шлёт утверждённый текст через Telegram Bot API.
Либо тебе в личку как draft, либо прямо в канал, либо в очередь на review.
Минимальная структура проекта
/app/page.tsx → лендинг
/scripts/publish-telegram-post.ts → отправка через Telegram Bot API
/lib/telegram/send-message.ts → helper для sendMessage / sendPhoto
/.claude/skills/tg-post/SKILL.md → единый playbook поста
/.claude/agents/tg-content-agent.md → редактор под Telegram
/CLAUDE.md → правила и контекст проекта
/.env.local → TELEGRAM_BOT_TOKEN, TELEGRAM_CHAT_ID
Опционально:
/lib/supabase.ts
/supabase/migrations/*
Next.js + Vercel для лендинга + Claude Code в терминале + Telegram Bot API для отправки. Этого хватает, чтобы собрать витрину, генерировать посты через agent + skill и отправлять их в Telegram без отдельного backend-сервиса.
Нужен, если ты хочешь хранить briefs, drafts, publish log, пользователей, каналы, пресеты, статусы review и историю публикаций.
Отдельный сервис нужен уже не для обучения, а когда бот сам принимает входящие сообщения, держит очереди, cron, multi-user state и тяжёлые интеграции. До этого этапа можно спокойно жить в одном репозитории.
Открываем пустую или новую папку проекта, запускаем claude, просим сначала собрать definition of done и предложить простой каркас MVP.
Если хочешь быстрый старт памяти проекта — запускаешь /init.
Мы делаем один проект:
1) лендинг,
2) Telegram-бот для отправки draft/post,
3) content-agent и skill,
4) путь до preview и prod.
Контент создаём в Claude Code в терминале.
Не уводи нас в отдельный автономный backend или тяжёлую серверную схему.
Сначала предложи definition of done, структуру папок и самый короткий стек без лишних сущностей.
Не набор разрозненных идей, а конкретный проектный каркас: что создаём, в какой последовательности, и какой финальный результат должен быть виден пользователю.
CLAUDE.md коротким operating manual проекта, а не длинной простынёйAnthropic рекомендует относиться к CLAUDE.md как к месту, куда ты кладёшь то, что иначе пришлось бы объяснять снова и снова. Чем текст короче и конкретнее, тем стабильнее Claude его соблюдает.
# CLAUDE.md — пример для этого workshop
Мы делаем один сквозной MVP:
- публичный лендинг
- Telegram-бот
- content-agent и skill для Telegram-постов
- preview и production deployment
Главная ценность:
владелец продукта отправляет brief Claude в терминале и получает готовый пост,
который потом уходит через Telegram-бота.
Рабочий путь по умолчанию:
Next.js + Vercel + Telegram Bot API + Claude Code subagent/skill.
Supabase добавляем только когда нужна история, review и publish log.
Принципы:
- сначала показывай пользователю видимый результат
- не усложняй архитектуру раньше времени
- каждую значимую итерацию заканчивай commit
- перед изменениями коротко формулируй ожидаемый user-visible output
- длинные повторяемые процедуры выноси в skills
CLAUDE.md отвечает на вопрос “как вести себя в этом проекте?”. Skill отвечает на вопрос “как выполнять конкретную повторяемую процедуру?”. Не смешивай эти роли.
Просим Claude собрать одну простую страницу: оффер, кому подходит, как работает, 2–3 сценария пользы, CTA в Telegram и резервный waitlist или форму.
Сделай простой лендинг для Telegram-бота, который помогает быстро получать черновики постов.
Нужны блоки:
- hero
- для кого это
- как работает в 3 шага
- примеры результата
- CTA "Открыть в Telegram"
- резервный waitlist на случай, если бот недоступен
Пиши простым продуктовым языком. Без маркетингового перегиба.
Первую публичную точку входа в продукт. Уже на этом шаге у тебя появляется объект, который можно показать и обсудить, а не только пересказывать идею на словах.
Commit — это зафиксированная глава истории проекта. Он отвечает на вопрос: что именно изменилось и зачем. Это ваша точка возврата, ревью и объяснимости.
Push — это публикация этой истории в удалённый репозиторий. После этого историю видят GitHub, команда и Vercel. Для самого Claude важны и локальные файлы, и git history; push нужен прежде всего для удалённого бэкапа, совместной работы и preview-деплоев.
После первого видимого результата — например, каркаса лендинга — делаем первый осмысленный commit. Первый раз лучше пройти руками, чтобы почувствовать маршрут.
git status
git add .
git commit -m "init landing and bot project skeleton"
git push origin mainПокажи, что изменилось, предложи 3 хороших commit message и объясни,
что именно мы сейчас фиксируем как отдельный шаг проекта.
Первый commit я делаю руками.
Историю решений. Claude сможет быстро понять проект, глядя на ключевые файлы и git history, а push даст удалённую точку восстановления, командную видимость и preview/deploy flow.
status → add → commit → push. Тогда дальше делегирование становится осознанным, а не слепым.
Публикуем репозиторий на GitHub, подключаем его в Vercel и проверяем, что после push появляется preview URL. Дальше настраиваем production flow через merge или явный прод-деплой.
Подготовь проект к деплою на Vercel.
Проверь, что:
- у нас понятная структура
- env variables перечислены отдельно
- нет лишних файлов
- есть короткий README с шагами запуска
- landing открывается без ошибок
У тебя появляется не просто локальный проект, а нормальный продуктовый контур: удалённый репозиторий, preview для проверки каждой итерации и production-версия после принятого изменения.
Что-то изменили в проекте.
Зафиксировали главу истории.
История ушла в remote.
Получили живую ссылку на проверку.
Слили approved-изменение в production.
Через @BotFather создаём бота, получаем token и сохраняем его как секрет. Для канала потом отдельно добавляем бота админом с правом публикации.
В проекте появляется простая функция или script, который берёт готовый текст и отправляет его через Bot API в личку, канал или review-чат.
Просим Claude добавить минимальный publish helper: env-переменные, функцию sendTelegramPost и тестовый script для отправки сообщения.
Добавь минимальный Telegram publish helper.
Нужно:
- TELEGRAM_BOT_TOKEN в env
- TELEGRAM_CHAT_ID или CHANNEL_USERNAME
- функцию sendTelegramPost(text)
- тестовый script scripts/publish-telegram-post.ts
Пока без webhook, без входящих сообщений и без базы.
Нужен максимально короткий working path.
Первый живой контур доставки. Бот умеет принять готовый текст из проекта и отправить его в Telegram без ручного копипаста.
/tg-post: превращаем “как писать пост” в повторяемую системуSkill — это не “ещё один агент” и не “ещё один prompt”. Это проектный playbook, который Claude может вызвать сам или по команде. Самая полезная роль skill в этом кейсе — стабилизировать качество и формат Telegram-постов.
Создаём папку .claude/skills/tg-post/ и кладём туда SKILL.md с описанием, когда этот skill нужен, и что он должен вернуть на выходе.
Создай project skill /tg-post.
Он должен:
- превращать brief в Telegram-пост
- выдавать 3 версии: short / standard / punchy
- добавлять hook и CTA
- избегать лишнего пафоса
- писать простым продуктовым языком
Один источник правды для постов. Дальше и Claude в сессии, и ты сам в следующих итерациях опираетесь на одну и ту же логику, а не каждый раз придумываете формат заново.
---
name: tg-post
description: Пиши и улучшай Telegram-посты для этого проекта. Используй, когда нужно превратить brief в короткий, ясный и полезный пост.
---
Когда используешь этот skill:
1. Сначала найди главный angle поста.
2. Дай 3 версии: short, standard, punchy.
3. Для каждой версии добавь:
- hook
- основной текст
- CTA
4. Не пиши канцеляритом.
5. Не раздувай объём ради “умности”.
6. Если данных мало, делай разумные предположения и явно помечай их.
CLAUDE.md = факты и правила проекта. Skill = воспроизводимая процедура. В этом кейсе skill нужен для качества постов, а не для общей архитектуры проекта.
tg-content-agent: отдельного специалиста под Telegram-контентAgent / subagent — это отдельный специалист со своей ролью, своим контекстом и, при желании, своими ограничениями по инструментам. Он полезен, когда ты не хочешь, чтобы весь основной диалог превращался в бесконечный редакторский брейншторм.
Когда задача повторяется и требует своей “профессии”. Например: Telegram-редактор, который ищет angle, усиливает первый абзац, режет лишнее и следит за tone of voice.
Открываешь /agents внутри Claude Code и создаёшь tg-content-agent через интерфейс. Это самый наглядный способ понять сущность subagent на практике.
Создаём агента с понятным описанием роли: когда его использовать, какую задачу он берёт, что считает хорошим результатом.
/agents
Создай subagent tg-content-agent.
Роль: Telegram content editor.
Используй его, когда нужно:
- придумать angle поста
- усилить hook
- сократить текст
- сделать версию более понятной и цепкой
- сохранить простой продуктовый тон
Понятную специализацию внутри проекта. Основной агент больше не тянет на себе весь редакторский шум — он делегирует эту часть отдельному “редактору”.
---
name: tg-content-agent
description: Telegram content editor. Use proactively when a brief needs angle, sharper hook, stronger CTA, or tighter editing.
tools: Read, Skill
model: sonnet
---
Ты редактор Telegram-контента.
Твоя задача:
- находить сильный angle
- сокращать лишнее
- делать первый экран цепким
- сохранять простой продуктовый язык
- не скатываться в пустой маркетинг
/agents — это уже и учебный, и практический способ выделить отдельного редактора. Для этого workshop этого достаточно: агент живёт в проекте и помогает собирать посты прямо из терминала.
Здесь убираем лишнюю сложность. В этом workshop Claude Code делает основную интеллектуальную работу: ты даёшь brief в терминале, Claude при необходимости вызывает tg-content-agent и skill /tg-post, а потом утверждённый текст уходит через Telegram-бота.
Ты работаешь в проекте через Claude Code и формулируешь задачу человеческим языком: тема, аудитория, тон, CTA, ограничения.
Claude может сам вызвать tg-content-agent, а тот использует /tg-post как playbook, чтобы дать несколько сильных версий текста.
После твоего ok проект запускает отправку через Telegram Bot API: в личку владельцу, в review-чат или прямо в канал.
Просим Claude собрать связку generate → review → send. Сначала он показывает draft в терминале, потом после подтверждения отправляет выбранную версию через script проекта.
Работаем без отдельного автономного backend-слоя.
Сценарий такой:
1) я даю brief в терминале,
2) при необходимости используй tg-content-agent и skill /tg-post,
3) покажи 3 версии поста,
4) после моего ok отправь выбранную версию через Telegram-бота
скриптом проекта.
Сначала реализуй безопасный draft mode в личку.
Практичный end-to-end flow для обучения: из brief в готовый Telegram-пост без отдельного backend-слоя и без ручного копипаста.
Схема на человеческом языке
1. Ты пишешь brief в Claude Code
2. Claude при необходимости вызывает tg-content-agent
3. Skill /tg-post возвращает short / standard / punchy
4. Ты выбираешь или правишь финальный вариант
5. Claude запускает script отправки
6. Бот отправляет текст в личку, канал или review-чат
Минимальная связка
package.json
"scripts": {
"tg:send": "tsx scripts/publish-telegram-post.ts"
}
.env.local
TELEGRAM_BOT_TOKEN=your-bot-token
TELEGRAM_DRAFT_CHAT_ID=your-chat-id
TELEGRAM_CHANNEL_ID=your-channel-id
Логика:
- draft mode → отправляем в личку
- publish mode → отправляем в канал
Бот отдаёт готовый пост тебе в личку. Это лучший старт: быстро, безопасно и без риска случайной публикации.
Бот публикует пост в канал, если ты добавил его туда как администратора с правом публиковать сообщения.
Бот сохраняет draft в базу, а публикация случается только после подтверждения. Это хороший режим для командного контент-процесса.
Для курса выбираем сначала draft mode. Как только основной цикл заработал, добавляем channel mode или review queue.
Сначала реализуй безопасный режим:
из терминала выбранный пост уходит мне в личку через бота.
После этого подготовь второй режим:
после подтверждения бот может опубликовать пост в Telegram-канал,
если включён publish mode и настроен канал.
Очень понятный progression path: сначала безопасная отправка в личку, потом публикация в канал, потом полноценный командный контур с review.
Подключаешь, когда хочешь, чтобы Claude прямо из сессии видел deploys, project status, docs и deployment logs, а не бегал глазами по панели.
Подключаешь, когда хочешь готовый пакет из skills, agents, slash-команд и best practices по работе с Vercel внутри Claude Code. Plugin и MCP не взаимоисключают друг друга — они могут жить рядом.
Сначала проходим базовый путь сами: GitHub → Vercel → preview → prod. И только потом, когда контур понятен, добавляем MCP или Plugin как ускорители.
После того как базовый deploy path заработает,
подключим Vercel MCP и/или Plugin, чтобы:
- смотреть статус деплоев
- быстро разбирать логи
- не ходить каждый раз в панель руками
Более гладкий workflow. Но главное — ты не путаешь ускоритель с фундаментом: основа всё равно остаётся Git, commit, push, preview и production.
Vercel MCP:
claude mcp add --transport http vercel https://mcp.vercel.com
Идея подключения:
Claude видит Vercel изнутри сессии, а не только по твоим словам.
/insights запускаем не в начале, а после первого полного циклаКогда уже прошли маршрут от старта проекта до рабочего бота и preview/prod, запускаем /insights.
/insights
После отчёта:
1) выдели 3 главных friction point,
2) предложи, что вынести в CLAUDE.md,
3) предложи, какой следующий skill стоит создать,
4) скажи, где я зря делал руками то, что уже можно делегировать.
Не только собранный продукт, но и улучшенный процесс сборки. То есть второй проход по похожему проекту будет быстрее и спокойнее первого.
/insights. Он превращает разовый опыт в систему: что запомнить, что автоматизировать, что вынести в память проекта, а что можно смело убрать как лишнюю суету.
Короткие постоянные правила и факты проекта. То, что ты не хочешь объяснять заново в каждой сессии.
Повторяемая процедура. В нашем кейсе — как делать Telegram-посты одинаково качественно.
Отдельный специалист со своей ролью. В нашем кейсе — Telegram-редактор.
Канал доставки. Нужен, чтобы готовый текст из проекта уехал в личку, канал или review-чат.
Память проекта: что менялось, зачем, когда и к какому состоянию можно вернуться.
| Сущность | Вопрос, на который она отвечает | Какую пользу даёт в этом кейсе |
|---|---|---|
| CLAUDE.md | Как вести себя в этом проекте? | Не даёт Claude каждый раз изобретать процесс заново. |
Skill /tg-post |
Как делать Telegram-пост качественно и одинаково? | Держит структуру, стиль и итоговый формат результата. |
tg-content-agent |
Кому отдать редакторскую часть задачи? | Выносит angle, hook и tightening текста в отдельного специалиста. |
| Telegram Bot API / send script | Как пост уходит наружу? | Отправляет утверждённый текст из проекта в личку, канал или review-чат без ручного копипаста. |
/insights |
Что тормозило процесс и что теперь автоматизировать? | Помогает превращать первый проход в более взрослый второй проход. |
/tg-posttg-content-agent/insightsНиже — не просто “полезные ссылки”, а именно те материалы, на которые опирается логика этого workshop.