Thông số kỹ thuật định dạng Skills
Định dạng skills.md xác định cách Skills được cấu trúc, cấu hình và thực thi. Thông số kỹ thuật này đảm bảo hành vi nhất quán trên tất cả Tajo Skills.
Cấu trúc tệp
Một skill được định nghĩa trong một tệp markdown duy nhất với 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...Các trường Frontmatter
Các trường bắt buộc
| Trường | Kiểu | Mô tả |
|---|---|---|
name | string | Định danh duy nhất (kebab-case) |
version | string | Phiên bản Semantic (ví dụ: “2.1.0”) |
description | string | Mô tả ngắn (tối đa 160 ký tự) |
category | enum | Một trong: data-sync, email-marketing, sms-whatsapp, loyalty, analytics, integrations |
triggers | array | Các sự kiện kích hoạt skill này |
actions | array | Các thao tác skill này có thể thực hiện |
Các trường tùy chọn
| Trường | Kiểu | Mặc định | Mô tả |
|---|---|---|---|
status | enum | stable | Một trong: stable, beta, experimental |
brevoEndpoints | array | [] | Các Brevo API endpoints được sử dụng |
permissions | array | [] | Các quyền Brevo API cần thiết |
relatedSkills | array | [] | ID của các skills liên quan |
featured | boolean | false | Nổi bật trong danh mục skill |
Triggers
Triggers xác định những sự kiện nào kích hoạt skill.
Trigger sự kiện
triggers: - event: cart_abandoned conditions: - cart_value: "> 50" # Giá trị giỏ hàng tối thiểu - items_count: ">= 1" # Ít nhất một mặt hàng - time_since_activity: "> 30m" # 30 phút không hoạt động debounce: 5m # Chờ 5 phút trước khi kích hoạt lạiTrigger lịch trình
triggers: - schedule: "0 9 * * *" # Biểu thức Cron (hàng ngày lúc 9 giờ sáng) timezone: "America/New_York" - schedule: every_hour - schedule: every_dayTrigger Webhook
triggers: - webhook: /skills/customer-sync/trigger method: POST authentication: api_keyToán tử điều kiện
| Toán tử | Mô tả | Ví dụ |
|---|---|---|
= | Bằng | status: "active" |
!= | Không bằng | status: "!= deleted" |
> | Lớn hơn | cart_value: "> 50" |
>= | Lớn hơn hoặc bằng | items: ">= 1" |
< | Nhỏ hơn | age: "< 30" |
<= | Nhỏ hơn hoặc bằng | quantity: "<= 10" |
contains | Chuỗi chứa | email: "contains @gmail.com" |
starts_with | Tiền tố chuỗi | name: "starts_with Dr." |
in | Giá trị trong danh sách | country: "in US,CA,UK" |
Actions
Actions xác định các thao tác mà skill thực hiện.
Định nghĩa Action
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 # hoặc 'stop'Các loại Action
| Loại | Mô tả |
|---|---|
brevo/send-email | Gửi email giao dịch |
brevo/send-sms | Gửi tin nhắn SMS |
brevo/send-whatsapp | Gửi tin nhắn WhatsApp |
brevo/create-contact | Tạo liên hệ mới |
brevo/update-contact | Cập nhật thuộc tính liên hệ |
brevo/delete-contact | Xóa liên hệ |
brevo/add-to-list | Thêm liên hệ vào danh sách |
brevo/remove-from-list | Xóa liên hệ khỏi danh sách |
brevo/track-event | Theo dõi sự kiện tùy chỉnh |
http/request | Tạo yêu cầu HTTP |
transform/map | Chuyển đổi dữ liệu |
control/delay | Chờ trước khi tiếp tục |
control/condition | Phân nhánh dựa trên điều kiện |
Biến mẫu
Sử dụng cú pháp {{ }} để tham chiếu dữ liệu:
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' }}"Các bộ lọc có sẵn
| Bộ lọc | Mô tả | Ví dụ |
|---|---|---|
default | Giá trị mặc định | {{ name | default: 'Guest' }} |
uppercase | Chữ hoa | {{ name | uppercase }} |
lowercase | Chữ thường | {{ email | lowercase }} |
capitalize | Viết hoa chữ đầu | {{ name | capitalize }} |
truncate | Cắt ngắn chuỗi | {{ desc | truncate: 100 }} |
date | Định dạng ngày | {{ date | date: 'YYYY-MM-DD' }} |
currency | Định dạng tiền tệ | {{ price | currency: 'EUR' }} |
map | Map thuộc tính mảng | {{ items | map: 'name' }} |
join | Nối mảng | {{ tags | join: ', ' }} |
first | Phần tử đầu tiên của mảng | {{ items | first }} |
last | Phần tử cuối cùng của mảng | {{ items | last }} |
size | Độ dài mảng/chuỗi | {{ items | size }} |
Quyền
Xác định các quyền Brevo API cần thiết:
permissions: - contacts:read # Đọc dữ liệu liên hệ - contacts:write # Tạo/cập nhật liên hệ - email:send # Gửi email giao dịch - sms:send # Gửi tin nhắn SMS - lists:write # Quản lý danh sách liên hệ - events:write # Theo dõi sự kiệnVí dụ đầy đủ
---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...Hiển thị MCP Tool
Skills có thể được hiển thị dưới dạng MCP tools, cho phép AI agents có thể gọi chúng. Thêm trường mcp vào frontmatter của bạn:
---name: abandoned-cart-recoveryversion: 3.0.0description: Recover abandoned shopping carts with a multi-step email sequencecategory: email-marketing
# Cấu hình MCPmcp: 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---Cách hoạt động của việc hiển thị MCP
Khi một skill có trường mcp, nó trở thành một tool mà AI agents có thể khám phá và gọi:
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 initiatedCác trường MCP
| Trường | Kiểu | Mô tả |
|---|---|---|
mcp.tool_name | string | Tên MCP tool (định dạng: tajo/skill-name) |
mcp.description | string | Mô tả hiển thị cho AI agents trong quá trình khám phá tool |
mcp.inputSchema | object | JSON Schema xác định các tham số đầu vào của tool |
mcp.brevo_servers | array | Các mô-đun Brevo MCP server mà skill này cần |
Skills so với Direct MCP Tools
| Khía cạnh | Skill dưới dạng MCP Tool | Direct Brevo MCP |
|---|---|---|
| Tính trừu tượng | Cao, agent nói “khôi phục giỏ hàng này” | Thấp, agent phải gọi từng Brevo endpoint |
| Độ phức tạp | Đóng gói logic nhiều bước | Agent phải điều phối từng bước |
| Biện pháp bảo vệ | Tích hợp vào skill (điều kiện, debounce) | Agent phải tự triển khai |
| Phù hợp nhất | Quy trình có thể lặp lại | Thao tác một lần |
Tip
Sử dụng Skills dưới dạng MCP tools cho các quy trình phức tạp, nhiều bước mà agents không nên tự tạo lại mỗi lần. Sử dụng direct Brevo MCP tools cho các thao tác đơn giản, một lần như tra cứu liên hệ hoặc gửi một email.
Kết hợp Skills và Agents
Một agent có thể sử dụng cả Skills (dưới dạng MCP tools) và Brevo MCP modules trực tiếp:
# Agent spec---name: retention-agenttools: # Tajo Skills dưới dạng MCP tools - tajo/recover-abandoned-cart - tajo/customer-sync - tajo/win-back-sequence # Direct Brevo MCP modules - brevo_contacts - brevo_campaign_analytics - brevo_segments---Điều này cung cấp cho agents tự động hóa cấp cao (Skills) cho các mẫu phổ biến trong khi vẫn giữ quyền truy cập cấp thấp (Brevo MCP) cho logic tùy chỉnh.
Xem Định dạng thông số kỹ thuật Agent và Xây dựng Agents để biết thông tin đầy đủ.
Thực tiễn tốt nhất
Tip
Đánh phiên bản skills của bạn bằng cách sử dụng semantic versioning. Các thay đổi phá vỡ tương thích yêu cầu tăng phiên bản chính.
- Giữ skills tập trung - Một skill nên làm tốt một việc
- Sử dụng tên mô tả -
abandoned-cart-recoverykhông phảiacr - Ghi lại điều kiện - Giải thích lý do tại sao mỗi điều kiện tồn tại
- Xử lý lỗi duyên dáng - Sử dụng
on_error: continuecho các actions không quan trọng - Kiểm tra với đối tượng nhỏ - Sử dụng
status: experimentaltrong quá trình phát triển - Thêm hiển thị MCP cho các skills mà agents nên có thể gọi trực tiếp
Bước tiếp theo
- Tổng quan MCP & Agents - Cách Skills phù hợp với kiến trúc agentic
- Định dạng thông số kỹ thuật Agent - Xác định agents sử dụng Skills dưới dạng tools
- Xây dựng Agents - Xây dựng marketing agent đầu tiên của bạn
- Data Sync Skills - Khám phá các skills đồng bộ dữ liệu