poster-design-mcp
poster-design-mcp
MCP-сервер, который создаёт бизнес-плакаты. Попросите ваш AI-клиент сделать плакат обычным языком — и он запишет на диск настоящий PNG или JPG: в печатном разрешении, свёрстанный по дизайн-системе, а не наугад.
Каждый плакат на этой странице создан одним вызовом инструмента. Больше — в Галерее.
Содержание
Related MCP server: Canvora MCP
Что делает
Большинство AI-инструментов для изображений рисуют плакат, поэтому текст получается «поплывшим», а номер телефона — выдумкой. Этот же набирает плакат. Заголовок — настоящий текст настоящим шрифтом, цена — та цена, которую вы указали, а результат получается точно заданных размеров — 2480×3508 для A4 при 300 dpi, готовый к печати.
Вы получаете:
Четыре макета на основе четырёх эталонных плакатов — события, брендовые заявления, реклама продуктов и юбилейные цифры.
Палитру из одного hex-кода. Укажите фирменный цвет; из него выводятся фон, чернила, акцент и палитра узора, причём чернила подбираются по коэффициенту контраста, чтобы текст оставался читабельным.
Автоподбор заголовочного набора. Заголовок растёт, пока самая длинная строка не коснётся поля, и останавливается. Разрывы строк выбираете вы; размер — сервер.
Работу с настоящими фотографиями — обрезка под заливку (full-bleed), фокусные точки, градиентные подложки, чтобы текст никогда не ложился прямо на изображение.
Печатные или социальные размеры, PNG или JPG, по запросу.
Как это работает
your prompt
│
▼
AI client ──MCP/stdio──▶ poster-design-mcp
│
│ 1. pick a template (src/templates/*.js)
│ 2. derive the palette from brandColor
│ 3. build an HTML + CSS document
▼
headless Chrome ── screenshot ──▶ poster.png
│
▼
~/Documents/Poster Designs/Дизайн-система — это числа, а не абстрактные ощущения. Двенадцать правил считаны с четырёх эталонных плакатов и записаны в
src/design-system.jsкак значения, которые шаблоны реально используют: поле — 6,8% ширины, главный заголовок — от 0,055 до 0,155 ширины, интерлиньяж — 0,90, трекинг — −0,03em. Текст в DESIGN-PRINCIPLES.md и отрендеренные пиксели читают одни и те же константы, поэтому документация не может разойтись с результатом.Шаблон превращает ваш текст в документ. Каждый из четырёх шаблонов (
src/templates/) — это функция: на входе контент, на выходе HTML и CSS. Он расставляет полосы, задаёт типографические роли, генерирует декоративный узор из сида и встраивает каждое локальное изображение как data URI.Вёрстку выполняет Headless Chrome. Рендеринг в браузере даёт настоящую текстовую вёрстку: запасные шрифты, переносы, обрезку через
object-fit, литеры сmix-blend-mode: multiply, — а цикл автоподбора измеряет фактически свёрстанный заголовок и масштабирует его, пока он не заполнит заданную ширину набора. Затем страница снимается ровно в выходных размерах, причёмdeviceScaleFactorделает всю работу, так что A4 при 300 dpi — это действительно 2480×3508 пикселей, а не апскейл.Файл попадает в Documents. MCP-сервер запускается своим клиентом, и у него нет значимой рабочей директории, поэтому результаты сохраняются туда, где их легко найти, а инструмент возвращает путь.
Ничего никуда не загружается. Никаких API-ключей, ни одного сетевого вызова — весь конвейер работает на вашем компьютере.
Установка
Требуются Node 20+ и бинарный файл Chrome/Chromium.
git clone https://github.com/suprisedr/poster-design-mcp.git
cd poster-design-mcp
npm installnpm install подтягивает Puppeteer, который обычно сам скачивает свой Chrome. Если этого не произошло или вы пропустили загрузку:
npx puppeteer browsers install chromeChrome ищется в таком порядке: $POSTER_CHROME_PATH → управляемый Chrome от Puppeteer → Google Chrome или Chromium в обычных системных расположениях. Чтобы указать конкретный бинарный файл:
export POSTER_CHROME_PATH="/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"Проверьте, что всё работает:
npm testЭта команда запускает сервер через stdio, прогоняет все инструменты и проверяет бюджет токенов. Затем, чтобы было на что посмотреть:
npm run demoПо одному плакату на каждый шаблон в ./examples.
Подключение к AI-клиенту
Claude Code
claude mcp add poster-design -- node /absolute/path/to/poster-design-mcp/src/server.jsClaude Desktop или любой файл конфигурации MCP
Добавьте в mcpServers (на macOS конфиг Claude Desktop находится по пути ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"poster-design": {
"command": "node",
"args": ["/absolute/path/to/poster-design-mcp/src/server.js"],
"env": {
"POSTER_BASE_DIR": "/absolute/path/to/poster-design-mcp"
}
}
}
}Используйте абсолютные пути — клиент запускает сервер из непредсказуемой директории.
Переменная окружения | Значение |
| Директория, относительно которой разрешаются относительные пути изображений и результатов |
| Переносит папку вывода по умолчанию из |
| Явный бинарный файл Chrome/Chromium |
Перезапустите клиент — и появятся четыре инструмента.
Использование
После подключения вы просто просите:
Сделай мне плакат A4 для пекарни Golden Crust Bakery — хлеб и выпечка ручной работы, 123 Maple Street, открыто с 6:00 до 18:00 со вторника по воскресенье. Тёплый оранжевый, используй это фото хлеба.
Клиент выбирает шаблон и вызывает create_poster. Под капотом это один JSON-объект:
{
"template": "photo-overlay",
"brandColor": "#0F918F",
"size": "instagram-portrait",
"format": "jpg",
"content": {
"brandName": "Guski",
"logoBadge": true,
"headline": "You love it,\nwe cover it",
"subhead": "Cover that changes everything",
"cta": { "label": "Get a quote", "phone": "061 306 081" },
"legal": "Guski Short Term Insurance Ltd. Reg. No. 89/524.",
"image": "examples/sample-photo.jpg",
"imageFocus": "50% 45%"
}
}Он возвращает одну краткую строку — path | 2480x3508 png | 191KB | ... — а файл уже на диске.
Два момента, которые стоит знать, когда вы пишете текст:
Используйте
\nв заголовке, чтобы выбрать место переноса. Генератор подбирает размер шрифта под любой рваный край строк, который вы зададите, так что перенос — это дизайнерское решение, и оно ваше.Будьте кратки. Заголовок — 2–5 слов, подзаголовок — до 45 символов, основной текст — две строки. Типографическая шкала построена на сильном контрасте; длинный текст — это то, что превращает плакат в листовку.
Галерея
Реальные результаты, по одному вызову инструмента на каждый.
| Тот же плакат без фото. Уберите поле |
|
|
|
|
Фотографии в примерах — это изображения-заглушки, включённые для демонстрации; замените их своими.
Инструменты
Инструмент | Что делает |
| Четыре макета и когда какой использовать, а также палитры, размеры и шрифты. Передайте id |
| Двенадцать правил, типографическая шкала и пропорции макета. Передайте |
| Отрисовывает один плакат в PNG/JPG и возвращает путь. Передайте |
| Тот же текст на 4 шаблонах или палитрах для сравнения |
Шаблоны
id | На основе | Для чего используется |
| Афиша джазового фестиваля | Мероприятия, запуски, составы участников. Полоса узора + фотография + типографический блок + полоса спонсоров |
| Типографический брендовый плакат | Брендовые заявления и слова кампании, когда нет фотографии, которую стоит печатать |
| Реклама страховой кампании | Реклама товаров и услуг с призывом к действию и мелким шрифтом |
| Юбилейное объявление | Вехи, результаты и предложения, в которых есть цифра |
Правила, лежащие в их основе, — в DESIGN-PRINCIPLES.md: одно сообщение на плакат, полосы, а не блоки, контраст масштабов 6–12×, одно значение поля, в конце — кнопка-пилюля.
Размеры, палитры и изображения
Размеры. a4-print (2480×3508 @300dpi), a3-print, a5-flyer, poster-hd, instagram-post, instagram-portrait, story, web-banner — либо передайте width и height в пикселях. Результат будет ровно в этих размерах.
Цвет. Передайте brandColor в виде hex-кода — из него будет выведена вся палитра. Либо передайте palette для одного из именованных наборов (festival-block, prism-glass, night-drive, signal-teal, mono-ink) — этот параметр имеет приоритет над brandColor.
Изображения. image, logo, badge.logo и partners[].logo принимают локальный путь (абсолютный, ~ или относительный к POSTER_BASE_DIR) либо http(s) URL. Локальные файлы встраиваются как data URI до рендеринга. Для stat-hero вырезанный объект на прозрачном PNG даёт эффект пересечения объекта с цифрой.
Где сохраняются плакаты
Готовые плакаты сохраняются в ~/Documents/Poster Designs.
| Разрешается в |
не задан |
|
|
|
| именно этот путь — относительные формы разрешаются от |
Задайте POSTER_OUTPUT_DIR, чтобы перенести папку по умолчанию в другое место, или outputPath для одного конкретного файла.
Стоимость токенов
Список инструментов MCP-сервера переотправляется при каждом запросе каждой сессии, поэтому этот сервер написан так, чтобы его содержание в контексте обходилось дёшево:
Список инструментов занимает ~990 токенов вместо ~2 600. Он содержит названия, параметры и имена полей; смысл полей перенесён в
list_poster_templates, который вызывается один раз теми, кому он нужен.list_poster_templatesвозвращает ~390 токенов вместо ~1 700; передайте id вtemplate, чтобы получить один макет вместо всех четырёх.get_design_principlesвозвращает ~280 токенов вместо ~1 700;detail: true— для полного обоснования.Результаты — это одна краткая строка, а не форматированный JSON.
Встроенное изображение предпросмотра (200–500 токенов на постер) включается по желанию через
preview: true. Файл находится в Documents — там на него удобнее смотреть.
npm test проверяет бюджет списка инструментов, поэтому регрессия в самом затратном месте приводит к падению сборки.
Разработка
npm run demo # one poster per template into ./examples
npm test # boots the server over stdio, exercises every tool, checks the token budgetssrc/
server.js MCP wiring: tool list, dispatch, terse results
poster.js orchestration — template → HTML → render → write
design-system.js the twelve rules as numbers: palettes, type scale, layout ratios
templates/ one file per layout, each content → { body, css }
lib/
html.js document assembly and escaping
pattern.js seeded decorative pattern generation
media.js image resolution and data-URI inlining
render.js headless Chrome lifecycle and screenshotting
paths.js output directory resolutionsaveHtml: true сохраняет HTML-исходник рядом с изображением — так быстрее всего понять, почему элемент расположился именно так. seed делает узор и случайные отклонения воспроизводимыми.
Устранение неполадок
Симптом | Решение |
|
|
Инструменты не отображаются в клиенте | Используйте абсолютный путь к |
Изображения не отображаются | Локальные пути разрешаются относительно |
Постер сохраняется не туда | По умолчанию — |
Заголовок не помещается | Вставьте свои переносы |
Автор
Создано Suprise Nkosi.
Facebook — facebook.com/suprise.nkosi.524
GitHub — @suprisedr
Приветствуются issues и pull requests.
Лицензия
MIT — см. LICENSE.
Available Tools
4 toolscreate_posterB
Render a business poster to a PNG/JPG in ~/Poster Designs. Auto-fitted display type, band structure, one accent colour, protected legibility. Returns the file path.
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | Same seed = same pattern/jitter. | |
| size | No | Default a4-print. | |
| fonts | No | Roles display/text. grotesque|humanist|black|geometric|serif|mono or a CSS font-family. | |
| width | No | Custom px width (with height). | |
| format | No | Default png. | |
| height | No | ||
| content | Yes | Copy and imagery. Fields (* = required): banded-editorial(headline*, subhead, details, eyebrow, badge, partners, image, imageFocus, patternDensity); chromatic-type(word*, tagline, brandLine, overlap, jitter, shards, bleed, fill); photo-overlay(headline*, subhead, cta, brandName, logo, logoBadge, legal, image*, imageFocus, scrim, treatment); stat-hero(headline*, subhead, figure*, labelTop, labelBottom, body, tag, image, cutout, logo, figureStyle). Field meanings: list_poster_templates. Use \n in a headline to set the rag. | |
| palette | No | festival-block|prism-glass|night-drive|signal-teal|mono-ink or a hex. Beats brandColor. | |
| preview | No | Return an inline thumbnail to look at. Costs tokens; default false. | |
| quality | No | JPEG quality 1-100, default 92. | |
| filename | No | Name without extension. | |
| saveHtml | No | Also write the HTML source. | |
| template | Yes | ||
| outputDir | No | Absolute path, or a subfolder of ~/Poster Designs (the default). | |
| brandColor | No | Brand hex; a full palette is derived from it. | |
| outputPath | No | Exact output path. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It does transparently mention file output formats, the output directory, and the return value, and it adds design automation traits such as auto-fitted display type and protected legibility. However, it does not mention overwrite behavior, permissions, or other side effects beyond writing the poster file.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: purpose, key output behavior, and return value appear in three short sentences. The design-behavior clause is useful but uses some jargon (e.g., 'band structure', 'protected legibility') that is not explained; still, there is minimal waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (16 parameters, nested content objects, four templates), the description is brief but the schema compensates with rich parameter documentation. It covers the output path and basic design behavior, but it lacks guidance on when to choose this tool over create_poster_variants and does not summarize template requirements in the main description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is high (88%), and the schema already documents parameter meanings, defaults, enums, and nested template-specific fields. The description adds no parameter-level detail beyond general design intent, so the baseline 3 applies because the schema carries most of the semantic weight.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Render a business poster to a PNG/JPG'), a target location ('~/Poster Designs'), and the return value ('Returns the file path'). It clearly identifies this as a poster-generation tool, though it does not explicitly distinguish it from the sibling create_poster_variants.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus create_poster_variants, or how it relates to list_poster_templates and get_design_principles. Usage context is only implied by the phrase 'Render a business poster' and the parameter schema; there are no exclusions or alternative-selection hints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_poster_variantsA
Same message across several templates/palettes in one call, to compare directions.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Shared copy; fields as in create_poster. | |
| template | No | Fallback when a variant names none. | |
| variants | Yes | Up to 4 override objects: template, palette, brandColor, seed, fonts, filename or extra content fields. Any create_poster option may also be set at the top level as a shared default. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It accurately communicates the key batch behavior (several variants in one call) and the comparison intent, but it does not mention return format, failure modes, or any side effects. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One concise sentence that delivers the core value proposition without wasted words. It is front-loaded with the batch concept and ends with the purpose, making it easy to scan. Slightly more explicit structure would improve it, but it is appropriately sized.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with nested objects and no output schema, the description gives enough context to select the tool and understand its general purpose. However, an agent would still need to rely on the schema for override semantics and would not know what the response contains. Functional for selection, incomplete for full invocation confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the structured schema already documents content, template fallback behavior, and variant overrides. The description adds the conceptual 'same message across templates' framing but no additional parameter-level detail beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly conveys that the tool generates the same message across multiple templates/palettes in a single call, which differentiates it from the singular create_poster sibling. It lacks an explicit verb but the resource and batch scope are unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'to compare directions' provides a clear context for when this tool is appropriate: when the user wants to explore multiple visual directions at once. It does not explicitly name alternatives or exclusions, but the batch comparison purpose is evident from the description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_design_principlesA
The design rules, type scale and layout ratios the generator applies. For writing copy that fits, or critiquing output.
| Name | Required | Description | Default |
|---|---|---|---|
| detail | No | Full rationale per rule instead of one line each. | |
| brandColor | No | Also return the palette derived from this hex. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining behavior. It communicates that this is a read-oriented informational tool returning rules, type scale, and ratios, but it does not explicitly state the return format, side effects, or any constraints such as whether brandColor changes the returned rules.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler. The first sentence establishes what the tool returns and the second gives actionable usage guidance, so every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple getter with two optional parameters and no output schema, the description names the key return content and intended use. It would be more complete with a sentence about what the response contains, but for this complexity the coverage is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds no parameter-level meaning, but the baseline of 3 applies because the schema handles the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as the generator's design rules, type scale, and layout ratios, and states its intended use in writing or critiquing copy. It does not explicitly contrast with sibling tools, but the subject matter is obviously distinct from template listing and poster creation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives explicit use cases: 'For writing copy that fits, or critiquing output.' It does not state exclusions or point to alternatives, so it stops short of a 5, but the situational context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_poster_templatesA
Field guide for the poster layouts, plus palettes, sizes and fonts. Pass a template id for that one layout only. Call once before create_poster if unsure.
| Name | Required | Description | Default |
|---|---|---|---|
| template | No | Just this layout, in full. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. It implies read-only behavior through 'field guide' and describes the optional filter behavior ('Pass a template id for that one layout only'), which adds useful context. However, it never explicitly states that the operation is read-only, nor does it describe the default return behavior when no template is passed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no fluff. The purpose is front-loaded, the optional parameter behavior is stated in the second sentence, and the workflow guidance is in the third. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one optional parameter and no output schema, the description adequately covers what the tool returns, the filtering behavior, and when to call it. The main gap is the absence of any distinction from the sibling get_design_principles, which could leave an agent uncertain which reference tool to select.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the template parameter. The description adds only 'for that one layout only,' which reinforces the schema's 'Just this layout, in full' but does not materially extend it. This is the appropriate baseline when the schema handles parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a reference for poster layouts, palettes, sizes, and fonts, which is a specific resource and content scope. It does not explicitly use the verb 'list' but the name and 'field guide' make the informational purpose clear. It distinguishes itself from create_poster by placement in workflow, though it does not differentiate from sibling get_design_principles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit contextual guidance: 'Call once before create_poster if unsure.' This tells the agent when to use the tool and provides a workflow cue. It does not state when not to use it or explicitly compare to get_design_principles, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v1.1.0- First observed
create_poster - First observed
create_poster_variants - First observed
get_design_principles - First observed
list_poster_templates
TDQS
Scored across 4 tools
Each tool has a clearly distinct purpose: discovering templates, learning design principles, creating a single poster, and creating variants. Even the two create tools are distinguishable by single vs. batch behavior.
All tool names follow the same verb_noun snake_case pattern: list_, get_, create_, create_. The naming is predictable and indicates the action and resource clearly.
Four tools is well-scoped for a poster design server, covering discovery, guidance, creation, and variation. The set feels intentionally minimal rather than bloated or incomplete.
The core workflow is covered: browse templates, learn design rules, create a poster, and generate variants. Minor gaps exist around modifying or deleting generated posters, but these are not clearly required for the server's stated purpose.
Maintenance
Related MCP Connectors
- LovpicsOAuthcom.lovpics
Generate product images, posters, reels, and videos from your photos.
Make ad creatives, social media posts and banners from a brief. Editable designs you can reuse.
Generate branded images at scale: design templates and render them to PNGs by prompt.
- CanvoraOAuthai.canvora
Turn any idea, URL, doc, or PDF into on-brand visuals: 100+ formats, native in 150+ languages
Related MCP Servers
- FlicenseBqualityBmaintenanceGenerates images through ChatGPT's web backend and assembles them into full-bleed, branded PowerPoint decks with slide styling and reference-based design.63-

Canvora MCPofficial
AlicenseAqualityCmaintenanceEnables AI agents to generate on-brand visuals from ideas, URLs, documents, or PDFs in over 100 formats and 150+ languages, with consistent brand kits.16192 npm1MIT- AlicenseNot gradedqualityBmaintenanceEnables AI agents to convert natural-language briefs into structured visual specs, deterministically render typography and layouts, and run constraint-aware visual QA and targeted repair for image generation.30 npmApache 2.0
- FlicenseBqualityCmaintenanceEnables brand-guided design generation by creating social media graphics, quote posts, and one-page layouts from a fictional sample identity, with asset validation and auditing.13-