gl-life-claude-zen 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +73 -0
  2. package/LICENSE +69 -0
  3. package/README.md +237 -0
  4. package/bin/create-gl-life-claude.js +126 -0
  5. package/dist/hooks/auto-format.js +2 -0
  6. package/dist/hooks/complete-task.js +2 -0
  7. package/dist/hooks/enforce-migration-workflow.js +2 -0
  8. package/dist/hooks/enforce-structured-development.js +2 -0
  9. package/dist/hooks/enforce-test-pyramid.js +2 -0
  10. package/dist/hooks/init-task-tracker.js +2 -0
  11. package/dist/hooks/start-task.js +2 -0
  12. package/dist/hooks/task-status.js +2 -0
  13. package/dist/hooks/validate-database-changes.js +2 -0
  14. package/dist/hooks/validate-e2e-coverage.js +2 -0
  15. package/dist/hooks/validate-git-workflow.js +2 -0
  16. package/dist/hooks/validate-migration-impact.js +2 -0
  17. package/dist/hooks/validate-task-completion.js +2 -0
  18. package/dist/hooks/validate-test-quality.js +2 -0
  19. package/dist/hooks/validate-test-results.js +2 -0
  20. package/dist/hooks/validate-ui-integration.js +2 -0
  21. package/dist/scripts/help.js +3 -0
  22. package/dist/scripts/plan-amend.js +3 -0
  23. package/dist/scripts/plan-create.js +3 -0
  24. package/dist/scripts/plan-help.js +3 -0
  25. package/dist/scripts/plan-init.js +3 -0
  26. package/dist/scripts/plan-manager.js +3 -0
  27. package/dist/scripts/setup-git-hooks.js +3 -0
  28. package/dist/scripts/task-done.js +3 -0
  29. package/dist/scripts/task-merge.js +3 -0
  30. package/dist/scripts/task-next.js +3 -0
  31. package/dist/scripts/task-start.js +3 -0
  32. package/dist/scripts/task-status.js +3 -0
  33. package/lib/init.js +113 -0
  34. package/package.json +41 -0
  35. package/templates/.claude/CLAUDE.md +204 -0
  36. package/templates/.claude/PLAN-SCHEMA.json +240 -0
  37. package/templates/.claude/PROJECT-PLAN-TEMPLATE.json +223 -0
  38. package/templates/.claude/settings.json +157 -0
  39. package/templates/README.md +72 -0
  40. package/templates/package.json +27 -0
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ #!/usr/bin/env node
3
+ function _0x281d(){const _0x5d6ac1=['TIMPW','completed','forEach','Exiting.','nxgKi','CTjiK','.claude/archive','Error:','MhKJr','JAMgG','log','lUyGw','MCBLm','close','iNXCN','efcnC','message','DUpqk','name','\x20\x20npm\x20run\x20task:start\x20TASK-XXX','\x0aYou\x20can\x20now\x20use:','MwGux','catch','mgPcR','project','\x0a✅\x20Plan\x20deleted:\x20','.claude/ACTIVE-PLAN','🔒\x20Locked:\x20','czPnq','\x0a✅\x20Switched\x20to\x20plan:\x20','trim','22AdeIDJ','join','vijBq','Dynamic\x20require\x20of\x20\x22','createInterface','\x22\x20to\x20confirm\x20deletion:\x20','exit','tsUCE','\x20\x20\x20\x20\x20','DGLYC','vefXn','QbBHb','12453XtPzKp','\x20\x20(none)\x0a','force','GNcSH','FRwDC','length','ECkKx','qvWNK','YlAMn','toISOString','CIBtY','WKpGS','locked','.claude/plans','path','stdout','toFixed','\x22\x20is\x20not\x20supported','totalTasks','Available\x20Plans:','WOIDb','EIsaO','3.\x20Delete\x20plan','vtNHl','pvzEO','ezwyP','\x20\x20\x20Progress:\x20','tAYIB','✅\x20COMPLETED','\x0a---\x20Delete\x20Plan\x20---\x0a','5.\x20Exit\x0a','\x20\x20npm\x20run\x20plan:amend\x0a','OkPkc','qPWHn','.plan-locked','YxmNd','jifdu','\x20\x20\x20Completed:\x20','⚠️\x20\x20IN\x20PROGRESS','hYHcR','Clyvi','SSXNW','\x20\x20\x20\x20\x20Progress:\x20','AYHby','cXcSj','Yes','readdirSync','1.\x20Switch\x20active\x20plan','OXnZH','unlinkSync','4187470zIMaOG','KavRU','lTbQj','AibHV','toString','❌\x20Deletion\x20cancelled\x20(name\x20mismatch)','readFileSync','YHppb','mepfB','DpRID','\x20\x20\x20Total\x20Tasks:\x20','NgKgZ','KfkVM','⚠️\x20\x20WARNING:\x20This\x20will\x20permanently\x20delete\x20the\x20plan!\x0a','filter','fZSdE','❌\x20No\x20plans\x20available','statistics','43965JIiJOZ','zUacf','recursive','14VxLigM','RdLdO','\x0aSelect\x20plan\x20number\x20to\x20archive:\x20','0.0','Ymkdb','parse','MKYXt','XNbBA','eHuxE','withFileTypes','20AqBtcb','bjMmX','OlwQq','\x20\x20\x20Pending:\x20','search','pending','QCFev','ahPri','14470990SqllHC','kEYSO','\x20-\x20','xlXfe','inProgress','(((.+)+)+)+$','\x0aSelect\x20plan\x20number:\x20','description','LFgbC','output','ClfQK','\x0aType\x20\x22','wnItO','\x0a📋\x20Plan:\x20','eHkQt','existsSync','\x0a---\x20Plan\x20Details\x20---\x0a','2.\x20Archive\x20completed\x20plan','QqvKb','writeFileSync','TASK-TRACKER.json','Invalid\x20choice','zGVTD','10OesZGj','blocked','stdin','utf8','421768BVbWWv','replace','\x20\x20\x20In\x20Progress:\x20','Actions:','PKkPA','5643648cfHMVt','error','ckDPd','\x0a📊\x20Statistics:','\x0aSelect\x20plan\x20number\x20to\x20DELETE:\x20','question','vBZbq','constructor','kWQeN','renameSync','mYiVl','oWyJd','✅\x20Active\x20Plan:\x20','Ugfec','\x20\x20\x20Blocked:\x20','stats','\x0a---\x20Switch\x20Active\x20Plan\x20---\x0a','rebMm','pfVTZ','2337318YkfBZA','apply','❌\x20Invalid\x20choice'];_0x281d=function(){return _0x5d6ac1;};return _0x281d();}const _0x402885=_0x1170;(function(_0x3706fc,_0x59a7c7){const _0x227c3e=_0x1170,_0x26dd01=_0x3706fc();while(!![]){try{const _0x4e3a4e=-parseInt(_0x227c3e(0x23e))/0x1*(parseInt(_0x227c3e(0x26a))/0x2)+-parseInt(_0x227c3e(0x1fa))/0x3*(parseInt(_0x227c3e(0x24b))/0x4)+-parseInt(_0x227c3e(0x22c))/0x5+-parseInt(_0x227c3e(0x273))/0x6+-parseInt(_0x227c3e(0x241))/0x7*(parseInt(_0x227c3e(0x26e))/0x8)+-parseInt(_0x227c3e(0x1cc))/0x9+-parseInt(_0x227c3e(0x253))/0xa*(-parseInt(_0x227c3e(0x1ee))/0xb);if(_0x4e3a4e===_0x59a7c7)break;else _0x26dd01['push'](_0x26dd01['shift']());}catch(_0x40d46e){_0x26dd01['push'](_0x26dd01['shift']());}}}(_0x281d,0x7c9a4));var h=(_0x4598e7=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0x4598e7,{'get':(_0x1cf475,_0x1454b5)=>(typeof require<'u'?require:_0x1cf475)[_0x1454b5]}):_0x4598e7)(function(_0x5a68fa){const _0x344ecf=_0x1170,_0x12118a={'WOIDb':function(_0x567956,_0x364df2){return _0x567956<_0x364df2;},'YHppb':function(_0x772f11,_0x265683){return _0x772f11(_0x265683);},'ahPri':function(_0x1827a1,_0x4877ea){return _0x1827a1+_0x4877ea;},'czPnq':function(_0x5aed0d,_0x32a7ba){return _0x5aed0d+_0x32a7ba;},'LFgbC':_0x344ecf(0x1f1),'ygMlX':_0x344ecf(0x20b)};if(_0x12118a[_0x344ecf(0x20e)](typeof require,'u'))return require[_0x344ecf(0x1cd)](this,arguments);throw _0x12118a[_0x344ecf(0x233)](Error,_0x12118a[_0x344ecf(0x252)](_0x12118a[_0x344ecf(0x1eb)](_0x12118a[_0x344ecf(0x25b)],_0x5a68fa),_0x12118a['ygMlX']));});const _0x202513={};_0x202513['input']=process[_0x402885(0x26c)],_0x202513[_0x402885(0x25c)]=process[_0x402885(0x209)];var c=h('fs'),g=h(_0x402885(0x208)),k=h('readline'),r=_0x402885(0x207),m=_0x402885(0x1e9),$=k[_0x402885(0x1f2)](_0x202513);function d(_0x145d74){const _0x229b05=_0x402885,_0x253c18={};_0x253c18[_0x229b05(0x1de)]=function(_0x1c0f90,_0x12dd25){return _0x1c0f90+_0x12dd25;},_0x253c18[_0x229b05(0x1dd)]=_0x229b05(0x1f0);const _0x23ef96=_0x253c18;return new Promise(_0x589b66=>{const _0x5ae615=_0x229b05,_0x4209c8={'ClfQK':function(_0x1b876a,_0x27b74e){const _0x4c1ad6=_0x1170;return _0x23ef96[_0x4c1ad6(0x1de)](_0x1b876a,_0x27b74e);}};if(_0x23ef96[_0x5ae615(0x1dd)]!==_0x5ae615(0x1f0)){let _0x4df560=_0xb975c4(_0x530ca3);_0x381c83[_0x5ae615(0x1d9)](_0x4209c8[_0x5ae615(0x25d)](_0x5d4836,0x1)+'.\x20'+_0x4b673b+'\x20-\x20'+_0x4df560[_0x5ae615(0x1e1)]);}else $[_0x5ae615(0x1be)](_0x145d74,_0x589b66);});}function P(){const _0x18b492=_0x402885,_0x292e80={};_0x292e80['JAMgG']=_0x18b492(0x26d);const _0x590e30=_0x292e80;return c[_0x18b492(0x262)](m)?c[_0x18b492(0x232)](m,_0x590e30[_0x18b492(0x1d8)])['trim']():null;}function S(_0x38fb8e){const _0x34a122=_0x402885;c[_0x34a122(0x266)](m,_0x38fb8e);}function x(){const _0x211b65=_0x402885,_0x3ec559={};return _0x3ec559[_0x211b65(0x24a)]=!0x0,c[_0x211b65(0x262)](r)?c[_0x211b65(0x228)](r,_0x3ec559)[_0x211b65(0x23a)](_0x439f6d=>_0x439f6d['isDirectory']())['map'](_0x6c08a3=>_0x6c08a3[_0x211b65(0x1e1)]):[];}function p(_0x1c1cb2){const _0x31b41f=_0x402885,_0x3849e0={};_0x3849e0[_0x31b41f(0x22e)]='PROJECT-PLAN.json',_0x3849e0[_0x31b41f(0x238)]='utf8',_0x3849e0[_0x31b41f(0x226)]=_0x31b41f(0x267),_0x3849e0[_0x31b41f(0x1f5)]=_0x31b41f(0x21c);const _0x2ab906=_0x3849e0;let _0x324ec7=g[_0x31b41f(0x1ef)](r,_0x1c1cb2,_0x2ab906[_0x31b41f(0x22e)]);if(!c[_0x31b41f(0x262)](_0x324ec7))return null;const _0x1fea50={};_0x1fea50[_0x31b41f(0x20c)]=0x0,_0x1fea50['completed']=0x0,_0x1fea50[_0x31b41f(0x250)]=0x0,_0x1fea50['inProgress']=0x0;let _0x5b529b=JSON[_0x31b41f(0x246)](c[_0x31b41f(0x232)](_0x324ec7,_0x2ab906[_0x31b41f(0x238)])),_0x49fb88=g['join'](r,_0x1c1cb2,_0x2ab906[_0x31b41f(0x226)]),_0x15b081=c[_0x31b41f(0x262)](g['join'](r,_0x1c1cb2,_0x2ab906[_0x31b41f(0x1f5)])),_0x5ec0ae=_0x1fea50;return c[_0x31b41f(0x262)](_0x49fb88)&&(_0x5ec0ae=JSON['parse'](c['readFileSync'](_0x49fb88,_0x31b41f(0x26d)))[_0x31b41f(0x23d)]),{'id':_0x1c1cb2,'name':_0x5b529b['projectName']||_0x5b529b[_0x31b41f(0x1e7)]?.[_0x31b41f(0x1e1)]||'Unnamed\x20Project','description':_0x5b529b[_0x31b41f(0x25a)]||_0x5b529b[_0x31b41f(0x1e7)]?.[_0x31b41f(0x25a)]||'','locked':_0x15b081,'stats':_0x5ec0ae};}async function y(){const _0x517d60=_0x402885,_0xbfa708={'vZQIY':'ezwyP','fZSdE':'(((.+)+)+)+$','QqvKb':_0x517d60(0x1d6),'vefXn':function(_0x19e8f6,_0x39aa8a){return _0x19e8f6!==_0x39aa8a;},'QCFev':function(_0x485390,_0xbe6f9a){return _0x485390(_0xbe6f9a);},'vBZbq':function(_0x43191d,_0x1f4b8f){return _0x43191d===_0x1f4b8f;},'KavRU':function(_0x1ec3c4,_0x3ef72a){return _0x1ec3c4>_0x3ef72a;},'gawhw':function(_0x4117a4,_0x3f5106){return _0x4117a4*_0x3f5106;},'MhKJr':function(_0x582115,_0x21c550){return _0x582115/_0x21c550;},'MwGux':_0x517d60(0x244),'mgPcR':function(_0x13b664,_0x1af57f,_0xc42b76){return _0x13b664(_0x1af57f,_0xc42b76);},'DNwxJ':function(_0x4ed0c2){return _0x4ed0c2();},'uPpqR':function(_0x49dae2){return _0x49dae2();},'rorKp':'Available\x20Plans:','MKYXt':_0x517d60(0x271),'NIwZn':_0x517d60(0x229),'CTjiK':_0x517d60(0x264),'dTwDp':_0x517d60(0x210),'FRwDC':'4.\x20View\x20plan\x20details','AXeVE':function(_0x6b4d0e,_0x33db6a){return _0x6b4d0e(_0x33db6a);},'ravPK':function(_0xd3df8,_0x3ae690){return _0xd3df8(_0x3ae690);},'bPMBl':function(_0x153e8e,_0x4512c1){return _0x153e8e(_0x4512c1);},'mepfB':_0x517d60(0x1d2),'mYiVl':_0x517d60(0x268)},_0x449b88=(function(){const _0x49c70e=_0x517d60;if(_0xbfa708['vZQIY']===_0x49c70e(0x213)){let _0x385411=!![];return function(_0x540ac2,_0x4fc3a9){const _0x2c5b5c=_0x385411?function(){const _0x519f1b=_0x1170;if(_0x4fc3a9){const _0x23fc45=_0x4fc3a9[_0x519f1b(0x1cd)](_0x540ac2,arguments);return _0x4fc3a9=null,_0x23fc45;}}:function(){};return _0x385411=![],_0x2c5b5c;};}else return _0x126aae[_0x49c70e(0x230)]()[_0x49c70e(0x24f)](_0x49c70e(0x258))[_0x49c70e(0x230)]()[_0x49c70e(0x1c0)](_0x23b533)[_0x49c70e(0x24f)](_0x49c70e(0x258));}()),_0x1ec2ea=_0xbfa708[_0x517d60(0x1e6)](_0x449b88,this,function(){const _0x333b73=_0x517d60;return _0x1ec2ea[_0x333b73(0x230)]()[_0x333b73(0x24f)](_0xbfa708[_0x333b73(0x23b)])[_0x333b73(0x230)]()[_0x333b73(0x1c0)](_0x1ec2ea)['search'](_0x333b73(0x258));});_0xbfa708['DNwxJ'](_0x1ec2ea),console[_0x517d60(0x1d9)]('\x0a📋\x20Plan\x20Manager\x0a');let _0x43f930=P(),_0x51ffe0=_0xbfa708['uPpqR'](x);switch(console[_0x517d60(0x1d9)](_0x43f930?_0x517d60(0x1c5)+_0x43f930+'\x0a':'⚠️\x20\x20No\x20active\x20plan\x0a'),console[_0x517d60(0x1d9)](_0xbfa708['rorKp']),_0x51ffe0[_0x517d60(0x1ff)]===0x0?console['log'](_0x517d60(0x1fb)):_0x51ffe0[_0x517d60(0x1d1)](_0x647ab3=>{const _0x18f02b=_0x517d60;if(_0xbfa708[_0x18f02b(0x1f8)](_0x18f02b(0x23f),_0x18f02b(0x21a))){let _0x781e46=_0xbfa708['QCFev'](p,_0x647ab3),_0xb61234=_0xbfa708[_0x18f02b(0x1bf)](_0x647ab3,_0x43f930)?'●':'○',_0x5f12d3=_0x781e46[_0x18f02b(0x206)]?'🔒':'🔓';if(console[_0x18f02b(0x1d9)]('\x20\x20'+_0xb61234+'\x20'+_0x647ab3+'\x20'+_0x5f12d3),console[_0x18f02b(0x1d9)](_0x18f02b(0x1f6)+_0x781e46[_0x18f02b(0x1e1)]),_0x781e46['locked']){let _0x56e8d6=_0xbfa708[_0x18f02b(0x22d)](_0x781e46[_0x18f02b(0x1c8)][_0x18f02b(0x20c)],0x0)?_0xbfa708['gawhw'](_0xbfa708[_0x18f02b(0x1d7)](_0x781e46[_0x18f02b(0x1c8)]['completed'],_0x781e46[_0x18f02b(0x1c8)][_0x18f02b(0x20c)]),0x64)[_0x18f02b(0x20a)](0x1):_0xbfa708[_0x18f02b(0x1e4)];console[_0x18f02b(0x1d9)](_0x18f02b(0x224)+_0x781e46['stats'][_0x18f02b(0x1d0)]+'/'+_0x781e46[_0x18f02b(0x1c8)]['totalTasks']+'\x20('+_0x56e8d6+'%)');}console[_0x18f02b(0x1d9)]('');}else _0x22f898[_0x18f02b(0x1ba)](_0xbfa708[_0x18f02b(0x265)],_0x405aa9[_0x18f02b(0x1df)]),_0x43dded[_0x18f02b(0x1f4)](0x1);}),console[_0x517d60(0x1d9)](_0xbfa708[_0x517d60(0x247)]),console[_0x517d60(0x1d9)](_0xbfa708['NIwZn']),console[_0x517d60(0x1d9)](_0xbfa708[_0x517d60(0x1d4)]),console[_0x517d60(0x1d9)](_0xbfa708['dTwDp']),console[_0x517d60(0x1d9)](_0xbfa708[_0x517d60(0x1fe)]),console['log'](_0x517d60(0x218)),(await _0xbfa708[_0x517d60(0x251)](d,'Enter\x20choice\x20(1-5):\x20'))[_0x517d60(0x1ed)]()){case'1':await w(_0x51ffe0);break;case'2':await _0xbfa708['AXeVE'](b,_0x51ffe0);break;case'3':await _0xbfa708['ravPK'](T,_0x51ffe0);break;case'4':await _0xbfa708['bPMBl'](A,_0x51ffe0);break;case'5':console[_0x517d60(0x1d9)](_0xbfa708[_0x517d60(0x234)]);break;default:console[_0x517d60(0x1ba)](_0xbfa708[_0x517d60(0x1c3)]),process[_0x517d60(0x1f4)](0x1);}$[_0x517d60(0x1dc)]();}function _0x1170(_0x584af8,_0x32e9ec){_0x584af8=_0x584af8-0x1ba;const _0x366716=_0x281d();let _0x55238c=_0x366716[_0x584af8];return _0x55238c;}async function w(_0x46f180){const _0x38113=_0x402885,_0x6729ef={'rebMm':function(_0x2798fa,_0x207dc0){return _0x2798fa(_0x207dc0);},'jifdu':function(_0x47f3fe,_0x49ab35){return _0x47f3fe+_0x49ab35;},'xlXfe':_0x38113(0x23c),'CIBtY':_0x38113(0x20d),'RdLdO':function(_0x50fbcc,_0x21ac0f){return _0x50fbcc(_0x21ac0f);},'lUyGw':function(_0x145375,_0x3fc251){return _0x145375-_0x3fc251;},'YlAMn':function(_0x664d10,_0x1ee9a5){return _0x664d10<_0x1ee9a5;},'TIMPW':function(_0x2b2539,_0x3061d0){return _0x2b2539>=_0x3061d0;},'qPWHn':_0x38113(0x1e2)};console[_0x38113(0x1d9)](_0x38113(0x1c9)),_0x46f180['length']===0x0&&(console[_0x38113(0x1ba)](_0x6729ef[_0x38113(0x256)]),process[_0x38113(0x1f4)](0x1)),console['log'](_0x6729ef[_0x38113(0x204)]),_0x46f180[_0x38113(0x1d1)]((_0x3ee929,_0x434f6d)=>{const _0x4ccece=_0x38113;let _0x4be3c2=_0x6729ef[_0x4ccece(0x1ca)](p,_0x3ee929);console['log'](_0x6729ef[_0x4ccece(0x21e)](_0x434f6d,0x1)+'.\x20'+_0x3ee929+_0x4ccece(0x255)+_0x4be3c2[_0x4ccece(0x1e1)]);});let _0x51ba8b=await _0x6729ef['RdLdO'](d,_0x38113(0x259)),_0x11bd31=_0x6729ef[_0x38113(0x1da)](_0x6729ef[_0x38113(0x242)](parseInt,_0x51ba8b[_0x38113(0x1ed)]()),0x1);(_0x6729ef[_0x38113(0x202)](_0x11bd31,0x0)||_0x6729ef[_0x38113(0x1cf)](_0x11bd31,_0x46f180[_0x38113(0x1ff)]))&&(console[_0x38113(0x1ba)](_0x38113(0x1ce)),process[_0x38113(0x1f4)](0x1));let _0x4ab849=_0x46f180[_0x11bd31];_0x6729ef[_0x38113(0x242)](S,_0x4ab849),console[_0x38113(0x1d9)](_0x38113(0x1ec)+_0x4ab849),console[_0x38113(0x1d9)](_0x38113(0x1e3)),console[_0x38113(0x1d9)](_0x6729ef[_0x38113(0x21b)]),console['log']('\x20\x20npm\x20run\x20task:status'),console['log'](_0x38113(0x219));}async function b(_0x26e313){const _0x35c696=_0x402885,_0x1d9d05={'AYHby':function(_0x43f16e,_0x21944f){return _0x43f16e===_0x21944f;},'pfVTZ':_0x35c696(0x220),'YxmNd':function(_0x56c65d,_0x5dd0e9){return _0x56c65d+_0x5dd0e9;},'GNcSH':_0x35c696(0x23c),'kEYSO':_0x35c696(0x20d),'OlwQq':function(_0xbd9ea,_0x2413c9){return _0xbd9ea(_0x2413c9);},'ckDPd':function(_0x2fcf06,_0x127187){return _0x2fcf06-_0x127187;},'tAYIB':function(_0x20497c,_0x1a81ce){return _0x20497c>=_0x1a81ce;},'DUpqk':_0x35c696(0x1d5),'qvWNK':function(_0x5a4732){return _0x5a4732();}};console[_0x35c696(0x1d9)]('\x0a---\x20Archive\x20Plan\x20---\x0a'),_0x26e313['length']===0x0&&(console[_0x35c696(0x1ba)](_0x1d9d05[_0x35c696(0x1fd)]),process['exit'](0x1)),console['log'](_0x1d9d05[_0x35c696(0x254)]),_0x26e313['forEach']((_0x40ce7f,_0x24d2b7)=>{const _0x499f06=_0x35c696;let _0x42d231=p(_0x40ce7f),_0x549e74=_0x1d9d05[_0x499f06(0x225)](_0x42d231[_0x499f06(0x1c8)][_0x499f06(0x1d0)],_0x42d231[_0x499f06(0x1c8)][_0x499f06(0x20c)])?_0x499f06(0x216):_0x1d9d05[_0x499f06(0x1cb)];console['log'](_0x1d9d05[_0x499f06(0x21d)](_0x24d2b7,0x1)+'.\x20'+_0x40ce7f+'\x20-\x20'+_0x42d231[_0x499f06(0x1e1)]+'\x20'+_0x549e74);});let _0x4fc17c=await _0x1d9d05[_0x35c696(0x24d)](d,_0x35c696(0x243)),_0x106b31=_0x1d9d05[_0x35c696(0x1bb)](_0x1d9d05[_0x35c696(0x24d)](parseInt,_0x4fc17c['trim']()),0x1);(_0x106b31<0x0||_0x1d9d05[_0x35c696(0x215)](_0x106b31,_0x26e313[_0x35c696(0x1ff)]))&&(console[_0x35c696(0x1ba)](_0x35c696(0x1ce)),process['exit'](0x1));let _0x7b32d4=_0x26e313[_0x106b31],_0x20bf24=_0x1d9d05[_0x35c696(0x1e0)];const _0x391e9d={};_0x391e9d[_0x35c696(0x240)]=!0x0,c[_0x35c696(0x262)](_0x20bf24)||c['mkdirSync'](_0x20bf24,_0x391e9d);let _0xe48a0=new Date()[_0x35c696(0x203)]()[_0x35c696(0x26f)](/[:.]/g,'-'),_0x2b0c1d=g[_0x35c696(0x1ef)](_0x20bf24,_0x7b32d4+'-'+_0xe48a0);c[_0x35c696(0x1c2)](g[_0x35c696(0x1ef)](r,_0x7b32d4),_0x2b0c1d),_0x1d9d05[_0x35c696(0x225)](_0x1d9d05[_0x35c696(0x201)](P),_0x7b32d4)&&c['unlinkSync'](m),console[_0x35c696(0x1d9)]('\x0a✅\x20Plan\x20archived:\x20'+_0x2b0c1d);}async function T(_0x5ec73d){const _0x3a92d0=_0x402885,_0x494733={'SSXNW':function(_0x5b40e5,_0x58e112){return _0x5b40e5(_0x58e112);},'ECkKx':function(_0x1f0185,_0x2733a1){return _0x1f0185+_0x2733a1;},'kxIeV':function(_0x58d7e4,_0x42121c){return _0x58d7e4===_0x42121c;},'nxgKi':'❌\x20No\x20plans\x20available','Ymkdb':_0x3a92d0(0x20d),'DGLYC':function(_0x101268,_0x4102ea){return _0x101268(_0x4102ea);},'hYHcR':function(_0x323f1b,_0x495e4d){return _0x323f1b<_0x495e4d;},'XNbBA':function(_0x3b1349,_0x430619){return _0x3b1349>=_0x430619;},'Ugfec':function(_0x1a592e,_0x3fc6d2){return _0x1a592e!==_0x3fc6d2;},'vtNHl':_0x3a92d0(0x231),'NgKgZ':function(_0x2625b6,_0x1edf0d){return _0x2625b6===_0x1edf0d;},'DpRID':function(_0x577db4){return _0x577db4();}};console[_0x3a92d0(0x1d9)](_0x3a92d0(0x217)),console['log'](_0x3a92d0(0x239)),_0x494733['kxIeV'](_0x5ec73d['length'],0x0)&&(console[_0x3a92d0(0x1ba)](_0x494733[_0x3a92d0(0x1d3)]),process[_0x3a92d0(0x1f4)](0x1)),console[_0x3a92d0(0x1d9)](_0x494733[_0x3a92d0(0x245)]),_0x5ec73d[_0x3a92d0(0x1d1)]((_0x41940e,_0x2e2857)=>{const _0x341511=_0x3a92d0;let _0x4f2b4d=_0x494733[_0x341511(0x223)](p,_0x41940e);console[_0x341511(0x1d9)](_0x494733[_0x341511(0x200)](_0x2e2857,0x1)+'.\x20'+_0x41940e+_0x341511(0x255)+_0x4f2b4d['name']);});let _0x3bece5=await _0x494733[_0x3a92d0(0x223)](d,_0x3a92d0(0x1bd)),_0x8b9c5f=_0x494733[_0x3a92d0(0x1f7)](parseInt,_0x3bece5[_0x3a92d0(0x1ed)]())-0x1;(_0x494733[_0x3a92d0(0x221)](_0x8b9c5f,0x0)||_0x494733[_0x3a92d0(0x248)](_0x8b9c5f,_0x5ec73d[_0x3a92d0(0x1ff)]))&&(console[_0x3a92d0(0x1ba)]('❌\x20Invalid\x20choice'),process[_0x3a92d0(0x1f4)](0x1));let _0x38fbc3=_0x5ec73d[_0x8b9c5f];_0x494733[_0x3a92d0(0x1c6)]((await _0x494733[_0x3a92d0(0x223)](d,_0x3a92d0(0x25e)+_0x38fbc3+_0x3a92d0(0x1f3)))[_0x3a92d0(0x1ed)](),_0x38fbc3)&&(console[_0x3a92d0(0x1d9)](_0x494733[_0x3a92d0(0x211)]),process[_0x3a92d0(0x1f4)](0x1));let _0x49577b=g[_0x3a92d0(0x1ef)](r,_0x38fbc3);const _0x540280={};_0x540280[_0x3a92d0(0x240)]=!0x0,_0x540280[_0x3a92d0(0x1fc)]=!0x0,(c['rmSync'](_0x49577b,_0x540280),_0x494733[_0x3a92d0(0x237)](_0x494733[_0x3a92d0(0x235)](P),_0x38fbc3)&&c[_0x3a92d0(0x22b)](m),console[_0x3a92d0(0x1d9)](_0x3a92d0(0x1e8)+_0x38fbc3));}async function A(_0x2a324f){const _0x3c22fe=_0x402885,_0x5368ff={'Clyvi':function(_0x304433,_0x1a5afe){return _0x304433*_0x1a5afe;},'PKkPA':function(_0x9714db,_0x5e788d){return _0x9714db/_0x5e788d;},'wnItO':_0x3c22fe(0x244),'eHkQt':function(_0x564b0f,_0x5f4fb6){return _0x564b0f!==_0x5f4fb6;},'AibHV':_0x3c22fe(0x24c),'QbBHb':'tLNMq','kWQeN':function(_0x1cc3e2,_0x5f09d9){return _0x1cc3e2(_0x5f09d9);},'uaZEi':function(_0x32e719,_0x5dbb35){return _0x32e719+_0x5dbb35;},'bkAKR':function(_0x496602,_0x390235){return _0x496602===_0x390235;},'BcJrm':_0x3c22fe(0x20d),'MCBLm':function(_0x1af2c3,_0x22d011){return _0x1af2c3-_0x22d011;},'pvzEO':function(_0x43f430,_0x480372){return _0x43f430<_0x480372;},'eHuxE':function(_0x3ea5ea,_0x409a38){return _0x3ea5ea>=_0x409a38;},'EIsaO':'❌\x20Invalid\x20choice','zGVTD':function(_0x34642f,_0x4ae674){return _0x34642f(_0x4ae674);},'XQuXN':'(none)','OXnZH':_0x3c22fe(0x227),'nKTye':function(_0x3134c3,_0x1a1164){return _0x3134c3>_0x1a1164;},'WKpGS':function(_0x233cfe,_0x48378e){return _0x233cfe*_0x48378e;},'SOvDN':function(_0x34c591,_0x3cd7f8){return _0x34c591/_0x3cd7f8;}};console[_0x3c22fe(0x1d9)](_0x3c22fe(0x263)),_0x5368ff['bkAKR'](_0x2a324f[_0x3c22fe(0x1ff)],0x0)&&(console[_0x3c22fe(0x1ba)](_0x3c22fe(0x23c)),process['exit'](0x1)),console[_0x3c22fe(0x1d9)](_0x5368ff['BcJrm']),_0x2a324f[_0x3c22fe(0x1d1)]((_0x5d8a0c,_0x2a2c8a)=>{const _0x4f0621=_0x3c22fe;if(_0x5368ff[_0x4f0621(0x261)](_0x5368ff[_0x4f0621(0x22f)],_0x5368ff[_0x4f0621(0x1f9)])){let _0x4ea19c=_0x5368ff[_0x4f0621(0x1c1)](p,_0x5d8a0c);console['log'](_0x5368ff['uaZEi'](_0x2a2c8a,0x1)+'.\x20'+_0x5d8a0c+'\x20-\x20'+_0x4ea19c[_0x4f0621(0x1e1)]);}else{_0x198206[_0x4f0621(0x1d9)](_0x4f0621(0x1bc)),_0x48da23[_0x4f0621(0x1d9)](_0x4f0621(0x236)+_0x541d6a[_0x4f0621(0x1c8)][_0x4f0621(0x20c)]),_0x1cfc98[_0x4f0621(0x1d9)](_0x4f0621(0x21f)+_0x12bcfd[_0x4f0621(0x1c8)][_0x4f0621(0x1d0)]),_0x5018a6['log'](_0x4f0621(0x270)+_0x1d14b4[_0x4f0621(0x1c8)]['inProgress']),_0x5b9e67[_0x4f0621(0x1d9)]('\x20\x20\x20Pending:\x20'+_0x29be60[_0x4f0621(0x1c8)][_0x4f0621(0x250)]),_0x5f897c[_0x4f0621(0x1d9)]('\x20\x20\x20Blocked:\x20'+(_0x5ddf7c[_0x4f0621(0x1c8)]['blocked']||0x0));let _0x4f6d5c=_0x5ea557[_0x4f0621(0x1c8)][_0x4f0621(0x20c)]>0x0?_0x5368ff[_0x4f0621(0x222)](_0x5368ff[_0x4f0621(0x272)](_0x4c77a2['stats']['completed'],_0x5b563f[_0x4f0621(0x1c8)][_0x4f0621(0x20c)]),0x64)[_0x4f0621(0x20a)](0x1):_0x5368ff[_0x4f0621(0x25f)];_0x31d91e[_0x4f0621(0x1d9)](_0x4f0621(0x214)+_0x4f6d5c+'%');}});let _0x3c2d21=await d(_0x3c22fe(0x259)),_0x9e2a06=_0x5368ff[_0x3c22fe(0x1db)](_0x5368ff[_0x3c22fe(0x1c1)](parseInt,_0x3c2d21[_0x3c22fe(0x1ed)]()),0x1);(_0x5368ff[_0x3c22fe(0x212)](_0x9e2a06,0x0)||_0x5368ff[_0x3c22fe(0x249)](_0x9e2a06,_0x2a324f[_0x3c22fe(0x1ff)]))&&(console[_0x3c22fe(0x1ba)](_0x5368ff[_0x3c22fe(0x20f)]),process[_0x3c22fe(0x1f4)](0x1));let _0x547b97=_0x2a324f[_0x9e2a06],_0x3f93e4=_0x5368ff[_0x3c22fe(0x269)](p,_0x547b97);if(console['log'](_0x3c22fe(0x260)+_0x3f93e4['id']),console[_0x3c22fe(0x1d9)]('📌\x20Name:\x20'+_0x3f93e4[_0x3c22fe(0x1e1)]),console[_0x3c22fe(0x1d9)]('📝\x20Description:\x20'+(_0x3f93e4[_0x3c22fe(0x25a)]||_0x5368ff['XQuXN'])),console[_0x3c22fe(0x1d9)](_0x3c22fe(0x1ea)+(_0x3f93e4[_0x3c22fe(0x206)]?_0x5368ff[_0x3c22fe(0x22a)]:'No')),_0x3f93e4[_0x3c22fe(0x206)]){console[_0x3c22fe(0x1d9)](_0x3c22fe(0x1bc)),console[_0x3c22fe(0x1d9)](_0x3c22fe(0x236)+_0x3f93e4[_0x3c22fe(0x1c8)][_0x3c22fe(0x20c)]),console[_0x3c22fe(0x1d9)](_0x3c22fe(0x21f)+_0x3f93e4[_0x3c22fe(0x1c8)]['completed']),console[_0x3c22fe(0x1d9)](_0x3c22fe(0x270)+_0x3f93e4[_0x3c22fe(0x1c8)][_0x3c22fe(0x257)]),console[_0x3c22fe(0x1d9)](_0x3c22fe(0x24e)+_0x3f93e4['stats']['pending']),console[_0x3c22fe(0x1d9)](_0x3c22fe(0x1c7)+(_0x3f93e4[_0x3c22fe(0x1c8)][_0x3c22fe(0x26b)]||0x0));let _0x2d5997=_0x5368ff['nKTye'](_0x3f93e4[_0x3c22fe(0x1c8)][_0x3c22fe(0x20c)],0x0)?_0x5368ff[_0x3c22fe(0x205)](_0x5368ff['SOvDN'](_0x3f93e4[_0x3c22fe(0x1c8)][_0x3c22fe(0x1d0)],_0x3f93e4[_0x3c22fe(0x1c8)][_0x3c22fe(0x20c)]),0x64)['toFixed'](0x1):_0x5368ff['wnItO'];console[_0x3c22fe(0x1d9)]('\x20\x20\x20Progress:\x20'+_0x2d5997+'%');}console[_0x3c22fe(0x1d9)]('');}y()[_0x402885(0x1e5)](_0x3bf8b7=>{const _0xc6faf0=_0x402885,_0x17a6a3={};_0x17a6a3[_0xc6faf0(0x1c4)]=_0xc6faf0(0x1d6);const _0x2f2430=_0x17a6a3;console[_0xc6faf0(0x1ba)](_0x2f2430[_0xc6faf0(0x1c4)],_0x3bf8b7['message']),process[_0xc6faf0(0x1f4)](0x1);});
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ #!/usr/bin/env node
3
+ var _0x476037=_0x5960;(function(_0x609682,_0x206801){var _0x1c3edc=_0x5960,_0x3b1c60=_0x609682();while(!![]){try{var _0x3c5f7a=parseInt(_0x1c3edc(0x12e))/0x1+-parseInt(_0x1c3edc(0x143))/0x2+-parseInt(_0x1c3edc(0x12c))/0x3+-parseInt(_0x1c3edc(0x13d))/0x4*(parseInt(_0x1c3edc(0x13e))/0x5)+-parseInt(_0x1c3edc(0x154))/0x6+-parseInt(_0x1c3edc(0x14b))/0x7*(parseInt(_0x1c3edc(0x12f))/0x8)+-parseInt(_0x1c3edc(0x138))/0x9*(-parseInt(_0x1c3edc(0x123))/0xa);if(_0x3c5f7a===_0x206801)break;else _0x3b1c60['push'](_0x3b1c60['shift']());}catch(_0x2f8d51){_0x3b1c60['push'](_0x3b1c60['shift']());}}}(_0xb61b,0x4c474));function _0xb61b(){var _0x3f1c90=['recursive','.git','MFPOC','\x0a🎉\x20Successfully\x20installed\x20','djhNd','constructor','679hewYmz','dAjmn','❌\x20Error:\x20Not\x20a\x20git\x20repository','\x20hook\x20already\x20exists\x20-\x20backing\x20up\x20to\x20','.git/hooks','Run\x20\x22git\x20init\x22\x20first','search','existsSync','join','1508262sCJicU','plePR','20gLfrQJ','✅\x20Installed\x20','mkdirSync','\x20\x20pre-push\x20\x20\x20\x20-\x20Prevents\x20pushing\x20to\x20main,\x20ensures\x20tests\x20pass\x0a','platform','mode','copyFileSync','\x22\x20is\x20not\x20supported','To\x20uninstall\x20hooks:','705285TBWNGa','📋\x20Setting\x20up\x20git\x20hooks...\x0a','320722yUjxbF','19416NXcPIV','exit','\x20git\x20hooks!\x0a','path','win32','nkprm','.backup','log','apply','6003162fLCFaD','#!/bin/sh\x0a#\x20Pre-commit\x20hook:\x20Run\x20tests\x20and\x20linting\x20before\x20commit\x0a\x0aecho\x20\x22🔍\x20Running\x20pre-commit\x20checks...\x22\x0a\x0a#\x20Check\x20if\x20we\x27re\x20on\x20main\x20branch\x0aBRANCH=$(git\x20rev-parse\x20--abbrev-ref\x20HEAD)\x0aif\x20[\x20\x22$BRANCH\x22\x20=\x20\x22main\x22\x20]\x20||\x20[\x20\x22$BRANCH\x22\x20=\x20\x22master\x22\x20];\x20then\x0a\x20\x20echo\x20\x22❌\x20ERROR:\x20Cannot\x20commit\x20directly\x20to\x20$BRANCH\x20branch\x22\x0a\x20\x20echo\x20\x22Create\x20a\x20feature\x20branch\x20first:\x22\x0a\x20\x20echo\x20\x22\x20\x20git\x20checkout\x20-b\x20task/TASK-XXX-description\x22\x0a\x20\x20exit\x201\x0afi\x0a\x0a#\x20Run\x20linter\x20if\x20package.json\x20has\x20lint\x20script\x0aif\x20grep\x20-q\x20\x27\x22lint\x22\x27\x20package.json\x202>/dev/null;\x20then\x0a\x20\x20echo\x20\x22Running\x20linter...\x22\x0a\x20\x20npm\x20run\x20lint\x20--silent\x0a\x20\x20if\x20[\x20$?\x20-ne\x200\x20];\x20then\x0a\x20\x20\x20\x20echo\x20\x22❌\x20Linting\x20failed.\x20Fix\x20errors\x20before\x20committing.\x22\x0a\x20\x20\x20\x20exit\x201\x0a\x20\x20fi\x0afi\x0a\x0a#\x20Run\x20formatter\x20check\x20if\x20available\x0aif\x20grep\x20-q\x20\x27\x22format:check\x22\x27\x20package.json\x202>/dev/null;\x20then\x0a\x20\x20echo\x20\x22Checking\x20formatting...\x22\x0a\x20\x20npm\x20run\x20format:check\x20--silent\x0a\x20\x20if\x20[\x20$?\x20-ne\x200\x20];\x20then\x0a\x20\x20\x20\x20echo\x20\x22❌\x20Formatting\x20check\x20failed.\x20Run\x20\x27npm\x20run\x20format\x27\x20to\x20fix.\x22\x0a\x20\x20\x20\x20exit\x201\x0a\x20\x20fi\x0afi\x0a\x0a#\x20Run\x20tests\x0aif\x20grep\x20-q\x20\x27\x22test\x22\x27\x20package.json\x202>/dev/null;\x20then\x0a\x20\x20echo\x20\x22Running\x20tests...\x22\x0a\x20\x20npm\x20test\x20--silent\x0a\x20\x20if\x20[\x20$?\x20-ne\x200\x20];\x20then\x0a\x20\x20\x20\x20echo\x20\x22❌\x20Tests\x20failed.\x20Fix\x20failing\x20tests\x20before\x20committing.\x22\x0a\x20\x20\x20\x20exit\x201\x0a\x20\x20fi\x0afi\x0a\x0aecho\x20\x22✅\x20Pre-commit\x20checks\x20passed!\x22\x0aexit\x200\x0a','\x20\x20rm\x20.git/hooks/pre-commit\x20.git/hooks/commit-msg\x20.git/hooks/pre-push\x0a','⚠️\x20\x20','To\x20bypass\x20hooks\x20(NOT\x20RECOMMENDED):','270748JQeocO','5SpBXoG','\x20\x20pre-commit\x20\x20-\x20Validates\x20linting,\x20formatting,\x20tests\x20before\x20commit','KTtYA','qMcEZ','toString','1105488Ptstli','FBAfv'];_0xb61b=function(){return _0x3f1c90;};return _0xb61b();}var _0xf034c0=(function(){var _0x319736=_0x5960,_0x16bbbc={};_0x16bbbc[_0x319736(0x149)]='UwCqM',_0x16bbbc[_0x319736(0x140)]=_0x319736(0x141),_0x16bbbc[_0x319736(0x134)]=function(_0x29dd91,_0x3ae5b0){return _0x29dd91!==_0x3ae5b0;},_0x16bbbc[_0x319736(0x155)]='dTCIq';var _0x56d80a=_0x16bbbc,_0x117176=!![];return function(_0x4d1b22,_0x3802f1){var _0x316ce7=_0x319736;if(_0x56d80a[_0x316ce7(0x134)](_0x56d80a['plePR'],_0x56d80a[_0x316ce7(0x155)])){if(_0x3ef784){var _0x17dcb0=_0x12ca3d[_0x316ce7(0x137)](_0x21633a,arguments);return _0x55ad06=null,_0x17dcb0;}}else{var _0x5661f8=_0x117176?function(){var _0x17c5b9=_0x316ce7;if(_0x3802f1){if(_0x56d80a[_0x17c5b9(0x149)]!==_0x56d80a[_0x17c5b9(0x140)]){var _0x47bce3=_0x3802f1[_0x17c5b9(0x137)](_0x4d1b22,arguments);return _0x3802f1=null,_0x47bce3;}else{var _0x43c513=_0xedfba2?function(){var _0x105e8a=_0x17c5b9;if(_0x2d8907){var _0x4aa513=_0x280e5d[_0x105e8a(0x137)](_0x1f0a08,arguments);return _0x2fcd45=null,_0x4aa513;}}:function(){};return _0x3fe2ea=![],_0x43c513;}}}:function(){};return _0x117176=![],_0x5661f8;}};}()),_0x32d112=_0xf034c0(this,function(){var _0x4a9742=_0x5960,_0x573d3f={};_0x573d3f[_0x4a9742(0x14c)]='(((.+)+)+)+$';var _0x40e19e=_0x573d3f;return _0x32d112[_0x4a9742(0x142)]()[_0x4a9742(0x151)](_0x40e19e['dAjmn'])[_0x4a9742(0x142)]()[_0x4a9742(0x14a)](_0x32d112)[_0x4a9742(0x151)](_0x40e19e['dAjmn']);});_0x32d112();var n=(_0xb338f0=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0xb338f0,{'get':(_0x4fe6e9,_0x405e8e)=>(typeof require<'u'?require:_0x4fe6e9)[_0x405e8e]}):_0xb338f0)(function(_0x20f1f4){var _0x1299d6=_0x5960,_0x54a1af={};_0x54a1af[_0x1299d6(0x147)]=function(_0x4336c6,_0x28d264){return _0x4336c6<_0x28d264;},_0x54a1af[_0x1299d6(0x144)]='Dynamic\x20require\x20of\x20\x22',_0x54a1af['FQgAu']=_0x1299d6(0x12a);var _0x4d4ee9=_0x54a1af;if(_0x4d4ee9[_0x1299d6(0x147)](typeof require,'u'))return require[_0x1299d6(0x137)](this,arguments);throw Error(_0x4d4ee9[_0x1299d6(0x144)]+_0x20f1f4+_0x4d4ee9['FQgAu']);}),t=n('fs'),r=n(_0x476037(0x132)),s=_0x476037(0x14f);t['existsSync'](_0x476037(0x146))||(console['error'](_0x476037(0x14d)),console['error'](_0x476037(0x150)),process[_0x476037(0x130)](0x1));var _0x1c3f17={};_0x1c3f17[_0x476037(0x145)]=!0x0,t[_0x476037(0x152)](s)||t[_0x476037(0x125)](s,_0x1c3f17),console[_0x476037(0x136)](_0x476037(0x12d));var a=_0x476037(0x139),h='#!/bin/sh\x0a#\x20Commit-msg\x20hook:\x20Validate\x20commit\x20message\x20format\x0a\x0aCOMMIT_MSG_FILE=$1\x0aCOMMIT_MSG=$(cat\x20\x22$COMMIT_MSG_FILE\x22)\x0a\x0a#\x20Check\x20if\x20commit\x20message\x20follows\x20format:\x20[TASK-XXX]\x20Description\x0a#\x20or\x20starts\x20with\x20common\x20prefixes\x20like\x20feat:,\x20fix:,\x20docs:,\x20etc.\x0aif\x20echo\x20\x22$COMMIT_MSG\x22\x20|\x20grep\x20-qE\x20\x27^\x5c[TASK-[0-9]{3}\x5c]|^(feat|fix|docs|style|refactor|test|chore|perf|ci|build|revert):\x27;\x20then\x0a\x20\x20exit\x200\x0afi\x0a\x0a#\x20Allow\x20merge\x20commits\x0aif\x20echo\x20\x22$COMMIT_MSG\x22\x20|\x20grep\x20-qE\x20\x27^Merge\x27;\x20then\x0a\x20\x20exit\x200\x0afi\x0a\x0aecho\x20\x22❌\x20ERROR:\x20Invalid\x20commit\x20message\x20format\x22\x0aecho\x20\x22\x22\x0aecho\x20\x22Commit\x20message\x20must\x20start\x20with:\x22\x0aecho\x20\x22\x20\x20[TASK-XXX]\x20Description\x20\x20(for\x20task-related\x20commits)\x22\x0aecho\x20\x22\x20\x20feat:\x20Description\x20\x20\x20\x20\x20\x20\x20(for\x20new\x20features)\x22\x0aecho\x20\x22\x20\x20fix:\x20Description\x20\x20\x20\x20\x20\x20\x20\x20(for\x20bug\x20fixes)\x22\x0aecho\x20\x22\x20\x20docs:\x20Description\x20\x20\x20\x20\x20\x20\x20(for\x20documentation)\x22\x0aecho\x20\x22\x22\x0aecho\x20\x22Your\x20message:\x20$COMMIT_MSG\x22\x0aecho\x20\x22\x22\x0aexit\x201\x0a',m='#!/bin/sh\x0a#\x20Pre-push\x20hook:\x20Final\x20validation\x20before\x20push\x0a\x0aecho\x20\x22🚀\x20Running\x20pre-push\x20checks...\x22\x0a\x0a#\x20Check\x20if\x20we\x27re\x20on\x20main\x20branch\x0aBRANCH=$(git\x20rev-parse\x20--abbrev-ref\x20HEAD)\x0aif\x20[\x20\x22$BRANCH\x22\x20=\x20\x22main\x22\x20]\x20||\x20[\x20\x22$BRANCH\x22\x20=\x20\x22master\x22\x20];\x20then\x0a\x20\x20echo\x20\x22❌\x20ERROR:\x20Cannot\x20push\x20directly\x20to\x20$BRANCH\x20branch\x22\x0a\x20\x20echo\x20\x22Create\x20a\x20feature\x20branch\x20first\x22\x0a\x20\x20exit\x201\x0afi\x0a\x0a#\x20Check\x20for\x20uncommitted\x20changes\x0aif\x20!\x20git\x20diff-index\x20--quiet\x20HEAD\x20--;\x20then\x0a\x20\x20echo\x20\x22❌\x20ERROR:\x20You\x20have\x20uncommitted\x20changes\x22\x0a\x20\x20echo\x20\x22Commit\x20or\x20stash\x20changes\x20before\x20pushing\x22\x0a\x20\x20exit\x201\x0afi\x0a\x0a#\x20Run\x20full\x20test\x20suite\x0aif\x20grep\x20-q\x20\x27\x22test\x22\x27\x20package.json\x202>/dev/null;\x20then\x0a\x20\x20echo\x20\x22Running\x20full\x20test\x20suite...\x22\x0a\x20\x20npm\x20test\x20--silent\x0a\x20\x20if\x20[\x20$?\x20-ne\x200\x20];\x20then\x0a\x20\x20\x20\x20echo\x20\x22❌\x20Tests\x20failed.\x20Fix\x20failing\x20tests\x20before\x20pushing.\x22\x0a\x20\x20\x20\x20exit\x201\x0a\x20\x20fi\x0afi\x0a\x0aecho\x20\x22✅\x20Pre-push\x20checks\x20passed!\x22\x0aexit\x200\x0a',f={'pre-commit':a,'commit-msg':h,'pre-push':m},c=0x0;for(let [e,i]of Object['entries'](f)){let o=r[_0x476037(0x153)](s,e);var _0x3dc03e={};_0x3dc03e[_0x476037(0x128)]=0x1ed,(t['existsSync'](o)&&(console[_0x476037(0x136)](_0x476037(0x13b)+e+_0x476037(0x14e)+e+_0x476037(0x135)),t[_0x476037(0x129)](o,o+'.backup')),t['writeFileSync'](o,i,_0x3dc03e),process[_0x476037(0x127)]!==_0x476037(0x133)&&t['chmodSync'](o,0x1ed),console[_0x476037(0x136)](_0x476037(0x124)+e+'\x20hook'),c++);}function _0x5960(_0x54c43b,_0x5e4476){_0x54c43b=_0x54c43b-0x123;var _0x15a6b7=_0xb61b();var _0x32d112=_0x15a6b7[_0x54c43b];return _0x32d112;}console[_0x476037(0x136)](_0x476037(0x148)+c+_0x476037(0x131)),console[_0x476037(0x136)]('Hooks\x20installed:'),console[_0x476037(0x136)](_0x476037(0x13f)),console['log']('\x20\x20commit-msg\x20\x20-\x20Enforces\x20commit\x20message\x20format\x20[TASK-XXX]\x20or\x20feat:/fix:'),console['log'](_0x476037(0x126)),console[_0x476037(0x136)](_0x476037(0x13c)),console[_0x476037(0x136)]('\x20\x20git\x20commit\x20--no-verify\x0a'),console['log'](_0x476037(0x12b)),console['log'](_0x476037(0x13a)),process[_0x476037(0x130)](0x0);
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ #!/usr/bin/env node
3
+ var _0x18afdd=_0x2357;(function(_0x469fdb,_0x2cb820){var _0x3cf12a=_0x2357,_0x1543a2=_0x469fdb();while(!![]){try{var _0x88bc68=-parseInt(_0x3cf12a(0x80))/0x1+-parseInt(_0x3cf12a(0x95))/0x2*(-parseInt(_0x3cf12a(0x8c))/0x3)+parseInt(_0x3cf12a(0x93))/0x4+-parseInt(_0x3cf12a(0x91))/0x5+parseInt(_0x3cf12a(0x7c))/0x6+-parseInt(_0x3cf12a(0x77))/0x7*(parseInt(_0x3cf12a(0x9a))/0x8)+parseInt(_0x3cf12a(0x9f))/0x9;if(_0x88bc68===_0x2cb820)break;else _0x1543a2['push'](_0x1543a2['shift']());}catch(_0x4cccea){_0x1543a2['push'](_0x1543a2['shift']());}}}(_0x342a,0x3706e));var _0x221a95=(function(){var _0x34634c=_0x2357,_0x7ed271={};_0x7ed271['hrTJN']=_0x34634c(0x9c),_0x7ed271[_0x34634c(0x8a)]=_0x34634c(0x9e),_0x7ed271[_0x34634c(0x94)]=_0x34634c(0x87);var _0x594c31=_0x7ed271,_0x28818b=!![];return function(_0x4be94d,_0xf4a867){var _0x1b5b69=_0x34634c;if(_0x594c31['AfdeW']==='gYORi'){var _0x2e3014=_0x28818b?function(){var _0x41e4e1=_0x2357;if(_0xf4a867){var _0x5e74bf=_0xf4a867[_0x41e4e1(0x79)](_0x4be94d,arguments);return _0xf4a867=null,_0x5e74bf;}}:function(){};return _0x28818b=![],_0x2e3014;}else{var _0x170632={};_0x170632['stdio']=_0x594c31[_0x1b5b69(0x89)],(_0x41f900('node\x20\x22'+_0x3e6c64+'\x22\x20'+_0x1abca3,_0x170632),_0x73dbef[_0x1b5b69(0x7d)]('\x0a🎉\x20Task\x20'+_0x4f7602+'\x20marked\x20as\x20completed!'),_0x494178[_0x1b5b69(0x7d)]('\x0aNext\x20steps:'),_0x125f39['log'](_0x594c31[_0x1b5b69(0x8a)]),_0x14dc33['log'](_0x1b5b69(0x90)));}};}()),_0x29fce7=_0x221a95(this,function(){var _0x31d8e2=_0x2357,_0x1e075b={};_0x1e075b[_0x31d8e2(0x8d)]=_0x31d8e2(0x84);var _0x21a071=_0x1e075b;return _0x29fce7[_0x31d8e2(0x78)]()[_0x31d8e2(0x7a)](_0x21a071[_0x31d8e2(0x8d)])[_0x31d8e2(0x78)]()[_0x31d8e2(0x98)](_0x29fce7)[_0x31d8e2(0x7a)](_0x21a071[_0x31d8e2(0x8d)]);});_0x29fce7();var s=(_0x24f806=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0x24f806,{'get':(_0x2d68a4,_0x5a4409)=>(typeof require<'u'?require:_0x2d68a4)[_0x5a4409]}):_0x24f806)(function(_0x120fe3){var _0x30b262=_0x2357,_0x21908a={'tQBuo':function(_0x4b487a,_0x12c33b){return _0x4b487a<_0x12c33b;},'lyEvR':function(_0x5e5fbc,_0x85247a){return _0x5e5fbc(_0x85247a);},'fRUOb':function(_0x2e3c0c,_0x145286){return _0x2e3c0c+_0x145286;},'OiKdK':_0x30b262(0x8e),'IpfHB':'\x22\x20is\x20not\x20supported'};if(_0x21908a[_0x30b262(0x85)](typeof require,'u'))return require[_0x30b262(0x79)](this,arguments);throw _0x21908a[_0x30b262(0x9b)](Error,_0x21908a[_0x30b262(0x8f)](_0x21908a[_0x30b262(0x86)],_0x120fe3)+_0x21908a[_0x30b262(0x7f)]);}),{execSync:n}=s(_0x18afdd(0x81)),c=s(_0x18afdd(0x9d)),e=process[_0x18afdd(0x99)][0x2];function _0x2357(_0x5478fc,_0xaceabb){_0x5478fc=_0x5478fc-0x77;var _0x2a8248=_0x342a();var _0x29fce7=_0x2a8248[_0x5478fc];return _0x29fce7;}function _0x342a(){var _0x4154ad=['stdio','560604DDBvAc','log','❌\x20Error:\x20Task\x20ID\x20is\x20required','IpfHB','350005zLqqqg','child_process','\x0a❌\x20Failed\x20to\x20complete\x20task\x20','\x0aUsage:\x20node\x20scripts/task-done.js\x20TASK-001','(((.+)+)+)+$','tQBuo','OiKdK','gYORi','node\x20\x22','hrTJN','TFPPG','\x20marked\x20as\x20completed!','2931jbtRIx','oPTqI','Dynamic\x20require\x20of\x20\x22','fRUOb','\x20\x20-\x20Start\x20next\x20task:\x20npm\x20run\x20task:start\x20TASK-XXX','147215JogjpS','\x20\x20\x20Or:\x20npm\x20run\x20task:done\x20TASK-001','587736GDLvPR','AfdeW','910RWJdaQ','complete-task.js','error','constructor','argv','8llgPNA','lyEvR','inherit','path','\x20\x20-\x20Check\x20status:\x20npm\x20run\x20task:status','3224772PgRLCZ','\x0aNext\x20steps:','join','3068611qSPCGs','toString','apply','search'];_0x342a=function(){return _0x4154ad;};return _0x342a();}e||(console['error'](_0x18afdd(0x7e)),console[_0x18afdd(0x97)](_0x18afdd(0x83)),console[_0x18afdd(0x97)](_0x18afdd(0x92)),process['exit'](0x1));var a=c[_0x18afdd(0xa1)](__dirname,'..','.claude','hooks',_0x18afdd(0x96));console[_0x18afdd(0x7d)]('✅\x20Completing\x20task:\x20'+e+'\x0a');try{var _0x50c5a5={};_0x50c5a5[_0x18afdd(0x7b)]=_0x18afdd(0x9c),(n(_0x18afdd(0x88)+a+'\x22\x20'+e,_0x50c5a5),console[_0x18afdd(0x7d)]('\x0a🎉\x20Task\x20'+e+_0x18afdd(0x8b)),console[_0x18afdd(0x7d)](_0x18afdd(0xa0)),console['log']('\x20\x20-\x20Check\x20status:\x20npm\x20run\x20task:status'),console[_0x18afdd(0x7d)](_0x18afdd(0x90)));}catch{console['error'](_0x18afdd(0x82)+e),process['exit'](0x1);}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ #!/usr/bin/env node
3
+ const _0x40272e=_0x4b81;(function(_0x4b2cff,_0x5ba247){const _0x534100=_0x4b81,_0x291678=_0x4b2cff();while(!![]){try{const _0x25c880=-parseInt(_0x534100(0x14e))/0x1+-parseInt(_0x534100(0x14a))/0x2*(-parseInt(_0x534100(0x1a1))/0x3)+parseInt(_0x534100(0x198))/0x4*(-parseInt(_0x534100(0x1b3))/0x5)+-parseInt(_0x534100(0x174))/0x6*(parseInt(_0x534100(0x147))/0x7)+-parseInt(_0x534100(0x140))/0x8+-parseInt(_0x534100(0x17a))/0x9+parseInt(_0x534100(0x1ae))/0xa;if(_0x25c880===_0x5ba247)break;else _0x291678['push'](_0x291678['shift']());}catch(_0x206f20){_0x291678['push'](_0x291678['shift']());}}}(_0x4e94,0x2edaa));const _0x5f3285=(function(){const _0x8bbcbf=_0x4b81,_0x43e7f8={'oEmAZ':'main','iijSD':_0x8bbcbf(0x186),'PIfLe':function(_0x3d1ff0,_0x236256,_0x265fc8){return _0x3d1ff0(_0x236256,_0x265fc8);},'hgvtR':function(_0x589178,_0x13ffbe){return _0x589178!==_0x13ffbe;},'DOYAQ':_0x8bbcbf(0x15b),'DlyTT':_0x8bbcbf(0x151),'skgaj':function(_0x3c3ec8,_0xfb6d02){return _0x3c3ec8===_0xfb6d02;},'hinWT':'eaEdy'};let _0x1bc7a0=!![];return function(_0x5510d1,_0x541afb){const _0x1f7824=_0x8bbcbf,_0x2a84ba={'sGFeN':_0x1f7824(0x1a0),'RiLZo':_0x43e7f8[_0x1f7824(0x127)],'xYBek':_0x43e7f8[_0x1f7824(0x1a8)],'HXwAu':function(_0x50d494,_0x13ad22,_0x29fdc9){const _0x4fd6df=_0x1f7824;return _0x43e7f8[_0x4fd6df(0x18e)](_0x50d494,_0x13ad22,_0x29fdc9);},'NOeVF':function(_0x3b85a0,_0x91cb0b,_0x5e2169){return _0x3b85a0(_0x91cb0b,_0x5e2169);},'bzLZt':function(_0xf6743d,_0x323539){const _0x2ca892=_0x1f7824;return _0x43e7f8[_0x2ca892(0x134)](_0xf6743d,_0x323539);},'fuDBA':_0x43e7f8['DOYAQ'],'IfVeI':_0x43e7f8[_0x1f7824(0x170)],'kqJhW':function(_0x360b97,_0x3de3c2){const _0x1d6798=_0x1f7824;return _0x43e7f8[_0x1d6798(0x188)](_0x360b97,_0x3de3c2);},'RzQNb':_0x43e7f8[_0x1f7824(0x12e)]},_0x31c7ba=_0x1bc7a0?function(){const _0x144046=_0x1f7824,_0x47289e={'QcbsY':_0x144046(0x14b),'moDOo':_0x2a84ba['sGFeN'],'Gvvic':_0x2a84ba[_0x144046(0x183)],'WTqMm':_0x2a84ba[_0x144046(0x16a)],'cUwZJ':function(_0x43439c,_0x50c638,_0x2f6ec8){const _0x47578d=_0x144046;return _0x2a84ba[_0x47578d(0x15e)](_0x43439c,_0x50c638,_0x2f6ec8);},'kxzne':function(_0x12e0ad,_0xfcf06e,_0x34c344){const _0x5e3901=_0x144046;return _0x2a84ba[_0x5e3901(0x124)](_0x12e0ad,_0xfcf06e,_0x34c344);}};if(_0x2a84ba[_0x144046(0x161)](_0x2a84ba['fuDBA'],_0x2a84ba[_0x144046(0x133)])){if(_0x541afb){if(_0x2a84ba[_0x144046(0x1a4)](_0x2a84ba[_0x144046(0x18f)],_0x2a84ba[_0x144046(0x18f)])){const _0x1ca519=_0x541afb[_0x144046(0x14d)](_0x5510d1,arguments);return _0x541afb=null,_0x1ca519;}else{const _0x13c510={};_0x13c510[_0x144046(0x135)]=_0x47289e['QcbsY'];let _0x1392a7=_0x568c04('git\x20branch\x20-a',_0x13c510);_0x1392a7['includes'](_0x47289e['moDOo'])&&!_0x1392a7[_0x144046(0x165)](_0x47289e[_0x144046(0x1b5)])&&(_0xe1b1fe=_0x144046(0x1a0));}}}else{if(_0x3f0e76(_0x47289e[_0x144046(0x16c)],{'encoding':_0x47289e[_0x144046(0x172)]})['includes'](_0x3a2c0f)){const _0x26d9df={};_0x26d9df['encoding']=_0x144046(0x14b),(_0x47289e[_0x144046(0x1a3)](_0x3462a5,_0x144046(0x185)+_0x516a9a,_0x26d9df),_0xf0bb05[_0x144046(0x171)](_0x144046(0x182)+_0x3e5576));try{const _0x5248fd={};_0x5248fd[_0x144046(0x196)]=_0x144046(0x187),(_0x47289e[_0x144046(0x13d)](_0x49f91f,_0x144046(0x15d)+_0x298df0,_0x5248fd),_0x2fde3e[_0x144046(0x171)](_0x144046(0x132)+_0x1a1231));}catch{_0x5c9994['log'](_0x144046(0x19c)+_0x2e955b+_0x144046(0x148));}}}}:function(){};return _0x1bc7a0=![],_0x31c7ba;};}()),_0x3b7f57=_0x5f3285(this,function(){const _0x4df0b4=_0x4b81,_0xcfb3ff={};_0xcfb3ff[_0x4df0b4(0x1b2)]=_0x4df0b4(0x18b);const _0x2afc66=_0xcfb3ff;return _0x3b7f57[_0x4df0b4(0x15a)]()[_0x4df0b4(0x13e)](_0x2afc66[_0x4df0b4(0x1b2)])[_0x4df0b4(0x15a)]()[_0x4df0b4(0x17d)](_0x3b7f57)[_0x4df0b4(0x13e)](_0x2afc66['JpmIC']);});_0x3b7f57();var u=(_0x24a636=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0x24a636,{'get':(_0x30475e,_0x2e04d6)=>(typeof require<'u'?require:_0x30475e)[_0x2e04d6]}):_0x24a636)(function(_0x3e2bdd){const _0x3fd699=_0x4b81,_0x11b16a={};_0x11b16a[_0x3fd699(0x129)]=function(_0x16b768,_0x496636){return _0x16b768<_0x496636;},_0x11b16a[_0x3fd699(0x194)]=function(_0x555267,_0x5a04e1){return _0x555267+_0x5a04e1;},_0x11b16a[_0x3fd699(0x173)]=_0x3fd699(0x139),_0x11b16a['Lczbk']=_0x3fd699(0x1b4);const _0x5b00aa=_0x11b16a;if(_0x5b00aa[_0x3fd699(0x129)](typeof require,'u'))return require[_0x3fd699(0x14d)](this,arguments);throw Error(_0x5b00aa['zsSnn'](_0x5b00aa['zsSnn'](_0x5b00aa[_0x3fd699(0x173)],_0x3e2bdd),_0x5b00aa['Lczbk']));}),{execSync:s}=u(_0x40272e(0x163)),c=u('fs'),g=u(_0x40272e(0x146)),l=process[_0x40272e(0x12b)][_0x40272e(0x180)](0x2),p=_0x40272e(0x17f);c[_0x40272e(0x199)](p)||(console[_0x40272e(0x145)](_0x40272e(0x155)),console[_0x40272e(0x145)]('Set\x20active\x20plan\x20first:\x20npm\x20run\x20plan:manager\x0a'),process['exit'](0x1));var f=c[_0x40272e(0x154)](p,'utf8')[_0x40272e(0x164)](),h=g[_0x40272e(0x156)]('.claude/plans',f),R=g[_0x40272e(0x156)](h,'TASK-TRACKER.json');c[_0x40272e(0x199)](R)||(console[_0x40272e(0x145)](_0x40272e(0x19e)),console[_0x40272e(0x145)](_0x40272e(0x141)+f),process[_0x40272e(0x150)](0x1));var m=JSON[_0x40272e(0x191)](c[_0x40272e(0x154)](R,_0x40272e(0x14b))),d='task',r=null;l[0x0]===_0x40272e(0x195)?(d=_0x40272e(0x138),r=l[0x1],r||(console[_0x40272e(0x145)](_0x40272e(0x189)),console[_0x40272e(0x145)](_0x40272e(0x12c)),process[_0x40272e(0x150)](0x1))):(r=l[0x0],r||(console[_0x40272e(0x145)](_0x40272e(0x15c)),console[_0x40272e(0x145)](_0x40272e(0x137)),console['error'](_0x40272e(0x179)),process['exit'](0x1))),console[_0x40272e(0x171)](_0x40272e(0x152)+(d===_0x40272e(0x138)?_0x40272e(0x126):'Task')+'\x20'+r+'\x0a');var i=[];if(d===_0x40272e(0x12d)){m[_0x40272e(0x16d)][_0x40272e(0x16e)](_0x574b15=>_0x574b15['id']===r)||(console[_0x40272e(0x145)]('❌\x20ERROR:\x20Task\x20'+r+'\x20not\x20found'),process[_0x40272e(0x150)](0x1));let n=g[_0x40272e(0x156)](h,_0x40272e(0x193),r+_0x40272e(0x143));c[_0x40272e(0x199)](n)||(console[_0x40272e(0x145)](_0x40272e(0x19f)+n),process[_0x40272e(0x150)](0x1));let o=JSON[_0x40272e(0x191)](c['readFileSync'](n,'utf8'));o[_0x40272e(0x166)]!=='completed'&&(console[_0x40272e(0x145)]('❌\x20ERROR:\x20Task\x20'+r+'\x20is\x20not\x20completed\x20(status:\x20'+o['status']+')'),console[_0x40272e(0x145)]('Complete\x20task\x20first:\x20npm\x20run\x20task:done\x20'+r),process['exit'](0x1)),i['push'](o);}else{let e=m[_0x40272e(0x16d)][_0x40272e(0x19d)](_0x2cca32=>{const _0x3861fc=_0x40272e,_0x56df96={};_0x56df96['Bigzk']='tasks',_0x56df96['BFrGy']='utf8';const _0x49d8c2=_0x56df96;let _0x2b7255=g[_0x3861fc(0x156)](h,_0x49d8c2['Bigzk'],_0x2cca32['id']+_0x3861fc(0x143));return c[_0x3861fc(0x199)](_0x2b7255)?JSON['parse'](c['readFileSync'](_0x2b7255,_0x49d8c2[_0x3861fc(0x13a)])):null;})[_0x40272e(0x1b0)](_0x1a1a0c=>_0x1a1a0c!==null&&_0x1a1a0c[_0x40272e(0x138)]===r);e[_0x40272e(0x18d)]===0x0&&(console['error'](_0x40272e(0x192)+r),process[_0x40272e(0x150)](0x1));let n=e[_0x40272e(0x1b0)](_0x386f88=>_0x386f88[_0x40272e(0x166)]!==_0x40272e(0x1af));n['length']>0x0&&(console[_0x40272e(0x145)]('❌\x20ERROR:\x20Phase\x20'+r+_0x40272e(0x1ab)),n[_0x40272e(0x190)](_0x2dcbd7=>{const _0x3d6eea=_0x40272e;console['error']('\x20\x20'+_0x2dcbd7['id']+':\x20'+_0x2dcbd7[_0x3d6eea(0x1a5)]+'\x20('+_0x2dcbd7[_0x3d6eea(0x166)]+')');}),console[_0x40272e(0x145)](_0x40272e(0x167)),process[_0x40272e(0x150)](0x1)),i=e[_0x40272e(0x1b0)](_0x35fc82=>_0x35fc82['status']==='completed');}console['log'](_0x40272e(0x12a)+i['length']+_0x40272e(0x15f)),i[_0x40272e(0x190)](_0x626f4=>{const _0x224186=_0x40272e;console[_0x224186(0x171)](_0x224186(0x1a7)+_0x626f4['id']+':\x20'+_0x626f4[_0x224186(0x1a5)]);}),console[_0x40272e(0x171)]('');try{const _0x4125bd={};_0x4125bd[_0x40272e(0x135)]='utf8';let e=s(_0x40272e(0x18a),_0x4125bd)['trim']();(e==='main'||e===_0x40272e(0x1a0))&&(console[_0x40272e(0x145)](_0x40272e(0x17e)),console[_0x40272e(0x145)](_0x40272e(0x19a)),process[_0x40272e(0x150)](0x1)),console['log'](_0x40272e(0x13c)+e+'\x0a');}catch{console[_0x40272e(0x145)](_0x40272e(0x13b)),console[_0x40272e(0x145)]('Are\x20you\x20in\x20a\x20git\x20repository?\x0a'),process[_0x40272e(0x150)](0x1);}try{const _0x4a7c0a={};_0x4a7c0a[_0x40272e(0x135)]=_0x40272e(0x14b);let e=s('git\x20status\x20--porcelain',_0x4a7c0a);e[_0x40272e(0x164)]()&&(console[_0x40272e(0x145)](_0x40272e(0x184)),console[_0x40272e(0x145)]('Uncommitted\x20files:'),console[_0x40272e(0x145)](e),console[_0x40272e(0x145)](_0x40272e(0x19b)),console[_0x40272e(0x145)](_0x40272e(0x175)),console[_0x40272e(0x145)]('\x20\x20git\x20commit\x20-m\x20\x22[TASK-XXX]\x20Description\x22\x0a'),process['exit'](0x1));}catch{console['warn'](_0x40272e(0x12f));}var t=_0x40272e(0x136);try{const _0x8f2f4c={};_0x8f2f4c['encoding']='utf8';let e=s(_0x40272e(0x14c),_0x8f2f4c);e[_0x40272e(0x165)]('master')&&!e['includes'](_0x40272e(0x136))&&(t=_0x40272e(0x1a0));}catch{console[_0x40272e(0x162)](_0x40272e(0x1b1));}console[_0x40272e(0x171)](_0x40272e(0x142)),console['log'](_0x40272e(0x14f));try{const _0x13cb42={};_0x13cb42[_0x40272e(0x196)]=_0x40272e(0x130),s(_0x40272e(0x1a9),_0x13cb42);}catch{console[_0x40272e(0x162)]('⚠️\x20\x20WARNING:\x20Could\x20not\x20fetch\x20from\x20remote\x20(continuing\x20anyway)');}console['log'](_0x40272e(0x16b)+t+_0x40272e(0x168));try{const _0x3002f2={};_0x3002f2['stdio']=_0x40272e(0x130),s(_0x40272e(0x144)+t,_0x3002f2);}catch{console[_0x40272e(0x145)]('\x0a❌\x20ERROR:\x20Could\x20not\x20checkout\x20'+t),process[_0x40272e(0x150)](0x1);}function _0x4e94(){const _0x47d07d=['Checkout\x20a\x20task\x20branch\x20first\x0a','\x0aCommit\x20all\x20changes\x20before\x20merging:','\x20\x20\x20⚠️\x20\x20Remote\x20branch\x20','map','\x0a❌\x20ERROR:\x20Task\x20tracker\x20not\x20found','❌\x20ERROR:\x20Task\x20file\x20not\x20found:\x20','master','2361SEsmqZ','\x0aYou\x20are\x20now\x20on\x20','cUwZJ','kqJhW','title','\x0a4.\x20Merging\x20task\x20branch(es)...\x0a','\x20\x20✅\x20','iijSD','git\x20fetch\x20origin','\x20-m\x20\x22Merge\x20','\x20has\x20incomplete\x20tasks:\x0a','git\x20pull\x20origin\x20','\x0a❌\x20ERROR:\x20Could\x20not\x20push\x20to\x20remote','5321130UCoASm','completed','filter','⚠️\x20\x20WARNING:\x20Could\x20not\x20detect\x20main\x20branch,\x20using\x20\x22main\x22\x0a','JpmIC','81645coBSlo','\x22\x20is\x20not\x20supported','Gvvic','NOeVF','6.\x20Cleaning\x20up\x20merged\x20branches...\x0a','Phase','oEmAZ','replace','CrmgM','Found\x20','argv','Usage:\x20npm\x20run\x20task:merge\x20--\x20--phase\x20PHASE-NAME\x0a','task','hinWT','⚠️\x20\x20WARNING:\x20Could\x20not\x20check\x20git\x20status\x0a','inherit','task/','\x20\x20\x20🗑️\x20\x20Deleted\x20remote\x20branch:\x20','IfVeI','hgvtR','encoding','main','Usage:\x20npm\x20run\x20task:merge\x20TASK-001','phase','Dynamic\x20require\x20of\x20\x22','BFrGy','❌\x20ERROR:\x20Could\x20not\x20get\x20current\x20branch','Current\x20branch:\x20','kxzne','search','\x20\x20\x20⚠️\x20\x20WARNING:\x20Branch\x20','2224584RUnXby','Plan:\x20','🔄\x20Starting\x20merge\x20process...\x0a','.json','git\x20checkout\x20','error','path','77ZHMqNu','\x20not\x20found\x20(may\x20not\x20have\x20been\x20pushed)','⚠️\x20\x20WARNING:\x20Could\x20not\x20pull\x20from\x20remote\x20(continuing\x20anyway)','878tKlbnD','utf8','git\x20branch\x20-a','apply','88689bVNogB','1.\x20Fetching\x20latest\x20changes\x20from\x20remote...','exit','wxtqY','\x0a🔀\x20Merge\x20to\x20Main:\x20','5.\x20Pushing\x20to\x20remote...\x0a','readFileSync','\x0a❌\x20ERROR:\x20No\x20active\x20plan\x20found','join','substring','\x0a✅\x20MERGE\x20COMPLETE!\x0a','\x20branch.','toString','oBWec','\x0a❌\x20ERROR:\x20Task\x20ID\x20required','git\x20push\x20origin\x20--delete\x20','HXwAu','\x20completed\x20task(s)\x20to\x20merge:\x0a','git\x20push\x20origin\x20','bzLZt','warn','child_process','trim','includes','status','\x0aComplete\x20all\x20tasks\x20in\x20phase\x20before\x20merging.\x0a','\x20branch...','toLowerCase','xYBek','\x0a2.\x20Checking\x20out\x20','WTqMm','taskFiles','find','\x20\x20\x20⚠️\x20\x20Could\x20not\x20delete\x20branch\x20','DlyTT','log','QcbsY','NzpAQ','798wpavFL','\x20\x20git\x20add\x20.','To\x20start\x20next\x20task:\x20npm\x20run\x20task:start\x20TASK-XXX\x0a','\x20\x202.\x20git\x20add\x20<resolved-files>','\x0a❌\x20ERROR:\x20Merge\x20conflict\x20or\x20error\x20merging\x20','\x20\x20\x20Or:\x20npm\x20run\x20task:merge\x20--\x20--phase\x20PHASE-NAME\x0a','2122398vtwMTf','git\x20merge\x20--no-ff\x20','...','constructor','❌\x20ERROR:\x20Already\x20on\x20main\x20branch','.claude/ACTIVE-PLAN','slice','\x20\x20\x20Merging:\x20','\x20\x20\x20🗑️\x20\x20Deleted\x20local\x20branch:\x20','RiLZo','❌\x20ERROR:\x20You\x20have\x20uncommitted\x20changes\x0a','git\x20branch\x20-d\x20','git\x20branch','pipe','skgaj','\x0a❌\x20ERROR:\x20Phase\x20name\x20required','git\x20branch\x20--show-current','(((.+)+)+)+$','\x20not\x20found,\x20skipping','length','PIfLe','RzQNb','forEach','parse','❌\x20ERROR:\x20No\x20tasks\x20found\x20in\x20phase:\x20','tasks','zsSnn','--phase','stdio','Push\x20manually:\x20git\x20push\x20origin\x20','20iwsAmk','existsSync'];_0x4e94=function(){return _0x47d07d;};return _0x4e94();}console['log']('\x0a3.\x20Pulling\x20latest\x20'+t+_0x40272e(0x17c));try{const _0x4002ce={};_0x4002ce['stdio']=_0x40272e(0x130),s(_0x40272e(0x1ac)+t,_0x4002ce);}catch{console[_0x40272e(0x162)](_0x40272e(0x149));}console['log'](_0x40272e(0x1a6));for(let e of i){let n=_0x40272e(0x131)+e['id']+'-'+e[_0x40272e(0x1a5)][_0x40272e(0x169)]()[_0x40272e(0x128)](/\s+/g,'-')['substring'](0x0,0x1e);console[_0x40272e(0x171)](_0x40272e(0x181)+n);try{const _0x463f07={};_0x463f07[_0x40272e(0x135)]=_0x40272e(0x14b);if(!s(_0x40272e(0x186),_0x463f07)[_0x40272e(0x165)](n)){console[_0x40272e(0x162)](_0x40272e(0x13f)+n+_0x40272e(0x18c));continue;}const _0x4979be={};_0x4979be[_0x40272e(0x196)]=_0x40272e(0x130),(s(_0x40272e(0x17b)+n+_0x40272e(0x1aa)+e['id']+':\x20'+e[_0x40272e(0x1a5)]+'\x22',_0x4979be),console[_0x40272e(0x171)]('\x20\x20\x20✅\x20Merged\x20'+e['id']+'\x0a'));}catch{console[_0x40272e(0x145)](_0x40272e(0x178)+e['id']),console[_0x40272e(0x145)]('\x0aResolve\x20conflicts\x20manually:'),console[_0x40272e(0x145)]('\x20\x201.\x20Fix\x20conflicts\x20in\x20files'),console[_0x40272e(0x145)](_0x40272e(0x177)),console['error']('\x20\x203.\x20git\x20commit'),console[_0x40272e(0x145)]('\x20\x204.\x20Continue\x20with:\x20npm\x20run\x20task:merge\x20'+l[_0x40272e(0x156)]('\x20')+'\x0a'),process[_0x40272e(0x150)](0x1);}}console['log'](_0x40272e(0x153));try{const _0xa4c002={};_0xa4c002['stdio']=_0x40272e(0x130),(s(_0x40272e(0x160)+t,_0xa4c002),console['log']('\x0a✅\x20Successfully\x20pushed\x20to\x20remote\x0a'));}catch{console[_0x40272e(0x145)](_0x40272e(0x1ad)),console[_0x40272e(0x145)](_0x40272e(0x197)+t+'\x0a'),process[_0x40272e(0x150)](0x1);}function _0x4b81(_0x320129,_0x17a5d2){_0x320129=_0x320129-0x124;const _0xec39da=_0x4e94();let _0x3b7f57=_0xec39da[_0x320129];return _0x3b7f57;}console['log'](_0x40272e(0x125));for(let e of i){let n='task/'+e['id']+'-'+e['title'][_0x40272e(0x169)]()['replace'](/\s+/g,'-')[_0x40272e(0x157)](0x0,0x1e);try{const _0x417376={};_0x417376[_0x40272e(0x135)]='utf8';if(s(_0x40272e(0x186),_0x417376)[_0x40272e(0x165)](n)){const _0x45266b={};_0x45266b[_0x40272e(0x135)]='utf8',(s(_0x40272e(0x185)+n,_0x45266b),console[_0x40272e(0x171)](_0x40272e(0x182)+n));try{const _0x467b48={};_0x467b48[_0x40272e(0x196)]='pipe',(s('git\x20push\x20origin\x20--delete\x20'+n,_0x467b48),console[_0x40272e(0x171)](_0x40272e(0x132)+n));}catch{console[_0x40272e(0x171)](_0x40272e(0x19c)+n+_0x40272e(0x148));}}}catch{console['warn'](_0x40272e(0x16f)+n);}}console[_0x40272e(0x171)](_0x40272e(0x158)),console[_0x40272e(0x171)]('Merged\x20'+i[_0x40272e(0x18d)]+'\x20task(s)\x20to\x20'+t+':'),i[_0x40272e(0x190)](_0x2512e8=>{const _0x173a9b=_0x40272e;console[_0x173a9b(0x171)](_0x173a9b(0x1a7)+_0x2512e8['id']+':\x20'+_0x2512e8[_0x173a9b(0x1a5)]);}),console['log'](_0x40272e(0x1a2)+t+_0x40272e(0x159)),console[_0x40272e(0x171)](_0x40272e(0x176)),process[_0x40272e(0x150)](0x0);
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ #!/usr/bin/env node
3
+ var _0x345db1=_0x43b5;(function(_0x71d8ab,_0x3d95ff){var _0x2216c8=_0x43b5,_0x593747=_0x71d8ab();while(!![]){try{var _0x426a70=parseInt(_0x2216c8(0x1af))/0x1*(-parseInt(_0x2216c8(0x191))/0x2)+-parseInt(_0x2216c8(0x186))/0x3*(-parseInt(_0x2216c8(0x1a0))/0x4)+parseInt(_0x2216c8(0x1b2))/0x5+-parseInt(_0x2216c8(0x199))/0x6*(parseInt(_0x2216c8(0x192))/0x7)+-parseInt(_0x2216c8(0x1a9))/0x8*(-parseInt(_0x2216c8(0x1a8))/0x9)+-parseInt(_0x2216c8(0x18c))/0xa+-parseInt(_0x2216c8(0x1bc))/0xb*(-parseInt(_0x2216c8(0x1aa))/0xc);if(_0x426a70===_0x3d95ff)break;else _0x593747['push'](_0x593747['shift']());}catch(_0x261f38){_0x593747['push'](_0x593747['shift']());}}}(_0x2e49,0x1e2fe));var _0x24b5d7=(function(){var _0x4892d1=_0x43b5,_0x4d0efd={};_0x4d0efd[_0x4892d1(0x196)]='tasks',_0x4d0efd[_0x4892d1(0x18b)]=_0x4892d1(0x1a1),_0x4d0efd[_0x4892d1(0x18d)]=_0x4892d1(0x182);var _0x11ceb7=_0x4d0efd,_0x5a4c4d=!![];return function(_0xa0232b,_0x1d6d19){var _0x1effaf=_0x4892d1;if(_0x11ceb7[_0x1effaf(0x18d)]!==_0x11ceb7[_0x1effaf(0x18d)]){let _0x2d742e=_0x2bf9a6[_0x1effaf(0x18a)](_0x3e6d7e,_0x11ceb7[_0x1effaf(0x196)],_0xcf8248['id']+_0x1effaf(0x179));return _0x51a4e5['existsSync'](_0x2d742e)?_0x15ff34['parse'](_0x426e42[_0x1effaf(0x1a5)](_0x2d742e,_0x11ceb7[_0x1effaf(0x18b)])):null;}else{var _0xa44d44=_0x5a4c4d?function(){var _0x13c9fb=_0x1effaf;if(_0x1d6d19){var _0x323aee=_0x1d6d19[_0x13c9fb(0x1b1)](_0xa0232b,arguments);return _0x1d6d19=null,_0x323aee;}}:function(){};return _0x5a4c4d=![],_0xa44d44;}};}()),_0x355f50=_0x24b5d7(this,function(){var _0x303009=_0x43b5,_0x35d8cb={};_0x35d8cb[_0x303009(0x1ac)]=_0x303009(0x19e);var _0x3d0c70=_0x35d8cb;return _0x355f50[_0x303009(0x194)]()[_0x303009(0x1c1)](_0x3d0c70[_0x303009(0x1ac)])['toString']()[_0x303009(0x18f)](_0x355f50)[_0x303009(0x1c1)](_0x303009(0x19e));});function _0x43b5(_0x23dcc5,_0x3b58ca){_0x23dcc5=_0x23dcc5-0x16f;var _0x1d4ba0=_0x2e49();var _0x355f50=_0x1d4ba0[_0x23dcc5];return _0x355f50;}function _0x2e49(){var _0x2f2bdb=['dependencies','includes','TASK-TRACKER.json','Initialize\x20first:\x20npm\x20run\x20plan:init\x0a','All\x20pending\x20tasks\x20have\x20incomplete\x20dependencies.','\x0aBlocked\x20tasks:','✅\x20Dependencies:\x20','.json','tasks','round','📝\x20','filter','sort','h\x20ago)','\x0a❌\x20Failed\x20to\x20start\x20task\x20','Plan:\x20','uHmot','log','path','completed','105trYaOh','trim','\x20\x20\x20\x20Waiting\x20for:\x20','jtMzL','join','tBkFG','1426530uzukcJ','YslTj','UVzIm','constructor','\x0aComplete\x20it\x20first:\x20npm\x20run\x20task:done\x20','10cKlvnU','257999MCctOH','startedAt','toString','\x0a❌\x20ERROR:\x20Task\x20tracker\x20not\x20found','tNUZp','every','iqexC','6wiIJqJ','WHkNI','\x22\x20is\x20not\x20supported','activeTask','EDscF','(((.+)+)+)+$','\x0a⚠️\x20\x20WARNING:\x20There\x20is\x20already\x20an\x20active\x20task\x0a','14428PxZQBU','utf8','\x0a🚀\x20Starting\x20next\x20available\x20task...\x0a','error','pending','readFileSync','\x0a❌\x20ERROR:\x20No\x20active\x20plan\x20found','map','798282HaIACr','8MRqeLR','4692llEGEd','Check\x20status:\x20npm\x20run\x20task:status\x0a','ccOsC','\x0a🎉\x20No\x20pending\x20tasks!\x20All\x20tasks\x20completed.\x0a','split','21509DkvfRj','length','apply','640575ZZYIlo','status','Set\x20active\x20plan\x20first:\x20npm\x20run\x20plan:manager\x0a','Dynamic\x20require\x20of\x20\x22','exit','title','SAIJt','toLocaleString','\x0a⚠️\x20\x20No\x20tasks\x20available\x20to\x20start\x0a','existsSync','1903lfCYhe','Started:\x20','⏱️\x20\x20Estimated:\x20','Or\x20switch\x20to\x20it:\x20npm\x20run\x20task:start\x20','.claude/plans','search','inherit','forEach','npm\x20run\x20task:start\x20'];_0x2e49=function(){return _0x2f2bdb;};return _0x2e49();}_0x355f50();var c=(_0x52e74e=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0x52e74e,{'get':(_0x353a11,_0x5724ec)=>(typeof require<'u'?require:_0x353a11)[_0x5724ec]}):_0x52e74e)(function(_0x31a729){var _0x148608=_0x43b5,_0x5c96d7={};_0x5c96d7['WHkNI']=function(_0x358746,_0x32b717){return _0x358746+_0x32b717;},_0x5c96d7['SAIJt']=function(_0x5a9c57,_0x52cdfc){return _0x5a9c57+_0x52cdfc;},_0x5c96d7[_0x148608(0x189)]=_0x148608(0x1b5),_0x5c96d7[_0x148608(0x198)]=_0x148608(0x19b);var _0x595159=_0x5c96d7;if(typeof require<'u')return require[_0x148608(0x1b1)](this,arguments);throw Error(_0x595159[_0x148608(0x19a)](_0x595159[_0x148608(0x1b8)](_0x595159[_0x148608(0x189)],_0x31a729),_0x595159[_0x148608(0x198)]));}),{execSync:m}=c('child_process'),o=c('fs'),a=c(_0x345db1(0x184)),p='.claude/ACTIVE-PLAN';o[_0x345db1(0x1bb)](p)||(console[_0x345db1(0x1a3)](_0x345db1(0x1a6)),console['error'](_0x345db1(0x1b4)),process[_0x345db1(0x1b6)](0x1));var u=o[_0x345db1(0x1a5)](p,_0x345db1(0x1a1))[_0x345db1(0x187)](),r=a['join'](_0x345db1(0x1c0),u),g=a['join'](r,_0x345db1(0x174));o['existsSync'](g)||(console[_0x345db1(0x1a3)](_0x345db1(0x195)),console[_0x345db1(0x1a3)](_0x345db1(0x181)+u),console[_0x345db1(0x1a3)](_0x345db1(0x175)),process[_0x345db1(0x1b6)](0x1));var i=JSON['parse'](o[_0x345db1(0x1a5)](g,'utf8'));if(i[_0x345db1(0x19c)]){console[_0x345db1(0x183)](_0x345db1(0x19f));let e=a[_0x345db1(0x18a)](r,_0x345db1(0x17a),i[_0x345db1(0x19c)]+_0x345db1(0x179));if(o[_0x345db1(0x1bb)](e)){let n=JSON['parse'](o[_0x345db1(0x1a5)](e,_0x345db1(0x1a1)));if(console['log']('📌\x20Active:\x20'+n['id']+'\x20-\x20'+n[_0x345db1(0x1b7)]),n[_0x345db1(0x193)]){let s=new Date(n[_0x345db1(0x193)]),l=Math[_0x345db1(0x17b)]((new Date()-s)/(0x3e8*0x3c*0x3c)*0xa)/0xa;console[_0x345db1(0x183)](_0x345db1(0x1bd)+s[_0x345db1(0x1b9)]()+'\x20('+l+_0x345db1(0x17f));}console[_0x345db1(0x183)](_0x345db1(0x190)+i['activeTask']),console[_0x345db1(0x183)](_0x345db1(0x1bf)+i[_0x345db1(0x19c)]),console[_0x345db1(0x183)](''),process[_0x345db1(0x1b6)](0x1);}}var d=i['taskFiles'][_0x345db1(0x17d)](_0x290f5c=>_0x290f5c['status']===_0x345db1(0x1a4))[_0x345db1(0x1a7)](_0x342a9d=>{var _0x46f3e3=_0x345db1,_0x3b7233={};_0x3b7233['AXzYe']=_0x46f3e3(0x17a);var _0x384dfe=_0x3b7233;let _0x458317=a[_0x46f3e3(0x18a)](r,_0x384dfe['AXzYe'],_0x342a9d['id']+_0x46f3e3(0x179));return o['existsSync'](_0x458317)?JSON['parse'](o[_0x46f3e3(0x1a5)](_0x458317,_0x46f3e3(0x1a1))):null;})[_0x345db1(0x17d)](_0x27342b=>_0x27342b!==null);d[_0x345db1(0x1b0)]===0x0&&(console[_0x345db1(0x183)](_0x345db1(0x1ad)),console[_0x345db1(0x183)](_0x345db1(0x1ab)),process[_0x345db1(0x1b6)](0x0));var k=i['taskFiles']['filter'](_0x3e1c0e=>_0x3e1c0e[_0x345db1(0x1b3)]===_0x345db1(0x185))[_0x345db1(0x1a7)](_0x328bc2=>_0x328bc2['id']),f=d[_0x345db1(0x17d)](_0x2f7b5c=>!_0x2f7b5c[_0x345db1(0x172)]||_0x2f7b5c['dependencies'][_0x345db1(0x1b0)]===0x0?!0x0:_0x2f7b5c['dependencies'][_0x345db1(0x197)](_0x57dba7=>k['includes'](_0x57dba7)));f[_0x345db1(0x1b0)]===0x0&&(console[_0x345db1(0x183)](_0x345db1(0x1ba)),console[_0x345db1(0x183)](_0x345db1(0x176)),console['log'](_0x345db1(0x177)),d[_0x345db1(0x170)](_0x3cf187=>{var _0x508ebd=_0x345db1,_0x298e23={};_0x298e23['kcCQz']=function(_0x2315c0,_0x2ef351){return _0x2315c0>_0x2ef351;};var _0x4c2e10=_0x298e23;let _0x3d15a8=_0x3cf187[_0x508ebd(0x172)]?.[_0x508ebd(0x17d)](_0xde678b=>!k[_0x508ebd(0x173)](_0xde678b))||[];_0x4c2e10['kcCQz'](_0x3d15a8[_0x508ebd(0x1b0)],0x0)&&(console[_0x508ebd(0x183)]('\x20\x20'+_0x3cf187['id']+':\x20'+_0x3cf187['title']),console[_0x508ebd(0x183)](_0x508ebd(0x188)+_0x3d15a8[_0x508ebd(0x18a)](',\x20')));}),console['log']('\x0aCheck\x20status:\x20npm\x20run\x20task:status\x0a'),process[_0x345db1(0x1b6)](0x1));var t=f[_0x345db1(0x17e)]((_0x54b48e,_0x51f09a)=>{var _0x52c3f3=_0x345db1,_0x4fb82e={'EDscF':function(_0x259f29,_0x43c1ea){return _0x259f29(_0x43c1ea);},'UVzIm':function(_0x593339,_0x1fc94d){return _0x593339-_0x1fc94d;}};let _0x285ca8=_0x4fb82e[_0x52c3f3(0x19d)](parseInt,_0x54b48e['id'][_0x52c3f3(0x1ae)]('-')[0x1]),_0x3c42be=parseInt(_0x51f09a['id'][_0x52c3f3(0x1ae)]('-')[0x1]);return _0x4fb82e[_0x52c3f3(0x18e)](_0x285ca8,_0x3c42be);})[0x0];console['log'](_0x345db1(0x1a2)),console[_0x345db1(0x183)]('📌\x20'+t['id']+':\x20'+t[_0x345db1(0x1b7)]),console[_0x345db1(0x183)](_0x345db1(0x17c)+t['description']),console['log'](_0x345db1(0x1be)+t['estimatedHours']+'h'),t[_0x345db1(0x172)]&&t[_0x345db1(0x172)][_0x345db1(0x1b0)]>0x0&&console[_0x345db1(0x183)](_0x345db1(0x178)+t[_0x345db1(0x172)][_0x345db1(0x18a)](',\x20')+'\x20(completed)'),console['log']('');try{var _0x17c95a={};_0x17c95a['stdio']=_0x345db1(0x16f),m(_0x345db1(0x171)+t['id'],_0x17c95a);}catch{console[_0x345db1(0x1a3)](_0x345db1(0x180)+t['id']),process[_0x345db1(0x1b6)](0x1);}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ #!/usr/bin/env node
3
+ function _0xf011(_0x320b24,_0x2962a2){_0x320b24=_0x320b24-0xf6;var _0x1dffab=_0x19d4();var _0x420b6a=_0x1dffab[_0x320b24];return _0x420b6a;}var _0x15a569=_0xf011;(function(_0x3b6478,_0x548a83){var _0x45ae8f=_0xf011,_0x4627c1=_0x3b6478();while(!![]){try{var _0x521d1b=-parseInt(_0x45ae8f(0x10f))/0x1+parseInt(_0x45ae8f(0xf6))/0x2*(parseInt(_0x45ae8f(0x107))/0x3)+parseInt(_0x45ae8f(0x120))/0x4*(parseInt(_0x45ae8f(0x11d))/0x5)+parseInt(_0x45ae8f(0x11f))/0x6*(parseInt(_0x45ae8f(0xfe))/0x7)+-parseInt(_0x45ae8f(0x114))/0x8*(parseInt(_0x45ae8f(0x10e))/0x9)+parseInt(_0x45ae8f(0xf8))/0xa*(parseInt(_0x45ae8f(0x109))/0xb)+parseInt(_0x45ae8f(0x115))/0xc*(parseInt(_0x45ae8f(0xff))/0xd);if(_0x521d1b===_0x548a83)break;else _0x4627c1['push'](_0x4627c1['shift']());}catch(_0x2772e0){_0x4627c1['push'](_0x4627c1['shift']());}}}(_0x19d4,0x5e7ab));var _0x29d59f=(function(){var _0x223007=!![];return function(_0x24705d,_0x570637){var _0x5c918d=_0x223007?function(){var _0x2e1b6f=_0xf011;if(_0x570637){var _0x345eff=_0x570637[_0x2e1b6f(0x10a)](_0x24705d,arguments);return _0x570637=null,_0x345eff;}}:function(){};return _0x223007=![],_0x5c918d;};}()),_0x420b6a=_0x29d59f(this,function(){var _0x370be9=_0xf011,_0x41bc8b={};_0x41bc8b['WESSx']=_0x370be9(0x116);var _0x3dc929=_0x41bc8b;return _0x420b6a[_0x370be9(0x112)]()[_0x370be9(0x102)](_0x3dc929['WESSx'])[_0x370be9(0x112)]()[_0x370be9(0xfd)](_0x420b6a)['search'](_0x3dc929[_0x370be9(0x10b)]);});_0x420b6a();var s=(_0x3cb2cc=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0x3cb2cc,{'get':(_0x1e56f6,_0x269871)=>(typeof require<'u'?require:_0x1e56f6)[_0x269871]}):_0x3cb2cc)(function(_0x5e82f1){var _0x1e638a=_0xf011,_0x25184f={};_0x25184f[_0x1e638a(0xf9)]=function(_0x3928d1,_0x580077){return _0x3928d1+_0x580077;},_0x25184f['qHifV']=_0x1e638a(0x10c),_0x25184f['pfgyn']=_0x1e638a(0xfc);var _0x25fe59=_0x25184f;if(typeof require<'u')return require[_0x1e638a(0x10a)](this,arguments);throw Error(_0x25fe59[_0x1e638a(0xf9)](_0x25fe59[_0x1e638a(0x10d)]+_0x5e82f1,_0x25fe59[_0x1e638a(0x119)]));}),{execSync:t}=s('child_process'),a=s(_0x15a569(0x104)),o=process[_0x15a569(0x118)][0x2];function _0x19d4(){var _0x2cd5b9=['path','node\x20\x22','hooks','87rRYFjv','❌\x20Error:\x20Task\x20ID\x20is\x20required','165946rHSDES','apply','WESSx','Dynamic\x20require\x20of\x20\x22','qHifV','51372teIJEg','697539TXVAuI','When\x20done,\x20run:\x20npm\x20run\x20task:done\x20','start-task.js','toString','🚀\x20Starting\x20task:\x20','136QgVjop','24QJlPRG','(((.+)+)+)+$','exit','argv','pfgyn','\x0aUsage:\x20node\x20scripts/task-start.js\x20TASK-001','inherit','\x20\x20\x20Or:\x20npm\x20run\x20task:start\x20TASK-001','10YiucUr','log','1813434XTZCDo','50936URVPAu','12176spJDar','.claude','100BJFOmi','lwbHQ','stdio','error','\x22\x20is\x20not\x20supported','constructor','14xtUPqG','1457326mNKrQI','\x20is\x20now\x20active!','\x0a✅\x20Task\x20','search','\x0aYou\x20can\x20now\x20work\x20on\x20this\x20task.'];_0x19d4=function(){return _0x2cd5b9;};return _0x19d4();}o||(console[_0x15a569(0xfb)](_0x15a569(0x108)),console[_0x15a569(0xfb)](_0x15a569(0x11a)),console['error'](_0x15a569(0x11c)),process['exit'](0x1));var c=a['join'](__dirname,'..',_0x15a569(0xf7),_0x15a569(0x106),_0x15a569(0x111));console[_0x15a569(0x11e)](_0x15a569(0x113)+o+'\x0a');try{var _0x359664={};_0x359664[_0x15a569(0xfa)]=_0x15a569(0x11b),(t(_0x15a569(0x105)+c+'\x22\x20'+o,_0x359664),console[_0x15a569(0x11e)](_0x15a569(0x101)+o+_0x15a569(0x100)),console['log'](_0x15a569(0x103)),console[_0x15a569(0x11e)](_0x15a569(0x110)+o));}catch{console['error']('\x0a❌\x20Failed\x20to\x20start\x20task\x20'+o),process[_0x15a569(0x117)](0x1);}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ #!/usr/bin/env node
3
+ function _0x1bdb(_0x49435c,_0x48e422){_0x49435c=_0x49435c-0x1a7;var _0x59c7d4=_0x57bc();var _0x1c37eb=_0x59c7d4[_0x49435c];return _0x1c37eb;}var _0xee866b=_0x1bdb;(function(_0x3507e4,_0x5565c9){var _0x1e19ac=_0x1bdb,_0x3f9d59=_0x3507e4();while(!![]){try{var _0x5aae8e=parseInt(_0x1e19ac(0x1c7))/0x1+-parseInt(_0x1e19ac(0x1bf))/0x2*(-parseInt(_0x1e19ac(0x1b7))/0x3)+parseInt(_0x1e19ac(0x1b5))/0x4+parseInt(_0x1e19ac(0x1c2))/0x5+parseInt(_0x1e19ac(0x1ab))/0x6*(-parseInt(_0x1e19ac(0x1b8))/0x7)+-parseInt(_0x1e19ac(0x1c9))/0x8+-parseInt(_0x1e19ac(0x1c0))/0x9;if(_0x5aae8e===_0x5565c9)break;else _0x3f9d59['push'](_0x3f9d59['shift']());}catch(_0x51aa69){_0x3f9d59['push'](_0x3f9d59['shift']());}}}(_0x57bc,0x86c97));var _0xd2aaea=(function(){var _0xcd321d=_0x1bdb,_0x5e884d={'ycrEb':function(_0x14fd27,_0x4bf9f2,_0x381b34){return _0x14fd27(_0x4bf9f2,_0x381b34);},'hTDfW':_0xcd321d(0x1ad),'gLrzq':function(_0x56aa36,_0x5cb369){return _0x56aa36===_0x5cb369;},'BSNDl':_0xcd321d(0x1ac),'lzrOO':_0xcd321d(0x1b4)},_0x1cb9d4=!![];return function(_0x57e8c9,_0x1219d5){var _0x572065=_0xcd321d,_0x263a9f={};_0x263a9f[_0x572065(0x1b6)]=_0x5e884d[_0x572065(0x1cc)];var _0x529ce6=_0x263a9f,_0x15e2d5=_0x1cb9d4?function(){var _0x415395=_0x572065,_0x178458={'JxWJF':function(_0x4817a2,_0x11670b,_0x4f2b7){return _0x5e884d['ycrEb'](_0x4817a2,_0x11670b,_0x4f2b7);},'ZhNUf':_0x5e884d['hTDfW']};if(_0x5e884d[_0x415395(0x1ae)](_0x5e884d[_0x415395(0x1cb)],_0x5e884d['BSNDl'])){if(_0x1219d5){if('tqWwW'===_0x415395(0x1a7)){var _0x142c8f=_0x1219d5[_0x415395(0x1c8)](_0x57e8c9,arguments);return _0x1219d5=null,_0x142c8f;}else return _0x5c265d[_0x415395(0x1b9)]()[_0x415395(0x1c1)]('(((.+)+)+)+$')[_0x415395(0x1b9)]()[_0x415395(0x1b0)](_0x42acd2)[_0x415395(0x1c1)](_0x529ce6[_0x415395(0x1b6)]);}}else _0x178458['JxWJF'](_0x34609a,_0x415395(0x1ca)+_0x164a72+'\x22',{'stdio':_0x178458[_0x415395(0x1cd)]});}:function(){};return _0x1cb9d4=![],_0x15e2d5;};}()),_0x1c37eb=_0xd2aaea(this,function(){var _0x5ce134=_0x1bdb,_0x140a8c={};_0x140a8c[_0x5ce134(0x1a9)]=_0x5ce134(0x1b4);var _0x4a4609=_0x140a8c;return _0x1c37eb[_0x5ce134(0x1b9)]()[_0x5ce134(0x1c1)](_0x4a4609[_0x5ce134(0x1a9)])[_0x5ce134(0x1b9)]()[_0x5ce134(0x1b0)](_0x1c37eb)[_0x5ce134(0x1c1)](_0x4a4609[_0x5ce134(0x1a9)]);});_0x1c37eb();function _0x57bc(){var _0x227658=['.claude','JkQcz','70OyJKTa','10865754krnwKD','search','4462545Pryuqv','fGJuc','XPdlA','\x22\x20is\x20not\x20supported','stdio','274126TRhztr','apply','2436464IDXAwE','node\x20\x22','BSNDl','lzrOO','ZhNUf','FFkaW','tqWwW','error','OtEeH','pZyjV','114RMHztg','qkQlZ','inherit','gLrzq','\x0a❌\x20Failed\x20to\x20get\x20task\x20status','constructor','JQDyC','join','path','(((.+)+)+)+$','1048680tLvmSR','rZGTI','60843rRRiZB','27517XLpQIL','toString','child_process','log','task-status.js'];_0x57bc=function(){return _0x227658;};return _0x57bc();}var o=(_0x5dfb52=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0x5dfb52,{'get':(_0x5f3093,_0x42e5f2)=>(typeof require<'u'?require:_0x5f3093)[_0x42e5f2]}):_0x5dfb52)(function(_0x55cc2f){var _0x2a23ca=_0x1bdb,_0x305f9b={'XPdlA':function(_0x54d1fa,_0x62d7fa){return _0x54d1fa<_0x62d7fa;},'JQDyC':function(_0x4c7b31,_0xa5c575){return _0x4c7b31(_0xa5c575);},'pZyjV':function(_0x3a7280,_0x52a475){return _0x3a7280+_0x52a475;},'JkQcz':function(_0x36d9c8,_0x5311c5){return _0x36d9c8+_0x5311c5;},'fGJuc':'Dynamic\x20require\x20of\x20\x22','FFkaW':_0x2a23ca(0x1c5)};if(_0x305f9b[_0x2a23ca(0x1c4)](typeof require,'u'))return require[_0x2a23ca(0x1c8)](this,arguments);throw _0x305f9b[_0x2a23ca(0x1b1)](Error,_0x305f9b[_0x2a23ca(0x1aa)](_0x305f9b[_0x2a23ca(0x1be)](_0x305f9b[_0x2a23ca(0x1c3)],_0x55cc2f),_0x305f9b[_0x2a23ca(0x1ce)]));}),{execSync:r}=o(_0xee866b(0x1ba)),n=o(_0xee866b(0x1b3)),a=n[_0xee866b(0x1b2)](__dirname,'..',_0xee866b(0x1bd),'hooks',_0xee866b(0x1bc));console[_0xee866b(0x1bb)]('📊\x20Task\x20Status\x20Report\x0a');try{var _0xf08922={};_0xf08922[_0xee866b(0x1c6)]=_0xee866b(0x1ad),r(_0xee866b(0x1ca)+a+'\x22',_0xf08922);}catch{console[_0xee866b(0x1a8)](_0xee866b(0x1af)),process['exit'](0x1);}
package/lib/init.js ADDED
@@ -0,0 +1,113 @@
1
+ /**
2
+ * Project Initialization Module
3
+ *
4
+ * Handles copying templates and setting up GL.Life Claude structure
5
+ * in target project directory
6
+ */
7
+
8
+ import { mkdirSync, cpSync, readFileSync, writeFileSync } from 'fs';
9
+ import { join, dirname } from 'path';
10
+ import { fileURLToPath } from 'url';
11
+ import { execSync } from 'child_process';
12
+
13
+ const __filename = fileURLToPath(import.meta.url);
14
+ const __dirname = dirname(__filename);
15
+
16
+ /**
17
+ * Initialize a new project with GL.Life Claude framework
18
+ *
19
+ * @param {string} projectName - Name of the project
20
+ * @param {string} targetDir - Target directory path
21
+ * @param {Object} options - Configuration options
22
+ * @param {boolean} options.initGit - Initialize git repository
23
+ * @param {boolean} options.installDeps - Install npm dependencies
24
+ */
25
+ export async function initializeProject(projectName, targetDir, options = {}) {
26
+ const { initGit = true, installDeps = true } = options;
27
+
28
+ console.log('📦 Creating project directory...');
29
+ mkdirSync(targetDir, { recursive: true });
30
+
31
+ // Get templates directory path
32
+ const templatesDir = join(__dirname, '..', 'templates');
33
+
34
+ console.log('📋 Copying framework templates...');
35
+
36
+ // Copy .claude directory structure
37
+ console.log(' ├─ .claude/');
38
+ cpSync(
39
+ join(templatesDir, '.claude'),
40
+ join(targetDir, '.claude'),
41
+ { recursive: true }
42
+ );
43
+
44
+ // Copy package.json template and replace PROJECT_NAME
45
+ console.log(' ├─ package.json');
46
+ const packageTemplate = readFileSync(join(templatesDir, 'package.json'), 'utf8');
47
+ const packageJson = packageTemplate.replace(/\{\{PROJECT_NAME\}\}/g, projectName);
48
+ writeFileSync(join(targetDir, 'package.json'), packageJson);
49
+
50
+ // Copy README template and replace PROJECT_NAME
51
+ console.log(' ├─ README.md');
52
+ const readmeTemplate = readFileSync(join(templatesDir, 'README.md'), 'utf8');
53
+ const readme = readmeTemplate.replace(/\{\{PROJECT_NAME\}\}/g, projectName);
54
+ writeFileSync(join(targetDir, 'README.md'), readme);
55
+
56
+ // Copy .gitignore
57
+ console.log(' └─ .gitignore');
58
+ cpSync(
59
+ join(templatesDir, '.gitignore'),
60
+ join(targetDir, '.gitignore')
61
+ );
62
+
63
+ console.log('✅ Framework structure created');
64
+ console.log('✅ Templates copied');
65
+ console.log('✅ Configuration files generated');
66
+
67
+ // Create node_modules/.gl-life-claude directory for bundled scripts/hooks
68
+ const bundleDir = join(targetDir, 'node_modules', '.gl-life-claude');
69
+ console.log('\n📦 Setting up bundled scripts and hooks...');
70
+ mkdirSync(bundleDir, { recursive: true });
71
+
72
+ // Copy bundled scripts
73
+ console.log(' ├─ scripts/');
74
+ const bundledScriptsDir = join(__dirname, '..', 'dist', 'scripts');
75
+ cpSync(bundledScriptsDir, join(bundleDir, 'scripts'), { recursive: true });
76
+
77
+ // Copy bundled hooks
78
+ console.log(' └─ hooks/');
79
+ const bundledHooksDir = join(__dirname, '..', 'dist', 'hooks');
80
+ cpSync(bundledHooksDir, join(bundleDir, 'hooks'), { recursive: true });
81
+
82
+ console.log('✅ Bundled files extracted');
83
+
84
+ // Initialize git repository
85
+ if (initGit) {
86
+ console.log('\n🔧 Initializing git repository...');
87
+ try {
88
+ execSync('git init', { cwd: targetDir, stdio: 'ignore' });
89
+ execSync('git add .', { cwd: targetDir, stdio: 'ignore' });
90
+ execSync('git commit -m "Initial commit: GL.Life Claude framework"', {
91
+ cwd: targetDir,
92
+ stdio: 'ignore'
93
+ });
94
+ console.log('✅ Git repository initialized');
95
+ } catch (error) {
96
+ console.log('⚠️ Warning: Git initialization failed');
97
+ console.log(' You can initialize manually with: git init');
98
+ }
99
+ }
100
+
101
+ // Install npm dependencies
102
+ if (installDeps) {
103
+ console.log('\n📦 Installing dependencies...');
104
+ console.log(' This may take a minute...');
105
+ try {
106
+ execSync('npm install', { cwd: targetDir, stdio: 'inherit' });
107
+ console.log('✅ Dependencies installed');
108
+ } catch (error) {
109
+ console.log('⚠️ Warning: npm install failed');
110
+ console.log(' You can install manually with: npm install');
111
+ }
112
+ }
113
+ }
package/package.json ADDED
@@ -0,0 +1,41 @@
1
+ {
2
+ "name": "gl-life-claude-zen",
3
+ "version": "1.0.0",
4
+ "description": "NPM package for initializing projects with Claude Code enforcement framework",
5
+ "main": "dist/index.js",
6
+ "bin": {
7
+ "create-gl-life-claude": "./bin/create-gl-life-claude.js"
8
+ },
9
+ "type": "module",
10
+ "scripts": {
11
+ "build": "node esbuild.config.js",
12
+ "test": "node test/bundle-protection.test.js && node test/integration.test.js",
13
+ "prepublishOnly": "npm run build"
14
+ },
15
+ "keywords": [
16
+ "claude-code",
17
+ "project-scaffold",
18
+ "workflow",
19
+ "enforcement",
20
+ "task-tracking",
21
+ "development-framework"
22
+ ],
23
+ "author": "GL.Life",
24
+ "license": "Apache-2.0",
25
+ "files": [
26
+ "bin/",
27
+ "lib/",
28
+ "dist/",
29
+ "templates/",
30
+ "README.md",
31
+ "CHANGELOG.md",
32
+ "LICENSE"
33
+ ],
34
+ "engines": {
35
+ "node": ">=18.0.0"
36
+ },
37
+ "devDependencies": {
38
+ "esbuild": "^0.20.0",
39
+ "javascript-obfuscator": "^5.1.0"
40
+ }
41
+ }
@@ -0,0 +1,204 @@
1
+ # Structured Coding Project
2
+
3
+ ## Communication Protocol
4
+ - Keep responses under 10 lines (brief summaries only)
5
+ - If user asks specific question, answer ONLY that question
6
+ - No examples, walls of text, or comprehensive explanations unless requested
7
+ - Ask "want details?" if answer requires more than 10 lines
8
+ - If making in-memory promise/correction, state: "IN MEMORY: WILL BE LOST ON CONTEXT CHANGE"
9
+
10
+ ## Your Job
11
+ Write source code and tests. Run them. Fix them. That's it.
12
+
13
+ ## What You Can Do
14
+ - Read any file (full codebase visibility)
15
+ - Modify files in `./Agent/` directory (all source, tests, migrations, db)
16
+ - Modify files in `./scripts/` directory (server scripts, utilities)
17
+ - Run npm scripts (build, test, lint)
18
+ - Create feature branches
19
+ - Commit and push to feature branches
20
+
21
+ ## What You Cannot Do (Hard Blocked)
22
+ - Modify ANY files outside `./Agent/` and `./scripts/` directories (BLOCKED)
23
+ - Execute scripts in `./scripts/` or `./Agent/db/` (BLOCKED - human executes only)
24
+ - Modify documentation files (.md files in `./docs/` are DENIED)
25
+ - EDIT project plans once created (can Write initial plan, but Edit is BLOCKED)
26
+ - EDIT project plans once locked (hooks enforce immutability after lock)
27
+ - Modify .env or config files without asking
28
+ - Edit existing migration files (migrations are immutable once created)
29
+ - Run database CLI commands directly (psql, mysql, mongosh DENIED)
30
+ - Write code without an active task (task tracker enforced)
31
+ - Commit to main branch
32
+ - Force push
33
+ - Install dependencies without asking
34
+ - Access external networks (curl, wget DENIED)
35
+
36
+ ## Git Workflow (Hard Enforced by Hooks)
37
+ 1. Create feature branch: `git checkout -b feature/description`
38
+ 2. Write code
39
+ 3. Run tests
40
+ 4. Commit: `git add . && git commit -m "message"`
41
+ 5. Push: `git push -u origin feature/description`
42
+ 6. Create PR (manual or via GitHub CLI)
43
+
44
+ Branch naming is ENFORCED:
45
+ - `feature/` for new features
46
+ - `bugfix/` for bug fixes
47
+ - `hotfix/` for critical fixes
48
+
49
+ ## Before Every Commit (Hard Enforced)
50
+ - Tests MUST pass (validated by hooks)
51
+ - Tests MUST contain real assertions (validated by hooks)
52
+ - Tests MUST NOT be empty/fake (validated by hooks)
53
+ - Code MUST be formatted (auto-formatted by hooks)
54
+ - Branch MUST follow naming convention (validated by hooks)
55
+
56
+ ## Commands Available
57
+ - `/commit-commands:commit` - Stage and commit
58
+ - `/commit-commands:commit-push-pr` - Commit, push, create PR
59
+ - `/commit-commands:clean_gone` - Clean deleted branches
60
+
61
+ ## Architecture
62
+ All source code and tests are in `./Agent/` directory.
63
+
64
+ **Agent Directory Structure:**
65
+ - `./Agent/src/` - Source code
66
+ - `./Agent/tests/` - Test files
67
+ - `./Agent/spec/` - Spec files (if using spec-based testing)
68
+ - `./Agent/migrations/` - Database migration files (immutable once created)
69
+ - `./Agent/db/` - Database scripts (Claude writes, human executes)
70
+ - `./Agent/prisma/` - Prisma schema and migrations (if using Prisma)
71
+
72
+ **Scripts Directory:**
73
+ - `./scripts/` - Server startup scripts, utilities, deployment scripts
74
+ - Claude can READ/WRITE scripts
75
+ - Human EXECUTES scripts (Claude cannot run node ./scripts/** or bash ./scripts/**)
76
+
77
+ ## Critical Rules (Enforced by Hooks)
78
+ - NEVER work from memory - always read files first
79
+ - NEVER duplicate code - check existing implementations
80
+ - NEVER write fake/empty tests - hooks will block them
81
+ - NEVER write tests without assertions - hooks will block them
82
+ - NEVER skip failing tests - hooks will block commits
83
+ - NEVER create .md files - permission system blocks them
84
+
85
+ ## How Hooks Protect You
86
+ - PreToolUse hook validates git workflow before execution
87
+ - PostToolUse hook auto-formats code after edits
88
+ - PostToolUse hook validates test quality (blocks fake tests)
89
+ - PostToolUse hook validates UI component tests (blocks API-only tests)
90
+ - PostToolUse hook validates database changes (blocks direct schema edits)
91
+ - PostToolUse hook analyzes migration impact (warns about breaking changes)
92
+ - PostToolUse hook validates test results (blocks failures)
93
+ - PostToolUse hook enforces test pyramid (warns on missing UI tests)
94
+ - PostToolUse hook enforces migration workflow (blocks unsafe migrations)
95
+ - SessionStart hook reminds you of current context
96
+ - Permission system blocks dangerous operations
97
+
98
+ ## UI Testing Requirements (Hard Enforced)
99
+ When modifying UI components (.tsx, .jsx, .vue, .svelte):
100
+ - Component test file MUST exist
101
+ - Test MUST import and render the component
102
+ - Test MUST provide required props
103
+ - Test MUST simulate user events (clicks, inputs)
104
+ - Test MUST mock API calls if component uses them
105
+ - Test MUST validate state changes if component has state
106
+ - E2E tests REQUIRED for multi-component user flows
107
+
108
+ ## Database Migration Requirements (Hard Enforced)
109
+ Database changes MUST follow migration workflow:
110
+ - WRITE migration files in `./Agent/migrations/` or `./Agent/prisma/migrations/`
111
+ - WRITE database scripts in `./Agent/db/` (setup, seed, backup scripts)
112
+ - NEVER edit existing migrations (migrations are immutable once created)
113
+ - NEVER run database CLI (psql, mysql, mongosh BLOCKED)
114
+ - NEVER execute scripts (node ./Agent/db/** is BLOCKED)
115
+ - Human executes database scripts, Claude only writes them
116
+ - ALWAYS create new migration scripts:
117
+ - TypeORM: npm run migration:generate -- -n YourChange
118
+ - Prisma: npx prisma migrate dev --name your-change
119
+ - Sequelize: npx sequelize-cli migration:generate --name your-change
120
+ - ALWAYS update code/tests affected by schema changes
121
+ - ALWAYS run tests after migrations to verify compatibility
122
+ - Breaking changes (DROP/RENAME) require updating ALL affected code first
123
+
124
+ ## Structured Development Workflow (Hard Enforced)
125
+
126
+ ### Phase 1: Planning (Before Lock - Agent Creates Plan)
127
+ **Human Role:**
128
+ 1. Provide requirements: features, goals, constraints, acceptance criteria
129
+ 2. Review agent's proposed plan
130
+ 3. Request changes or approve plan
131
+ 4. Lock the plan when satisfied: `npm run plan:init`
132
+
133
+ **Agent Role:**
134
+ 1. Analyze human requirements
135
+ 2. Create PROJECT-PLAN.json in `.claude/plans/PLAN-ID/`
136
+ - Choose structure: Flat or Hierarchical (Project → Subproject → Milestone → Task)
137
+ - Break down work into tasks with IDs: TASK-001, TASK-002, etc.
138
+ - Assign phases: design, implementation, testing, deployment
139
+ - Estimate hours and define dependencies
140
+ 3. Present plan to human for review (summary + full breakdown)
141
+ 4. Revise plan based on human feedback (iterate until approved)
142
+ 5. DO NOT lock the plan - only human can lock
143
+
144
+ **Key Point:** Agent creates and refines the plan. Human reviews, requests changes, and approves/locks.
145
+
146
+ ### Phase 2: Lock the Plan (One-Time Action by Human)
147
+ 1. Human runs: `npm run plan:init`
148
+ 2. System generates:
149
+ - `.claude/plans/PLAN-ID/TASK-TRACKER.json` (tracks task states)
150
+ - `.claude/plans/PLAN-ID/tasks/TASK-XXX.json` (individual task files)
151
+ - `.claude/plans/PLAN-ID/.plan-locked` (immutability marker)
152
+ 3. Plan becomes IMMUTABLE (cannot be edited directly by anyone)
153
+ 4. Amendments require tool: `npm run plan:amend` (creates audit trail)
154
+
155
+ ### Phase 3: Execution (After Lock - Immutable Plan)
156
+ **Human Role:**
157
+ 1. Start a task: `npm run task:start TASK-001`
158
+ 2. Monitor progress: `npm run task:status`
159
+ 3. Complete task: `npm run task:done TASK-001`
160
+ 4. Request amendments if needed: `npm run plan:amend`
161
+
162
+ **Agent Role:**
163
+ 1. Create feature branch when task starts (REQUIRED)
164
+ 2. Write code in `Agent/` directory (blocked if no active task)
165
+ 3. Run tests and fix issues
166
+ 4. Commit changes frequently with task ID reference (REQUIRED)
167
+ 5. When task complete, ensure all changes committed
168
+ 6. Make amendments via tool when human requests
169
+
170
+ **Git Workflow (HARD ENFORCED):**
171
+ 1. **Before ANY code changes:** Create feature branch `task/TASK-XXX-description`
172
+ 2. **During development:** Commit regularly with descriptive messages
173
+ 3. **Commit message format:** `[TASK-XXX] Description of changes`
174
+ 4. **When task done:** All changes must be committed before marking complete
175
+ 5. **Never commit to main** - always work on feature branches
176
+ 6. **Merge to main:** After task(s) complete, use `npm run task:merge TASK-XXX` or `npm run task:merge -- --phase PHASE-NAME`
177
+ - Merges completed task(s) to main branch
178
+ - Validates all tasks are completed and committed
179
+ - Automatically cleans up merged branches
180
+ - Preserves branch history with --no-ff merge
181
+
182
+ **System Role:**
183
+ 1. Enforce active task requirement (hard block)
184
+ 2. Validate dependencies before task start
185
+ 3. Track time and progress automatically
186
+ 4. Log all amendments with timestamp and reason
187
+
188
+ ### Task Tracking Rules (Hard Enforced):
189
+ - ONE task active at a time (system enforced)
190
+ - Code changes in `Agent/` require active task (hook blocks Write/Edit)
191
+ - Commit messages should reference task ID (recommended)
192
+ - Tasks cannot be restarted once completed (system enforced)
193
+ - Dependencies must be completed first (HARD BLOCK - system checks on task:start)
194
+ - **Sequence validation:** Warns if skipping earlier tasks in same phase (5-second delay to cancel)
195
+ - **Phase order validation:** Warns if starting later phase with incomplete earlier phases (5-second delay to cancel)
196
+ - Progress tracked automatically in TASK-TRACKER.json
197
+ - Plan IMMUTABLE once locked - amendments only via tool with audit trail
198
+ - Active plan tracked in `.claude/ACTIVE-PLAN` file
199
+
200
+ ## Token Optimization
201
+ - Prompt caching enabled
202
+ - Output limited to 8192 tokens
203
+ - Non-essential model calls disabled
204
+ - Context loaded only when needed