Skills
हर OpenSpec स्किल: arguments, यह क्या बनाती है, और क्या प्रतिक्रिया देती है।
स्किल्स दो सेटों में आती हैं:
- Core: डिफ़ॉल्ट रूप से installed, मुख्य planning loop।
- Optional: केवल तब installed जब आप इन्हें जोड़ते हैं, Profiles के माध्यम से।
हर स्किल ऐसे project की अपेक्षा करती है जो पहले से OpenSpec का उपयोग करता हो। कुछ भी लिखने वाले अपने पहले step से पहले, स्किल resolved root की जाँच करती है। जब कोई root मौजूद न हो तो क्या होता है, यह इस पर निर्भर करता है कि स्किल तक कैसे पहुँचा गया:
- Auto-selected: आपके agent ने स्किल स्वयं चुनी, बिना आपके OpenSpec का नाम लिए। यह OpenSpec छोड़ देता है और आपके अनुरोध का सामान्य रूप से उत्तर देता है, जैसे OpenSpec installed न होने पर देता।
- Explicit OpenSpec request: आपने OpenSpec का नाम लिया, स्किल का नाम लिया, या उसका command चलाया। यह लिखने से पहले रुक जाता है और पूछता है कि आगे कैसे बढ़ें: यहाँ
openspec initचलाएँ,--store <id>के साथ किसी store को target करें, या OpenSpec के बिना जारी रखें। यह आपके उत्तर की प्रतीक्षा करता है।
Commands हमेशा दूसरा मामला होते हैं। जिस project का openspec/config.yaml ऐसा store नाम देता है जिसे यह मशीन resolve नहीं कर सकती (registered नहीं, या malformed store: line), उसे uninitialized नहीं माना जाता: स्किल रुक जाती है और store error उसके fix के साथ दिखाती है। किसी भी स्थिति में कोई स्किल स्वयं openspec/ directory नहीं बनाती। नीचे दी गई entries बताती हैं कि root मौजूद होने पर प्रत्येक स्किल क्या करती है।
| स्किल | कार्य | प्रकार |
|---|---|---|
| openspec-explore | किसी idea को change proposal बनने से पहले उस पर सोच-विचार करें | Core |
| openspec-propose | एक ही step में सभी planning artifacts के साथ change proposal बनाएँ | Core |
| openspec-apply-change | change proposal के tasks को implement करें | Core |
| openspec-update-change | change proposal की plan में संशोधन करें | Core |
| openspec-sync-specs | change proposal के spec updates को specs/ में merge करें | Core |
| openspec-archive-change | पूर्ण हो चुके change proposal को archive में ले जाएँ | Core |
| openspec-new-change | change proposal को खाली scaffold के रूप में शुरू करें | Optional |
| openspec-continue-change | अगला planning artifact बनाएँ, एक बार में एक | Optional |
| openspec-ff-change | implementation को आवश्यक हर artifact के साथ change proposal एक ही pass में बनाएँ | Optional |
| openspec-verify-change | जाँचें कि implementation plan से मेल खाता है | Optional |
| openspec-bulk-archive-change | कई change proposals को एक साथ archive करें | Optional |
| openspec-onboard | एक वास्तविक change proposal को शुरू से अंत तक करके workflow सीखें | Optional |
नीचे दी गई प्रत्येक entry उस स्किल का नाम लेती है जो अगला step संभालती है। जब आपका profile उस स्किल को शामिल नहीं करता, तो installed files उसका नाम कभी नहीं लेतीं: handoff समतुल्य openspec command बन जाता है, या आपसे एक सामान्य अनुरोध, और जो पंक्ति केवल किसी अनुपस्थित स्किल की ओर इंगित करने के लिए होती है वह लिखी ही नहीं जाती। इसलिए आपके पास जो स्किल्स हैं वे हमेशा उन्हीं स्किल्स को hand off करती हैं जो आपके पास हैं। आपको कौन-सा set मिलता है, यह Profiles पर निर्भर है।
openspec-explore
किसी विचार को परिवर्तन प्रस्ताव बनने से पहले उस पर विचार करें।
| कॉन्ट्रैक्ट | विवरण |
|---|---|
| आर्ग्युमेंट्स | एक विषय: कोई विचार, समस्या, तुलना, या संदर्भ में एक्सप्लोर करने के लिए किसी मौजूदा परिवर्तन प्रस्ताव का नाम। कुछ भी न दिए जाने पर यह explore मोड में प्रवेश करता है। |
| बनाता है | डिफ़ॉल्ट रूप से कुछ नहीं। यह केवल पढ़ता और जाँचता है। अनुरोध पर यह अंतर्दृष्टियाँ कैप्चर करता है: openspec/changes/<name>/ के अंतर्गत एक नया परिवर्तन प्रस्ताव, या किसी मौजूदा परिवर्तन प्रस्ताव के प्रस्ताव आर्टिफैक्ट, डिज़ाइन, स्पेक्स या कार्यों में अपडेट। कभी भी कोड नहीं। |
| प्रतिक्रिया | बिना किसी अनिवार्य आउटपुट वाली खुली बातचीत। जब सोच स्पष्ट हो जाती है, तो यह समस्या, दृष्टिकोण, खुले प्रश्नों और अगले चरणों का सारांश देता है, और उन्हें कैप्चर करने का प्रस्ताव देता है। निर्णय आपका है। इम्प्लीमेंटेशन यहाँ कभी शुरू नहीं होता। |
openspec-propose
एक परिवर्तन प्रस्ताव बनाएँ और उसके सभी प्लानिंग आर्टिफैक्ट एक ही चरण में जनरेट करें।
| कॉन्ट्रैक्ट | विवरण |
|---|---|
| आर्ग्युमेंट्स | एक kebab-case नाम (add-dark-mode) या एक सामान्य विवरण। यदि आप दोनों में से कुछ भी नहीं देते हैं तो पूछता है। |
| बनाता है | openspec/changes/<name>/ जिसमें स्कीमा द्वारा परिभाषित हर आर्टिफैक्ट हो, निर्भरता क्रम में (spec-driven: प्रस्ताव, स्पेक डेल्टा, डिज़ाइन, कार्य)। कभी भी कोड नहीं। |
| प्रतिक्रिया | बनाए गए आर्टिफैक्ट, समीक्षा के लिए तैयार, और अगला चरण। यहीं रुकता है; इम्प्लीमेंटेशन openspec-apply-change की प्रतीक्षा करता है। |
openspec-apply-change
किसी परिवर्तन प्रस्ताव के कार्यों को इम्प्लीमेंट करें, सूची में काम करते हुए जब तक पूरा न हो या कोई अवरोध न आए।
| कॉन्ट्रैक्ट | विवरण |
|---|---|
| आर्ग्युमेंट्स | एक परिवर्तन प्रस्ताव का नाम (add-auth), वैकल्पिक। यदि लक्ष्य अस्पष्ट है तो यह सक्रिय परिवर्तन प्रस्तावों की सूची दिखाता है और आपसे चयन करने के लिए कहता है। |
| बनाता है | कोड: आपकी प्रोजेक्ट फ़ाइलों में प्रत्येक कार्य के लिए आवश्यक न्यूनतम परिवर्तन। परिवर्तन प्रस्ताव में यह प्रत्येक पूर्ण हुए कार्य को (- [ ] से - [x]) उस ट्रैक की गई फ़ाइल में चिह्नित करता है जिसे sourcePath और one-based line द्वारा पहचाना जाता है। एक स्कीमा कार्यों को कई फ़ाइलों में ट्रैक कर सकता है। |
| प्रतिक्रिया | प्रत्येक कार्य के अनुसार प्रगति, फिर समग्र गणना (N/M कार्य पूर्ण)। सभी पूर्ण: openspec-archive-change का सुझाव देता है। गायब आर्टिफैक्ट के कारण अवरुद्ध: openspec-continue-change पर इंगित करता है, या जब वह स्किल इंस्टॉल न हो तो openspec status और openspec instructions पर (कोर प्रोफ़ाइल इसे बाहर रखती है)। अस्पष्ट कार्य या त्रुटियाँ: रुकता है और पूछता है। |
openspec-update-change
किसी परिवर्तन प्रस्ताव के मौजूदा प्लानिंग आर्टिफैक्ट को संशोधित करें और उन्हें एक-दूसरे के साथ सुसंगत रखें।
| कॉन्ट्रैक्ट | विवरण |
|---|---|
| आर्ग्युमेंट्स | एक परिवर्तन प्रस्ताव का नाम, वैकल्पिक, साथ में वांछित संशोधन। कोई संशोधन न बताए जाने पर यह सुसंगति समीक्षा चलाता है: आर्टिफैक्ट को विरोधाभास, कमियों और दोहराव के लिए एक-दूसरे के विरुद्ध जाँचा जाता है। |
| बनाता है | पहले से मौजूद आर्टिफैक्ट फ़ाइलों को संपादित करता है। एक अपवाद: ग्लोब के रूप में लिखे गए आर्टिफैक्ट के लिए, जैसे specs/**/*.md, जिसमें पहले से कम से कम एक फ़ाइल है, आपके द्वारा पथ की पुष्टि करने पर यह एक गायब सहयोगी फ़ाइल जोड़ सकता है। जिस आर्टिफैक्ट में अभी कोई फ़ाइल नहीं है, वह openspec-continue-change का काम है। उस स्किल के बिना (कोर प्रोफ़ाइल इसे बाहर रखती है), यह इसके बजाय openspec status और openspec instructions पर इंगित करता है। कभी भी कोड नहीं। |
| प्रतिक्रिया | हर प्रस्तावित संशोधन दिखाता है और आपके द्वारा पुष्टि करने के बाद ही उसे लिखता है, एक बार में एक आर्टिफैक्ट। अंत में बताता है कि क्या संशोधित हुआ और अगला चरण क्या है; इम्प्लीमेंटेशन openspec-apply-change की प्रतीक्षा करता है। |
openspec-sync-specs
किसी परिवर्तन प्रस्ताव के स्पेक अपडेट को आर्काइव किए बिना specs/ में मर्ज करें।
| कॉन्ट्रैक्ट | विवरण |
|---|---|
| आर्ग्युमेंट्स | एक परिवर्तन प्रस्ताव का नाम, वैकल्पिक। आप उसके डेल्टा स्पेक्स का एक उपसमूह भी नामित कर सकते हैं, और केवल वही सिंक होंगे। |
| बनाता है | हर डेल्टा स्पेक के लिए openspec/specs/<capability-path>/spec.md को संपादित या बनाता है, जोड़ी गई, संशोधित, हटाई गई और नाम बदली गई आवश्यकताओं को मुख्य स्पेक में मर्ज करता है। कभी भी कोड नहीं। |
| प्रतिक्रिया | अपडेट किए गए स्पेक्स के वैलिडेट होने के बाद, जोड़ी गई, संशोधित, हटाई गई या नाम बदली गई आवश्यकताओं का क्षमता-वार सारांश। परिवर्तन प्रस्ताव सक्रिय रहता है; आर्काइव करना openspec-archive-change की प्रतीक्षा करता है। |
openspec-archive-change
किसी पूर्ण हो चुके परिवर्तन प्रस्ताव को आर्काइव में ले जाएँ।
| कॉन्ट्रैक्ट | विवरण |
|---|---|
| आर्ग्युमेंट्स | एक परिवर्तन प्रस्ताव का नाम, वैकल्पिक। |
| बनाता है | परिवर्तन प्रस्ताव फ़ोल्डर को openspec/changes/archive/YYYY-MM-DD-<name>/ में ले जाता है (यदि नाम पहले से किसी तारीख से शुरू होता है तो कोई तारीख नहीं जोड़ी जाती)। आपकी स्वीकृति से यह पहले बाकी डेल्टा स्पेक्स को सिंक करता है। जब openspec-sync-specs इंस्टॉल हो, तो यह वही वर्कफ़्लो चलाता है। अन्यथा, यह स्वयं डेल्टा स्पेक्स को मुख्य स्पेक्स में मर्ज करता है। कभी भी कोड नहीं। |
| प्रतिक्रिया | अधूरे आर्टिफैक्ट या कार्यों के साथ आर्काइव करने से पहले चेतावनी देता है और पूछता है, और जब डेल्टा स्पेक्स मौजूद हों तो पूछता है कि सिंक करना है या नहीं। अंत में सारांश देता है: नाम, स्कीमा, आर्काइव स्थान, स्पेक सिंक स्थिति और कोई भी चेतावनियाँ। |
openspec-new-change
किसी परिवर्तन प्रस्ताव को खाली स्कैफ़ोल्ड के रूप में शुरू करें।
| कॉन्ट्रैक्ट | विवरण |
|---|---|
| आर्ग्युमेंट्स | एक kebab-case नाम (add-user-auth) या एक सामान्य विवरण, साथ में स्कीमा नाम केवल गैर-डिफ़ॉल्ट वर्कफ़्लो के लिए। यदि आप दोनों में से कुछ भी न दें तो पूछता है कि आप क्या बनाना चाहते हैं। |
| बनाता है | openspec/changes/<name>/ को खाली स्कैफ़ोल्ड के रूप में: अभी कोई आर्टिफैक्ट नहीं, कभी भी कोड नहीं। |
| प्रतिक्रिया | स्कैफ़ोल्ड का नाम और स्थान, वर्कफ़्लो का आर्टिफैक्ट क्रम, स्थिति (0/N पूर्ण), और पहले आर्टिफैक्ट का टेम्पलेट। आर्टिफैक्ट ड्राफ़्ट तैयार करना openspec-continue-change की प्रतीक्षा करता है। |
openspec-continue-change
किसी परिवर्तन प्रस्ताव में अगला प्लानिंग आर्टिफैक्ट बनाएँ, एक बार में एक।
| कॉन्ट्रैक्ट | विवरण |
|---|---|
| आर्ग्युमेंट्स | एक परिवर्तन प्रस्ताव का नाम, वैकल्पिक। यदि फिर भी अस्पष्ट हो तो यह आपसे सबसे हाल में संशोधित में से चुनने के लिए कहता है। |
| बनाता है | स्कीमा के क्रम में अगला तैयार आर्टिफैक्ट, जो परिवर्तन प्रस्ताव फ़ोल्डर में लिखा जाता है। प्रति रन एक आर्टिफैक्ट, कभी भी कोड नहीं। |
| प्रतिक्रिया | बनाया गया आर्टिफैक्ट, प्रगति (M में से N पूर्ण), और उससे कौन-से आर्टिफैक्ट अनलॉक हुए। जब प्लानिंग पूरी हो जाती है तो यह बताता है; इम्प्लीमेंटेशन openspec-apply-change पर चला जाता है। |
openspec-ff-change
एक परिवर्तन प्रस्ताव और इम्प्लीमेंटेशन के लिए आवश्यक हर प्लानिंग आर्टिफैक्ट एक ही बार में बनाएँ।
| कॉन्ट्रैक्ट | विवरण |
|---|---|
| आर्ग्युमेंट्स | एक kebab-case नाम या एक सामान्य विवरण। यदि आप दोनों में से कुछ भी न दें तो पूछता है। यदि नामित परिवर्तन प्रस्ताव पहले से मौजूद है तो यह उसे जारी रखने का सुझाव देता है। |
| बनाता है | openspec/changes/<name>/ और इम्प्लीमेंटेशन के लिए आवश्यक हर प्लानिंग आर्टिफैक्ट, निर्भरता क्रम में (spec-driven: प्रस्ताव, स्पेक्स, डिज़ाइन, कार्य), केवल छोड़े गए या सशर्त के रूप में चिह्नित आर्टिफैक्ट को छोड़कर। कभी भी कोड नहीं। |
| प्रतिक्रिया | परिवर्तन प्रस्ताव का नाम और स्थान, बनाया गया प्रत्येक आर्टिफैक्ट, और छोड़ा गया कोई भी सशर्त आर्टिफैक्ट तथा उसका कारण। यहीं रुकता है; इम्प्लीमेंटेशन openspec-apply-change की प्रतीक्षा करता है। |
openspec-verify-change
जाँचें कि इम्प्लीमेंटेशन परिवर्तन प्रस्ताव के आर्टिफैक्ट से मेल खाता है।
| कॉन्ट्रैक्ट | विवरण |
|---|---|
| आर्ग्युमेंट्स | एक परिवर्तन प्रस्ताव का नाम, वैकल्पिक। अस्पष्ट होने पर यह पूछता है, ऐसे परिवर्तन प्रस्तावों की सूची दिखाते हुए जिनमें कार्य आर्टिफैक्ट है। |
| बनाता है | कुछ नहीं। यह परिवर्तन प्रस्ताव के आर्टिफैक्ट और कोडबेस पढ़ता है। सत्यापन केवल रिपोर्ट है। |
| प्रतिक्रिया | एक रिपोर्ट: Completeness, Correctness और Coherence के लिए स्कोरकार्ड, फिर सिफ़ारिशों के साथ CRITICAL, WARNING और SUGGESTION समस्याएँ, और अंत में आर्काइव-तैयारी का आकलन। यह कुछ नहीं बदलता और आर्काइव नहीं करता। |
openspec-bulk-archive-change
एक साथ कई परिवर्तन प्रस्ताव आर्काइव करें।
| कॉन्ट्रैक्ट | विवरण |
|---|---|
| आर्ग्युमेंट्स | कोई नहीं। यह सक्रिय परिवर्तन प्रस्तावों की सूची दिखाता है और आपसे कोई भी संख्या चुनने के लिए कहता है, सभी के लिए एक विकल्प के साथ। यदि कोई भी सक्रिय नहीं है तो यह बताता है और रुक जाता है। |
| बनाता है | प्रत्येक आर्काइव किए गए परिवर्तन प्रस्ताव के लिए openspec/changes/archive/YYYY-MM-DD-<name>/ (पहले से तारीख वाले नाम अपना उपसर्ग बनाए रखते हैं)। प्रत्येक के स्पेक डेल्टा पहले openspec-sync-specs के माध्यम से सिंक होते हैं। कभी भी कोड नहीं। |
| प्रतिक्रिया | प्रत्येक परिवर्तन प्रस्ताव के लिए एक स्थिति तालिका और पूरे बैच के लिए एक पुष्टि, फिर आर्काइव किए गए, छोड़े गए और विफल का सारांश, साथ में स्पेक सिंक परिणाम। जब दो परिवर्तन प्रस्ताव एक ही स्पेक को प्रभावित करते हैं तो यह कोडबेस जाँचता है और इम्प्लीमेंट किए गए डेल्टा को सबसे पुराने से पहले सिंक करता है। |
openspec-onboard
एक वास्तविक परिवर्तन प्रस्ताव को शुरू से अंत तक करके वर्कफ़्लो सीखें।
| कॉन्ट्रैक्ट | विवरण |
|---|---|
| आर्ग्युमेंट्स | कोई नहीं। यह आपके कोडबेस को छोटे स्टार्टर कार्यों के लिए स्कैन करता है और आपसे एक चुनने या अपना विवरण देने के लिए कहता है। |
| बनाता है | चुने गए कार्य के लिए एक वास्तविक परिवर्तन प्रस्ताव, एक बार में एक आर्टिफैक्ट, फिर इम्प्लीमेंटेशन की पुष्टि करने पर वास्तविक कोड। अंत में परिवर्तन प्रस्ताव आर्काइव करता है। |
| प्रतिक्रिया | पूरे चक्र का वर्णनात्मक वॉकथ्रू, आपके इनपुट के लिए विरामों के साथ: एक्सप्लोर करें, बनाएँ, हर आर्टिफैक्ट तैयार करें, इम्प्लीमेंट करें, आर्काइव करें। अंत में सारांश और openspec-propose का संकेत देता है। इसमें लगभग 15 से 20 मिनट लगते हैं। |