Specifikation av färdighetsformat
Formatet skills.md definierar hur färdigheter struktureras, konfigureras och exekveras. Den här specifikationen säkerställer konsekvent beteende i alla Tajo-färdigheter.
Filstruktur
En färdighet definieras i en enda markdown-fil med YAML-frontmatter:
---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...Frontmatter-fält
Obligatoriska fält
| Fält | Typ | Beskrivning |
|---|---|---|
name | string | Unik identifierare (kebab-case) |
version | string | Semantisk version (t.ex. “2.1.0”) |
description | string | Kort beskrivning (max 160 tecken) |
category | enum | Ett av: data-sync, email-marketing, sms-whatsapp, loyalty, analytics, integrations |
triggers | array | Händelser som aktiverar färdigheten |
actions | array | Operationer som färdigheten kan utföra |
Valfria fält
| Fält | Typ | Standard | Beskrivning |
|---|---|---|---|
status | enum | stable | Ett av: stable, beta, experimental |
brevoEndpoints | array | [] | Brevo API-endpoints som används |
permissions | array | [] | Obligatoriska Brevo API-behörigheter |
relatedSkills | array | [] | ID:n för relaterade färdigheter |
featured | boolean | false | Lyft fram i färdighetskatalogen |
Triggers
Triggers definierar vilka händelser som aktiverar färdigheten.
Händelsetriggers
triggers: - event: cart_abandoned conditions: - cart_value: "> 50" # Minimum cart value - items_count: ">= 1" # At least one item - time_since_activity: "> 30m" # 30 minutes of inactivity debounce: 5m # Wait 5 minutes before re-triggeringSchemalagda triggers
triggers: - schedule: "0 9 * * *" # Cron expression (daily at 9am) timezone: "America/New_York" - schedule: every_hour - schedule: every_dayWebhook-triggers
triggers: - webhook: /skills/customer-sync/trigger method: POST authentication: api_keyVillkorsoperatorer
| Operator | Beskrivning | Exempel |
|---|---|---|
= | Lika med | status: "active" |
!= | Inte lika med | status: "!= deleted" |
> | Större än | cart_value: "> 50" |
>= | Större än eller lika med | items: ">= 1" |
< | Mindre än | age: "< 30" |
<= | Mindre än eller lika med | quantity: "<= 10" |
contains | Sträng innehåller | email: "contains @gmail.com" |
starts_with | Strängprefix | name: "starts_with Dr." |
in | Värde i lista | country: "in US,CA,UK" |
Åtgärder
Åtgärder definierar vilka operationer färdigheten utför.
Åtgärdsdefinition
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'Åtgärdstyper
| Typ | Beskrivning |
|---|---|
brevo/send-email | Skicka transaktionsmejl |
brevo/send-sms | Skicka SMS-meddelande |
brevo/send-whatsapp | Skicka WhatsApp-meddelande |
brevo/create-contact | Skapa ny kontakt |
brevo/update-contact | Uppdatera kontaktattribut |
brevo/delete-contact | Radera kontakt |
brevo/add-to-list | Lägg till kontakt i lista |
brevo/remove-from-list | Ta bort kontakt från lista |
brevo/track-event | Följ anpassad händelse |
http/request | Gör HTTP-förfrågan |
transform/map | Omvandla data |
control/delay | Vänta innan du fortsätter |
control/condition | Förgrening baserat på villkor |
Mallvariabler
Använd {{ }}-syntax för att referera till data:
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' }}"Tillgängliga filter
| Filter | Beskrivning | Exempel |
|---|---|---|
default | Standardvärde | {{ name | default: 'Guest' }} |
uppercase | Versal sträng | {{ name | uppercase }} |
lowercase | Gemen sträng | {{ email | lowercase }} |
capitalize | Gör första bokstaven versal | {{ name | capitalize }} |
truncate | Trunkera sträng | {{ desc | truncate: 100 }} |
date | Formatera datum | {{ date | date: 'YYYY-MM-DD' }} |
currency | Formatera valuta | {{ price | currency: 'EUR' }} |
map | Mappa arrayegenskap | {{ items | map: 'name' }} |
join | Sammanfoga array | {{ tags | join: ', ' }} |
first | Första arrayelementet | {{ items | first }} |
last | Sista arrayelementet | {{ items | last }} |
size | Array-/stränglängd | {{ items | size }} |
Behörigheter
Definiera obligatoriska Brevo API-behörigheter:
permissions: - contacts:read # Read contact data - contacts:write # Create/update contacts - email:send # Send transactional emails - sms:send # Send SMS messages - lists:write # Manage contact lists - events:write # Track eventsFullständigt exempel
---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...Exponering som MCP-verktyg
Färdigheter kan exponeras som MCP-verktyg, vilket gör dem anropbara av AI-agenter. Lägg till fältet mcp i din 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---Så fungerar MCP-exponering
När en färdighet har ett mcp-fält blir den ett verktyg som AI-agenter kan upptäcka och anropa:
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-fält
| Fält | Typ | Beskrivning |
|---|---|---|
mcp.tool_name | string | MCP-verktygsnamn (format: tajo/skill-name) |
mcp.description | string | Beskrivning som visas för AI-agenter vid verktygsupptäckt |
mcp.inputSchema | object | JSON Schema som definierar verktygets indataparametrar |
mcp.brevo_servers | array | Vilka Brevo MCP-servermoduler den här färdigheten behöver |
Färdigheter jämfört med direkta MCP-verktyg
| Aspekt | Färdighet som MCP-verktyg | Direkt Brevo MCP |
|---|---|---|
| Abstraktion | Hög – agenten säger “återvinn den här varukorgen” | Låg – agenten måste anropa enskilda Brevo-endpoints |
| Komplexitet | Kapslar in flerstegslogik | Agenten måste orkestrera varje steg |
| Skyddsräcken | Inbyggda i färdigheten (villkor, debounce) | Agenten måste implementera sina egna |
| Bäst för | Upprepbara arbetsflöden | Ad hoc-operationer |
Tip
Använd färdigheter som MCP-verktyg för komplexa flerstegsarbetsflöden som agenter inte ska uppfinna på nytt varje gång. Använd direkta Brevo MCP-verktyg för enkla engångsoperationer som att slå upp en kontakt eller skicka ett enskilt mejl.
Att kombinera färdigheter och agenter
En agent kan använda både färdigheter (som MCP-verktyg) och direkta Brevo MCP-moduler:
# 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---Det ger agenterna högnivåautomation (färdigheter) för vanliga mönster samtidigt som de behåller lågnivååtkomst (Brevo MCP) för anpassad logik.
Se Format för agentspecifikation och Bygga agenter för alla detaljer.
Rekommenderade arbetssätt
Tip
Versionera dina färdigheter med semantisk versionering. Brytande ändringar kräver en bump av huvudversion.
- Håll färdigheter fokuserade – En färdighet ska göra en sak bra
- Använd beskrivande namn –
abandoned-cart-recovery, inteacr - Dokumentera villkor – Förklara varför varje villkor finns
- Hantera fel elegant – Använd
on_error: continueför icke-kritiska åtgärder - Testa med små målgrupper – Använd
status: experimentalunder utveckling - Lägg till MCP-exponering för färdigheter som agenter ska kunna anropa direkt
Nästa steg
- Översikt över MCP och agenter – Hur färdigheter passar in i den agentiska arkitekturen
- Format för agentspecifikation – Definiera agenter som använder färdigheter som verktyg
- Bygga agenter – Bygg din första marknadsföringsagent
- Datasynkronisering-färdigheter – Utforska färdigheter för datasynkronisering