Προδιαγραφή Μορφής Skills
Η μορφή skills.md ορίζει πώς τα Skills δομούνται, ρυθμίζονται και εκτελούνται. Αυτή η προδιαγραφή εξασφαλίζει συνεπή συμπεριφορά σε όλα τα Tajo Skills.
Δομή Αρχείου
Ένα skill ορίζεται σε ένα αρχείο markdown με 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
Υποχρεωτικά Πεδία
| Πεδίο | Τύπος | Περιγραφή |
|---|---|---|
name | string | Μοναδικό αναγνωριστικό (kebab-case) |
version | string | Σημασιολογική έκδοση (π.χ. “2.1.0”) |
description | string | Σύντομη περιγραφή (μέγ. 160 χαρακτήρες) |
category | enum | Μία από: data-sync, email-marketing, sms-whatsapp, loyalty, analytics, integrations |
triggers | array | Συμβάντα που ενεργοποιούν αυτό το skill |
actions | array | Λειτουργίες που μπορεί να εκτελέσει αυτό το skill |
Προαιρετικά Πεδία
| Πεδίο | Τύπος | Προεπιλογή | Περιγραφή |
|---|---|---|---|
status | enum | stable | Μία από: stable, beta, experimental |
brevoEndpoints | array | [] | Χρησιμοποιούμενα API endpoints Brevo |
permissions | array | [] | Απαιτούμενα δικαιώματα Brevo API |
relatedSkills | array | [] | IDs σχετικών skills |
featured | boolean | false | Επισήμανση στον κατάλογο skills |
Ενεργοποιήσεις
Οι ενεργοποιήσεις ορίζουν ποια συμβάντα ενεργοποιούν το skill.
Ενεργοποιήσεις Συμβάντων
triggers: - event: cart_abandoned conditions: - cart_value: "> 50" # Ελάχιστη αξία καλαθιού - items_count: ">= 1" # Τουλάχιστον ένα είδος - time_since_activity: "> 30m" # 30 λεπτά αδράνειας debounce: 5m # Αναμονή 5 λεπτών πριν την επαναενεργοποίησηΠρογραμματισμένες Ενεργοποιήσεις
triggers: - schedule: "0 9 * * *" # Έκφραση Cron (καθημερινά στις 9πμ) timezone: "America/New_York" - schedule: every_hour - schedule: every_dayΕνεργοποιήσεις Webhook
triggers: - webhook: /skills/customer-sync/trigger method: POST authentication: api_keyΤελεστές Συνθηκών
| Τελεστής | Περιγραφή | Παράδειγμα |
|---|---|---|
= | Ισούται | status: "active" |
!= | Δεν ισούται | status: "!= deleted" |
> | Μεγαλύτερο από | cart_value: "> 50" |
>= | Μεγαλύτερο ή ίσο | items: ">= 1" |
< | Μικρότερο από | age: "< 30" |
<= | Μικρότερο ή ίσο | quantity: "<= 10" |
contains | Το string περιέχει | email: "contains @gmail.com" |
starts_with | Πρόθεμα string | name: "starts_with Dr." |
in | Τιμή στη λίστα | country: "in US,CA,UK" |
Ενέργειες
Οι ενέργειες ορίζουν ποιες λειτουργίες εκτελεί το skill.
Ορισμός Ενέργειας
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'Τύποι Ενεργειών
| Τύπος | Περιγραφή |
|---|---|
brevo/send-email | Αποστολή transactional email |
brevo/send-sms | Αποστολή SMS μηνύματος |
brevo/send-whatsapp | Αποστολή μηνύματος WhatsApp |
brevo/create-contact | Δημιουργία νέας επαφής |
brevo/update-contact | Ενημέρωση χαρακτηριστικών επαφής |
brevo/delete-contact | Διαγραφή επαφής |
brevo/add-to-list | Προσθήκη επαφής σε λίστα |
brevo/remove-from-list | Αφαίρεση επαφής από λίστα |
brevo/track-event | Παρακολούθηση προσαρμοσμένου συμβάντος |
http/request | Εκτέλεση HTTP αιτήματος |
transform/map | Μετασχηματισμός δεδομένων |
control/delay | Αναμονή πριν τη συνέχεια |
control/condition | Διακλάδωση βάσει συνθήκης |
Μεταβλητές Προτύπου
Χρησιμοποιήστε τη σύνταξη {{ }} για αναφορά σε δεδομένα:
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' }}"Διαθέσιμα Φίλτρα
| Φίλτρο | Περιγραφή | Παράδειγμα |
|---|---|---|
default | Προεπιλεγμένη τιμή | {{ name | default: 'Guest' }} |
uppercase | Κεφαλαία γράμματα | {{ name | uppercase }} |
lowercase | Πεζά γράμματα | {{ email | lowercase }} |
capitalize | Κεφαλαίο πρώτο γράμμα | {{ name | capitalize }} |
truncate | Περικοπή string | {{ desc | truncate: 100 }} |
date | Μορφοποίηση ημερομηνίας | {{ date | date: 'YYYY-MM-DD' }} |
currency | Μορφοποίηση νομίσματος | {{ price | currency: 'EUR' }} |
map | Ιδιότητα πίνακα | {{ items | map: 'name' }} |
join | Ένωση πίνακα | {{ tags | join: ', ' }} |
first | Πρώτο στοιχείο πίνακα | {{ items | first }} |
last | Τελευταίο στοιχείο πίνακα | {{ items | last }} |
size | Μήκος πίνακα/string | {{ items | size }} |
Δικαιώματα
Ορίστε τα απαιτούμενα δικαιώματα Brevo API:
permissions: - contacts:read # Ανάγνωση δεδομένων επαφών - contacts:write # Δημιουργία/ενημέρωση επαφών - email:send # Αποστολή transactional emails - sms:send # Αποστολή SMS μηνυμάτων - lists:write # Διαχείριση λιστών επαφών - events:write # Παρακολούθηση συμβάντωνΠλήρες Παράδειγμα
---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
Τα Skills μπορούν να εκτεθούν ως εργαλεία MCP, καθιστώντας τα κλήσιμα από AI agents. Προσθέστε το πεδίο mcp στο 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---Πώς Λειτουργεί η Έκθεση MCP
Όταν ένα skill έχει πεδίο mcp, γίνεται εργαλείο που μπορούν να ανακαλύψουν και να επικαλεστούν οι AI agents:
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
| Πεδίο | Τύπος | Περιγραφή |
|---|---|---|
mcp.tool_name | string | Όνομα εργαλείου MCP (μορφή: tajo/skill-name) |
mcp.description | string | Περιγραφή που εμφανίζεται σε AI agents κατά την ανακάλυψη εργαλείων |
mcp.inputSchema | object | JSON Schema που ορίζει τις παραμέτρους εισόδου του εργαλείου |
mcp.brevo_servers | array | Ποιες μονάδες Brevo MCP server χρειάζεται αυτό το skill |
Skills vs Άμεσα Εργαλεία MCP
| Πτυχή | Skill ως Εργαλείο MCP | Άμεσο Brevo MCP |
|---|---|---|
| Αφαίρεση | Υψηλή, ο agent λέει «ανάκτησε αυτό το καλάθι» | Χαμηλή, ο agent πρέπει να καλέσει μεμονωμένα endpoints Brevo |
| Πολυπλοκότητα | Ενσωματώνει λογική πολλαπλών βημάτων | Ο agent πρέπει να ενορχηστρώσει κάθε βήμα |
| Προστατευτικά μέτρα | Ενσωματωμένα στο skill (συνθήκες, debounce) | Ο agent πρέπει να υλοποιήσει τα δικά του |
| Ιδανικό για | Επαναλαμβανόμενες ροές εργασίας | Εφάπαξ λειτουργίες |
Tip
Χρησιμοποιήστε Skills ως εργαλεία MCP για σύνθετες, πολυβήματες ροές εργασίας που δεν πρέπει να επανεφευρίσκουν οι agents κάθε φορά. Χρησιμοποιήστε άμεσα εργαλεία Brevo MCP για απλές, εφάπαξ λειτουργίες όπως αναζήτηση επαφής ή αποστολή ενός email.
Σύνθεση Skills και Agents
Ένας agent μπορεί να χρησιμοποιεί τόσο Skills (ως εργαλεία MCP) όσο και άμεσα modules Brevo MCP:
# 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---Αυτό δίνει στους agents υψηλού επιπέδου αυτοματισμό (Skills) για συνηθισμένα μοτίβα, διατηρώντας παράλληλα χαμηλού επιπέδου πρόσβαση (Brevo MCP) για προσαρμοσμένη λογική.
Δείτε Μορφή Προδιαγραφής Agent και Δημιουργία Agents για πλήρεις λεπτομέρειες.
Βέλτιστες Πρακτικές
Tip
Εκδοτικοποιήστε τα skills σας χρησιμοποιώντας σημασιολογική έκδοση. Αλλαγές που σπάνε τη συμβατότητα απαιτούν αύξηση της κύριας έκδοσης.
- Διατηρήστε τα skills εστιασμένα – ένα skill πρέπει να κάνει ένα πράγμα καλά
- Χρησιμοποιήστε περιγραφικά ονόματα –
abandoned-cart-recoveryόχιacr - Τεκμηριώστε τις συνθήκες – εξηγήστε γιατί υπάρχει κάθε συνθήκη
- Διαχειριστείτε τα σφάλματα ευγενικά – χρησιμοποιήστε
on_error: continueγια μη κρίσιμες ενέργειες - Δοκιμάστε σε μικρό κοινό – χρησιμοποιήστε
status: experimentalκατά την ανάπτυξη - Προσθέστε έκθεση MCP για skills που οι agents πρέπει να μπορούν να επικαλεστούν άμεσα
Επόμενα Βήματα
- Επισκόπηση MCP και Agents – πώς τα Skills εντάσσονται στην αρχιτεκτονική agents
- Μορφή Προδιαγραφής Agent – ορίστε agents που χρησιμοποιούν Skills ως εργαλεία
- Δημιουργία Agents – δημιουργήστε τον πρώτο σας marketing agent
- Skills Συγχρονισμού Δεδομένων – εξερευνήστε skills συγχρονισμού δεδομένων