स्किल्स फ़ॉर्मेट विनिर्देशन

skills.md फ़ॉर्मेट परिभाषित करता है कि स्किल्स कैसे संरचित, कॉन्फ़िगर और निष्पादित की जाती हैं। यह विनिर्देशन सभी Tajo स्किल्स में एक सुसंगत व्यवहार सुनिश्चित करता है।

फ़ाइल संरचना

एक स्किल को 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 फ़ील्ड्स

आवश्यक फ़ील्ड्स

फ़ील्डप्रकारविवरण
namestringयूनीक आइडेंटिफ़ायर (kebab-case)
versionstringसेमांटिक संस्करण (उदा., “2.1.0”)
descriptionstringसंक्षिप्त विवरण (अधिकतम 160 वर्ण)
categoryenumइनमें से एक: data-sync, email-marketing, sms-whatsapp, loyalty, analytics, integrations
triggersarrayइवेंट्स जो इस स्किल को सक्रिय करते हैं
actionsarrayऑपरेशन्स जो यह स्किल कर सकती है

वैकल्पिक फ़ील्ड्स

फ़ील्डप्रकारडिफ़ॉल्टविवरण
statusenumstableइनमें से एक: stable, beta, experimental
brevoEndpointsarray[]उपयोग किए गए Brevo API एंडपॉइंट्स
permissionsarray[]आवश्यक Brevo API अनुमतियाँ
relatedSkillsarray[]संबंधित स्किल्स के IDs
featuredbooleanfalseस्किल कैटलॉग में हाइलाइट करें

Triggers

Triggers परिभाषित करते हैं कि कौन से इवेंट्स स्किल को सक्रिय करते हैं।

इवेंट Triggers

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

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

Webhook Triggers

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

Actions परिभाषित करते हैं कि स्किल कौन से ऑपरेशन्स करती है।

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 # or 'stop'

Action प्रकार

प्रकारविवरण
brevo/send-emailट्रांज़ैक्शनल ईमेल भेजें
brevo/send-smsSMS संदेश भेजें
brevo/send-whatsappWhatsApp संदेश भेजें
brevo/create-contactनया कॉन्टैक्ट बनाएं
brevo/update-contactकॉन्टैक्ट एट्रिब्यूट्स अपडेट करें
brevo/delete-contactकॉन्टैक्ट डिलीट करें
brevo/add-to-listकॉन्टैक्ट को सूची में जोड़ें
brevo/remove-from-listकॉन्टैक्ट को सूची से हटाएं
brevo/track-eventकस्टम इवेंट ट्रैक करें
http/requestHTTP रिक्वेस्ट बनाएं
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-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 टूल एक्सपोज़र

स्किल्स को MCP टूल्स के रूप में उजागर किया जा सकता है, जिससे वे AI एजेंट्स द्वारा कॉल करने योग्य हो जाते हैं। अपने frontmatter में mcp फ़ील्ड जोड़ें:

---
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 एक्सपोज़र कैसे काम करता है

जब किसी स्किल के पास mcp फ़ील्ड होता है, तो यह एक ऐसा टूल बन जाता है जिसे 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

MCP फ़ील्ड्स

फ़ील्डप्रकारविवरण
mcp.tool_namestringMCP टूल नाम (फ़ॉर्मेट: tajo/skill-name)
mcp.descriptionstringटूल डिस्कवरी के दौरान AI एजेंट्स को दिखाया गया विवरण
mcp.inputSchemaobjectJSON Schema जो टूल के इनपुट पैरामीटर परिभाषित करता है
mcp.brevo_serversarrayइस स्किल को कौन से Brevo MCP सर्वर मॉड्यूल की आवश्यकता है

स्किल्स बनाम डायरेक्ट MCP टूल्स

पहलूMCP टूल के रूप में स्किलडायरेक्ट Brevo MCP
अमूर्तनउच्च, एजेंट कहता है “इस कार्ट को पुनः प्राप्त करें”निम्न, एजेंट को व्यक्तिगत Brevo एंडपॉइंट्स कॉल करने होंगे
जटिलताबहु-चरण तर्क को समाहित करता हैएजेंट को प्रत्येक चरण को व्यवस्थित करना होगा
सुरक्षा उपायस्किल में निर्मित (conditions, debounce)एजेंट को स्वयं लागू करने होंगे
इसके लिए सर्वश्रेष्ठपुनरावृत्त वर्कफ़्लोतदर्थ ऑपरेशन्स

Tip

जटिल, बहु-चरण वर्कफ़्लो के लिए MCP टूल्स के रूप में स्किल्स का उपयोग करें जिन्हें एजेंट्स को हर बार फिर से नहीं बनाना चाहिए। सरल, एक-बार के ऑपरेशन्स जैसे कॉन्टैक्ट ढूंढना या एकल ईमेल भेजना के लिए डायरेक्ट Brevo MCP टूल्स का उपयोग करें।

स्किल्स और एजेंट्स का संयोजन

एक एजेंट स्किल्स (MCP टूल्स के रूप में) और डायरेक्ट Brevo MCP मॉड्यूल दोनों का उपयोग कर सकता है:

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

यह एजेंट्स को सामान्य पैटर्न के लिए उच्च-स्तरीय ऑटोमेशन (स्किल्स) देता है जबकि कस्टम तर्क के लिए निम्न-स्तरीय एक्सेस (Brevo MCP) बनाए रखता है।

पूर्ण विवरण के लिए एजेंट विनिर्देशन फ़ॉर्मेट और एजेंट्स बनाना देखें।

सर्वोत्तम प्रथाएं

Tip

सेमांटिक वर्ज़निंग का उपयोग करके अपने स्किल्स को वर्जन करें। ब्रेकिंग बदलावों के लिए एक प्रमुख संस्करण बंप की आवश्यकता होती है।

  1. स्किल्स को केंद्रित रखें - एक स्किल को एक काम अच्छी तरह से करना चाहिए
  2. वर्णनात्मक नामों का उपयोग करें - abandoned-cart-recovery न कि acr
  3. स्थितियों का दस्तावेज़ करें - समझाएं कि प्रत्येक स्थिति क्यों मौजूद है
  4. त्रुटियों को नरमी से हैंडल करें - गैर-महत्वपूर्ण कार्रवाइयों के लिए on_error: continue का उपयोग करें
  5. छोटे दर्शकों के साथ परीक्षण करें - विकास के दौरान status: experimental का उपयोग करें
  6. उन स्किल्स के लिए MCP एक्सपोज़र जोड़ें जिन्हें एजेंट्स को सीधे आमंत्रित करने में सक्षम होना चाहिए

अगले कदम

Subscribe to updates

developer-docs

Drop your email or phone number — we'll send you what matters next.

auto-detect
AI Assistant

Hi! Ask me anything about the docs.