مواصفات صيغة المهارات
تحدد صيغة skills.md كيفية هيكلة المهارات وتهيئتها وتنفيذها. تضمن هذه المواصفات سلوكًا متسقًا عبر جميع مهارات Tajo.
بنية الملف
تُعرَّف المهارة في ملف markdown واحد مع frontmatter بصيغة YAML:
---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 | الأحداث التي تفعّل هذه المهارة |
actions | array | العمليات التي يمكن لهذه المهارة تنفيذها |
الحقول الاختيارية
| الحقل | النوع | الافتراضي | الوصف |
|---|---|---|---|
status | enum | stable | أحد: stable, beta, experimental |
brevoEndpoints | array | [] | نقاط نهاية Brevo API المستخدمة |
permissions | array | [] | أذونات Brevo API المطلوبة |
relatedSkills | array | [] | معرّفات المهارات ذات الصلة |
featured | boolean | false | إبراز في كتالوج المهارات |
المحفزات
تحدد المحفزات الأحداث التي تفعّل المهارة.
محفزات الأحداث
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محفزات الجدولة
triggers: - schedule: "0 9 * * *" # Cron expression (daily at 9am) 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 | النص يحتوي | email: "contains @gmail.com" |
starts_with | بادئة النص | name: "starts_with Dr." |
in | القيمة في قائمة | country: "in US,CA,UK" |
الإجراءات
تحدد الإجراءات العمليات التي تنفّذها المهارة.
تعريف الإجراء
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 | إرسال بريد إلكتروني معاملاتي |
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 | اقتطاع النص | {{ 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 | طول المصفوفة/النص | {{ items | size }} |
الأذونات
عرّف أذونات Brevo API المطلوبة:
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مثال كامل
---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
يمكن عرض المهارات كأدوات MCP، مما يجعلها قابلة للاستدعاء بواسطة وكلاء الذكاء الاصطناعي. أضف حقل 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
عندما يحتوي أي مهارة على حقل mcp، تصبح أداة يمكن لوكلاء الذكاء الاصطناعي اكتشافها واستدعاؤها:
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 | الوصف المعروض لوكلاء الذكاء الاصطناعي أثناء اكتشاف الأدوات |
mcp.inputSchema | object | JSON Schema يحدد معلمات إدخال الأداة |
mcp.brevo_servers | array | أي من وحدات خوادم Brevo MCP تحتاجها هذه المهارة |
المهارات مقابل أدوات MCP المباشرة
| الجانب | المهارة كأداة MCP | Brevo MCP المباشر |
|---|---|---|
| التجريد | عالٍ - يقول الوكيل “استعد هذه العربة” | منخفض - على الوكيل استدعاء نقاط نهاية Brevo الفردية |
| التعقيد | يغلّف منطقًا متعدد الخطوات | على الوكيل تنسيق كل خطوة |
| الحواجز الوقائية | مدمجة في المهارة (شروط، debounce) | على الوكيل تنفيذها بنفسه |
| الأنسب لـ | سير عمل قابل للتكرار | عمليات عرضية |
Tip
استخدم المهارات كأدوات MCP لسير العمل المعقد متعدد الخطوات الذي لا ينبغي للوكلاء إعادة اختراعه في كل مرة. استخدم أدوات Brevo MCP المباشرة للعمليات البسيطة لمرة واحدة مثل البحث عن جهة اتصال أو إرسال بريد فردي.
تركيب المهارات والوكلاء
يمكن للوكيل استخدام المهارات (كأدوات MCP) ووحدات 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---يتيح هذا للوكلاء أتمتة عالية المستوى (المهارات) للأنماط الشائعة مع الاحتفاظ بالوصول منخفض المستوى (Brevo MCP) للمنطق المخصص.
راجع صيغة مواصفات الوكيل وبناء الوكلاء للتفاصيل الكاملة.
أفضل الممارسات
Tip
أصدر مهاراتك باستخدام الإصدار الدلالي. التغييرات الكاسرة تتطلب ترقية إصدار رئيسي.
- حافظ على تركيز المهارات - يجب أن تفعل المهارة الواحدة شيئًا واحدًا بإتقان
- استخدم أسماء وصفية -
abandoned-cart-recoveryوليسacr - وثّق الشروط - اشرح لماذا وُضع كل شرط
- عالج الأخطاء بأناقة - استخدم
on_error: continueللإجراءات غير الحرجة - اختبر مع جماهير صغيرة - استخدم
status: experimentalأثناء التطوير - أضف عرض MCP للمهارات التي ينبغي للوكلاء استدعاؤها مباشرة
الخطوات التالية
- نظرة عامة على MCP والوكلاء - كيف تندمج المهارات في البنية الوكيلة
- صيغة مواصفات الوكيل - عرّف وكلاء يستخدمون المهارات كأدوات
- بناء الوكلاء - ابنِ أول وكيل تسويقي لك
- مهارات مزامنة البيانات - استكشف مهارات مزامنة البيانات