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-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...

Frontmatter-felter

Påkrevde felter

FeltTypeBeskrivelse
namestringUnik identifikator (kebab-case)
versionstringSemantisk versjon (f.eks. “2.1.0”)
descriptionstringKort beskrivelse (maks 160 tegn)
categoryenumEn av: data-sync, email-marketing, sms-whatsapp, loyalty, analytics, integrations
triggersarrayHendelser som aktiverer denne ferdigheten
actionsarrayOperasjoner denne ferdigheten kan utføre

Valgfrie felter

FeltTypeStandardBeskrivelse
statusenumstableEn av: stable, beta, experimental
brevoEndpointsarray[]Brevo API-endepunkter som brukes
permissionsarray[]Påkrevde Brevo API-tillatelser
relatedSkillsarray[]ID-er til relaterte ferdigheter
featuredbooleanfalseFremhev 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-triggering

Planleggingstriggere

triggers:
- schedule: "0 9 * * *" # Cron expression (daily at 9am)
timezone: "America/New_York"
- schedule: every_hour
- schedule: every_day

Webhook-triggere

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

Betingelsesoperatorer

OperatorBeskrivelseEksempel
=Likstatus: "active"
!=Ikke likstatus: "!= deleted"
>Større enncart_value: "> 50"
>=Større enn eller likitems: ">= 1"
<Mindre ennage: "< 30"
<=Mindre enn eller likquantity: "<= 10"
containsStreng inneholderemail: "contains @gmail.com"
starts_withStrengprefiksname: "starts_with Dr."
inVerdi i listecountry: "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

TypeBeskrivelse
brevo/send-emailSend transaksjons-e-post
brevo/send-smsSend SMS-melding
brevo/send-whatsappSend WhatsApp-melding
brevo/create-contactOpprett ny kontakt
brevo/update-contactOppdater kontaktattributter
brevo/delete-contactSlett kontakt
brevo/add-to-listLegg kontakt til liste
brevo/remove-from-listFjern kontakt fra liste
brevo/track-eventSpor egendefinert hendelse
http/requestGjør HTTP-forespørsel
transform/mapTransformer data
control/delayVent før videreføring
control/conditionForgren 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

FilterBeskrivelseEksempel
defaultStandardverdi{{ name | default: 'Guest' }}
uppercaseStore bokstaver{{ name | uppercase }}
lowercaseSmå bokstaver{{ email | lowercase }}
capitalizeStor forbokstav{{ name | capitalize }}
truncateForkort streng{{ desc | truncate: 100 }}
dateFormater dato{{ date | date: 'YYYY-MM-DD' }}
currencyFormater valuta{{ price | currency: 'EUR' }}
mapMap array-egenskap{{ items | map: 'name' }}
joinSlå sammen array{{ tags | join: ', ' }}
firstFørste array-element{{ items | first }}
lastSiste array-element{{ items | last }}
sizeLengde 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 events

Komplett eksempel

---
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...

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-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
---

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 initiated

MCP-felter

FeltTypeBeskrivelse
mcp.tool_namestringMCP-verktøynavn (format: tajo/skill-name)
mcp.descriptionstringBeskrivelse som vises til AI-agenter under verktøyoppdagelse
mcp.inputSchemaobjectJSON Schema som definerer verktøyets inngangsparametere
mcp.brevo_serversarrayHvilke Brevo MCP-servermoduler denne ferdigheten trenger

Ferdigheter vs. direkte MCP-verktøy

AspektFerdighet som MCP-verktøyDirekte Brevo MCP
AbstraksjonHøy - agenten sier “gjenvinn denne handlekurven”Lav - agenten må kalle individuelle Brevo-endepunkter
KompleksitetInnkapsler logikk i flere trinnAgenten må orkestrere hvert trinn
SikringerInnebygd i ferdigheten (betingelser, debounce)Agenten må implementere sine egne
Best forGjentakbare arbeidsflyterAd 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-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
---

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.

  1. Hold ferdighetene fokuserte - Én ferdighet bør gjøre én ting godt
  2. Bruk beskrivende navn - abandoned-cart-recovery, ikke acr
  3. Dokumenter betingelser - Forklar hvorfor hver betingelse finnes
  4. Håndter feil elegant - Bruk on_error: continue for ikke-kritiske handlinger
  5. Test med små målgrupper - Bruk status: experimental under utvikling
  6. Legg til MCP-eksponering for ferdigheter som agenter bør kunne kalle direkte

Neste steg

Subscribe to updates

developer-docs

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

auto-detect
AI-assistent

Hei! Spør meg om dokumentasjonen.