Ajukan akses awal

Masukkan nama depan serta email atau nomor telepon Anda. Kami akan menghubungi Anda dengan detail akses Tajo.

Spesifikasi Format Skill

Format skills.md mendefinisikan bagaimana Skill disusun, dikonfigurasi, dan dijalankan. Spesifikasi ini memastikan perilaku yang konsisten di seluruh Skill Tajo.

Struktur file

Sebuah skill didefinisikan dalam satu file markdown dengan 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...

Bidang frontmatter

Bidang wajib

BidangTipeDeskripsi
namestringIdentifier unik (kebab-case)
versionstringVersi semantik (misalnya “2.1.0”)
descriptionstringDeskripsi singkat (maksimal 160 karakter)
categoryenumSalah satu dari: data-sync, email-marketing, sms-whatsapp, loyalty, analytics, integrations
triggersarrayEvent yang mengaktifkan skill ini
actionsarrayOperasi yang dapat dijalankan skill ini

Bidang opsional

BidangTipeDefaultDeskripsi
statusenumstableSalah satu dari: stable, beta, experimental
brevoEndpointsarray[]Endpoint API Brevo yang digunakan
permissionsarray[]Izin API Brevo yang diperlukan
relatedSkillsarray[]ID skill terkait
featuredbooleanfalseTonjolkan di katalog skill

Trigger

Trigger menentukan event apa yang mengaktifkan skill.

Trigger event

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

Trigger jadwal

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

Trigger webhook

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

Operator kondisi

OperatorDeskripsiContoh
=Sama denganstatus: "active"
!=Tidak sama denganstatus: "!= deleted"
>Lebih besar daricart_value: "> 50"
>=Lebih besar dari atau sama denganitems: ">= 1"
<Lebih kecil dariage: "< 30"
<=Lebih kecil dari atau sama denganquantity: "<= 10"
containsString mengandungemail: "contains @gmail.com"
starts_withAwalan stringname: "starts_with Dr."
inNilai ada dalam daftarcountry: "in US,CA,UK"

Aksi

Aksi menentukan operasi apa yang dijalankan skill.

Definisi aksi

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'

Tipe aksi

TipeDeskripsi
brevo/send-emailKirim email transaksional
brevo/send-smsKirim pesan SMS
brevo/send-whatsappKirim pesan WhatsApp
brevo/create-contactBuat kontak baru
brevo/update-contactPerbarui atribut kontak
brevo/delete-contactHapus kontak
brevo/add-to-listTambahkan kontak ke daftar
brevo/remove-from-listKeluarkan kontak dari daftar
brevo/track-eventLacak event kustom
http/requestLakukan permintaan HTTP
transform/mapTransformasikan data
control/delayTunggu sebelum melanjutkan
control/conditionBercabang berdasarkan kondisi

Variabel template

Gunakan sintaks {{ }} untuk merujuk ke 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' }}"

Filter yang tersedia

FilterDeskripsiContoh
defaultNilai default{{ name | default: 'Guest' }}
uppercaseUbah string ke huruf besar{{ name | uppercase }}
lowercaseUbah string ke huruf kecil{{ email | lowercase }}
capitalizeKapitalkan huruf pertama{{ name | capitalize }}
truncatePotong string{{ desc | truncate: 100 }}
dateFormat tanggal{{ date | date: 'YYYY-MM-DD' }}
currencyFormat mata uang{{ price | currency: 'EUR' }}
mapPetakan properti array{{ items | map: 'name' }}
joinGabungkan array{{ tags | join: ', ' }}
firstItem pertama array{{ items | first }}
lastItem terakhir array{{ items | last }}
sizePanjang array/string{{ items | size }}

Izin

Tentukan izin API Brevo yang diperlukan:

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

Contoh lengkap

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

Ekspos skill sebagai tool MCP

Skill dapat diekspos sebagai tool MCP sehingga dapat dipanggil oleh agen AI. Tambahkan bidang mcp ke frontmatter Anda:

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

Cara kerja ekspos MCP

Ketika sebuah skill memiliki bidang mcp, skill itu menjadi tool yang dapat ditemukan dan dipanggil oleh agen AI:

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

Bidang MCP

BidangTipeDeskripsi
mcp.tool_namestringNama tool MCP (format: tajo/skill-name)
mcp.descriptionstringDeskripsi yang ditampilkan ke agen AI saat penemuan tool
mcp.inputSchemaobjectJSON Schema yang mendefinisikan parameter input tool
mcp.brevo_serversarrayModul server MCP Brevo yang dibutuhkan skill ini

Skill vs tool MCP langsung

AspekSkill sebagai tool MCPBrevo MCP langsung
AbstraksiTinggi, agen cukup berkata “pulihkan keranjang ini”Rendah, agen harus memanggil setiap endpoint Brevo satu per satu
KompleksitasMerangkum logika multi-langkahAgen harus mengorkestrasi setiap langkah
PengamanTertanam di dalam skill (kondisi, debounce)Agen harus membuatnya sendiri
Paling cocok untukAlur kerja yang berulangOperasi ad-hoc

Tip

Gunakan Skill sebagai tool MCP untuk alur kerja kompleks bertahap yang tidak perlu disusun ulang oleh agen setiap kali. Gunakan tool Brevo MCP langsung untuk operasi sederhana sekali jalan seperti mencari satu kontak atau mengirim satu email.

Merangkai Skill dan Agen

Sebuah agen dapat memakai Skill (sebagai tool MCP) sekaligus modul Brevo MCP langsung:

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

Dengan begitu agen memperoleh otomatisasi tingkat tinggi (Skill) untuk pola umum sambil tetap memiliki akses tingkat rendah (Brevo MCP) untuk logika kustom.

Lihat Format Spesifikasi Agen dan Membangun Agen untuk detail lengkapnya.

Praktik terbaik

Tip

Beri versi pada skill Anda menggunakan semantic versioning. Perubahan yang memutus kompatibilitas memerlukan kenaikan versi mayor.

  1. Jaga skill tetap fokus - Satu skill sebaiknya mengerjakan satu hal dengan baik
  2. Gunakan nama yang deskriptif - abandoned-cart-recovery, bukan acr
  3. Dokumentasikan kondisi - Jelaskan mengapa setiap kondisi ada
  4. Tangani error dengan baik - Gunakan on_error: continue untuk aksi yang tidak kritis
  5. Uji dengan audiens kecil - Gunakan status: experimental selama pengembangan
  6. Tambahkan ekspos MCP untuk skill yang perlu dapat dipanggil langsung oleh agen

Langkah berikutnya

Ajukan akses awal

Masukkan nama depan serta email atau nomor telepon Anda. Kami akan menghubungi Anda dengan detail akses Tajo.

deteksi otomatis
Asisten AI

Halo! Tanyakan apa saja tentang dokumentasi.