Specifikacija formata Skills

Format skills.md definira kako su Skills strukturirani, konfigurirani i izvršavani. Ova specifikacija osigurava dosljedno ponašanje svih Tajo Skills.

Struktura datoteke

Skill je definiran u jednoj markdown datoteci s YAML frontmatterom:

---
name: customer-sync
version: 2.1.0
description: Sync customer data to Brevo contacts
category: data-sync
status: stable
triggers:
- event: customer_created
- event: customer_updated
- event: customer_deleted
actions:
- brevo/create-contact
- brevo/update-contact
- brevo/delete-contact
brevoEndpoints:
- POST /v3/contacts
- PUT /v3/contacts/{identifier}
- DELETE /v3/contacts/{identifier}
permissions:
- contacts:write
- contacts:read
---
# Customer Sync
Automatically synchronize customer data from your platform to Brevo contacts.
## Overview
This skill listens for customer lifecycle events and mirrors changes to Brevo...

Polja frontmattera

Obavezna polja

PoljeVrstaOpis
namestringJedinstveni identifikator (kebab-case)
versionstringSemantička verzija (npr. „2.1.0”)
descriptionstringKratki opis (maks. 160 znakova)
categoryenumJedna od: data-sync, email-marketing, sms-whatsapp, loyalty, analytics, integrations
triggersarrayDogađaji koji aktiviraju ovaj skill
actionsarrayOperacije koje ovaj skill može izvesti

Neobavezna polja

PoljeVrstaZadanoOpis
statusenumstableJedna od: stable, beta, experimental
brevoEndpointsarray[]Korišteni Brevo API endpointi
permissionsarray[]Potrebne Brevo API dozvole
relatedSkillsarray[]ID-ovi srodnih skillova
featuredbooleanfalseIsticanje u katalogu skillova

Okidači

Okidači definiraju koji događaji aktiviraju skill.

Okidači događaja

triggers:
- event: cart_abandoned
conditions:
- cart_value: "> 50" # Minimalna vrijednost košarice
- items_count: ">= 1" # Barem jedan artikl
- time_since_activity: "> 30m" # 30 minuta neaktivnosti
debounce: 5m # Čekanje 5 minuta prije ponovnog okidanja

Zakazani okidači

triggers:
- schedule: "0 9 * * *" # Cron izraz (svakodnevno u 9:00)
timezone: "America/New_York"
- schedule: every_hour
- schedule: every_day

Webhook okidači

triggers:
- webhook: /skills/customer-sync/trigger
method: POST
authentication: api_key

Operatori uvjeta

OperatorOpisPrimjer
=Jednakostatus: "active"
!=Nije jednakostatus: "!= deleted"
>Veće odcart_value: "> 50"
>=Veće ili jednakoitems: ">= 1"
<Manje odage: "< 30"
<=Manje ili jednakoquantity: "<= 10"
containsString sadržiemail: "contains @gmail.com"
starts_withPrefiks stringaname: "starts_with Dr."
inVrijednost na popisucountry: "in US,CA,UK"

Radnje

Radnje definiraju koje operacije skill izvodi.

Definicija radnje

actions:
- id: send_reminder_email
type: brevo/send-email
parameters:
template_id: 12345
to: "{{ contact.email }}"
params:
first_name: "{{ contact.firstName }}"
cart_items: "{{ cart.items }}"
retry:
attempts: 3
backoff: exponential
on_error: continue # or 'stop'

Vrste radnji

VrstaOpis
brevo/send-emailSlanje transakcijskog emaila
brevo/send-smsSlanje SMS poruke
brevo/send-whatsappSlanje WhatsApp poruke
brevo/create-contactStvaranje novog kontakta
brevo/update-contactAžuriranje atributa kontakta
brevo/delete-contactBrisanje kontakta
brevo/add-to-listDodavanje kontakta na popis
brevo/remove-from-listUklanjanje kontakta s popisa
brevo/track-eventPraćenje prilagođenog događaja
http/requestIzrada HTTP zahtjeva
transform/mapTransformacija podataka
control/delayČekanje prije nastavka
control/conditionGrananje na temelju uvjeta

Varijable predloška

Koristite sintaksu {{ }} za referenciranje podataka:

parameters:
to: "{{ contact.email }}"
subject: "Your order #{{ order.number }} has shipped"
params:
name: "{{ contact.firstName | default: 'Customer' }}"
items: "{{ cart.items | map: 'name' | join: ', ' }}"
total: "{{ cart.total | currency: 'USD' }}"

Dostupni filtri

FiltarOpisPrimjer
defaultZadana vrijednost{{ name | default: 'Guest' }}
uppercaseVelika slova{{ name | uppercase }}
lowercaseMala slova{{ email | lowercase }}
capitalizePrvo slovo veliko{{ name | capitalize }}
truncateSkraćivanje stringa{{ desc | truncate: 100 }}
dateFormatiranje datuma{{ date | date: 'YYYY-MM-DD' }}
currencyFormatiranje valute{{ price | currency: 'EUR' }}
mapSvojstvo polja{{ items | map: 'name' }}
joinSpajanje polja{{ tags | join: ', ' }}
firstPrvi element polja{{ items | first }}
lastZadnji element polja{{ items | last }}
sizeDuljina polja/stringa{{ items | size }}

Dozvole

Definirajte potrebne Brevo API dozvole:

permissions:
- contacts:read # Čitanje podataka kontakata
- contacts:write # Stvaranje/ažuriranje kontakata
- email:send # Slanje transakcijskih emailova
- sms:send # Slanje SMS poruka
- lists:write # Upravljanje popisima kontakata
- events:write # Praćenje događaja

Potpuni primjer

---
name: abandoned-cart-recovery
version: 3.0.0
description: Recover abandoned shopping carts with a multi-step email sequence
category: email-marketing
status: stable
triggers:
- event: cart_abandoned
conditions:
- cart_value: "> 25"
- customer_email: "exists"
- items_count: ">= 1"
debounce: 30m
actions:
- id: wait_1h
type: control/delay
parameters:
duration: 1h
- id: check_purchase
type: control/condition
parameters:
condition: "{{ cart.converted }} = false"
then: send_first_email
else: stop
- id: send_first_email
type: brevo/send-email
parameters:
template_id: {{ env.ABANDONED_CART_TEMPLATE_1 }}
to: "{{ contact.email }}"
params:
first_name: "{{ contact.firstName }}"
cart_url: "{{ cart.recovery_url }}"
items: "{{ cart.items }}"
total: "{{ cart.total | currency }}"
- id: wait_24h
type: control/delay
parameters:
duration: 24h
- id: check_purchase_2
type: control/condition
parameters:
condition: "{{ cart.converted }} = false"
then: send_second_email
else: stop
- id: send_second_email
type: brevo/send-email
parameters:
template_id: {{ env.ABANDONED_CART_TEMPLATE_2 }}
to: "{{ contact.email }}"
params:
first_name: "{{ contact.firstName }}"
cart_url: "{{ cart.recovery_url }}"
discount_code: "{{ generate_discount(10, 'percent') }}"
brevoEndpoints:
- POST /v3/smtp/email
- GET /v3/contacts/{identifier}
permissions:
- contacts:read
- email:send
relatedSkills:
- customer-sync
- order-events
- browse-abandonment
---
# Abandoned Cart Recovery
Recover lost sales with a proven multi-step email sequence...

Izlaganje kao MCP alati

Skillovi se mogu izložiti kao MCP alati, čineći ih pozivljivima od strane AI agenata. Dodajte polje mcp u svoj frontmatter:

---
name: abandoned-cart-recovery
version: 3.0.0
description: Recover abandoned shopping carts with a multi-step email sequence
category: email-marketing
# MCP Configuration
mcp:
tool_name: tajo/recover-abandoned-cart
description: Execute abandoned cart recovery sequence for a specific cart
inputSchema:
type: object
properties:
cart_id:
type: string
description: The abandoned cart identifier
customer_email:
type: string
description: Customer email address
min_cart_value:
type: number
description: Minimum cart value to trigger recovery
default: 25
required: [cart_id, customer_email]
brevo_servers:
- brevo_contacts
- brevo_email_campaign_management
- brevo_templates
---

Kako funkcionira izlaganje MCP-a

Kada skill ima polje mcp, postaje alat koji AI agenti mogu otkriti i pozvati:

Agent: "Recover abandoned cart #4521 for [email protected]"
MCP Tool Discovery: finds tajo/recover-abandoned-cart
Tool Execution: runs the skill's action chain
Brevo MCP Servers: contacts + email modules called
Result: recovery sequence initiated

MCP polja

PoljeVrstaOpis
mcp.tool_namestringNaziv MCP alata (format: tajo/skill-name)
mcp.descriptionstringOpis prikazan AI agentima pri otkrivanju alata
mcp.inputSchemaobjectJSON Schema koji definira ulazne parametre alata
mcp.brevo_serversarrayKoji Brevo MCP server moduli ovom skillu trebaju

Skills vs. izravni MCP alati

AspektSkill kao MCP alatIzravni Brevo MCP
ApstrakcijaVisoka, agent kaže „oporavi ovu košaricu”Niska, agent mora pozivati pojedinačne Brevo endpointe
SloženostEncapsulira logiku s više korakaAgent mora orkestrirati svaki korak
Zaštitne mjereUgrađene u skill (uvjeti, debounce)Agent mora implementirati vlastite
Najpogodnije zaPonavljajući tijekovi radaAd-hoc operacije

Tip

Koristite Skills kao MCP alate za složene tijekove rada s više koraka koje agenti ne bi trebali ponovo osmišljavati svaki put. Koristite izravne Brevo MCP alate za jednostavne, jednokratne operacije poput pronalaska kontakta ili slanja jednog emaila.

Kombiniranje Skills i Agenata

Agent može koristiti i Skills (kao MCP alate) i izravne Brevo MCP module:

# Agent spec
---
name: retention-agent
tools:
# Tajo Skills as MCP tools
- tajo/recover-abandoned-cart
- tajo/customer-sync
- tajo/win-back-sequence
# Direct Brevo MCP modules
- brevo_contacts
- brevo_campaign_analytics
- brevo_segments
---

To agentima daje visoko-razinsku automatizaciju (Skills) za uobičajene uzorke uz zadržavanje nisko-razinskog pristupa (Brevo MCP) za prilagođenu logiku.

Pogledajte Format specifikacije agenta i Izgradnja agenata za potpune detalje.

Dobre prakse

Tip

Verzionajte svoje skillove koristeći semantičko verzioniranje. Promjene koje narušavaju kompatibilnost zahtijevaju povećanje glavne verzije.

  1. Zadržite skillove fokusiranima – jedan skill treba raditi jednu stvar dobro
  2. Koristite opisne naziveabandoned-cart-recovery, a ne acr
  3. Dokumentirajte uvjete – objasnite zašto svaki uvjet postoji
  4. Elegantno rukujte greškama – koristite on_error: continue za nekritične radnje
  5. Testirajte na maloj publici – koristite status: experimental tijekom razvoja
  6. Dodajte MCP izlaganje za skillove koje agenti trebaju moći izravno pozvati

Sljedeći koraci

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI asistent

Bok! Pitajte me o dokumentaciji.