स्किल क्रिएटर: प्रभावी क्लॉड स्किल्स बनाएं
Wikiprompt से, मुफ्त प्रॉम्प्ट विश्वकोश
स्किल क्रिएटर: प्रभावी क्लॉड स्किल्स बनाएं एक संपूर्ण सिस्टम प्रॉम्प्ट जो क्लॉड को मॉड्यूलर स्किल्स बनाने में मार्गदर्शन करता है, जिसमें वर्कफ्लो, संदर्भ और स्क्रिप्ट शामिल हैं, साथ ही सत्यापन और पैकेजिंग टूल भी शामिल हैं।
प्रॉम्प्ट सामग्रीसहेजें
🌐
---
name: skill-creator
description: प्रभावी स्किल बनाने के लिए मार्गदर्शिका। इस स्किल का उपयोग तब किया जाना चाहिए जब उपयोगकर्ता एक नई स्किल बनाना चाहते हैं (या मौजूदा स्किल को अपडेट करना चाहते हैं) जो विशेष ज्ञान, वर्कफ़्लो, या टूल इंटीग्रेशन के साथ क्लॉड की क्षमताओं का विस्तार करती है।
license: Complete terms in LICENSE.txt
---
# स्किल क्रिएटर
यह स्किल प्रभावी स्किल बनाने के लिए मार्गदर्शन प्रदान करती है।
## स्किल के बारे में
स्किल मॉड्यूलर, स्व-निहित पैकेज हैं जो विशेष ज्ञान, वर्कफ़्लो और टूल प्रदान करके क्लॉड की क्षमताओं का विस्तार करते हैं। उन्हें विशिष्ट डोमेन या कार्यों के लिए "ऑनबोर्डिंग गाइड" के रूप में सोचें - वे क्लॉड को एक सामान्य-उद्देश्य वाले एजेंट से एक विशेष एजेंट में बदल देते हैं जो प्रक्रियात्मक ज्ञान से लैस होता है जो कोई भी मॉडल पूरी तरह से धारण नहीं कर सकता है।
### स्किल क्या प्रदान करती हैं
1. विशेष वर्कफ़्लो - विशिष्ट डोमेन के लिए बहु-चरणीय प्रक्रियाएँ
2. टूल इंटीग्रेशन - विशिष्ट फ़ाइल प्रारूपों या API के साथ काम करने के निर्देश
3. डोमेन विशेषज्ञता - कंपनी-विशिष्ट ज्ञान, स्कीमा, व्यावसायिक तर्क
4. बंडल संसाधन - जटिल और दोहराए जाने वाले कार्यों के लिए स्क्रिप्ट, संदर्भ और संपत्तियाँ
## मूल सिद्धांत
### संक्षिप्तता महत्वपूर्ण है
संदर्भ विंडो एक सार्वजनिक अच्छा है। स्किल संदर्भ विंडो को बाकी सब कुछ के साथ साझा करती हैं जो क्लॉड को चाहिए: सिस्टम प्रॉम्प्ट, वार्तालाप इतिहास, अन्य स्किल का मेटाडेटा, और वास्तविक उपयोगकर्ता अनुरोध।
**डिफ़ॉल्ट धारणा: क्लॉड पहले से ही बहुत स्मार्ट है।** केवल वह संदर्भ जोड़ें जो क्लॉड के पास पहले से नहीं है। जानकारी के प्रत्येक टुकड़े को चुनौती दें: "क्या क्लॉड को वास्तव में इस स्पष्टीकरण की आवश्यकता है?" और "क्या यह पैराग्राफ अपनी टोकन लागत को उचित ठहराता है?"
वर्बोज़ स्पष्टीकरणों पर संक्षिप्त उदाहरणों को प्राथमिकता दें।
### स्वतंत्रता की उपयुक्त डिग्री निर्धारित करें
विशिष्टता के स्तर को कार्य की नाजुकता और परिवर्तनशीलता से मिलाएँ:
**उच्च स्वतंत्रता (पाठ-आधारित निर्देश)**: उपयोग करें जब कई दृष्टिकोण मान्य हों, निर्णय संदर्भ पर निर्भर करते हों, या अनुमानी दृष्टिकोण का मार्गदर्शन करते हों।
**मध्यम स्वतंत्रता (पैरामीटर के साथ स्यूडोकोड या स्क्रिप्ट)**: उपयोग करें जब कोई पसंदीदा पैटर्न मौजूद हो, कुछ भिन्नता स्वीकार्य हो, या कॉन्फ़िगरेशन व्यवहार को प्रभावित करता हो।
**कम स्वतंत्रता (विशिष्ट स्क्रिप्ट, कुछ पैरामीटर)**: उपयोग करें जब संचालन नाजुक और त्रुटि-प्रवण हों, स्थिरता महत्वपूर्ण हो, या एक विशिष्ट अनुक्रम का पालन किया जाना चाहिए।
क्लॉड को एक पथ की खोज के रूप में सोचें: चट्टानों वाला एक संकरा पुल विशिष्ट सुरक्षा रेलिंग की आवश्यकता रखता है (कम स्वतंत्रता), जबकि एक खुला मैदान कई मार्गों की अनुमति देता है (उच्च स्वतंत्रता)।
### एक स्किल की शारीरिक रचना
हर स्किल में एक आवश्यक SKILL.md फ़ाइल और वैकल्पिक बंडल संसाधन होते हैं:
```
skill-name/
├── SKILL.md (आवश्यक)
│ ├── YAML फ्रंटमैटर मेटाडेटा (आवश्यक)
│ │ ├── name: (आवश्यक)
│ │ └── description: (आवश्यक)
│ └── मार्कडाउन निर्देश (आवश्यक)
└── बंडल संसाधन (वैकल्पिक)
├── scripts/ - निष्पादन योग्य कोड (Python/Bash/आदि)
├── references/ - दस्तावेज़ीकरण जो आवश्यकतानुसार संदर्भ में लोड किया जाना है
└── assets/ - आउटपुट में उपयोग की जाने वाली फ़ाइलें (टेम्पलेट, आइकन, फ़ॉन्ट, आदि)
```
#### SKILL.md (आवश्यक)
प्रत्येक SKILL.md में शामिल है:
- **फ्रंटमैटर** (YAML): इसमें `name` और `description` फ़ील्ड होते हैं। ये एकमात्र फ़ील्ड हैं जिन्हें क्लॉड यह निर्धारित करने के लिए पढ़ता है कि स्किल का उपयोग कब किया जाएगा, इसलिए यह बहुत महत्वपूर्ण है कि स्किल क्या है और इसका उपयोग कब किया जाना चाहिए, इसका वर्णन स्पष्ट और व्यापक हो।
- **बॉडी** (मार्कडाउन): स्किल का उपयोग करने के लिए निर्देश और मार्गदर्शन। स्किल ट्रिगर होने के बाद ही लोड किया जाता है (यदि बिल्कुल भी)।
#### बंडल संसाधन (वैकल्पिक)
##### स्क्रिप्ट (`scripts/`)
निष्पादन योग्य कोड (Python/Bash/आदि) उन कार्यों के लिए जिन्हें नियतात्मक विश्वसनीयता की आवश्यकता होती है या बार-बार फिर से लिखे जाते हैं।
- **कब शामिल करें**: जब एक ही कोड को बार-बार फिर से लिखा जा रहा हो या नियतात्मक विश्वसनीयता की आवश्यकता हो
- **उदाहरण**: PDF रोटेशन कार्यों के लिए `scripts/rotate_pdf.py`
- **लाभ**: टोकन कुशल, नियतात्मक, संदर्भ में लोड किए बिना निष्पादित किया जा सकता है
- **नोट**: पैचिंग या पर्यावरण-विशिष्ट समायोजन के लिए स्क्रिप्ट को अभी भी क्लॉड द्वारा पढ़ने की आवश्यकता हो सकती है
##### संदर्भ (`references/`)
दस्तावेज़ीकरण और संदर्भ सामग्री जो क्लॉड की प्रक्रिया और सोच को सूचित करने के लिए आवश्यकतानुसार संदर्भ में लोड की जानी है।
- **कब शामिल करें**: उस दस्तावेज़ीकरण के लिए जिसे क्लॉड को काम करते समय संदर्भित करना चाहिए
- **उदाहरण**: वित्तीय स्कीमा के लिए `references/finance.md`, कंपनी NDA टेम्पलेट के लिए `references/mnda.md`, कंपनी नीतियों के लिए `references/policies.md`, API विनिर्देशों के लिए `references/api_docs.md`
- **उपयोग के मामले**: डेटाबेस स्कीमा, API दस्तावेज़ीकरण, डोमेन ज्ञान, कंपनी नीतियां, विस्तृत वर्कफ़्लो गाइड
- **लाभ**: SKILL.md को पतला रखता है, केवल तब लोड होता है जब क्लॉड निर्धारित करता है कि इसकी आवश्यकता है
- **सर्वोत्तम अभ्यास**: यदि फ़ाइलें बड़ी हैं (>10k शब्द), तो SKILL.md में grep खोज पैटर्न शामिल करें
- **दोहराव से बचें**: जानकारी या तो SKILL.md या संदर्भ फ़ाइलों में होनी चाहिए, दोनों में नहीं।
##### संपत्तियाँ (`assets/`)
फ़ाइलें जो संदर्भ में लोड करने के लिए नहीं हैं, बल्कि क्लॉड द्वारा उत्पादित आउटपुट के भीतर उपयोग की जाती हैं।
- **कब शामिल करें**: जब स्किल को उन फ़ाइलों की आवश्यकता होती है जो अंतिम आउटपुट में उपयोग की जाएंगी
- **उदाहरण**: ब्रांड संपत्तियों के लिए `assets/logo.png`, PowerPoint टेम्पलेट्स के लिए `assets/slides.pptx`
- **उपयोग के मामले**: टेम्पलेट, चित्र, आइकन, बॉयलरप्लेट कोड, फ़ॉन्ट, नमूना दस्तावेज़
### प्रगतिशील प्रकटीकरण डिज़ाइन सिद्धांत
स्किल संदर्भ को कुशलतापूर्वक प्रबंधित करने के लिए तीन-स्तरीय लोडिंग प्रणाली का उपयोग करती हैं:
1. **मेटाडेटा (name + description)** - हमेशा संदर्भ में (~100 शब्द)
2. **SKILL.md बॉडी** - जब स्किल ट्रिगर होती है (<5k शब्द)
3. **बंडल संसाधन** - क्लॉड द्वारा आवश्यकतानुसार
SKILL.md बॉडी को आवश्यक चीजों तक सीमित रखें और संदर्भ की सूजन को कम करने के लिए 500 लाइनों से कम रखें।
## स्किल निर्माण प्रक्रिया
स्किल निर्माण में ये चरण शामिल हैं:
1. ठोस उदाहरणों के साथ स्किल को समझें
2. पुन: प्रयोज्य स्किल सामग्री की योजना बनाएं (स्क्रिप्ट, संदर्भ, संपत्तियाँ)
3. स्किल को आरंभ करें (init_skill.py चलाएँ)
4. स्किल को संपादित करें (संसाधनों को लागू करें और SKILL.md लिखें)
5. स्किल को पैकेज करें (package_skill.py चलाएँ)
6. वास्तविक उपयोग के आधार पर पुनरावृति करें
### चरण 3: स्किल को आरंभ करना
स्क्रैच से नई स्किल बनाते समय, हमेशा `init_skill.py` स्क्रिप्ट चलाएँ:
```bash
scripts/init_skill.py <skill-name> --path <output-directory>
```
### चरण 4: स्किल को संपादित करें
अपनी स्किल की आवश्यकताओं के आधार पर इन सहायक गाइडों से परामर्श करें:
- **बहु-चरणीय प्रक्रियाएँ**: अनुक्रमिक वर्कफ़्लो और सशर्त तर्क के लिए references/workflows.md देखें
- **विशिष्ट आउटपुट प्रारूप या गुणवत्ता मानक**: टेम्पलेट और उदाहरण पैटर्न के लिए references/output-patterns.md देखें
### चरण 5: एक स्किल को पैकेज करना
```bash
scripts/package_skill.py <path/to/skill-folder>
```
पैकेजिंग स्क्रिप्ट वितरण के लिए एक .skill फ़ाइल को मान्य और बनाती है।
FILE:references/workflows.md
# वर्कफ़्लो पैटर्न
## अनुक्रमिक वर्कफ़्लो
जटिल कार्यों के लिए, संचालन को स्पष्ट, अनुक्रमिक चरणों में तोड़ें। SKILL.md की शुरुआत की ओर क्लॉड को प्रक्रिया का अवलोकन देना अक्सर सहायक होता है:
```markdown
PDF फॉर्म भरने में ये चरण शामिल हैं:
1. फॉर्म का विश्लेषण करें (analyze_form.py चलाएँ)
2. फ़ील्ड मैपिंग बनाएं (fields.json संपादित करें)
3. मैपिंग को मान्य करें (validate_fields.py चलाएँ)
4. फॉर्म भरें (fill_form.py चलाएँ)
5. आउटपुट सत्यापित करें (verify_output.py चलाएँ)
```
## सशर्त वर्कफ़्लो
शाखाओं वाले तर्क वाले कार्यों के लिए, क्लॉड को निर्णय बिंदुओं के माध्यम से मार्गदर्शन करें:
```markdown
1. संशोधन प्रकार निर्धारित करें:
**नई सामग्री बना रहे हैं?** → नीचे "निर्माण वर्कफ़्लो" का पालन करें
**मौजूदा सामग्री संपादित कर रहे हैं?** → नीचे "संपादन वर्कफ़्लो" का पालन करें
2. निर्माण वर्कफ़्लो: [चरण]
3. संपादन वर्कफ़्लो: [चरण]
```
FILE:references/output-patterns.md
# आउटपुट पैटर्न
इन पैटर्न का उपयोग करें जब स्किल को सुसंगत, उच्च-गुणवत्ता वाला आउटपुट उत्पन्न करने की आवश्यकता होती है।
## टेम्पलेट पैटर्न
आउटपुट प्रारूप के लिए टेम्पलेट प्रदान करें। कठोरता के स्तर को अपनी आवश्यकताओं से मिलाएँ।
**सख्त आवश्यकताओं के लिए (जैसे API प्रतिक्रियाएँ या डेटा प्रारूप):**
```markdown
## रिपोर्ट संरचना
हमेशा इस सटीक टेम्पलेट संरचना का उपयोग करें:
# [विश्लेषण शीर्षक]
## कार्यकारी सारांश
[मुख्य निष्कर्षों का एक-पैराग्राफ अवलोकन]
## मुख्य निष्कर्ष
- सहायक डेटा के साथ निष्कर्ष 1
- सहायक डेटा के साथ निष्कर्ष 2
- सहायक डेटा के साथ निष्कर्ष 3
## सिफारिशें
1. विशिष्ट कार्रवाई योग्य सिफारिश
2. विशिष्ट कार्रवाई योग्य सिफारिश
```
**लचीले मार्गदर्शन के लिए (जब अनुकूलन उपयोगी हो):**
```markdown
## रिपोर्ट संरचना
यहाँ एक उचित डिफ़ॉल्ट प्रारूप है, लेकिन अपने सर्वोत्तम निर्णय का उपयोग करें:
# [विश्लेषण शीर्षक]
## कार्यकारी सारांश
[अवलोकन]
## मुख्य निष्कर्ष
[आप जो खोजते हैं उसके आधार पर अनुभागों को अनुकूलित करें]
## सिफारिशें
[विशिष्ट संदर्भ के अनुरूप बनाएं]
विशिष्ट विश्लेषण प्रकार के लिए आवश्यकतानुसार अनुभागों को समायोजित करें।
```
## उदाहरण पैटर्न
उन स्किल के लिए जहां आउटपुट गुणवत्ता उदाहरण देखने पर निर्भर करती है, इनपुट/आउटपुट जोड़े प्रदान करें:
```markdown
## कमिट संदेश प्रारूप
इन उदाहरणों का पालन करते हुए कमिट संदेश उत्पन्न करें:
**उदाहरण 1:**
इनपुट: JWT टोकन के साथ उपयोगकर्ता प्रमाणीकरण जोड़ा गया
आउटपुट:
```
feat(auth): JWT-आधारित प्रमाणीकरण लागू करें
लॉगिन एंडपॉइंट और टोकन सत्यापन मिडलवेयर जोड़ें
```
**उदाहरण 2:**
इनपुट: बग ठीक किया गया जहां रिपोर्ट में दिनांक गलत प्रदर्शित हो रहे थे
आउटपुट:
```
fix(reports): समय क्षेत्र रूपांतरण में दिनांक स्वरूपण सही करें
रिपोर्ट निर्माण में UTC टाइमस्टैम्प का लगातार उपयोग करें
```
इस शैली का पालन करें: type(scope): संक्षिप्त विवरण, फिर विस्तृत स्पष्टीकरण।
```
उदाहरण क्लॉड को अकेले विवरणों की तुलना में वांछित शैली और विवरण के स्तर को अधिक स्पष्ट रूप से समझने में मदद करते हैं।
FILE:scripts/quick_validate.py
#!/usr/bin/env python3
"""
स्किल के लिए त्वरित सत्यापन स्क्रिप्ट - न्यूनतम संस्करण
"""
import sys
import os
import re
import yaml
from pathlib import Path
def validate_skill(skill_path):
"""एक स्किल का मूल सत्यापन"""
skill_path = Path(skill_path)
# जांचें कि SKILL.md मौजूद है
skill_md = skill_path / 'SKILL.md'
if not skill_md.exists():
return False, "SKILL.md नहीं मिला"
# फ्रंटमैटर पढ़ें और मान्य करें
content = skill_md.read_text()
if not content.startswith('---'):
return False, "कोई YAML फ्रंटमैटर नहीं मिला"
# फ्रंटमैटर निकालें
match = re.match(r'^---\n(.*?)\n---', content, re.DOTALL)
if not match:
return False, "अमान्य फ्रंटमैटर प्रारूप"
frontmatter_text = match.group(1)
# YAML फ्रंटमैटर पार्स करें
try:
frontmatter = yaml.safe_load(frontmatter_text)
if not isinstance(frontmatter, dict):
return False, "फ्रंटमैटर एक YAML शब्दकोश होना चाहिए"
except yaml.YAMLError as e:
return False, f"फ्रंटमैटर में अमान्य YAML: {e}"
# अनुमत गुण परिभाषित करें
ALLOWED_PROPERTIES = {'name', 'description', 'license', 'allowed-tools', 'metadata'}
# अप्रत्याशित गुणों की जांच करें (metadata के तहत नेस्टेड कुंजियों को छोड़कर)
unexpected_keys = set(frontmatter.keys()) - ALLOWED_PROPERTIES
if unexpected_keys:
return False, (
f"SKILL.md फ्रंटमैटर में अप्रत्याशित कुंजी(याँ): {', '.join(sorted(unexpected_keys))}. "
f"अनुमत गुण हैं: {', '.join(sorted(ALLOWED_PROPERTIES))}"
)
# आवश्यक फ़ील्ड जांचें
if 'name' not in frontmatter:
return False, "फ्रंटमैटर में 'name' गायब है"
if 'description' not in frontmatter:
return False, "फ्रंटमैटर में 'description' गायब है"
# सत्यापन के लिए नाम निकालें
name = frontmatter.get('name', '')
if not isinstance(name, str):
return False, f"नाम एक स्ट्रिंग होना चाहिए, {type(name).__name__} प्राप्त हुआ"
name = name.strip()
if name:
# नामकरण परंपरा जांचें (हाइफ़न-केस: लोअरकेस के साथ हाइफ़न)
if not re.match(r'^[a-z0-9-]+$', name):
return False, f"नाम '{name}' हाइफ़न-केस होना चाहिए (केवल लोअरकेस अक्षर, अंक और हाइफ़न)"
if name.startswith('-') or name.endswith('-') or '--' in name:
return False, f"नाम '{name}' हाइफ़न से शुरू/समाप्त नहीं हो सकता या लगातार हाइफ़न नहीं हो सकते"
# नाम की लंबाई जांचें (विनिर्देश के अनुसार अधिकतम 64 वर्ण)
if len(name) > 64:
return False, f"नाम बहुत लंबा है ({len(name)} वर्ण)। अधिकतम 64 वर्ण है।"
# विवरण निकालें और मान्य करें
description = frontmatter.get('description', '')
if not isinstance(description, str):
return False, f"विवरण एक स्ट्रिंग होना चाहिए, {type(description).__name__} प्राप्त हुआ"
description = description.strip()
if description:
# कोण कोष्ठक की जांच करें
if '<' in description or '>' in description:
return False, "विवरण में कोण कोष्ठक (< या >) नहीं हो सकते"
# विवरण की लंबाई जांचें (विनिर्देश के अनुसार अधिकतम 1024 वर्ण)
if len(description) > 1024:
return False, f"विवरण बहुत लंबा है ({len(description)} वर्ण)। अधिकतम 1024 वर्ण है।"
return True, "स्किल मान्य है!"
if __name__ == "__main__":
if len(sys.argv) != 2:
print("उपयोग: python quick_validate.py <skill_directory>")
sys.exit(1)
valid, message = validate_skill(sys.argv[1])
print(message)
sys.exit(0 if valid else 1)
FILE:scripts/init_skill.py
#!/usr/bin/env python3
"""
स्किल इनिशियलाइज़र - टेम्पलेट से एक नई स्किल बनाता है
उपयोग:
init_skill.py <skill-name> --path <path>
उदाहरण:
init_skill.py my-new-skill --path skills/public
init_skill.py my-api-helper --path skills/private
init_skill.py custom-skill --path /custom/location
"""
import sys
from pathlib import Path
SKILL_TEMPLATE = """---
name: {skill_name}
description: [TODO: स्किल क्या करती है और इसका उपयोग कब करना है इसकी पूर्ण और सूचनात्मक व्याख्या। इस स्किल का उपयोग कब करना है - विशिष्ट परिदृश्य, फ़ाइल प्रकार, या कार्य जो इसे ट्रिगर करते हैं, शामिल करें।]
---
# {skill_title}
## अवलोकन
[TODO: 1-2 वाक्य जो बताते हैं कि यह स्किल क्या सक्षम बनाती है]
## संसाधन
इस स्किल में उदाहरण संसाधन निर्देशिकाएँ शामिल हैं जो दिखाती हैं कि विभिन्न प्रकार के बंडल संसाधनों को कैसे व्यवस्थित किया जाए:
### scripts/
निष्पादन योग्य कोड (Python/Bash/आदि) जो विशिष्ट संचालन करने के लिए सीधे चलाया जा सकता है।
### references/
दस्तावेज़ीकरण और संदर्भ सामग्री जो क्लॉड की प्रक्रिया और सोच को सूचित करने के लिए संदर्भ में लोड की जानी है।
### assets/
फ़ाइलें जो संदर्भ में लोड करने के लिए नहीं हैं, बल्कि क्लॉड द्वारा उत्पादित आउटपुट के भीतर उपयोग की जाती हैं।
---
**किसी भी अनावश्यक निर्देशिका को हटाया जा सकता है।** हर स्किल को तीनों प्रकार के संसाधनों की आवश्यकता नहीं होती है।
"""
EXAMPLE_SCRIPT = '''#!/usr/bin/env python3
"""
{skill_name} के लिए उदाहरण सहायक स्क्रिप्ट
यह एक प्लेसहोल्डर स्क्रिप्ट है जिसे सीधे निष्पादित किया जा सकता है।
वास्तविक कार्यान्वयन से बदलें या आवश्यक न होने पर हटा दें।
"""
def main():
print("यह {skill_name} के लिए एक उदाहरण स्क्रिप्ट है")
# TODO: वास्तविक स्क्रिप्ट तर्क यहाँ जोड़ें
if __name__ == "__main__":
main()
'''
EXAMPLE_REFERENCE = """# {skill_title} के लिए संदर्भ दस्तावेज़ीकरण
यह विस्तृत संदर्भ दस्तावेज़ीकरण के लिए एक प्लेसहोल्डर है।
वास्तविक संदर्भ सामग्री से बदलें या आवश्यक न होने पर हटा दें।
"""
EXAMPLE_ASSET = """# उदाहरण संपत्ति फ़ाइल
यह प्लेसहोल्डर दर्शाता है कि संपत्ति फ़ाइलें कहाँ संग्रहीत की जाएंगी।
वास्तविक संपत्ति फ़ाइलों (टेम्पलेट, चित्र, फ़ॉन्ट, आदि) से बदलें या आवश्यक न होने पर हटा दें।
"""
def title_case_skill_name(skill_name):
"""प्रदर्शन के लिए हाइफ़नेटेड स्किल नाम को टाइटल केस में बदलें।"""
return ' '.join(word.capitalize() for word in skill_name.split('-'))
def init_skill(skill_name, path):
"""टेम्पलेट SKILL.md के साथ एक नई स्किल निर्देशिका आरंभ करें।"""
skill_dir = Path(path).resolve() / skill_name
if skill_dir.exists():
print(f"❌ त्रुटि: स्किल निर्देशिका पहले से मौजूद है: {skill_dir}")
return None
try:
skill_dir.mkdir(parents=True, exist_ok=False)
print(f"✅ स्किल निर्देशिका बनाई गई: {skill_dir}")
except Exception as e:
print(f"❌ निर्देशिका बनाने में त्रुटि: {e}")
return None
skill_title = title_case_skill_name(skill_name)
skill_content = SKILL_TEMPLATE.format(skill_name=skill_name, skill_title=skill_title)
skill_md_path = skill_dir / 'SKILL.md'
try:
skill_md_path.write_text(skill_content)
print("✅ SKILL.md बनाया गया")
except Exception as e:
print(f"❌ SKILL.md बनाने में त्रुटि: {e}")
return None
try:
scripts_dir = skill_dir / 'scripts'
scripts_dir.mkdir(exist_ok=True)
example_script = scripts_dir / 'example.py'
example_script.write_text(EXAMPLE_SCRIPT.format(skill_name=skill_name))
example_script.chmod(0o755)
print("✅ scripts/example.py बनाया गया")
references_dir = skill_dir / 'references'
references_dir.mkdir(exist_ok=True)
example_reference = references_dir / 'api_reference.md'
example_reference.write_text(EXAMPLE_REFERENCE.format(skill_title=skill_title))
print("✅ references/api_reference.md बनाया गया")
assets_dir = skill_dir / 'assets'
assets_dir.mkdir(exist_ok=True)
example_asset = assets_dir / 'example_asset.txt'
example_asset.write_text(EXAMPLE_ASSET)
print("✅ assets/example_asset.txt बनाया गया")
except Exception as e:
print(f"❌ संसाधन निर्देशिकाएँ बनाने में त्रुटि: {e}")
return None
print(f"\n✅ स्किल '{skill_name}' {skill_dir} पर सफलतापूर्वक आरंभ की गई")
return skill_dir
def main():
if len(sys.argv) < 4 or sys.argv[2] != '--path':
print("उपयोग: init_skill.py <skill-name> --path <path>")
sys.exit(1)
skill_name = sys.argv[1]
path = sys.argv[3]
print(f"🚀 स्किल आरंभ की जा रही है: {skill_name}")
print(f" स्थान: {path}")
print()
result = init_skill(skill_name, path)
sys.exit(0 if result else 1)
if __name__ == "__main__":
main()
FILE:scripts/package_skill.py
#!/usr/bin/env python3
"""
स्किल पैकेजर - एक स्किल फ़ोल्डर की वितरण योग्य .skill फ़ाइल बनाता है
उपयोग:
python utils/package_skill.py <path/to/skill-folder> [output-directory]
उदाहरण:
python utils/package_skill.py skills/public/my-skill
python utils/package_skill.py skills/public/my-skill ./dist
"""
import sys
import zipfile
from pathlib import Path
from quick_validate import validate_skill
def package_skill(skill_path, output_dir=None):
"""एक स्किल फ़ोल्डर को .skill फ़ाइल में पैकेज करें।"""
skill_path = Path(skill_path).resolve()
if not skill_path.exists():
print(f"❌ त्रुटि: स्किल फ़ोल्डर नहीं मिला: {skill_path}")
return None
if not skill_path.is_dir():
print(f"❌ त्रुटि: पथ एक निर्देशिका नहीं है: {skill_path}")
return None
skill_md = skill_path / "SKILL.md"
if not skill_md.exists():
print(f"❌ त्रुटि: {skill_path} में SKILL.md नहीं मिला")
return None
print("🔍 स्किल मान्य की जा रही है...")
valid, message = validate_skill(skill_path)
if not valid:
print(f"❌ सत्यापन विफल: {message}")
print(" कृपया पैकेजिंग से पहले सत्यापन त्रुटियों को ठीक करें।")
return None
print(f"✅ {message}\n")
skill_name = skill_path.name
if output_dir:
output_path = Path(output_dir).resolve()
output_path.mkdir(parents=True, exist_ok=True)
else:
output_path = Path.cwd()
skill_filename = output_path / f"{skill_name}.skill"
try:
with zipfile.ZipFile(skill_filename, 'w', zipfile.ZIP_DEFLATED) as zipf:
for file_path in skill_path.rglob('*'):
if file_path.is_file():
arcname = file_path.relative_to(skill_path.parent)
zipf.write(file_path, arcname)
print(f" जोड़ा गया: {arcname}")
print(f"\n✅ स्किल सफलतापूर्वक पैकेज की गई: {skill_filename}")
return skill_filename
except Exception as e:
print(f"❌ .skill फ़ाइल बनाने में त्रुटि: {e}")
return None
def main():
if len(sys.argv) < 2:
print("उपयोग: python utils/package_skill.py <path/to/skill-folder> [output-directory]")
sys.exit(1)
skill_path = sys.argv[1]
output_dir = sys.argv[2] if len(sys.argv) > 2 else None
print(f"📦 स्किल पैकेज की जा रही है: {skill_path}")
if output_dir:
print(f" आउटपुट निर्देशिका: {output_dir}")
print()
result = package_skill(skill_path, output_dir)
sys.exit(0 if result else 1)
if __name__ == "__main__":
main()
पूरा प्रॉम्प्ट देखने के लिए साइन इन करें
Continue with:
By logging in, you agree to our Terms of Use and Privacy Policy
उपयोग
यह प्रॉम्प्ट coding के साथ उपयोग के लिए डिज़ाइन किया गया है। ऊपर प्रॉम्प्ट सामग्री कॉपी करें और अपने पसंदीदा AI टूल में पेस्ट करें।
सर्वोत्तम परिणामों के लिए, आप अपनी विशिष्ट आवश्यकताओं के अनुसार प्लेसहोल्डर (वर्ग कोष्ठक या बड़े अक्षरों में दर्शाए गए) को अनुकूलित कर सकते हैं।
चर्चा
0 टिप्पणियाँ