[{"data":1,"prerenderedAt":713},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fru\u002Flifestyle\u002Ftechstack-partnership":13},{"i18nKey":4,"paths":5},"lifestyle-004-2026-05",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Flifestyle\u002Ftool-stack-2026-operationelle-wirbelsaeule","\u002Fen\u002Flifestyle\u002Ftool-stack-2026-roibase-daily-operations","\u002Fes\u002Flifestyle\u002Ftechstack-2026-operaciones-diarias","\u002Ffr\u002Flifestyle\u002Ftechstack-partnership","\u002Fit\u002Flifestyle\u002Ftech-stack-2026-operazioni-team","\u002Fru\u002Flifestyle\u002Ftool-stack-2026-operational-backbone","\u002Ftr\u002Flifestyle\u002Ftool-stack-2026-roibasein-operasyonel-omurgasi",{"_path":14,"_dir":15,"_draft":16,"_partial":16,"_locale":17,"title":18,"description":19,"publishedAt":20,"modifiedAt":20,"category":21,"i18nKey":4,"tags":22,"readingTime":28,"author":29,"body":30,"_type":707,"_id":708,"_source":709,"_file":710,"_stem":711,"_extension":712},"\u002Fru\u002Flifestyle\u002Ftechstack-partnership","lifestyle",false,"","Tool Stack 2026: ежедневные операции команды Roibase","Linear, Notion, Slack, Figma, Granola — паттерны интеграции и дисциплина измеримой продуктивности в команде роста из 12 человек.","2026-05-30","techstack-partnership",[23,24,25,26,27],"tool-stack","async-workflow","linear","notion","team-operations",8,"Roibase",{"type":31,"children":32,"toc":692},"root",[33,41,48,68,76,111,123,130,155,161,173,182,187,195,239,244,250,270,303,311,341,346,352,357,362,368,396,414,419,425,430,570,575,581,586,594,612,620,638,646,676,681,687],{"type":34,"tag":35,"props":36,"children":37},"element","p",{},[38],{"type":39,"value":40},"text","Разговоры о tool stack обычно сводятся к каталогу \"мы используем эти приложения\". Но главное — не сами инструменты, а паттерн интеграции, стоимость переключения контекста, дисциплина async-first. В Roibase команда из 12 человек работает remote-first с 2018 года. В 2026 году ежедневные операции определяют 5 инструментов: Linear, Notion, Slack, Figma, Granola. В этой статье вместо перечисления приложений мы раскрываем интеграционный слой — где живут данные, какие workflows срабатывают, какие notification слои отключены.",{"type":34,"tag":42,"props":43,"children":45},"h2",{"id":44},"linear-не-спринты-а-метрики-потока",[46],{"type":39,"value":47},"Linear: не спринты, а метрики потока",{"type":34,"tag":35,"props":49,"children":50},{},[51,53,59,61,66],{"type":39,"value":52},"Linear позиционируется как инструмент управления проектами, но в Roibase это \"слой видимости work-in-progress\". Планирование спринтов не проводим — циклы и милestоны не используем. Вместо этого каждой задаче присваиваем ",{"type":34,"tag":54,"props":55,"children":56},"strong",{},[57],{"type":39,"value":58},"priority (P0\u002FP1\u002FP2)",{"type":39,"value":60}," и ",{"type":34,"tag":54,"props":62,"children":63},{},[64],{"type":39,"value":65},"estimate (1-3-5-8)",{"type":39,"value":67},". Priority определяет система, не человек: P0 = блокирует деплой сегодня, P1 = должна закрыться в спринте, P2 = backlog.",{"type":34,"tag":35,"props":69,"children":70},{},[71],{"type":34,"tag":54,"props":72,"children":73},{},[74],{"type":39,"value":75},"Метрики потока:",{"type":34,"tag":77,"props":78,"children":79},"ul",{},[80,91,101],{"type":34,"tag":81,"props":82,"children":83},"li",{},[84,89],{"type":34,"tag":54,"props":85,"children":86},{},[87],{"type":39,"value":88},"Cycle time:",{"type":39,"value":90}," в среднем 2,3 дня от открытия задачи до закрытия (данные Q4 2025). Задача, превышившая 5 дней, автоматически повышается до P0.",{"type":34,"tag":81,"props":92,"children":93},{},[94,99],{"type":34,"tag":54,"props":95,"children":96},{},[97],{"type":39,"value":98},"Лимит work-in-progress:",{"type":39,"value":100}," максимум 3 открытых задачи на человека. Чтобы взять 4-ю, нужно закрыть одну или передать другому.",{"type":34,"tag":81,"props":102,"children":103},{},[104,109],{"type":34,"tag":54,"props":105,"children":106},{},[107],{"type":39,"value":108},"Время merge-to-close:",{"type":39,"value":110}," промежуток от merge PR до закрытия задачи в Linear — целевой показатель \u003C30 минут (CI\u002FCD + QA автоматизация).",{"type":34,"tag":35,"props":112,"children":113},{},[114,116,121],{"type":39,"value":115},"Интеграция Linear со Slack отключена. Вместо бомбардировки уведомлениями работает ",{"type":34,"tag":54,"props":117,"children":118},{},[119],{"type":39,"value":120},"система дайджестов",{"type":39,"value":122},": каждое утро в 09:00 в Slack канал отправляется ежедневная сводка (количество P0 задач, средний cycle time, распределение WIP). Никто не тегирует в Linear — все читают утренний дайджест.",{"type":34,"tag":124,"props":125,"children":127},"h3",{"id":126},"синхронизация-linear-notion",[128],{"type":39,"value":129},"Синхронизация Linear → Notion",{"type":34,"tag":35,"props":131,"children":132},{},[133,135,142,144,153],{"type":39,"value":134},"Завершённые задачи из Linear раз в неделю архивируются в Notion (через Zapier workflow). В Notion'е есть \"Retrospective Database\" — каждая закрытая задача тегируется по соответствующему сервису. Например, задачи проекта ",{"type":34,"tag":136,"props":137,"children":139},"code",{"className":138},[],[140],{"type":39,"value":141},"branding",{"type":39,"value":143}," отчитываются под услугой ",{"type":34,"tag":145,"props":146,"children":150},"a",{"href":147,"rel":148},"https:\u002F\u002Fwww.roibase.com.tr\u002Fru\u002Fbranding",[149],"nofollow",[151],{"type":39,"value":152},"Брендинг и идентификация бренда",{"type":39,"value":154},". Эти данные используются раз в квартал для планирования ёмкости: сколько инженерных часов уходит на каждую услугу?",{"type":34,"tag":42,"props":156,"children":158},{"id":157},"notion-источник-истины-не-вики",[159],{"type":39,"value":160},"Notion: источник истины, не вики",{"type":34,"tag":35,"props":162,"children":163},{},[164,166,171],{"type":39,"value":165},"Notion не используется как вики — это \"журнал решений\". Каждое стратегическое решение (например, \"server-side или client-side tracking в кампании X?\") записывается в формате ",{"type":34,"tag":54,"props":167,"children":168},{},[169],{"type":39,"value":170},"RFC (Request for Comments)",{"type":39,"value":172},". Шаблон RFC:",{"type":34,"tag":174,"props":175,"children":177},"pre",{"code":176},"## Решение\n[Одно предложение — что делаем]\n\n## Контекст\n[Почему нужно прямо сейчас]\n\n## Альтернативы\n[Минимум 2 варианта + таблица tradeoff'ов]\n\n## Измерение\n[Как узнаем через 4 недели, правильно ли решили]\n\n## Ответственность\n[Кто собственник решения]\n",[178],{"type":34,"tag":136,"props":179,"children":180},{"__ignoreMap":17},[181],{"type":39,"value":176},{"type":34,"tag":35,"props":183,"children":184},{},[185],{"type":39,"value":186},"После открытия RFC идёт 48-часовой async период для комментариев. Никто не организует встреч — каждый читает в своё время, оставляет комментарий. Через 48 часов владелец решения пишет финальное решение, переводит в Linear.",{"type":34,"tag":35,"props":188,"children":189},{},[190],{"type":34,"tag":54,"props":191,"children":192},{},[193],{"type":39,"value":194},"Слои данных в Notion:",{"type":34,"tag":196,"props":197,"children":198},"ol",{},[199,209,219,229],{"type":34,"tag":81,"props":200,"children":201},{},[202,207],{"type":34,"tag":54,"props":203,"children":204},{},[205],{"type":39,"value":206},"RFC Database",{"type":39,"value":208}," — все решения",{"type":34,"tag":81,"props":210,"children":211},{},[212,217],{"type":34,"tag":54,"props":213,"children":214},{},[215],{"type":39,"value":216},"Retrospective Database",{"type":39,"value":218}," — завершённые задачи из Linear",{"type":34,"tag":81,"props":220,"children":221},{},[222,227],{"type":34,"tag":54,"props":223,"children":224},{},[225],{"type":39,"value":226},"Client Playbook",{"type":39,"value":228}," — операционные заметки по клиентам (где какой dashboard, где какой API key)",{"type":34,"tag":81,"props":230,"children":231},{},[232,237],{"type":34,"tag":54,"props":233,"children":234},{},[235],{"type":39,"value":236},"Brand Assets",{"type":39,"value":238}," — ссылки на Figma, документ tone-of-voice",{"type":34,"tag":35,"props":240,"children":241},{},[242],{"type":39,"value":243},"Поиск в Notion работает плохо, это верно, но мы не ищем — каждая база фильтруется и тегируется. Необходимость поиска обычно означает \"я положил данные не туда\".",{"type":34,"tag":42,"props":245,"children":247},{"id":246},"slack-асинхронность-сначала-синхронность-вторая",[248],{"type":39,"value":249},"Slack: асинхронность сначала, синхронность вторая",{"type":34,"tag":35,"props":251,"children":252},{},[253,255,261,262,268],{"type":39,"value":254},"Notification система в Slack отключена для всей команды. Только ",{"type":34,"tag":136,"props":256,"children":258},{"className":257},[],[259],{"type":39,"value":260},"@channel",{"type":39,"value":60},{"type":34,"tag":136,"props":263,"children":265},{"className":264},[],[266],{"type":39,"value":267},"@here",{"type":39,"value":269}," включены — и есть правило: кроме P0 incidents запрещено. Сообщения разделены на 3 канала:",{"type":34,"tag":196,"props":271,"children":272},{},[273,283,293],{"type":34,"tag":81,"props":274,"children":275},{},[276,281],{"type":34,"tag":54,"props":277,"children":278},{},[279],{"type":39,"value":280},"#daily-digest:",{"type":39,"value":282}," сводки Linear\u002FNotion, логи CI\u002FCD деплоев",{"type":34,"tag":81,"props":284,"children":285},{},[286,291],{"type":34,"tag":54,"props":287,"children":288},{},[289],{"type":39,"value":290},"#async-questions:",{"type":39,"value":292}," вопросы, на которые не ждут мгновенного ответа (24 часов достаточно)",{"type":34,"tag":81,"props":294,"children":295},{},[296,301],{"type":34,"tag":54,"props":297,"children":298},{},[299],{"type":39,"value":300},"#sync-now:",{"type":39,"value":302}," нужна координация в реальном времени (production incident, оптимизация живой кампании)",{"type":34,"tag":35,"props":304,"children":305},{},[306],{"type":34,"tag":54,"props":307,"children":308},{},[309],{"type":39,"value":310},"Ожидания по времени ответа:",{"type":34,"tag":77,"props":312,"children":313},{},[314,325,336],{"type":34,"tag":81,"props":315,"children":316},{},[317,323],{"type":34,"tag":136,"props":318,"children":320},{"className":319},[],[321],{"type":39,"value":322},"#sync-now",{"type":39,"value":324}," → 15 минут",{"type":34,"tag":81,"props":326,"children":327},{},[328,334],{"type":34,"tag":136,"props":329,"children":331},{"className":330},[],[332],{"type":39,"value":333},"#async-questions",{"type":39,"value":335}," → 24 часа",{"type":34,"tag":81,"props":337,"children":338},{},[339],{"type":39,"value":340},"DM → 48 часов (DM культуры нет, используются каналы)",{"type":34,"tag":35,"props":342,"children":343},{},[344],{"type":39,"value":345},"Использование threads в Slack обязательно. Ответ в основной канал запрещён — каждое сообщение открывает thread. Так параллельные разговоры не перекрывают друг друга.",{"type":34,"tag":124,"props":347,"children":349},{"id":348},"интеграция-slack-granola",[350],{"type":39,"value":351},"Интеграция Slack → Granola",{"type":34,"tag":35,"props":353,"children":354},{},[355],{"type":39,"value":356},"Granola — инструмент заметок о встречах, но в Roibase используется только для клиентских звонков. Internal встреч нет (0-1 sync call в неделю). После звонка с клиентом Granola отправляет AI-транскрипт в Slack, команда читает асинхронно. Action items автоматически преобразуются в Linear задачи (Zapier trigger).",{"type":34,"tag":35,"props":358,"children":359},{},[360],{"type":39,"value":361},"Killer feature Granola: в транскрипте выделяет числовые обязательства (\"результаты A\u002FB теста через 2 недели\", \"CTR должен вырасти на 15%\"). На них автоматически ставятся напоминания — никто не забывает.",{"type":34,"tag":42,"props":363,"children":365},{"id":364},"figma-не-handoff-дизайна-а-живая-спецификация",[366],{"type":39,"value":367},"Figma: не handoff дизайна, а живая спецификация",{"type":34,"tag":35,"props":369,"children":370},{},[371,373,379,381,387,388,394],{"type":39,"value":372},"Figma не просто инструмент дизайна — это слой \"frontend spec\". Каждый UI компонент задан в Figma как вариант. Разработчик не копирует CSS из Figma — но читает логику поведения компонента именно там. Например, состояния button'а (",{"type":34,"tag":136,"props":374,"children":376},{"className":375},[],[377],{"type":39,"value":378},"hover",{"type":39,"value":380},", ",{"type":34,"tag":136,"props":382,"children":384},{"className":383},[],[385],{"type":39,"value":386},"active",{"type":39,"value":380},{"type":34,"tag":136,"props":389,"children":391},{"className":390},[],[392],{"type":39,"value":393},"disabled",{"type":39,"value":395},") в Figma представлены как фреймы. В коде реализуется та же логика состояний.",{"type":34,"tag":35,"props":397,"children":398},{},[399,404,406,412],{"type":34,"tag":54,"props":400,"children":401},{},[402],{"type":39,"value":403},"Связь Figma → Linear:",{"type":39,"value":405},"\nВ каждом Figma файле установлен плагин ",{"type":34,"tag":136,"props":407,"children":409},{"className":408},[],[410],{"type":39,"value":411},"Linear Issue",{"type":39,"value":413},". Когда дизайн одобрен, дизайнер открывает Linear issue прямо из Figma, вставляет ссылку на дизайн в description задачи. Когда разработчик берёт issue, он уже знает дизайн — реализует без вопросов.",{"type":34,"tag":35,"props":415,"children":416},{},[417],{"type":39,"value":418},"Комментарии в Figma не текут в Slack (чтобы не было бомбардировки). Вместо этого раз в неделю \"Figma Digest\" — открытые комментарии превращаются в Linear задачи.",{"type":34,"tag":42,"props":420,"children":422},{"id":421},"паттерн-интеграции-где-живут-данные",[423],{"type":39,"value":424},"Паттерн интеграции: где живут данные?",{"type":34,"tag":35,"props":426,"children":427},{},[428],{"type":39,"value":429},"Разговоры о tool stack обычно начинаются с \"какой инструмент используешь\". Но правильный вопрос: \"какие данные где canonical?\" В Roibase ownership данных распределён так:",{"type":34,"tag":431,"props":432,"children":433},"table",{},[434,458],{"type":34,"tag":435,"props":436,"children":437},"thead",{},[438],{"type":34,"tag":439,"props":440,"children":441},"tr",{},[442,448,453],{"type":34,"tag":443,"props":444,"children":445},"th",{},[446],{"type":39,"value":447},"Тип данных",{"type":34,"tag":443,"props":449,"children":450},{},[451],{"type":39,"value":452},"Источник истины",{"type":34,"tag":443,"props":454,"children":455},{},[456],{"type":39,"value":457},"Синхронизируется в",{"type":34,"tag":459,"props":460,"children":461},"tbody",{},[462,481,499,517,535,553],{"type":34,"tag":439,"props":463,"children":464},{},[465,471,476],{"type":34,"tag":466,"props":467,"children":468},"td",{},[469],{"type":39,"value":470},"Активная работа (WIP)",{"type":34,"tag":466,"props":472,"children":473},{},[474],{"type":39,"value":475},"Linear",{"type":34,"tag":466,"props":477,"children":478},{},[479],{"type":39,"value":480},"Slack daily digest",{"type":34,"tag":439,"props":482,"children":483},{},[484,489,494],{"type":34,"tag":466,"props":485,"children":486},{},[487],{"type":39,"value":488},"Завершённая работа",{"type":34,"tag":466,"props":490,"children":491},{},[492],{"type":39,"value":493},"Notion",{"type":34,"tag":466,"props":495,"children":496},{},[497],{"type":39,"value":498},"Linear (archive)",{"type":34,"tag":439,"props":500,"children":501},{},[502,507,512],{"type":34,"tag":466,"props":503,"children":504},{},[505],{"type":39,"value":506},"Стратегические решения",{"type":34,"tag":466,"props":508,"children":509},{},[510],{"type":39,"value":511},"Notion (RFC)",{"type":34,"tag":466,"props":513,"children":514},{},[515],{"type":39,"value":516},"Linear (action items)",{"type":34,"tag":439,"props":518,"children":519},{},[520,525,530],{"type":34,"tag":466,"props":521,"children":522},{},[523],{"type":39,"value":524},"Заметки о клиентских звонках",{"type":34,"tag":466,"props":526,"children":527},{},[528],{"type":39,"value":529},"Granola",{"type":34,"tag":466,"props":531,"children":532},{},[533],{"type":39,"value":534},"Slack thread",{"type":34,"tag":439,"props":536,"children":537},{},[538,543,548],{"type":34,"tag":466,"props":539,"children":540},{},[541],{"type":39,"value":542},"UI спецификация",{"type":34,"tag":466,"props":544,"children":545},{},[546],{"type":39,"value":547},"Figma",{"type":34,"tag":466,"props":549,"children":550},{},[551],{"type":39,"value":552},"Linear issue description",{"type":34,"tag":439,"props":554,"children":555},{},[556,561,565],{"type":34,"tag":466,"props":557,"children":558},{},[559],{"type":39,"value":560},"Brand assets",{"type":34,"tag":466,"props":562,"children":563},{},[564],{"type":39,"value":493},{"type":34,"tag":466,"props":566,"children":567},{},[568],{"type":39,"value":569},"Figma (embed link)",{"type":34,"tag":35,"props":571,"children":572},{},[573],{"type":39,"value":574},"Dual source-of-truth не допускается. Если данные выглядят canonical в двух местах — одно из них неправильно.",{"type":34,"tag":42,"props":576,"children":578},{"id":577},"дисциплина-уведомлений-когда-молчать-когда-шуметь",[579],{"type":39,"value":580},"Дисциплина уведомлений: когда молчать, когда шуметь",{"type":34,"tag":35,"props":582,"children":583},{},[584],{"type":39,"value":585},"Главная опасность современного tool stack — notification creep. Стратегия уведомлений в Roibase:",{"type":34,"tag":35,"props":587,"children":588},{},[589],{"type":34,"tag":54,"props":590,"children":591},{},[592],{"type":39,"value":593},"Полностью отключено:",{"type":34,"tag":77,"props":595,"children":596},{},[597,602,607],{"type":34,"tag":81,"props":598,"children":599},{},[600],{"type":39,"value":601},"Mentions в Linear (используется Slack thread вместо комментариев)",{"type":34,"tag":81,"props":603,"children":604},{},[605],{"type":39,"value":606},"Комментарии в Figma (еженедельный дайджест)",{"type":34,"tag":81,"props":608,"children":609},{},[610],{"type":39,"value":611},"Обновления страниц в Notion (никто не смотрит)",{"type":34,"tag":35,"props":613,"children":614},{},[615],{"type":34,"tag":54,"props":616,"children":617},{},[618],{"type":39,"value":619},"Как дайджесты:",{"type":34,"tag":77,"props":621,"children":622},{},[623,628,633],{"type":34,"tag":81,"props":624,"children":625},{},[626],{"type":39,"value":627},"Linear ежедневная сводка (09:00)",{"type":34,"tag":81,"props":629,"children":630},{},[631],{"type":39,"value":632},"Figma открытые комментарии (пятница 17:00)",{"type":34,"tag":81,"props":634,"children":635},{},[636],{"type":39,"value":637},"CI\u002FCD логи деплоев (сводка после каждого деплоя)",{"type":34,"tag":35,"props":639,"children":640},{},[641],{"type":34,"tag":54,"props":642,"children":643},{},[644],{"type":39,"value":645},"Real-time:",{"type":34,"tag":77,"props":647,"children":648},{},[649,659,664],{"type":34,"tag":81,"props":650,"children":651},{},[652,657],{"type":34,"tag":136,"props":653,"children":655},{"className":654},[],[656],{"type":39,"value":260},{"type":39,"value":658}," (только P0 incidents)",{"type":34,"tag":81,"props":660,"children":661},{},[662],{"type":39,"value":663},"Granola сводка по клиентскому звонку (в течение 5 минут после звонка)",{"type":34,"tag":81,"props":665,"children":666},{},[667,669,674],{"type":39,"value":668},"Production ошибки (Sentry → Slack, но только в ",{"type":34,"tag":136,"props":670,"children":672},{"className":671},[],[673],{"type":39,"value":322},{"type":39,"value":675},")",{"type":34,"tag":35,"props":677,"children":678},{},[679],{"type":39,"value":680},"При подключении любого инструмента первый вопрос: \"это notification должен быть real-time или в дайджесте?\" Ответ по умолчанию — дайджест.",{"type":34,"tag":42,"props":682,"children":684},{"id":683},"что-делать-сейчас",[685],{"type":39,"value":686},"Что делать сейчас?",{"type":34,"tag":35,"props":688,"children":689},{},[690],{"type":39,"value":691},"В разговорах о tool stack вместо рефлекса \"давайте добавим ещё один инструмент\" спроси: \"где должны жить эти данные в canonical виде?\" Stack Roibase в 2026 году — Linear\u002FNotion\u002FSlack\u002FFigma\u002FGranola, но инструменты могут меняться. Важны паттерн интеграции, дисциплина уведомлений, культура async-first. Если в команде слышишь \"я не получаю уведомление из tool X\" — проблема не в инструменте, а в нечётком ownership данных.",{"title":17,"searchDepth":693,"depth":693,"links":694},3,[695,699,700,703,704,705,706],{"id":44,"depth":696,"text":47,"children":697},2,[698],{"id":126,"depth":693,"text":129},{"id":157,"depth":696,"text":160},{"id":246,"depth":696,"text":249,"children":701},[702],{"id":348,"depth":693,"text":351},{"id":364,"depth":696,"text":367},{"id":421,"depth":696,"text":424},{"id":577,"depth":696,"text":580},{"id":683,"depth":696,"text":686},"markdown","content:ru:lifestyle:techstack-partnership.md","content","ru\u002Flifestyle\u002Ftechstack-partnership.md","ru\u002Flifestyle\u002Ftechstack-partnership","md",1782050767856]