---
title: "स्किल्स फ़ॉर्मेट विनिर्देशन | Tajo"
description: "Brevo के साथ एकीकृत होने वाले AI-संचालित ऑटोमेशन स्किल्स को परिभाषित करने के लिए skills.md फ़ॉर्मेट सीखें।"
url: https://tajo.io/hi/docs/skills/overview/skills-format/
markdown: https://tajo.io/hi/docs/skills/overview/skills-format.md
lang: hi-IN
author: "Set Noa"
author_url: https://tajo.io/hi/set-noa/
robots: noindex
---

अर्ली एक्सेस का अनुरोध करें

अपना पहला नाम और कार्यस्थल का ईमेल पता दर्ज करें। Tajo एक्सेस अनुरोध की पुष्टि के लिए हम आपको एक लिंक ईमेल करेंगे।

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

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

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

## फ़ाइल संरचना

एक स्किल को YAML frontmatter के साथ एकल markdown फ़ाइल में परिभाषित किया जाता है:

```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 | इवेंट्स जो इस स्किल को सक्रिय करते हैं |
| `actions` | array | ऑपरेशन्स जो यह स्किल कर सकती है |

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

| फ़ील्ड | प्रकार | डिफ़ॉल्ट | विवरण |
| --- | --- | --- | --- |
| `status` | enum | `stable` | इनमें से एक: `stable`, `beta`, `experimental` |
| `brevoEndpoints` | array | `[]` | उपयोग किए गए Brevo API एंडपॉइंट्स |
| `permissions` | array | `[]` | आवश्यक Brevo API अनुमतियाँ |
| `relatedSkills` | array | `[]` | संबंधित स्किल्स के IDs |
| `featured` | boolean | `false` | स्किल कैटलॉग में हाइलाइट करें |

## Triggers

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

### इवेंट Triggers

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

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

### Webhook Triggers

```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` | स्ट्रिंग में शामिल | `email: "contains @gmail.com"` |
| `starts_with` | स्ट्रिंग उपसर्ग | `name: "starts_with Dr."` |
| `in` | सूची में मान | `country: "in US,CA,UK"` |

## Actions

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

### Action परिभाषा

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

### Action प्रकार

| प्रकार | विवरण |
| --- | --- |
| `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` | स्थिति के आधार पर शाखा करें |

### टेम्पलेट वेरिएबल्स

डेटा का संदर्भ देने के लिए `{{ }}` सिंटैक्स का उपयोग करें:

```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` | स्ट्रिंग काटें | `{{ 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 अनुमतियाँ परिभाषित करें:

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

## पूर्ण उदाहरण

```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 टूल एक्सपोज़र

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

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

जब किसी स्किल के पास `mcp` फ़ील्ड होता है, तो यह एक ऐसा टूल बन जाता है जिसे AI एजेंट्स खोज सकते हैं और आमंत्रित कर सकते हैं:

```
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 एजेंट्स को दिखाया गया विवरण |
| `mcp.inputSchema` | object | JSON Schema जो टूल के इनपुट पैरामीटर परिभाषित करता है |
| `mcp.brevo_servers` | array | इस स्किल को कौन से Brevo MCP सर्वर मॉड्यूल की आवश्यकता है |

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

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

Tip

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

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

एक एजेंट स्किल्स (MCP टूल्स के रूप में) और डायरेक्ट 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
---
```

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

पूर्ण विवरण के लिए [एजेंट विनिर्देशन फ़ॉर्मेट](https://tajo.io/hi/docs/mcp/agent-specification) और [एजेंट्स बनाना](https://tajo.io/hi/docs/mcp/building-agents) देखें।

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

Tip

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

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

## अगले कदम

- [MCP और एजेंट्स अवलोकन](https://tajo.io/hi/docs/mcp) - स्किल्स एजेंटिक आर्किटेक्चर में कैसे फ़िट होती हैं
- [एजेंट विनिर्देशन फ़ॉर्मेट](https://tajo.io/hi/docs/mcp/agent-specification) - ऐसे एजेंट्स परिभाषित करें जो स्किल्स को टूल्स के रूप में उपयोग करते हैं
- [एजेंट्स बनाना](https://tajo.io/hi/docs/mcp/building-agents) - अपना पहला मार्केटिंग एजेंट बनाएं
- [डेटा सिंक स्किल्स](https://tajo.io/hi/docs/skills/data-sync) - डेटा सिंक्रोनाइज़ेशन स्किल्स का पता लगाएं
