---
title: "Προδιαγραφή Μορφής Skills | Tajo"
description: "Μάθετε τη μορφή skills.md για τον ορισμό αυτοματισμένων skills με AI που ενσωματώνονται με τη Brevo."
url: https://tajo.io/gr/docs/skills/overview/skills-format/
markdown: https://tajo.io/gr/docs/skills/overview/skills-format.md
lang: el-GR
author: "Set Noa"
author_url: https://tajo.io/gr/set-noa/
robots: noindex
---

Ζητήστε πρώιμη πρόσβαση

Συμπληρώστε το μικρό σας όνομα και την επαγγελματική διεύθυνση email. Θα σας στείλουμε σύνδεσμο για να επιβεβαιώσετε το αίτημα πρόσβασης στο Tajo.

# Προδιαγραφή Μορφής Skills

[Set Noa](https://tajo.io/gr/set-noa/)

Η μορφή **skills.md** ορίζει πώς τα Skills δομούνται, ρυθμίζονται και εκτελούνται. Αυτή η προδιαγραφή εξασφαλίζει συνεπή συμπεριφορά σε όλα τα Tajo Skills.

## Δομή Αρχείου

Ένα skill ορίζεται σε ένα αρχείο markdown με YAML frontmatter:

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

### Υποχρεωτικά Πεδία

| Πεδίο | Τύπος | Περιγραφή |
| --- | --- | --- |
| `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.

### Ενεργοποιήσεις Συμβάντων

```yaml
triggers:
  - event: cart_abandoned
    conditions:
      - cart_value: "> 50"        # Ελάχιστη αξία καλαθιού
      - items_count: ">= 1"       # Τουλάχιστον ένα είδος
      - time_since_activity: "> 30m"  # 30 λεπτά αδράνειας
    debounce: 5m                  # Αναμονή 5 λεπτών πριν την επαναενεργοποίηση
```

### Προγραμματισμένες Ενεργοποιήσεις

```yaml
triggers:
  - schedule: "0 9 * * *"         # Έκφραση Cron (καθημερινά στις 9πμ)
    timezone: "America/New_York"
  - schedule: every_hour
  - schedule: every_day
```

### Ενεργοποιήσεις Webhook

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

### Ορισμός Ενέργειας

```yaml
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` | Διακλάδωση βάσει συνθήκης |

### Μεταβλητές Προτύπου

Χρησιμοποιήστε τη σύνταξη `{{ }}` για αναφορά σε δεδομένα:

```yaml
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:

```yaml
permissions:
  - contacts:read        # Ανάγνωση δεδομένων επαφών
  - contacts:write       # Δημιουργία/ενημέρωση επαφών
  - email:send           # Αποστολή transactional emails
  - sms:send             # Αποστολή SMS μηνυμάτων
  - lists:write          # Διαχείριση λιστών επαφών
  - events:write         # Παρακολούθηση συμβάντων
```

## Πλήρες Παράδειγμα

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

Τα Skills μπορούν να εκτεθούν ως εργαλεία MCP, καθιστώντας τα κλήσιμα από AI agents. Προσθέστε το πεδίο `mcp` στο frontmatter σας:

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

### Πώς Λειτουργεί η Έκθεση MCP

Όταν ένα skill έχει πεδίο `mcp`, γίνεται εργαλείο που μπορούν να ανακαλύψουν και να επικαλεστούν οι AI agents:

```
Agent: "Recover abandoned cart #4521 for user@example.com"
    ↓
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:

```yaml
# 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
---
```

Αυτό δίνει στους agents υψηλού επιπέδου αυτοματισμό (Skills) για συνηθισμένα μοτίβα, διατηρώντας παράλληλα χαμηλού επιπέδου πρόσβαση (Brevo MCP) για προσαρμοσμένη λογική.

Δείτε [Μορφή Προδιαγραφής Agent](https://tajo.io/gr/docs/mcp/agent-specification) και [Δημιουργία Agents](https://tajo.io/gr/docs/mcp/building-agents) για πλήρεις λεπτομέρειες.

## Βέλτιστες Πρακτικές

Tip

**Εκδοτικοποιήστε τα skills σας** χρησιμοποιώντας σημασιολογική έκδοση. Αλλαγές που σπάνε τη συμβατότητα απαιτούν αύξηση της κύριας έκδοσης.

1. **Διατηρήστε τα skills εστιασμένα** – ένα skill πρέπει να κάνει ένα πράγμα καλά
2. **Χρησιμοποιήστε περιγραφικά ονόματα** – `abandoned-cart-recovery` όχι `acr`
3. **Τεκμηριώστε τις συνθήκες** – εξηγήστε γιατί υπάρχει κάθε συνθήκη
4. **Διαχειριστείτε τα σφάλματα ευγενικά** – χρησιμοποιήστε `on_error: continue` για μη κρίσιμες ενέργειες
5. **Δοκιμάστε σε μικρό κοινό** – χρησιμοποιήστε `status: experimental` κατά την ανάπτυξη
6. **Προσθέστε έκθεση MCP** για skills που οι agents πρέπει να μπορούν να επικαλεστούν άμεσα

## Επόμενα Βήματα

- [Επισκόπηση MCP και Agents](https://tajo.io/gr/docs/mcp) – πώς τα Skills εντάσσονται στην αρχιτεκτονική agents
- [Μορφή Προδιαγραφής Agent](https://tajo.io/gr/docs/mcp/agent-specification) – ορίστε agents που χρησιμοποιούν Skills ως εργαλεία
- [Δημιουργία Agents](https://tajo.io/gr/docs/mcp/building-agents) – δημιουργήστε τον πρώτο σας marketing agent
- [Skills Συγχρονισμού Δεδομένων](https://tajo.io/gr/docs/skills/data-sync) – εξερευνήστε skills συγχρονισμού δεδομένων
