Skip to main content

Referencia schopností

Schopnosti sú atomické akcie, ktoré Gratis AI Agent môže vyvolať vo vašej inštalácii WordPress. Každá schopnosť je registrovaná PHP trieda, ktorá sprístupňuje JSON schému — agent túto schému číta za behu, aby pochopil, aké parametre sú povinné a čo schopnosť vracia.

Táto stránka dokumentuje všetky schopnosti dodávané s Gratis AI Agent v1.9.0.


Vlastné typy príspevkov

Tieto schopnosti spravujú vlastné typy príspevkov (CPT) registrované prostredníctvom agenta. Registrácie sa ukladajú do tabuľky možností WordPress, takže prežijú deaktiváciu a opätovnú aktiváciu pluginu.

register_post_type

Registruje nový vlastný typ príspevku.

Parametre

ParameterTypeRequiredDescription
slugstringÁnoKľúč typu príspevku (max. 20 znakov, bez veľkých písmen, bez medzier)
singular_labelstringÁnoČitateľný názov v jednotnom čísle, napr. Portfolio Item
plural_labelstringÁnoČitateľný názov v množnom čísle, napr. Portfolio Items
publicbooleanNieČi je typ príspevku verejne prístupný. Predvolené true
supportsarrayNieFunkcie, ktoré sa majú podporovať: title, editor, thumbnail, excerpt, comments, revisions, custom-fields. Predvolené ["title","editor"]
has_archivebooleanNieČi je povolená archívna stránka typu príspevku. Predvolené false
menu_iconstringNieTrieda Dashicons alebo URL pre ikonu v admin menu. Predvolené "dashicons-admin-post"
rewrite_slugstringNieURL slug pre typ príspevku. Predvolene slug

Príklad

{
"slug": "portfolio",
"singular_label": "Portfolio Item",
"plural_label": "Portfolio Items",
"public": true,
"supports": ["title", "editor", "thumbnail"],
"has_archive": true,
"menu_icon": "dashicons-portfolio"
}

Vráti { "success": true, "slug": "portfolio" }


list_post_types

Vráti všetky vlastné typy príspevkov registrované agentom.

Parametre — žiadne

Vráti

{
"post_types": [
{
"slug": "portfolio",
"singular_label": "Portfolio Item",
"plural_label": "Portfolio Items",
"public": true
}
]
}

delete_post_type

Zruší registráciu vlastného typu príspevku, ktorý bol predtým registrovaný agentom. Existujúce príspevky tohto typu zostanú v databáze, ale už nebudú prístupné cez daný typ príspevku.

Parametre

ParameterTypeRequiredDescription
slugstringÁnoKľúč typu príspevku, ktorý sa má odstrániť

Vráti { "success": true, "slug": "portfolio" }


Vlastné taxonómie

Tieto schopnosti spravujú vlastné taxonómie. Rovnako ako CPT, registrácie taxonómií sa ukladajú natrvalo.

register_taxonomy

Registruje novú vlastnú taxonómiu.

Parametre

ParameterTypeRequiredDescription
slugstringÁnoKľúč taxonómie (max. 32 znakov)
singular_labelstringÁnoČitateľný názov v jednotnom čísle, napr. Project Category
plural_labelstringÁnoČitateľný názov v množnom čísle, napr. Project Categories
post_typesarrayÁnoSlugy typov príspevkov, ku ktorým má byť táto taxonómia pripojená
hierarchicalbooleanNietrue pre štýl kategórií, false pre štýl značiek. Predvolené true
publicbooleanNieČi sú termíny verejne prístupné. Predvolené true
rewrite_slugstringNieURL slug pre taxonómiu. Predvolene slug

Príklad

{
"slug": "project-category",
"singular_label": "Project Category",
"plural_label": "Project Categories",
"post_types": ["portfolio"],
"hierarchical": true
}

Vráti { "success": true, "slug": "project-category" }


list_taxonomies

Vráti všetky vlastné taxonómie registrované agentom.

Parametre — žiadne

Vráti

{
"taxonomies": [
{
"slug": "project-category",
"singular_label": "Project Category",
"post_types": ["portfolio"],
"hierarchical": true
}
]
}

delete_taxonomy

Zruší registráciu vlastnej taxonómie, ktorá bola predtým registrovaná agentom.

Parametre

ParameterTypeRequiredDescription
slugstringÁnoKľúč taxonómie, ktorý sa má odstrániť

Vráti { "success": true, "slug": "project-category" }


Dizajnový systém

Schopnosti dizajnového systému upravujú vizuálnu prezentáciu WordPress site — od vlastného CSS po vzory blokov a logo site.

inject_custom_css

Pripojí CSS do <head> site cez wp_add_inline_style. CSS je uložené v možnosti gratis_ai_agent_custom_css a po resetovaní schopnosti sa čisto vyradí z fronty.

Parametre

ParameterTypeRequiredDescription
cssstringÁnoPlatné CSS na vloženie
labelstringNieČitateľný štítok pre tento CSS blok, používaný v debug logoch. Predvolené "agent-injected"
replacebooleanNieAk je true, nahradí všetko predtým vložené CSS. Predvolené false (pripojí)

Príklad

{
"css": ":root { --primary: #1a1a2e; --accent: #e94560; } body { font-family: 'Inter', sans-serif; }",
"label": "brand-colours",
"replace": false
}

Vráti { "success": true, "bytes": 96 }


add_block_pattern

Registruje opakovane použiteľný vzor bloku v knižnici vzorov WordPress.

Parametre

ParameterTypeRequiredDescription
slugstringÁnoIdentifikátor vzoru, napr. gratis/hero-dark
titlestringÁnoČitateľný názov vzoru zobrazený v editore
contentstringÁnoSerializovaný značkovací kód bloku (HTML) pre vzor
categoriesarrayNieSlugy kategórií vzorov, napr. ["featured", "hero"]
descriptionstringNieKrátky opis zobrazený vo výbere vzorov
keywordsarrayNieKľúčové slová vyhľadávania

Vráti { "success": true, "slug": "gratis/hero-dark" }


list_block_patterns

Vypíše všetky vzory blokov registrované agentom.

Parametre — žiadne

Vracia

{
"patterns": [
{
"slug": "gratis/hero-dark",
"title": "Dark Hero",
"categories": ["hero"]
}
]
}

Nastaví logo WordPress stránky na dané ID prílohy alebo vzdialenú URL obrázka. Keď je poskytnutá URL, obrázok sa stiahne a importuje do knižnice médií.

Parametre

ParameterTypeRequiredDescription
attachment_idintegerNieID existujúcej prílohy v knižnici médií
urlstringNieURL vzdialeného obrázka na importovanie a nastavenie ako logo

Musí byť poskytnuté jedno z attachment_id alebo url.

Vracia { "success": true, "attachment_id": 42 }


apply_theme_json_preset

Použije pomenovanú predvoľbu farieb/typografie na theme.json (alebo global-styles) aktívnej témy. Predvoľby sú kurátorsky pripravené balíky udržiavané tímom Gratis AI Agent.

Parametre

ParameterTypeRequiredDescription
presetstringÁnoNázov predvoľby, napr. minimal-dark, warm-editorial, corporate-blue
mergebooleanNieAk je true, zlúči sa s existujúcimi hodnotami namiesto nahradenia. Predvolené je false

Dostupné predvoľby

PresetDescription
minimal-darkTakmer čierne pozadie, biely text, jedna akcentová farba
warm-editorialTeplé takmer biele pozadie, serifové nadpisy, zemité akcentové farby
corporate-blueTmavomodrá a biela paleta s profesionálnou typografiou
vibrant-startupJasné prechody, zaoblené rohy, moderný bezserifový typ písma
classic-blogNeutrálne sivé odtiene, pohodlná výška riadku, tradičné rozstupy rozloženia

Vracia { "success": true, "preset": "minimal-dark" }


Globálne štýly

Schopnosti globálnych štýlov čítajú a zapisujú hodnoty theme.json prostredníctvom WordPress Global Styles API, čo ovplyvňuje všetky bloky a šablóny na celej stránke.

get_global_styles

Vracia aktuálnu konfiguráciu globálnych štýlov.

Parametre

ParameterTypeRequiredDescription
pathstringNieJSON ukazovateľ na konkrétnu hodnotu, napr. /color/palette alebo /typography/fontSizes. Ak sa vynechá, vráti celý objekt.

Vracia celý objekt globálnych štýlov alebo hodnotu na path.


set_global_styles

Aktualizuje jednu alebo viac hodnôt v konfigurácii globálnych štýlov.

Parametre

ParameterTypeRequiredDescription
pathstringÁnoJSON ukazovateľ na hodnotu, ktorá sa má nastaviť, napr. /color/palette
valueanyÁnoNová hodnota

Príklad — pridanie farby do palety

{
"path": "/color/palette",
"value": [
{ "slug": "primary", "color": "#1a1a2e", "name": "Primary" },
{ "slug": "accent", "color": "#e94560", "name": "Accent" }
]
}

Vracia { "success": true, "path": "/color/palette" }


reset_global_styles

Resetuje všetky zmeny globálnych štýlov použité agentom a obnoví predvolené nastavenia témy.

Parametre — žiadne

Vracia { "success": true }


Schopnosti navigačného menu vytvárajú a spravujú navigačné menu WordPress a ich položky.

create_menu

Vytvorí nové navigačné menu WordPress.

Parametre

ParameterTypeRequiredDescription
namestringÁnoNázov menu, napr. Primary Navigation
locationstringNieUmiestnenie témy, ku ktorému sa má toto menu priradiť, napr. primary

Vracia { "success": true, "menu_id": 7 }


update_menu

Premenuje menu alebo ho znova priradí k umiestneniu témy.

Parametre

ParameterTypeRequiredDescription
menu_idintegerÁnoID menu, ktoré sa má aktualizovať
namestringNieNový názov menu
locationstringNieUmiestnenie témy, ku ktorému sa má priradiť alebo znova priradiť

Vracia { "success": true, "menu_id": 7 }


add_menu_item

Pridá položku do existujúceho navigačného menu.

Parametre

ParameterTypeRequiredDescription
menu_idintegerÁnoID cieľového menu
typestringÁnoTyp položky: custom, post_type alebo taxonomy
titlestringNieOznačenie položky menu (vyžadované pre typ custom)
urlstringNieURL pre položky custom
object_idintegerNieID príspevku alebo ID termínu pre položky post_type/taxonomy
parent_idintegerNieID položky menu, pod ktorú sa má táto položka vnoriť
positionintegerNiePozícia v menu počítaná od nuly

Vracia { "success": true, "item_id": 12 }


remove_menu_item

Odstráni položku z navigačného menu.

Parametre

ParameterTypeRequiredDescription
item_idintegerÁnoID položky menu, ktorá sa má odstrániť

Vracia { "success": true, "item_id": 12 }


list_menus

Vypíše všetky navigačné menu WordPress vrátane ich priradených umiestnení témy.

Parametre — žiadne

Vracia

{
"menus": [
{
"menu_id": 7,
"name": "Primary Navigation",
"location": "primary",
"item_count": 5
}
]
}

Správa možností

Schopnosti možností čítajú a zapisujú možnosti WordPress prostredníctvom get_option / update_option. Vstavaný bezpečnostný blokovací zoznam zabraňuje náhodnej úprave kritických nastavení.

get_option

Číta možnosť WordPress.

Parametre

ParameterTypeRequiredDescription
option_namestringÁnoKľúč možnosti, napr. blogname

Vracia { "option_name": "blogname", "value": "My Site" }

Vráti chybu, ak je option_name na bezpečnostnom blokovacom zozname.


set_option

Zapíše možnosť WordPress.

Parametre

ParameterTypeRequiredDescription
option_namestringÁnoKľúč možnosti
valueanyÁnoNová hodnota (automaticky serializovaná pre polia/objekty)
autoloadstringNie"yes" alebo "no". Predvolene zachová existujúce nastavenie autoload

Vráti chybu, ak je option_name na bezpečnostnom blockliste.

Vráti { "success": true, "option_name": "blogname" }


delete_option

Odstráni možnosť WordPress.

Parametre

ParameterTypeRequiredDescription
option_namestringYesKľúč možnosti, ktorý sa má odstrániť

Vráti chybu, ak je option_name na bezpečnostnom blockliste.

Vráti { "success": true, "option_name": "my_custom_option" }


list_options

Vypíše možnosti WordPress zodpovedajúce vzoru.

Parametre

ParameterTypeRequiredDescription
patternstringNoVzor SQL LIKE na filtrovanie názvov možností, napr. gratis_%. Ak sa vynechá, vráti všetky možnosti (pri veľkých databázach používajte opatrne).
limitintegerNoMaximálny počet výsledkov. Predvolené 50, max. 500

Vráti

{
"options": [
{ "option_name": "gratis_ai_agent_version", "autoload": "yes" }
],
"total": 1
}

Správa obsahu

Schopnosti správy obsahu vytvárajú a upravujú príspevky a stránky WordPress. ID príspevkov sa vracajú, aby sa na vytvorený obsah mohli odkazovať následné kroky vo viacschopnostných plánoch.

create_post

Vytvorí nový príspevok, stránku alebo položku vlastného typu príspevku vo WordPress.

Parametre

ParameterTypeRequiredDescription
titlestringYesNázov príspevku
contentstringNoTelo príspevku — prijíma obyčajný text, HTML alebo serializovaný zápis blokov
statusstringNodraft, publish, pending, private. Predvolené draft
post_typestringNoSlug typu príspevku, napr. post, page alebo ľubovoľný registrovaný CPT. Predvolené post
excerptstringNoKrátke zhrnutie zobrazované v archívoch a výsledkoch vyhľadávania
categoriesarrayNoPole názvov alebo ID kategórií na priradenie
tagsarrayNoPole názvov alebo ID značiek na priradenie
authorintegerNoID používateľa WordPress, ktorý sa má nastaviť ako autor príspevku. Predvolene aktuálny používateľ
datestringNoDátum publikovania vo formáte ISO 8601, napr. 2026-05-01T09:00:00
page_templatestringNoSúbor šablóny, ktorý sa má priradiť tomuto príspevku alebo stránke, napr. page-full-width.php. Má význam iba vtedy, keď je post_type page alebo CPT, ktorý podporuje šablóny stránok.

Príklad

{
"title": "Welcome to Our New Site",
"content": "<!-- wp:paragraph --><p>Hello world!</p><!-- /wp:paragraph -->",
"status": "publish",
"post_type": "page",
"page_template": "page-full-width.php"
}

Vráti { "success": true, "post_id": 42, "permalink": "https://example.com/welcome/" }


update_post

Aktualizuje existujúci príspevok alebo stránku WordPress.

Parametre

ParameterTypeRequiredDescription
post_idintegerYesID príspevku, ktorý sa má aktualizovať
titlestringNoNový názov príspevku
contentstringNoNové telo príspevku
statusstringNoNový stav: draft, publish, pending, private
excerptstringNoNový úryvok
categoriesarrayNoNahradiť celý zoznam kategórií týmto poľom názvov alebo ID
tagsarrayNoNahradiť celý zoznam značiek týmto poľom názvov alebo ID
page_templatestringNoNový súbor šablóny, ktorý sa má priradiť tomuto príspevku alebo stránke, napr. page-full-width.php. Odovzdajte prázdny reťazec na odstránenie priradenia šablóny a návrat k predvolenej hodnote theme.

Príklad — zmena šablóny po vytvorení

{
"post_id": 42,
"page_template": "page-full-width.php"
}

Vráti { "success": true, "post_id": 42 }


batch_create_posts

Vytvorí viacero príspevkov v jednom volaní schopnosti, čím znižuje počet ciest tam a späť počas zostavovania webu alebo hromadného importu obsahu. Príspevky sa vytvárajú postupne; ak jeden zlyhá, ostatné pokračujú a zlyhanie sa nahlási v poli výsledkov.

Parametre

ParameterTypeRequiredDescription
postsarrayYesPole objektov príspevkov, pričom každý prijíma rovnaké parametre ako create_post
stop_on_errorbooleanNoAk je true, zastaví spracovanie po prvom zlyhaní. Predvolené false

Príklad

{
"posts": [
{
"title": "About Us",
"post_type": "page",
"status": "publish",
"page_template": "page-full-width.php"
},
{
"title": "Services",
"post_type": "page",
"status": "publish"
},
{
"title": "Contact",
"post_type": "page",
"status": "publish"
}
]
}

Vráti

{
"created": 3,
"failed": 0,
"results": [
{ "success": true, "post_id": 42, "title": "About Us" },
{ "success": true, "post_id": 43, "title": "Services" },
{ "success": true, "post_id": 44, "title": "Contact" }
]
}

set_featured_image

Priradí ilustračný obrázok (miniatúru príspevku) k existujúcemu príspevku alebo stránke. Prijíma ID existujúcej prílohy knižnice médií alebo URL vzdialeného obrázka; keď sa poskytne URL, obrázok sa automaticky stiahne a importuje.

Parametre

ParameterTypeRequiredDescription
post_idintegerYesID príspevku alebo stránky, ktorá sa má aktualizovať
attachment_idintegerNoID existujúcej prílohy knižnice médií
urlstringNoURL vzdialeného obrázka, ktorý sa má importovať a nastaviť ako ilustračný obrázok
alt_textstringNoAlternatívny text, ktorý sa má použiť na prílohu, ak sa importuje z URL

Musí byť poskytnuté jedno z attachment_id alebo url.

Vráti { "success": true, "post_id": 42, "attachment_id": 17 }


create_contact_form

Vytvorí kontaktný formulár pomocou aktívneho pluginu formulárov (Contact Form 7, WPForms, Fluent Forms alebo Gravity Forms, podľa toho, ktorý je nainštalovaný). Vráti shortcode, ktorý možno vložiť do ľubovoľného príspevku alebo stránky.

Parametre

ParameterTypPovinnéPopis
titlestringÁnoNázov formulára zobrazený v administrácii pluginu formulára
fieldsarrayÁnoZoradený zoznam polí formulára (pozri objekt poľa nižšie)
recipientstringNieE-mailová adresa na prijímanie odoslaní. Predvolene e-mail administrátora WordPress
subjectstringNieRiadok predmetu e-mailu. Podporuje zástupné symboly [your-name] a [your-subject] pri použití Contact Form 7
confirmation_messagestringNieSpráva zobrazená po úspešnom odoslaní. Predvolené: "Thank you for your message. We'll be in touch soon."

Objekt poľa

KľúčTypPovinnéPopis
namestringÁnoInterný názov poľa / strojový kľúč
labelstringÁnoĽudsky čitateľný štítok zobrazený vo formulári
typestringÁnotext, email, tel, textarea, select, checkbox, radio, file, date
requiredbooleanNieČi musí byť pole vyplnené pred odoslaním. Predvolené false
optionsarrayNieMožnosti pre polia select, checkbox a radio
placeholderstringNieZástupný text pre vstupy textového typu

Príklad

{
"title": "Restaurant Booking Enquiry",
"fields": [
{ "name": "your-name", "label": "Name", "type": "text", "required": true },
{ "name": "your-email", "label": "Email", "type": "email", "required": true },
{ "name": "party-size", "label": "Party size", "type": "select", "options": ["1–2", "3–5", "6–10", "10+"] },
{ "name": "your-message", "label": "Special requests", "type": "textarea", "required": false }
],
"recipient": "[email protected]",
"subject": "New booking enquiry from [your-name]"
}

Vracia

{
"success": true,
"form_id": 3,
"shortcode": "[contact-form-7 id=\"3\" title=\"Restaurant Booking Enquiry\"]"
}

Vizuálna kontrola

Schopnosti vizuálnej kontroly umožňujú agentovi zachytávať snímky obrazovky živých stránok a analyzovať ich, čo umožňuje autonómnu kontrolu dizajnu, porovnania pred/po a kontroly vizuálnej regresie bez potreby akéhokoľvek rozšírenia prehliadača.

capture_screenshot

Zachytí snímku obrazovky stránky WordPress na zadanej URL pomocou serverového headless prehliadača. Obrázok sa uloží do knižnice médií a vráti sa CDN URL.

Parametre

ParameterTypPovinnéPopis
urlstringÁnoÚplná URL stránky na zachytenie snímky obrazovky, napr. https://example.com/about/
widthintegerNieŠírka viewportu v pixeloch. Predvolené 1280
heightintegerNieVýška viewportu v pixeloch. Predvolené 800
full_pagebooleanNieZachytiť celú posúvateľnú stránku namiesto iba viewportu. Predvolené false
delay_msintegerNieMilisekundy čakania po načítaní stránky pred zachytením, užitočné pre animovaný obsah. Predvolené 500
labelstringNieĽudsky čitateľný štítok uložený s prílohou v knižnici médií

Vracia

{
"success": true,
"attachment_id": 88,
"url": "https://example.com/wp-content/uploads/2026/04/screenshot-about.png",
"width": 1280,
"height": 800
}

compare_screenshots

Vezme dve snímky obrazovky a vráti skóre vizuálneho rozdielu plus obrázok rozdielov zvýrazňujúci zmenené oblasti. Užitočné na potvrdenie, že zmena dizajnu priniesla očakávaný výsledok, alebo na zistenie nechcených regresií.

Parametre

ParameterTypPovinnéPopis
before_urlstringÁnoURL stránky, ktorá sa má zachytiť ako stav „pred“
after_urlstringÁnoURL stránky, ktorá sa má zachytiť ako stav „po“. Môže to byť rovnaká URL, ak sa porovnáva v čase
widthintegerNieŠírka viewportu pre obe zachytenia. Predvolené 1280
thresholdfloatNiePrah rozdielu pixelov (0.0–1.0). Pixely v rámci tejto tolerancie sa považujú za nezmenené. Predvolené 0.1

Vracia

{
"success": true,
"diff_score": 0.04,
"changed_pixels": 2340,
"total_pixels": 1024000,
"diff_attachment_id": 91,
"diff_url": "https://example.com/wp-content/uploads/2026/04/diff-about.png"
}

Hodnota diff_score 0.0 znamená žiadnu viditeľnú zmenu; 1.0 znamená, že sa zmenil každý pixel.


review_page_design

Zachytí snímku obrazovky stránky a odošle ju jazykovému modelu na vizuálnu analýzu. Vráti štruktúrované hodnotenie pokrývajúce rozloženie, typografiu, použitie farieb a obavy týkajúce sa prístupnosti.

Parametre

ParameterTypPovinnéPopis
urlstringÁnoÚplná URL stránky na kontrolu
focusstringNieČiarkami oddelený zoznam oblastí kontroly, ktoré sa majú zdôrazniť: layout, typography, colour, accessibility, mobile. Predvolené: všetky oblasti
widthintegerNieŠírka viewportu. Predvolené 1280

Vracia

{
"success": true,
"screenshot_url": "https://example.com/wp-content/uploads/2026/04/review-about.png",
"assessment": {
"overall": "The page structure is clean and readable. Two accessibility issues detected.",
"layout": "Good visual hierarchy. Hero section is prominent.",
"typography": "Body text is 15px — consider increasing to 16px for readability.",
"colour": "Contrast ratio on the CTA button (#fff on #4a90e2) is 3.1:1 — below the WCAG AA threshold of 4.5:1.",
"accessibility": ["Low contrast on CTA button", "Missing alt text on hero image"],
"suggestions": ["Darken the CTA button to #1a5cb0 to pass WCAG AA", "Add descriptive alt text to the hero image"]
}
}

Inštalovateľné schopnosti

Register inštalovateľných schopností vám umožňuje rozšíriť agenta o ďalšie balíky schopností distribuované ako WordPress pluginy. Každý balík registruje jednu alebo viac schopností pomocou štandardného API schopností.

list_available_abilities

Vráti katalóg balíkov schopností dostupných na inštaláciu z registra.

Parametre

ParameterTypPovinnéPopis
categorystringNieFiltrovať podľa kategórie: ecommerce, seo, media, social, developer

Vracia

{
"packs": [
{
"slug": "gratis-ai-agent-woocommerce",
"name": "WooCommerce Abilities",
"category": "ecommerce",
"version": "1.0.0",
"abilities": ["create_product", "update_pricing", "manage_inventory"],
"installed": false
}
]
}

install_ability

Stiahne a aktivuje ability pack z registra.

Parametre

ParameterTypPovinnéPopis
slugstringÁnoPlugin slug ability packu

Vracia { "success": true, "slug": "gratis-ai-agent-woocommerce", "abilities_added": 3 }


recommend_plugin

Dopytuje sa registra ability, aby našiel najlepší plugin pre opísaný prípad použitia a voliteľne ho nainštaluje.

Parametre

ParameterTypPovinnéPopis
descriptionstringÁnoOpis požadovanej funkcionality v prirodzenom jazyku
installbooleanNieAk je true, okamžite nainštaluje odporúčaný plugin. Predvolené false

Príklad

{
"description": "I need a contact form with file upload support and spam protection",
"install": false
}

Vracia

{
"recommendation": {
"slug": "contact-form-7",
"name": "Contact Form 7",
"reason": "Widely adopted, supports file uploads, and integrates with Akismet for spam filtering.",
"alternatives": ["wpforms-lite", "fluent-forms"]
}
}