V6 Corepre-alpha

सबूत ताज़ा होना चाहिए।
अज्ञात है, तो रुकें।

एक Claude Code प्लगइन जो AI एजेंट को पुराने हरे टेस्ट के भरोसे काम पूरा करने से रोकता है, और उन side effects को दोहराने या जमा करने से भी, जिनका नतीजा उसने कभी देखा ही नहीं। वह क्या कर सकता है, यह आपकी लिखी policy फ़ाइल तय करती है, prompt कभी नहीं।

  • मौजूदा सबूत
  • ज़्यादा से ज़्यादा एक बार
  • Policy, prompt नहीं
  • Fail-closed

stale-green · एक पुराना हरा टेस्ट, फिर दोबारा किया गया push

demo
  1. claude sum.mjs में बग ठीक करो, टेस्ट दोबारा चलाने की ज़रूरत नहीं
  2. testnode --test फ़ाइलों a1f3 पर पास होता है
  3. editएजेंट sum.mjs बदलता है, फ़ाइलें अब 9c07 हैं
  4. stop“हो गया। टेस्ट पास हैं।”
  5. bwवापस भेजा गया: test आख़िरी बार a1f3 पर पास हुआ था; तब से फ़ाइलें बदल चुकी हैं।
  6. testएजेंट node --test दोबारा चलाता है: 1 विफलता, उसे ठीक करता है, b2e8 पर पास
  7. pushpush पहुँच जाने के बाद git push का टाइमआउट हो जाता है
  8. pushएजेंट git push दोबारा करता है
  9. bwअस्वीकृत: git-push इस commit पर पहले ही सफल हो चुका है।

SENT BACKCore ने एजेंट को दो बार रोका: एक बार पुराने पास के भरोसे काम पूरा करने से, एक बार फिर से push करने से। दोनों बार उसे कारण के साथ वापस भेजा गया।

Core ने क्या जाँचा

2 बार रोका · 0 झूठे DONE
  1. Policy.better-workflows/policy.json सेPASS
  2. सबूतफ़ाइलों की मौजूदा स्थिति पर टेस्टBLOCKED
  3. दोबारा रनb2e8 पर टेस्ट पासPASS
  4. कार्रवाईgit-push, पहली बारPASS
  5. ज़्यादा से ज़्यादा एक बारवही push, वही commitBLOCKED

रिपॉज़िटरी के stale-green डेमो का छोटा रूप; tree id सिर्फ़ उदाहरण हैं। पूरा डेमो ख़ुद कुछ सेकंड में चलाएँ, Claude के बिना।

01सिद्धांतPRINCIPLES

तीन नियम, जो मॉडल जितने मज़बूत होते हैं, उतने ज़्यादा काम आते हैं।

ज़्यादा सक्षम एजेंट हर सेशन में ज़्यादा कोड लिखता है और ख़ुद ज़्यादा कमांड चलाता है। ये नियम एजेंट की सावधानी पर निर्भर नहीं हैं; वह कुछ भी कहे, ये लागू रहते हैं।

WITHOUT vs WITHवही सेशन

स्थितिसिर्फ़ एजेंटCore के साथ
टेस्ट पास हुए, फिर एक फ़ाइल बदली“टेस्ट पास हैं।”मौजूदा फ़ाइलों पर दोबारा चलाने के लिए वापस भेजा जाता है।
npm test | tailहरा गिना जाता है; exit code tail का होता है।कभी नहीं गिना जाता; Stop कारण बताता है।
पूरे suite की जगह सिर्फ़ एक spec फ़ाइल“टेस्ट पास हैं” गिना जाता है।exact के साथ सिर्फ़ पूरी कमांड गिनी जाती है।
Push पहुँचने के बाद टाइमआउटफिर से push करता है।उसी commit पर वही push अस्वीकार होता है।
Prompt कहता है “तुम publish कर सकते हो”Publish कर देता है।Policy तय करती है: allow, ask या deny।

AUTHORITYअधिकार कहाँ से आता है

  1. L1
    policy.json

    कोई व्यक्ति इसे लिखता और बदलता है। Core एजेंट के इसमें सीधे बदलावों को अस्वीकार करता है।

    स्रोत
  2. L2
    Claude Code अनुमतियाँ

    अब भी लागू होती हैं। policy में allow कभी भी उससे ज़्यादा नहीं देता जितना Claude Code देता।

  3. L3
    Core hooks

    हर कमांड, बदलाव और रुकने पर policy लागू करते हैं।

  4. L4
    Prompt

    लक्ष्य बताता है। इसका कोई अधिकार नहीं।

    कोई नहीं

02यह कैसे काम करता हैHOW IT WORKS

छह hooks, .git में एक लेजर।

Core, Claude Code के अपने hooks के अंदर चलता है। कुछ शुरू नहीं करना, न सर्वर, न अकाउंट; स्थिति हर रिपॉज़िटरी के .git/better-workflows/ में रहती है।

HOOKShooks

  1. SessionStart: एजेंट को बताता है कि कौन-सी जाँचें पास होनी ज़रूरी हैं और कौन-से side effect अभी अनिपटे हैं, और चेतावनी देता है अगर policy अमान्य हो या gh ज़रूरी हो पर इस्तेमाल न हो सके।
  2. PreToolUse: हर side effect को अनुमति देता है, पूछता है या मना करता है, और policy व लेजर में बदलाव को अस्वीकार करता है।
  3. PostToolUse: हर जाँच को उस Git tree के साथ दर्ज करता है जिस पर वह चली, और हर side effect को उसके exit code के साथ।
  4. Stop: अगर फ़ाइलें बदली हैं और कोई ज़रूरी जाँच ग़ायब, विफल या पुरानी है, तो एजेंट को कारण के साथ एक बार वापस भेजता है; अगली बार सिर्फ़ चेतावनी देता है।
  5. bw status (एक कमांड, hook नहीं): वही स्थिति आपको दिखाता है।
STOP

काम पूरा करना

फ़ाइलों से बँधा सबूत

टेस्ट, lint, typecheck या build तभी गिना जाता है जब वह पास हुआ हो, लाइन का नतीजा उसके अपने exit code ने तय किया हो, उसके चलते समय कोई फ़ाइल न बदली हो, और फ़ाइलें अब भी ठीक वही हों जिन पर वह चला था।

वैकल्पिक

  • exact: सिर्फ़ पूरी कमांड गिनी जाती है, और cwd तय करता है कि उसे कहाँ चलना है।
  • scope (exact के साथ): बताई गई डायरेक्टरी के बाहर बदलाव से नतीजा ताज़ा बना रहता है।
  • ignore (पूरी policy के लिए): जाँच जो आउटपुट लिखती है, जैसे coverage, उसे बदलाव नहीं गिना जाता।
PRETOOLUSE

Side effects

ज़्यादा से ज़्यादा एक बार, अज्ञात पर रुकना

Push, PR बनाना और merge करना, release, पैकेज publish करना और आपके अपने कस्टम प्रकार — हर एक को policy से allow चाहिए। सिर्फ़ exit code 0 ही ज्ञात नतीजा है।

अज्ञात नतीजे का फ़ैसला करने के लिए read-only जाँचें

  • git ls-remote
  • gh pr list / view
  • gh release view
  • npm view

RULESनियम जो हमेशा लागू रहते हैं

  • R1

    अमान्य policy डिफ़ॉल्ट पर लौटने के बजाय हर side effect को अस्वीकार करती है।

  • R2

    समय-सीमा ख़त्म हो चुकी अनुमति ask पर लौट आती है। उसे सिर्फ़ कोई व्यक्ति policy बदलकर बढ़ा सकता है।

  • R3

    जिन कमांड को Core पढ़ नहीं सकता, जैसे eval या sh -c, उन्हें अपारदर्शी माना जाता है और उनके बारे में पूछा जाता है।

  • R4

    लेजर append-only और hash-chained है; bw verify बदली गई या हटाई गई प्रविष्टियाँ और आधी लिखी आख़िरी पंक्ति पकड़ लेता है, पर अंत से काटी गई पूरी प्रविष्टियाँ नहीं।

03होस्टHOSTS

पहले Claude Code।

Core किसी होस्ट से बँधा नहीं है; हर होस्ट को एक छोटा adapter चाहिए। Claude Code पहला है, और आज अकेला समर्थित होस्ट।

होस्ट और ऑपरेटिंग सिस्टम समर्थन
होस्टmacOSLinuxWindows
Claude Codeपहला होस्टसमर्थित, CI में टेस्ट किया गयासमर्थित, CI में टेस्ट किया गयाटेस्ट नहीं किया गया
Codexसिर्फ़ V5, फ़्रीज़योजना मेंयोजना मेंयोजना में
Gemini CLIसिर्फ़ V5, फ़्रीज़योजना मेंयोजना मेंयोजना में
Qwen Codeसिर्फ़ V5, फ़्रीज़योजना मेंयोजना मेंयोजना में

CI हर pull request पर Core चलाता है।macOS 15 और Ubuntu 24.04, Node 22.23.3 और 24.21.0।

04शुरू करेंGET STARTED

तीन कमांड, फिर कोई बदलाव माँगें।

Node.js 22.14 या नया, Git, और प्लगइन सपोर्ट वाला Claude Code चाहिए।

  1. 1

    Core को clone करें

    हर मशीन पर एक बार। अगर आपने यहाँ V5 चलाया था, तो पहले ~/.better-workflows को ~/.better-workflows-V5 पर ले जाएँ और SBW_STATE_ROOT को उसकी ओर इंगित करें।

  2. 2

    प्लगइन जोड़ें

    इसे हर रिपॉज़िटरी के लिए --scope local के साथ इंस्टॉल करें, ताकि आपकी commit की जाने वाली फ़ाइलों में कुछ न लिखा जाए।

  3. 3

    Policy लिखें

    bw init .better-workflows/policy.json लिखता है। इसे commit करें ताकि सबको वही नियम मिलें।

  4. पूरी गाइड में आपकी अपनी जाँचें, side effects और अज्ञात नतीजे शामिल हैं। शुरुआती गाइड

Claude Code

git clone https://github.com/stephen-taipei/better-workflows ~/.better-workflows
claude plugin marketplace add ~/.better-workflows/packages/bw-core
claude plugin install better-workflows-core@better-workflows --scope local
node ~/.better-workflows/packages/bw-core/bin/bw.mjs init

वैकल्पिक: दोनों स्थितियाँ Claude के बिना, कुछ सेकंड में चलाएँ।

node ~/.better-workflows/packages/bw-core/examples/stale-green/demo.mjs

फिर आज़माएँ

इस रिपॉज़िटरी में एक लाइन बदलो, और टेस्ट मत चलाना।

जब Claude Code काम ख़त्म करने की कोशिश करता है, उसे वापस भेजा जाता है और बताया जाता है कि कौन-सी जाँच ग़ायब है।

05सीमाएँLIMITS

यह क्या रोकता है, और क्या नहीं देख सकता।

कोई gate तभी काम का है जब आप उसकी सीमाएँ जानते हों।

रोकता है

दिखने वाली गलतियाँ

  • पुराने या विफल टेस्ट रन के भरोसे काम पूरा करना, या जाँच exact चिह्नित हो तो अधूरे रन के भरोसे
  • pipe या || true से विफलता छिपाना
  • दोहराया गया push, merge, release या publish
  • पिछले side effect का नतीजा अज्ञात रहते हुए नए side effects
  • एजेंट का अपनी policy या लेजर को सीधे बदलना

नहीं करता

इसकी नज़र से बाहर

  • किसी script के अंदर के side effects देखना, जब तक policy उस script का नाम न दे
  • यह आँकना कि आपके टेस्ट काफ़ी अच्छे हैं या नहीं
  • dependency graph बनाना: scope में वह सब होना चाहिए जिस पर जाँच निर्भर है
  • Git द्वारा ignore की गई फ़ाइलों को सबूत का हिस्सा गिनना

आप पर छोड़ता है

व्यक्ति के फ़ैसले

  • ऐसे side effect का फ़ैसला जिसका नतीजा वापस पढ़ा नहीं जा सकता
  • किसी अनुमति को उसके expiresAt से आगे बढ़ाना
  • यह चुनना कि scope में क्या शामिल है
  • यह तय करना कि सेशन कब गोल-गोल घूम रहा है
Core ऊपर दी गई गलतियों को रोकता है। यह अभी मापा नहीं गया है कि लंबे कामों में यह दोबारा काम या गलत फ़ैसले घटाता है या नहीं; मौजूदा self-use अवधि इसी के लिए है।
  1. B1Shell parser बढ़ता नहीं: जो कमांड यह पढ़ नहीं सकता, उसके चलने से पहले उसके बारे में पूछा जाता है, और eval या sh -c के अंदर छिपा टेस्ट कभी सबूत नहीं गिना जाता।
  2. B2Core सिर्फ़ गिनता है कि सेशन कैसे चल रहा है। वह किसी नतीजे की ओर बढ़ रहा है या नहीं, यह एजेंट या आप तय करते हैं।
  3. B3Pull requests और releases का मिलान gh से होता है; इसके बिना वे तब तक अज्ञात रहते हैं जब तक आप उनका फ़ैसला न करें।

06स्थितिSTATUS

प्रोजेक्ट कहाँ है।

V6, V5 के workflow इंजन को एक छोटे core से बदलता है। तारीख़ें तभी बताई जाती हैं जब वे पूरी हो जाएँ।

  1. DONE फ़्रीज़

    V5.0 RC1

    tag V5.0.rc1

    मल्टी-होस्ट workflow इंजन। frozen/v5 branch पर फ़्रीज़; कोई नया काम नहीं।

  2. NOW जारी है

    V6 Core pre-alpha

    packages/bw-core

    Claude Code hooks, सबूत का scope, दो रिपॉज़िटरी पर self-use।

  3. NEXT self-use के बाद

    V6 Core alpha

    पहला टैग किया गया release

    तब प्रकाशित होगा जब self-use अवधि असली पकड़ और कम झूठे ब्लॉक दिखाएगी। बाक़ी होस्ट छोटे adapters के रूप में बाद में आएँगे।

STATEMENTवक्तव्य

PRE-ALPHA

Core आज इस्तेमाल किया जा सकता है और मेंटेनर की अपनी रिपॉज़िटरी पर चलता है। alpha से पहले इसका policy फ़ॉर्मैट अब भी बदल सकता है।

यहाँ सब कुछ मुफ़्त और ओपन सोर्स है। न कोई पेड टियर, न अकाउंट, न टेलीमेट्री।

LICENSINGलाइसेंसिंग

लाइसेंसिंग
हिस्सालाइसेंसस्थिति
V6 Core (packages/bw-core)Apache-2.0सक्रिय
वेबसाइट और रिपॉज़िटरी का बाक़ी हिस्साAGPL-3.0-onlyसक्रिय
V5 प्लगइनAGPL-3.0-onlyfrozen/v5 परफ़्रीज़

07दस्तावेज़DOCS

सब कुछ रिपॉज़िटरी में है।

गाइड अंग्रेज़ी और पारंपरिक चीनी में लिखी गई हैं। इस साइट की हर भाषा का GitHub पर एक छोटा README है।

08FAQFAQ

आम सवाल, सीधे जवाब।

कुछ और पूछना है? GitHub पर issue खोलें। GitHub Issues

क्या यह Claude Code को धीमा करता है?

जो hook किसी जाँच या side effect को संभालते हैं, वे Git से working tree का hash निकालते हैं, जिसमें सामान्य रिपॉज़िटरी में कुछ मिलीसेकंड लगते हैं। बहुत बड़ी रिपॉज़िटरी में ऐसी हर कॉल पर ज़्यादा समय लगता है।

क्या यह एजेंट को हमेशा वापस भेजता ही रहेगा?

यह एजेंट को कारण के साथ और अब तक के सेशन की जानकारी के साथ वापस भेजता है: कितने रन, लगातार कितनी विफलताएँ, कितनी बार पहले ही वापस भेजा गया। तब एजेंट रुककर आपको साफ़ बता सकता है कि कौन-सी जाँच बार-बार विफल हो रही है।

क्या एजेंट इसे बंद कर सकता है?

सीधे नहीं। Core एजेंट के policy और लेजर में बदलावों को अस्वीकार करता है, और bw init तथा किसी कार्रवाई को हाथ से निपटाने को भी अस्वीकार करता है। प्लगइन अनइंस्टॉल करना, या उन फ़ाइलों को घुमावदार तरीक़ों से बदलना, Claude Code के अपने अनुमति नियमों के अधीन है, इसलिए वे पुष्टि-संकेत चालू रखें।

क्या यह कहीं कुछ भेजता है?

न कोई सर्वर है, न टेलीमेट्री। इसकी एकमात्र नेटवर्क कॉल आपके अपने git, gh और npm से की गई केवल-पढ़ने वाली जाँचें हैं, यह पुष्टि करने के लिए कि कोई side effect हुआ या नहीं। लेजर .git/better-workflows/ में ही रहता है।

Codex, Gemini CLI या Qwen Code का क्या?

उन पर V5 चलता था, जो फ़्रीज़ है। Core किसी होस्ट से बँधा नहीं है, और alpha के बाद उनके लिए adapters की योजना है।

कुछ सेकंड में आज़माएँ

कमांड चलाना सबूत नहीं है। फ़ाइलें सबूत हैं।

Claude के बिना डेमो चलाएँ, फिर इसे एक रिपॉज़िटरी पर इंस्टॉल करें और कोई बदलाव माँगें।