[{"data":1,"prerenderedAt":141},["ShallowReactive",2],{"$fBBQ5ulyG5jVWbIBJe3r8F-kTKQKf1scMJiu0B6qzX5k":3,"$f7AVZHmPutZ23_8XKkLbDtEszKCuiY3yPjIDp9eRXGag":5,"$frajWCs__E0rZlpAHWCgL66ivY_ZU5g0e7nh3eQ8VFXQ":7,"$fIreADJXz8X8oE7PPt6B5OCkvYcNqK6xr7ax6dkSEOs8":117},{"data":4},[],{"data":6},[],{"data":8,"meta":113},[9],{"id":10,"documentId":11,"title":12,"seo_title":13,"summary":14,"seo_description":15,"slug":16,"published_date":17,"body":18,"content":19,"createdAt":44,"updatedAt":45,"publishedAt":46,"blogauthor":47,"cover":56,"categories":102},345,"xniozoiziz3hevperugah6hc","Spring Agent Toolkit: ультимативный набор для вашего AI-агента","Spring Agent Toolkit: Skills и MCP для AI-агента","Разбираем уровни работы с AI от чата в браузере до Skills и показываем Spring Agent Toolkit: набор Skills, MCP и хуков, которые учат агента писать Spring-приложения.","Spring Agent Toolkit от Amplicode: Skills, MCP и хуки для Spring-разработки с агентами. Spring Data JPA, DTO, Spring Security, CRUD REST и отладка.","spring-agent-toolkit-ultimativnyj-nabor-dlya-vashego-ai-agenta","2026-05-18","AI-агенты уже стали частью повседневной разработки. Сначала это выглядит как магия: формулируешь задачу, получаешь код, тесты, иногда даже готовый PR.\n\nНо довольно быстро приходит осознание:\n\n- токены улетают слишком быстро;\n- задача выполняется дольше, чем ожидалось;\n- результат не всегда совпадает с тем, что было задумано.\n\nВ этой статье разберем, что с этим можно сделать на практике и почему для хорошего результата критически важен правильно подобранный набор инструментов.\n\n\u003Ch3 id=\"uroven-0-chat-v-brauzere\">Уровень 0. Чат в браузере\u003C\u002Fh3>\n\nТак выглядело начало индустрии — и первый опыт AI для большинства из нас. Первый запрос, первый ответ, первые галлюцинации. Кажется, это было вчера, хотя прошло уже два-три года.\n\nС тех пор чат в браузере прошел заметную эволюцию: модели поумнели, а сами интерфейсы получили полезный инструментарий — от веб-поиска до работы с открытыми источниками. На качестве ответов это сказалось напрямую: меньше фантазий, больше проверяемых фактов и уверенности в результате.\n\nПопросите код для Spring Security с OAuth — в ответ вы получите полноценную конфигурацию для приложения. Вопрос — какого?\n\n\u003Cvideo src=\"https:\u002F\u002Fstorage.yandexcloud.net\u002Famplicode-site\u002Farticles\u002Fspring-agent-toolkit-iron-man-suit\u002Fchatgpt_ss.mp4\" controls muted loop playsinline width=\"100%\" poster=\"{{strapiUrl}}\u002Fuploads\u002Fcover_spring_agent_toolkit_ultimativnyj_nabor_dlya_vashego_ai_agenta_639b6b4950.webp\" preload=\"none\">\u003C\u002Fvideo>\n\nТого самого «среднего приложения с GitHub»: на смеси тысяч учебных работ, шаблонов вроде [Spring Petclinic](https:\u002F\u002Fgithub.com\u002Fspring-projects\u002Fspring-petclinic) и других типовых примеров (вопрос качества пока оставим за скобками).\n\nВозьмем другой пример: попросим чат создать JPA-сущность. И снова никаких проблем.\n\n\u003Cvideo src=\"https:\u002F\u002Fstorage.yandexcloud.net\u002Famplicode-site\u002Farticles\u002Fspring-agent-toolkit-iron-man-suit\u002Fchatgpt_jpa_entity.mp4\" controls muted loop playsinline width=\"100%\" poster=\"{{strapiUrl}}\u002Fuploads\u002Fcover_spring_agent_toolkit_ultimativnyj_nabor_dlya_vashego_ai_agenta_639b6b4950.webp\" preload=\"none\">\u003C\u002Fvideo>\n\nКласс, поля — всё на месте. И всё вроде нормально, но есть нюанс. Содержит ли код аннотации Lombok, а если содержит, то какие и с какими параметрами? Проставлены ли JPA-аннотации: `@Column`, `@OneToMany`, `@ManyToMany` и т. д.? Сгенерированный код вполне может быть корректным, однако совершенно не соответствовать соглашениям, закрепленным в вашем проекте и компании. И снова это связано с проблемой того самого «среднего приложения с GitHub».\n\nСитуацию можно улучшить, добавив в контекст чата нужные сведения: приложив к запросу шаблон сущности из проекта, указав ссылку на пример проекта, в котором учтены правила на GitHub. Одним словом: добро пожаловать в prompt engineering.\n\nОднако довольно быстро становится ясно: такой prompt engineering нужен почти для каждого запроса, который вы отправляете в чат. И тут возникает практичный вопрос: если я как разработчик постоянно переключаюсь между IDE и браузером и каждый раз переношу правила, шаблоны кода и версии зависимостей, почему бы не встроить чат прямо в IDE?\n\n\u003Ch3 id=\"uroven-1-integracziya-chata-v-ide\">Уровень 1. Интеграция чата в IDE\u003C\u002Fh3>\n\nСамое время найти IDE-расширение с AI-функциями. Сегодня такие плагины обычно сразу дают и чат, и агентный режим (к нему вернемся позже). На практике вы получаете автодополнение в позиции курсора, генерацию кода по запросу и чат, где можно явно передавать контекст через ссылки на файл или его фрагмент — чаще всего через `@`.\n\nТеперь, попросив в чате сгенерировать JPA-сущность и приложив в качестве примера уже существующую, вы с высокой вероятностью получите код, близкий к ожидаемому.\n\n\u003Cvideo src=\"https:\u002F\u002Fstorage.yandexcloud.net\u002Famplicode-site\u002Farticles\u002Fspring-agent-toolkit-iron-man-suit\u002Fai_assistant_chat.mp4\" controls muted loop playsinline width=\"100%\" poster=\"{{strapiUrl}}\u002Fuploads\u002Fcover_spring_agent_toolkit_ultimativnyj_nabor_dlya_vashego_ai_agenta_639b6b4950.webp\" preload=\"none\">\u003C\u002Fvideo>\n\nВ этот момент легко почувствовать прилив сил: кажется, что продуктивность вышла на новый уровень.\n\nИтак, каждый раз когда появляется новая задача, мы теперь определяем, какие объекты\u002Fфайлы нужно модифицировать, какие команды выполнить (в терминале). Затем открываем чат и последовательно попросив AI сгенерировать нужный код\u002Fкоманды, добавляя в контекст примеры и референсы.\n\nРазмберемся на примере: добавим в приложение Spring Petclinic REST Endpoint возвращающий список домашних животных для по id владельца. Для этого нам потребуется:\n\n- добавить derived метод в PetRepository\n- создать сервис PetService и метод вызывающий репозиторий\n- создать маппер PetMapper и метод маппинга Pet -> PetDto\n- создать метод в PetRestController принимающий id и возвращающий List\n\nОсталось только попросить AI в чате сгенерировать код для каждого компонента и реаализация завершена.\n\nПосле нескольких итераций становится очевидно: основная рутина теперь не в написании кода, а в планировании шагов. Естественным образом рождается вопрос — может ли AI сам определить, какие файлы и объекты нужно модифицировать и как?\n\nКак оказалось вполне.\n\n\u003Ch3 id=\"uroven-2-agentnoe-programmirovanie\">Уровень 2. Агентное программирование\u003C\u002Fh3>\n\nПо сложившейся практике агентный режим чаще запускают из терминала, хотя в большинстве AI-плагинов для IDE он тоже уже есть. Чтобы не усложнять старт, установим Claude Code от Anthropic; для начала обычно достаточно базовой подписки за $20 в месяц.\n\nПосле запуска агента в терминале можно повторить ту же задачу с API и сравнить подходы. В отличие от чат-сценария, здесь агент сам определяет, какие части проекта нужно изменить, и выполняет работу от начала до конца. На выходе часто получается код, сопоставимый с ручной реализацией. Кажется будущее уже наступило.\n\nЗначит, пора проверить агента на задаче посложнее. Попросим его добавить в Spring Petclinic учет рабочего расписания ветеринаров и валидацию при создании визита: расписание должно существовать, а время — не пересекаться с уже назначенными приемами. Спустя некоторое время и десятки потраченных токенов мы увидим...\n\nК сожалению, сложно уверенно сказать, что именно мы получим на выходе. В одном случае агент действительно попадет в ожидания, но в другом — предложит решение, которое нас не устроит ни с точки зрения пользовательского сценария, ни по качеству реализации. И, что важно, второй вариант статистически вероятнее, поскольку пространство возможных решений значительно больше пространства тех, что устраивали бы именно вас.\n\nПодробнее вопрос уровней агентного программирования мы разбирали на прямой трансляции Spring АйО и Amplicode:\n\n\u003Cdiv class=\"video-player\" data-youtube=\"LUyVgOhMsXI\">\u003Ciframe src=\"https:\u002F\u002Fwww.youtube.com\u002Fembed\u002FLUyVgOhMsXI\" width=\"100%\" height=\"400\" frameborder=\"0\" allowfullscreen loading=\"lazy\">\u003C\u002Fiframe>\u003C\u002Fdiv>\n\nВозникает вопрос: можно ли как-то помочь агенту?\n\n\u003Ch3 id=\"uroven-3-skills\">Уровень 3. Skills\u003C\u002Fh3>\n\nСамое время усилить нашего агента. Для этого у нас есть различные иснтрументы: MCP, Skills, `CLAUDE.md`\u002F`AGENTS.md`, SubAgents. Попробуем собрать себе такой набор.\n\nНа агрегаторах [SkillHub](https:\u002F\u002Fwww.skillhub.club\u002F) и [SkillsMP](https:\u002F\u002Fskillsmp.com\u002F) можно найти **более миллиона Skills**, которые, кажется, покрывают почти любой сценарий. При таком объеме качество отдельных Skill-ов неизбежно колеблется: скорость выполнения, расход токенов и качество генерации не всегда соответствуют ожиданиям. Тем не менее базовую задачу, ради которой они создавались, большинство из них решает.\n\nНо со временем почти каждый, кто собирает собственный набор, замечает: Skills начинают мешать друг другу. Это известная проблема: агент может подгружать много Skill-ов, и все они работают в общем контексте.\n\nВыход, конечно, есть: можно писать Skills самостоятельно. Anthropic выложил в открытый доступ [курс о том, как создавать Skills](https:\u002F\u002Fresources.anthropic.com\u002Fhubfs\u002FThe-Complete-Guide-to-Building-Skill-for-Claude.pdf), а тексты уже подобранных Skill-ов доступны для редактирования. Этот путь не быстрый и включает множество трудностей, в том числе необходимость адаптировать и тестировать весь набор под разные модели.\n\nВ этот момент мы обычно приходим к развилке: либо продолжать «есть этот кактус» — вручную собирать набор, разбирать конфликты и поддерживать набор в рабочем состоянии, — либо откатиться к чистому агенту или к агенту с минимальным набором Skill-ов для элементарных операций.\n\nДля тех, кто «давно тут сидит», ситуация может показаться до боли знакомой — именно такую мы могли наблюдать на заре ИТ-индустрии. Вспомните, как мы сначала любовно настраивали Vim и Emacs, а потом переходили на NetBeans и Eclipse с их extension pack на все случаи жизни. Теперь же, взяв новый компьютер, часто достаточно установить IntelliJ IDEA\u002FOpenIDE — и можно сразу начать работать. Похоже, мы всё ещё в начале пути…\n\nКонечно, сейчас никто не может сказать, что будет с IntelliJ IDEA в мире победившего AI, однако к эпохе Eclipse с extension pack всё уже готово. Именно этот переход мы и предлагаем вам совершить, установив [Spring Agent Toolkit](https:\u002F\u002Famplicode.ru\u002Fai-spring-agent\u002F) — набор Skill-ов, MCP и хуков, совместно протестированных и необходимых для разработки Spring-приложений с помощью агентов. Ну как, захотелось?\n\n\u003Ch3 id=\"spring-agent-toolkit-kostyum-zheleznogo-cheloveka-dlya\">Spring Agent Toolkit: «костюм железного человека» для агента\u003C\u002Fh3>\n\n\u003Cvideo src=\"https:\u002F\u002Fstorage.yandexcloud.net\u002Famplicode-site\u002Fvideos\u002Fspring-agent-toolkit.mp4\" controls muted loop playsinline width=\"100%\" poster=\"{{strapiUrl}}\u002Fuploads\u002Fcover_spring_agent_toolkit_ultimativnyj_nabor_dlya_vashego_ai_agenta_639b6b4950.webp\" preload=\"none\">\u003C\u002Fvideo>\n\nЭто комплексное решение, установив которое вы научите своего агента:\n\n- анализировать Spring-приложение с учётом архитектуры (в том числе DDD)\n- понимать Spring Data JPA: настройка модели, работа с репозиториями и транзакциями\n- работать с DTO и мапперами (MapStruct, ModelMapper)\n- конфигурировать Spring Security\n- создавать CRUD REST и настраивать Spring MVC\n- отлаживать приложение с помощью агента\n- и не только: возможности постоянно расширяются\n\nИ всё это устанавливается практически одной кнопкой (ну хорошо, двумя).\n\n#### Spring Agent Toolkit: как установить\n\nЕсли коротко:\n\n1. Устанавливаем плагин Amplicode в IDE ([страница загрузки](https:\u002F\u002Famplicode.ru\u002Fdownload\u002F)).\n2. После перезапуска IDE на Welcome screen нажимаем кнопку «Настроить Spring Agent».\n\n![]({{strapiUrl}}\u002Fuploads\u002F5e15ed5f3ece14ed7ea30285e3aacf2a_6b11edc2db.webp)\n\nПолную инструкцию по установке смотрите в [документации Spring Agent](https:\u002F\u002Fgithub.com\u002FAmplicode\u002Famplicode-documentation\u002Fblob\u002Fmain\u002Fchapters\u002Fspring-agent\u002Fspring-agent.md).\n\n> Рекомендую сейчас остановиться, поставить себе Toolkit и дать агенту задачу на реализацию — а пока агент её выполняет, можно дочитать и статью.\n\nА теперь — немного подробнее о том, что входит в состав Spring Agent Toolkit.\n\n#### Spring MCP\n\nДанный сервер поставляется вместе с плагином Amplicode, который вы устанавливаете в IDEA. Он решает две задачи.\n\n1. Первая — дать агенту возможность анализировать приложение и взаимодействовать с ним в парадигме Spring-фреймворка. Например, с помощью этого MCP агент сможет посмотреть структуру приложения, связи бина с другими компонентами и получить доменную модель.\n2. Вторая — дать авторам и разработчикам Skill-ов (в том числе нам самим — команде Spring Agent Toolkit) доступ к заранее структурированной и консолидированной информации о вашем приложении. Это значит, что если, например, разработчику в рамках Skill-а нужно построить дерево зависимостей сущности, то сделать это можно за несколько последовательных вызовов MCP. С помощью Spring MCP авторы Skill-ов могут запускать и отлаживать приложение, а также запускать тесты и скрипты [Connekt](https:\u002F\u002Famplicode.ru\u002Fhttp-client\u002F).\n\nНиже — лишь малая часть доступных функций:\n\n- **list_spring_beans_tool, list_all_domain_entities, list_project_endpoints** — список бинов, сущностей и эндпоинтов, в том числе в библиотеках и стартерах\n- **get_bean_injection_info, get_entity_details, get_endpoint_info** — доступ к структурированной информации о связях бина и структуре сущностей\n- **create_migration_script** — генерация миграционных скриптов\n- **read_class_file** — доступ к содержимому файлов в зависимостях\n\nПолный список можно посмотреть после подключения MCP к агенту.\n\n\u003Ch3 id=\"spring-skills\">Spring Skills\u003C\u002Fh3>\n\nНад этим набором работала команда, которая не только более десяти лет разрабатывает на Spring, но и последние пять лет создаёт инструменты в IntelliJ IDEA для разработчиков по всему миру ([Amplicode](https:\u002F\u002Famplicode.ru\u002F), [JPA Buddy](https:\u002F\u002Fjpa-buddy.com\u002F)). Skills в наборе вобрали в себя накопленную за годы экспертизу и обратную связь. Однако мало собрать Skills, в которых сведены подряд все лучшие практики: важно, чтобы они применялись уместно и не мешали разработке именно вашего приложения.\n\n> Большое спасибо экспертам из [Spring АйО](https:\u002F\u002Ft.me\u002Fspring_aio) за то, что помогали собирать фидбек по использованию [Spring Skills](https:\u002F\u002Fgithub.com\u002FAmplicode\u002Fspring-skills) и делились своими мыслями касаемо того, какие из частей работы со Spring-экосистемой хотелось бы сильнее всего видеть в формате Skills.\n>\n> В будущем открытый репозиторий будет пополняться скиллами от экспертов Spring АйО и разработчиков Amplicode.\n\nПоэтому Skills из набора часто сначала смотрят на текущие паттерны применения технологии в вашем проекте и только потом добавляют своё экспертное видение. В результате получается не всегда «идеальный», зато подходящий вашему приложению код. Однако если результат генерации содержит явные проблемы, Skill подскажет агенту, что стоит указать на них разработчику и предложить возможные исправления.\n\nКроме того, все Skills тестируются на совместную работу: это значит, что в них нет взаимных противоречий и что они подключаются только там, где действительно нужны. Если же агент загрузил несколько Skill-ов сразу, проверяется, что их совместная работа не мешает достижению того результата, который закладывался при разработке этих Skill-ов.\n\nВот только некоторые из них:\n\n- **Spring Planning** — создаёт структурированный план реализации с интерактивным сбором контекста, выбором архитектуры и декомпозицией задач\n- **Spring Explore** — исследует приложение Spring Boot и формирует контекст проекта: технологический стек, структуру модулей, доменные сущности, REST-эндпоинты\n- **Spring Data JPA** — правила и рекомендации по работе со Spring Data JPA: создание и изменение сущностей, репозиториев, проекций и транзакционного кода\n- **CRUD REST Controller** — создаёт Spring REST-контроллер с CRUD-эндпоинтами\n- **Java Debug** — отладка приложений через отладчик IntelliJ IDEA: брейкпоинты, debug-сессии, пошаговое выполнение, вычисление выражений, инспекция состояния во время выполнения\n\nПолный список Skill-ов — [в репозитории на GitHub](https:\u002F\u002Fgithub.com\u002FAmplicode\u002Fspring-skills); состав набора постоянно пополняется.\n\n\u003Ch3 id=\"zaklyuchenie\">Заключение\u003C\u002Fh3>\n\nИ это ещё не всё: в нашем бэклоге — огромное число задач, как связанных с написанием новых Skill-ов, так и с улучшением существующих. Мы ценим обратную связь и поощряем активных участников бесплатными лицензиями, мерч-боксами и другими подарками.\n\nПробуйте [Spring Agent Toolkit](https:\u002F\u002Fgithub.com\u002FAmplicode\u002Fspring-skills), присылайте обратную связь и рассказывайте о своём опыте использования в социальных сетях. А больше про разработку на Java с AI-агентами читайте в нашем [ТГК-канале](https:\u002F\u002Ft.me\u002Famplicode).\n\n![]({{strapiUrl}}\u002Fuploads\u002Fd7d73ebc60d2160687f28dfcc211d877_e7dc84c806.webp)\n\n---\n\n_Впервые опубликовано на [Хабре](https:\u002F\u002Fhabr.com\u002Fru\u002Fcompanies\u002Fhaulmont\u002Farticles\u002F1034688\u002F)._\n",[20],{"title":21,"links":22},"Содержание",[23,26,29,32,35,38,41],{"label":24,"href":25},"Уровень 0. Чат в браузере","#uroven-0-chat-v-brauzere",{"label":27,"href":28},"Уровень 1. Интеграция чата в IDE","#uroven-1-integracziya-chata-v-ide",{"label":30,"href":31},"Уровень 2. Агентное программирование","#uroven-2-agentnoe-programmirovanie",{"label":33,"href":34},"Уровень 3. Skills","#uroven-3-skills",{"label":36,"href":37},"Spring Agent Toolkit: «костюм железного человека» для агента","#spring-agent-toolkit-kostyum-zheleznogo-cheloveka-dlya",{"label":39,"href":40},"Spring Skills","#spring-skills",{"label":42,"href":43},"Заключение","#zaklyuchenie","2026-11-12T11:25:15.578Z","2026-11-13T11:49:18.264Z","2026-11-13T11:49:18.350Z",{"id":48,"documentId":49,"firstname":50,"lastname":51,"createdAt":52,"updatedAt":52,"publishedAt":53,"slug":54,"photo":55},32,"o6vt7fwz9hd363ulcgbilr84","Илья","Кучмин","2026-11-12T11:20:31.602Z","2026-11-12T11:20:50.815Z","ilya-kuchmin",null,{"id":57,"documentId":58,"name":59,"alternativeText":55,"caption":55,"width":60,"height":61,"formats":62,"hash":97,"ext":66,"mime":67,"size":98,"url":99,"previewUrl":55,"provider":100,"provider_metadata":55,"createdAt":101,"updatedAt":101,"publishedAt":101,"focalPoint":55},1256,"uunsjmwjlgnuwvwdcvmd94ag","cover-spring-agent-toolkit-ultimativnyj-nabor-dlya-vashego-ai-agenta.webp",1280,720,{"thumbnail":63,"large":73,"medium":81,"small":89},{"name":64,"hash":65,"ext":66,"mime":67,"path":55,"width":68,"height":69,"size":70,"sizeInBytes":71,"url":72},"thumbnail_cover-spring-agent-toolkit-ultimativnyj-nabor-dlya-vashego-ai-agenta.webp","thumbnail_cover_spring_agent_toolkit_ultimativnyj_nabor_dlya_vashego_ai_agenta_639b6b4950",".webp","image\u002Fwebp",245,138,3.75,3746,"\u002Fuploads\u002Fthumbnail_cover_spring_agent_toolkit_ultimativnyj_nabor_dlya_vashego_ai_agenta_639b6b4950.webp",{"name":74,"hash":75,"ext":66,"mime":67,"path":55,"width":76,"height":77,"size":78,"sizeInBytes":79,"url":80},"large_cover-spring-agent-toolkit-ultimativnyj-nabor-dlya-vashego-ai-agenta.webp","large_cover_spring_agent_toolkit_ultimativnyj_nabor_dlya_vashego_ai_agenta_639b6b4950",1000,562,20.03,20028,"\u002Fuploads\u002Flarge_cover_spring_agent_toolkit_ultimativnyj_nabor_dlya_vashego_ai_agenta_639b6b4950.webp",{"name":82,"hash":83,"ext":66,"mime":67,"path":55,"width":84,"height":85,"size":86,"sizeInBytes":87,"url":88},"medium_cover-spring-agent-toolkit-ultimativnyj-nabor-dlya-vashego-ai-agenta.webp","medium_cover_spring_agent_toolkit_ultimativnyj_nabor_dlya_vashego_ai_agenta_639b6b4950",750,422,14.65,14652,"\u002Fuploads\u002Fmedium_cover_spring_agent_toolkit_ultimativnyj_nabor_dlya_vashego_ai_agenta_639b6b4950.webp",{"name":90,"hash":91,"ext":66,"mime":67,"path":55,"width":92,"height":93,"size":94,"sizeInBytes":95,"url":96},"small_cover-spring-agent-toolkit-ultimativnyj-nabor-dlya-vashego-ai-agenta.webp","small_cover_spring_agent_toolkit_ultimativnyj_nabor_dlya_vashego_ai_agenta_639b6b4950",500,281,9.47,9470,"\u002Fuploads\u002Fsmall_cover_spring_agent_toolkit_ultimativnyj_nabor_dlya_vashego_ai_agenta_639b6b4950.webp","cover_spring_agent_toolkit_ultimativnyj_nabor_dlya_vashego_ai_agenta_639b6b4950",29.52,"\u002Fuploads\u002Fcover_spring_agent_toolkit_ultimativnyj_nabor_dlya_vashego_ai_agenta_639b6b4950.webp","local","2026-11-13T11:44:52.127Z",[103],{"id":104,"documentId":105,"title":106,"published":107,"weight":108,"slug":109,"createdAt":110,"updatedAt":111,"publishedAt":112,"color":55},4,"ap54riuwcv7sj63auhmb4i6d","Гайды",true,3,"guides","2026-11-12T11:20:31.298Z","2026-11-12T11:22:44.141Z","2026-11-12T11:22:44.122Z",{"pagination":114},{"page":115,"pageSize":116,"pageCount":115,"total":115},1,25,{"data":118,"meta":137},[119,125,131],{"published_date":120,"id":121,"documentId":122,"title":123,"slug":124},"2026-09-28",327,"lruxexelyn19uak89r6dney5","Что такое OpenSpec? Полный гайд по Spec-Driven Development","chto-takoe-openspec-polnyj-gajd-po-spec-driven-development",{"published_date":126,"id":127,"documentId":128,"title":129,"slug":130},"2026-09-10",326,"ymtfa6pslevvkrwnohdfbi1u","Как не потерять интеграцию с Docker в IDE после блокировки JetBrains","kak-ne-poteryat-integracziyu-s-docker-v-ide-posle-blokirovki-jetbrains",{"published_date":132,"id":133,"documentId":134,"title":135,"slug":136},"2026-09-01",400,"dskd9jsck2vjm1d0ztoz91uo","JavaScript и TypeScript в OpenIDE: Node.js, React, Angular, Git и работа с API","javascript-i-typescript-v-openide",{"pagination":138},{"page":115,"pageSize":108,"pageCount":139,"total":140},6,16,1794584599948]