Архітектура · перебудовано 21 серпня 2026

Контури продуктів Zarmilkas

Стіну поставлено. Бренд розділено на продуктові контури, наявну інформацію перевірено файл за файлом, межу стереже гейт. Нижче: що було, що зроблено і що тепер заповнюєш ти.

Що в нас є сьогодні

Система живе трьома шарами. Проблема не в жодному з них окремо, а в тому, що сенси продукту розлиті по всіх трьох замість того, щоб сидіти в одному.

ШАР 1 · ГЛОБАЛЬНІ ПРАВИЛА CLAUDE.md · памʼять (60+ правил) · 37 хуків процес QA і деплою + банліст слів + позиціонування + «художній твір, не мотанка» тут змішано процес і сенси одне тягнеться разом з іншим ШАР 2 · ОРКЕСТРАТОР /zarmilkas-orchestrator «поблочне порівняння з оригіналом (broshky1)» = новий сайт народжується як копія старого ШАР 3 · ПРОДАКШН zarmilkas-test/public 81 директорія, майже всі broshky1-* funnel.js · 58 КБ логіка воронки + window.MOTANKY + window.SHIRTS в одному файлі lpcrm-intake (воркер) D1, CRM, email, пікселі, BI це чиста інфраструктура її ділити не треба, вона однакова для будь-якого продукту

Рожевим позначено шлях, яким сенси старого продукту доходять до нового. Зеленим, те що можна лишити спільним без ризику.

Пʼять каналів, якими протікають сенси

Це не гіпотези. Кожен пункт я перевірив у файлах, доказ під текстом.

01

Еталон-клон

Оркестратор прямо наказує звіряти нову сторінку з broshky1 поблочно: хедер, геро, каталог, деталі, історія, ручна робота, медіа, упаковка, відгуки, акордеон, футер. Новий продукт з іншою логікою продажу автоматично отримує чужий скелет сторінки і чужий порядок аргументів.

Де: ~/.claude/skills/zarmilkas-orchestrator/SKILL.md, розділ QA-луп, пункт «Поблочне порівняння з оригіналом (broshky1)».

02

Каталог зашитий у код воронки

Товари живуть не в даних, а всередині логіки: window.SHIRTS на рядку 190 і window.MOTANKY на рядку 206 того самого файлу, що робить кошик і апсели. Скопіювати механіку воронки без товарів мотанок зараз технічно неможливо, вони їдуть разом.

Де: zarmilkas-test/public/broshky1/funnel.js, 58 КБ, 13 входжень слів «мотанка/оберіг» прямо в коді.

03

Памʼять спрацьовує на слово «Zarmilkas», а не на продукт

Правила «художній твір, не автентична мотанка», банліст слів, ЦА, тон, все це записано на бренд цілком. Щойно в задачі зʼявляється Zarmilkas, вони підтягуються в контекст і починають керувати копірайтингом нового продукту, хоча писались під брошки.

Де: memory/feedback_zarmilkas_*, серед них artwork_not_authentic, positioning_handmade_not_oberig, bags_language_scope. Останній вже довелось писати саме тому, що мова брошок лізла в сумки.

04

Один Pages-проєкт на всі сайти

81 директорія в одному деплої, спільні assets, спільний _redirects, спільний чекліст. Новий продукт лягає сусідньою папкою і одразу успадковує сусідську спадщину: чужі стилі поруч, чужі шляхи до фото, ризик зачепити живу воронку своїм деплоєм.

Де: wrangler pages deploy public --project-name=zarmilkas-test, один проєкт на все.

05

Дизайн-канон бренду, а не продукту

Тут потрібна точність, бо частина цього має лишитись спільною. Підвал, юр-сторінки і реквізити, це юридична єдність бренду, її ділити не можна. А от типографіка, палітра, ритм блоків і мова інтерфейсу, це шкіра конкретного продукту, і зараз вона теж прописана на весь бренд.

Де: zarmilkas-test/FOOTER-CANON.md плюс хук zarmilkas-footer-guard.py, який блокує розходження підвалу. Це правильно і лишається. Розділяти треба те, що лежить поруч у CHECKLIST.md у розділі «Бренд / дизайн».

Як розрізати: три осі замість двох

Помилка була б різати навпіл, «старе і нове». Різати треба поперек, за природою речей: те, що фізично одне на бренд, залишається спільним, а те, що є мовою продукту, отримує власний замкнений контур.

КОНТУР ПРОДУКТУ А Брошки · broshky1 канон сенсів · банліст · ЦА · тон дизайн-мова · структура сторінки каталог товарів як дані свій виконавець і свій деплой нічого не знає про контур Б КОНТУР ПРОДУКТУ Б Новий продукт канон з чистого аркуша свій дизайн, свій ритм свої товари, свої аргументи будується лише з того, що дав Назар нічого не знає про контур А СТІНА СПІЛЬНА ШИНА · ОДНА НА БРЕНД воркер lpcrm-intake · D1 · CRM · email · пікселі · BI · підвал · юр-сторінки · реквізити СПІЛЬНИЙ ПРОЦЕС · ОДИН НА ВСЕ QA-луп · verstka-qa · чекліст мобайлу · протокол деплою · реєстр дефектів

Контури не спілкуються між собою. Вони обидва спираються на спільну шину знизу, і саме тому екосистема лишається однією.

Спільне, не дублювати
  • Воркер lpcrm-intake, D1, CRM, email, пікселі, BI
  • Підвал (_shared/footer.html) і юр-сторінки на корені
  • Реквізити ФОП, нагороди, контакти
  • Протокол QA, деплою і реєстр дефектів
  • Технічні пастки: absImg, бамп ?v=, reset кошика
Своє на кожен продукт
  • Канон сенсів: що це, кому, чому, чим доводимо
  • Банліст слів і заборонені прийоми
  • Дизайн-мова: шрифт, палітра, ритм, фото
  • Структура сторінки і порядок аргументів
  • Каталог товарів окремим файлом даних
  • Свій виконавець і свій Pages-проєкт

Що зроблено

Сім кроків, усі виконані. Тепер новий сайт фізично не має звідки взяти сенси брошок, навіть якщо я захочу.

1

Контури заведено як окремі папки

Кожен продукт тепер має власний паспорт і власний словник. Порожнє поле в паспорті лишається порожнім: заповнити його матеріалом сусіднього продукту заборонено.

zarmilkas-brand/
├── _platform/          спільне: техніка + юр-ядро
├── products/
│   ├── broshky/        PRODUCT.md + LEXICON.md
│   ├── sumky/          PRODUCT.md + LEXICON.md
│   └── _TEMPLATE/      порожній контур для наступного продукту
├── _quarantine/        вилучені забруднення
├── INVENTORY.md        карта: що кому належить
└── tools/scope_check.py
2

Антиплутанина стоїть першим рядком кожного контуру

У паспорті сумок прямо написано, що слова «художній твір», «авторство», «канон власниці» тут заборонені, бо це мова брошок. У паспорті брошок так само заборонена мова сумок.

3

Платформу відділено від сенсів

Технічна частина винесена в _platform/PLATFORM.md: воркер, D1, CRM, email, пікселі, BI, absImg, бамп версій, деплой. Юридична частина в BRAND-CORE.md: ФОП, підвал, юр-сторінки, контакти. У жодному з цих файлів немає ані слова про товар.

4

Оркестратор став роутером

Тепер його крок нуль це «визнач продукт», а не «звіряй з broshky1». Пункт QA переписано: еталон береться з власного контуру, а якщо його ще нема, звіряємо з макетом від Назара і НЕ з чужим продуктом.

5

Перша дія сесії більше не заражає голову

CLAUDE.md проєкту наказував першою дією читати MASTER-DNA, а в ній 16 згадок брошок проти однієї про сумки. Тепер перша дія це визначити продукт. У самій MASTER-DNA розмічено, які блоки спільні, а які написані під брошки.

6

Гейт, що ловить змішування

Stop-хук product-scope-guard.py не дає завершити хід, якщо в контурі з'явилось чуже. Перевірка ловить три речі: однаковий файл у двох продуктів, фрази-маркери чужого продукту і читання чужих шляхів.

python3 zarmilkas-brand/tools/scope_check.py
SCOPE:PASS нових порушень нема (відомий борг: 12)
7

Перевірка доводить, що вона працює

Окремий режим підкладає в контур сумок фразу з мови брошок і переконується, що перевірка червоніє. Зелений тест, який нічого не ловить, гірший за відсутній.

python3 tools/scope_check.py --selftest
SELFTEST: ЛОВИТЬ ✅ (було 12, стало 13)

Чому гейт ловить фрази, а не слова: словник бренду виявився омонімічним. «Архетип» у сумках означає архетип ЗАГОЛОВКА, «Берегиня» це назва колекції вишивки, а перелік асортименту законно згадує і брошки, і сумки. Правило на окремих словах червоніло б за правильний текст, а сторож, який блокує правильну роботу, гірший за відсутнього.

Що показав аудит наявної інформації

Просканував 125 текстових файлів бренду плюс продакшн-код і скіли. Головна новина хороша: система виявилась чистішою, ніж я очікував.

76 / 33

файлів належать брошкам і сумкам відповідно. Це мозок продуктів, для нового він не джерело.

1 забруднення

табу-база брошок лежала в мозку сумок точною копією. Прибрано в карантин.

4 хибні тривоги

омоніми і законні згадки. Кожну перевірив у контексті, перш ніж чіпати.

Можна брати для нового продукту
  • Технічна платформа: воркер, D1, CRM, email, пікселі, BI
  • Юр-ядро: ФОП, підвал, юр-сторінки, контакти, нагороди
  • Процес QA і деплою, реєстр дефектів
  • Формати роботи: структура сценарію, ролі, формат виводу
  • ДНК Traffic Acselerator (нуль згадок обох продуктів)
  • Дані рекламного кабінету і аудиторій
Брати заборонено
  • Дослідження ринку прикрас і подарунків (DR1-DR4)
  • Лендінг, ТЗ і прототипи broshky1
  • Відгуки на брошки
  • Табу і правки конкретних продуктів
  • Каталоги товарів і window.MOTANKY
  • Блоки лендінга брошок: історія, ручна робота, упаковка
  • Більшість блоків MASTER-DNA (написані під брошки)

Борг, який чекає твого рішення: у мозку сумок стоять посилання на базу брошок з поміткою «метод-донор, брати ЛИШЕ структуру». Формально це місток між контурами. Або лишаємо його з жорсткішим формулюванням, або рвемо. Плюс два файли лежать однаковими копіями в обох продуктів (роль медіабаєра і формат виводу): їх правильно винести в платформу. Обидва пункти в baseline, вони не блокують роботу, але й не зникнуть самі.

Тепер твоя частина: чим наповнити продукт

Порожній контур уже стоїть у products/_TEMPLATE/. Одинадцять полів, які я НЕ маю права заповнити за тебе, бо будь-яка моя вигадка тут стане мовою бренду. Можеш надиктувати голосом підряд, я розкладу по файлах.

ПолеЩо саме сказатиНавіщо це мені
1Що це фізичноЗ чого зроблено, які форми і розміри, що входить у комплектОснова всіх описів і фото
2Чим це НЕ єЗ чим плутають і що ми про нього НЕ кажемоГоловне поле захисту від змішування
3Хто купуєСтать, вік ядра і межі, достаток, звідки трафік, географія, собі чи в подарунокТон і аргументи
4Чому купуютьЯку задачу людини це закриває. Причина, не характеристикаХук і перший екран
5Чим доводимоМатеріал, час праці, унікальність, гарантія, відгуки, нагородиБлок доказів, без нього копі порожнє
6ПозиціонуванняОдне речення: чим продукт є для клієнта. Плюс як обґрунтовуємо цінуРамка, в яку лягає все інше
7Ціна і економікаПолиця, собівартість, середній чек, апселиВоронка і апсели
8АсортиментСкільки позицій, як діляться, чим відрізняютьсяКаталог і структура сайту
9УпаковкаЩо бачить клієнт, коли відкриває. Лист, вкладка, оформленняБлок упаковки і апсел
10Що вже єФото, відео, відгуки, транскрипти, дослідження і де вони лежатьЩоб я не просив те, що вже маємо
11ВоронкаЯк людина йде від оголошення до оплати, які сторінки потрібніТехнічна збірка

Окремо і обов'язково: дизайн-напрямок у RULES/design.md. Яким має відчуватись сайт, який один шрифт, яка палітра і звідки вона взята, який тип кадру головний. Поки це поле порожнє, я не маю права починати дизайн: інакше візьму те, що вже бачив, а це і буде перефарбований broshky1.