Spesifikasjon for ferdighetsformat
skills.md-formatet definerer hvordan ferdigheter struktureres, konfigureres og kjøres. Denne spesifikasjonen sikrer konsistent oppførsel på tvers av alle Tajo-ferdigheter.
Filstruktur
En ferdighet defineres i en enkelt 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-felter
Påkrevde felter
| Felt | Type | Beskrivelse |
|---|---|---|
name | string | Unik identifikator (kebab-case) |
version | string | Semantisk versjon (f.eks. “2.1.0”) |
description | string | Kort beskrivelse (maks 160 tegn) |
category | enum | En av: data-sync, email-marketing, sms-whatsapp, loyalty, analytics, integrations |
triggers | array | Hendelser som aktiverer denne ferdigheten |
actions | array | Operasjoner denne ferdigheten kan utføre |
Valgfrie felter
| Felt | Type | Standard | Beskrivelse |
|---|---|---|---|
status | enum | stable | En av: stable, beta, experimental |
brevoEndpoints | array | [] | Brevo API-endepunkter som brukes |
permissions | array | [] | Påkrevde Brevo API-tillatelser |
relatedSkills | array | [] | ID-er til relaterte ferdigheter |
featured | boolean | false | Fremhev i ferdighetskatalogen |
Triggere
Triggere definerer hvilke hendelser som aktiverer ferdigheten.
Hendelsestriggere
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-triggeringPlanleggingstriggere
triggers: - schedule: "0 9 * * *" # Cron expression (daily at 9am) timezone: "America/New_York" - schedule: every_hour - schedule: every_dayWebhook-triggere
triggers: - webhook: /skills/customer-sync/trigger method: POST authentication: api_keyBetingelsesoperatorer
| Operator | Beskrivelse | Eksempel |
|---|---|---|
= | Lik | status: "active" |
!= | Ikke lik | status: "!= deleted" |
> | Større enn | cart_value: "> 50" |
>= | Større enn eller lik | items: ">= 1" |
< | Mindre enn | age: "< 30" |
<= | Mindre enn eller lik | quantity: "<= 10" |
contains | Streng inneholder | email: "contains @gmail.com" |
starts_with | Strengprefiks | name: "starts_with Dr." |
in | Verdi i liste | country: "in US,CA,UK" |
Handlinger
Handlinger definerer hvilke operasjoner ferdigheten utfører.
Handlingsdefinisjon
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'Handlingstyper
| Type | Beskrivelse |
|---|---|
brevo/send-email | Send transaksjons-e-post |
brevo/send-sms | Send SMS-melding |
brevo/send-whatsapp | Send WhatsApp-melding |
brevo/create-contact | Opprett ny kontakt |
brevo/update-contact | Oppdater kontaktattributter |
brevo/delete-contact | Slett kontakt |
brevo/add-to-list | Legg kontakt til liste |
brevo/remove-from-list | Fjern kontakt fra liste |
brevo/track-event | Spor egendefinert hendelse |
http/request | Gjør HTTP-forespørsel |
transform/map | Transformer data |
control/delay | Vent før videreføring |
control/condition | Forgren basert på betingelse |
Malvariabler
Bruk {{ }}-syntaks for å referere til 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' }}"Tilgjengelige filtre
| Filter | Beskrivelse | Eksempel |
|---|---|---|
default | Standardverdi | {{ name | default: 'Guest' }} |
uppercase | Store bokstaver | {{ name | uppercase }} |
lowercase | Små bokstaver | {{ email | lowercase }} |
capitalize | Stor forbokstav | {{ name | capitalize }} |
truncate | Forkort streng | {{ desc | truncate: 100 }} |
date | Formater dato | {{ date | date: 'YYYY-MM-DD' }} |
currency | Formater valuta | {{ price | currency: 'EUR' }} |
map | Map array-egenskap | {{ items | map: 'name' }} |
join | Slå sammen array | {{ tags | join: ', ' }} |
first | Første array-element | {{ items | first }} |
last | Siste array-element | {{ items | last }} |
size | Lengde på array/streng | {{ items | size }} |
Tillatelser
Definer påkrevde Brevo API-tillatelser:
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 eventsKomplett eksempel
---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...MCP-verktøyeksponering
Ferdigheter kan eksponeres som MCP-verktøy, slik at AI-agenter kan kalle dem. Legg til mcp-feltet i frontmatteren din:
---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---Slik fungerer MCP-eksponering
Når en ferdighet har et mcp-felt, blir den et verktøy som AI-agenter kan oppdage og kalle:
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-felter
| Felt | Type | Beskrivelse |
|---|---|---|
mcp.tool_name | string | MCP-verktøynavn (format: tajo/skill-name) |
mcp.description | string | Beskrivelse som vises til AI-agenter under verktøyoppdagelse |
mcp.inputSchema | object | JSON Schema som definerer verktøyets inngangsparametere |
mcp.brevo_servers | array | Hvilke Brevo MCP-servermoduler denne ferdigheten trenger |
Ferdigheter vs. direkte MCP-verktøy
| Aspekt | Ferdighet som MCP-verktøy | Direkte Brevo MCP |
|---|---|---|
| Abstraksjon | Høy - agenten sier “gjenvinn denne handlekurven” | Lav - agenten må kalle individuelle Brevo-endepunkter |
| Kompleksitet | Innkapsler logikk i flere trinn | Agenten må orkestrere hvert trinn |
| Sikringer | Innebygd i ferdigheten (betingelser, debounce) | Agenten må implementere sine egne |
| Best for | Gjentakbare arbeidsflyter | Ad hoc-operasjoner |
Tip
Bruk ferdigheter som MCP-verktøy for komplekse arbeidsflyter i flere trinn som agenter ikke bør finne opp på nytt hver gang. Bruk direkte Brevo MCP-verktøy for enkle engangsoperasjoner som å slå opp en kontakt eller sende én enkelt e-post.
Sette sammen ferdigheter og agenter
En agent kan bruke både ferdigheter (som MCP-verktøy) og direkte 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---Dette gir agenter høynivåautomatisering (ferdigheter) for vanlige mønstre, samtidig som de beholder lavnivåtilgang (Brevo MCP) for egendefinert logikk.
Se Spesifikasjon for agentformat og Bygge agenter for fullstendige detaljer.
Beste praksis
Tip
Versjoner ferdighetene dine ved å bruke semantisk versjonering. Brytende endringer krever en heving av hovedversjonen.
- Hold ferdighetene fokuserte - Én ferdighet bør gjøre én ting godt
- Bruk beskrivende navn -
abandoned-cart-recovery, ikkeacr - Dokumenter betingelser - Forklar hvorfor hver betingelse finnes
- Håndter feil elegant - Bruk
on_error: continuefor ikke-kritiske handlinger - Test med små målgrupper - Bruk
status: experimentalunder utvikling - Legg til MCP-eksponering for ferdigheter som agenter bør kunne kalle direkte
Neste steg
- Oversikt over MCP og agenter - Hvordan ferdigheter passer inn i den agentiske arkitekturen
- Spesifikasjon for agentformat - Definer agenter som bruker ferdigheter som verktøy
- Bygge agenter - Bygg din første markedsføringsagent
- Ferdigheter for datasynkronisering - Utforsk ferdigheter for datasynkronisering