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-syncversion: 2.1.0description: Sync customer data to Brevo contactscategory: data-syncstatus: 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
| Polje | Vrsta | Opis |
|---|---|---|
name | string | Jedinstveni identifikator (kebab-case) |
version | string | Semantička verzija (npr. „2.1.0”) |
description | string | Kratki opis (maks. 160 znakova) |
category | enum | Jedna od: data-sync, email-marketing, sms-whatsapp, loyalty, analytics, integrations |
triggers | array | Događaji koji aktiviraju ovaj skill |
actions | array | Operacije koje ovaj skill može izvesti |
Neobavezna polja
| Polje | Vrsta | Zadano | Opis |
|---|---|---|---|
status | enum | stable | Jedna od: stable, beta, experimental |
brevoEndpoints | array | [] | Korišteni Brevo API endpointi |
permissions | array | [] | Potrebne Brevo API dozvole |
relatedSkills | array | [] | ID-ovi srodnih skillova |
featured | boolean | false | Isticanje 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 okidanjaZakazani okidači
triggers: - schedule: "0 9 * * *" # Cron izraz (svakodnevno u 9:00) timezone: "America/New_York" - schedule: every_hour - schedule: every_dayWebhook okidači
triggers: - webhook: /skills/customer-sync/trigger method: POST authentication: api_keyOperatori uvjeta
| Operator | Opis | Primjer |
|---|---|---|
= | Jednako | status: "active" |
!= | Nije jednako | status: "!= deleted" |
> | Veće od | cart_value: "> 50" |
>= | Veće ili jednako | items: ">= 1" |
< | Manje od | age: "< 30" |
<= | Manje ili jednako | quantity: "<= 10" |
contains | String sadrži | email: "contains @gmail.com" |
starts_with | Prefiks stringa | name: "starts_with Dr." |
in | Vrijednost na popisu | country: "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
| Vrsta | Opis |
|---|---|
brevo/send-email | Slanje transakcijskog emaila |
brevo/send-sms | Slanje SMS poruke |
brevo/send-whatsapp | Slanje WhatsApp poruke |
brevo/create-contact | Stvaranje novog kontakta |
brevo/update-contact | Ažuriranje atributa kontakta |
brevo/delete-contact | Brisanje kontakta |
brevo/add-to-list | Dodavanje kontakta na popis |
brevo/remove-from-list | Uklanjanje kontakta s popisa |
brevo/track-event | Praćenje prilagođenog događaja |
http/request | Izrada HTTP zahtjeva |
transform/map | Transformacija podataka |
control/delay | Čekanje prije nastavka |
control/condition | Grananje 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
| Filtar | Opis | Primjer |
|---|---|---|
default | Zadana vrijednost | {{ name | default: 'Guest' }} |
uppercase | Velika slova | {{ name | uppercase }} |
lowercase | Mala slova | {{ email | lowercase }} |
capitalize | Prvo slovo veliko | {{ name | capitalize }} |
truncate | Skraćivanje stringa | {{ desc | truncate: 100 }} |
date | Formatiranje datuma | {{ date | date: 'YYYY-MM-DD' }} |
currency | Formatiranje valute | {{ price | currency: 'EUR' }} |
map | Svojstvo polja | {{ items | map: 'name' }} |
join | Spajanje polja | {{ tags | join: ', ' }} |
first | Prvi element polja | {{ items | first }} |
last | Zadnji element polja | {{ items | last }} |
size | Duljina 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đajaPotpuni primjer
---name: abandoned-cart-recoveryversion: 3.0.0description: Recover abandoned shopping carts with a multi-step email sequencecategory: email-marketingstatus: 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-recoveryversion: 3.0.0description: Recover abandoned shopping carts with a multi-step email sequencecategory: email-marketing
# MCP Configurationmcp: 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 initiatedMCP polja
| Polje | Vrsta | Opis |
|---|---|---|
mcp.tool_name | string | Naziv MCP alata (format: tajo/skill-name) |
mcp.description | string | Opis prikazan AI agentima pri otkrivanju alata |
mcp.inputSchema | object | JSON Schema koji definira ulazne parametre alata |
mcp.brevo_servers | array | Koji Brevo MCP server moduli ovom skillu trebaju |
Skills vs. izravni MCP alati
| Aspekt | Skill kao MCP alat | Izravni Brevo MCP |
|---|---|---|
| Apstrakcija | Visoka, agent kaže „oporavi ovu košaricu” | Niska, agent mora pozivati pojedinačne Brevo endpointe |
| Složenost | Encapsulira logiku s više koraka | Agent mora orkestrirati svaki korak |
| Zaštitne mjere | Ugrađene u skill (uvjeti, debounce) | Agent mora implementirati vlastite |
| Najpogodnije za | Ponavljajući tijekovi rada | Ad-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-agenttools: # 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.
- Zadržite skillove fokusiranima – jedan skill treba raditi jednu stvar dobro
- Koristite opisne nazive –
abandoned-cart-recovery, a neacr - Dokumentirajte uvjete – objasnite zašto svaki uvjet postoji
- Elegantno rukujte greškama – koristite
on_error: continueza nekritične radnje - Testirajte na maloj publici – koristite
status: experimentaltijekom razvoja - Dodajte MCP izlaganje za skillove koje agenti trebaju moći izravno pozvati
Sljedeći koraci
- Pregled MCP-a i Agenata – kako Skills uklapaju u agentnu arhitekturu
- Format specifikacije agenta – definirajte agente koji koriste Skills kao alate
- Izgradnja agenata – izgradite svog prvog marketinškog agenta
- Skills sinkronizacije podataka – istražite skillove za sinkronizaciju podataka