gl-life-claude-zen 1.0.3 → 1.3.1

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 (47) hide show
  1. package/CHANGELOG.md +255 -0
  2. package/README.md +166 -0
  3. package/bin/create-gl-life-claude.js +56 -1
  4. package/dist/hooks/auto-format.js +1 -1
  5. package/dist/hooks/complete-task.js +1 -1
  6. package/dist/hooks/enforce-migration-workflow.js +1 -1
  7. package/dist/hooks/enforce-structured-development.js +1 -1
  8. package/dist/hooks/enforce-test-pyramid.js +1 -1
  9. package/dist/hooks/init-task-tracker.js +1 -1
  10. package/dist/hooks/start-task.js +1 -1
  11. package/dist/hooks/task-status.js +1 -1
  12. package/dist/hooks/validate-database-changes.js +1 -1
  13. package/dist/hooks/validate-e2e-coverage.js +1 -1
  14. package/dist/hooks/validate-git-workflow.js +1 -1
  15. package/dist/hooks/validate-integration-site.js +2 -0
  16. package/dist/hooks/validate-migration-impact.js +1 -1
  17. package/dist/hooks/validate-task-completion.js +1 -1
  18. package/dist/hooks/validate-test-quality.js +1 -1
  19. package/dist/hooks/validate-test-results.js +1 -1
  20. package/dist/hooks/validate-ui-integration.js +1 -1
  21. package/dist/scripts/help.js +1 -1
  22. package/dist/scripts/plan-amend.js +1 -1
  23. package/dist/scripts/plan-create.js +1 -1
  24. package/dist/scripts/plan-help.js +1 -1
  25. package/dist/scripts/plan-init.js +1 -1
  26. package/dist/scripts/plan-manager.js +1 -1
  27. package/dist/scripts/setup-git-hooks.js +1 -1
  28. package/dist/scripts/task-done.js +1 -1
  29. package/dist/scripts/task-merge.js +1 -1
  30. package/dist/scripts/task-next.js +1 -1
  31. package/dist/scripts/task-start.js +1 -1
  32. package/dist/scripts/task-status.js +1 -1
  33. package/lib/init.js +13 -5
  34. package/package.json +7 -2
  35. package/templates/.claude/CLAUDE.md +196 -0
  36. package/templates/.claude/settings.json +40 -0
  37. package/templates/.gitignore +14 -0
  38. package/templates/README.md +4 -0
  39. package/templates/test-site/README.md +271 -0
  40. package/templates/test-site/index.html +13 -0
  41. package/templates/test-site/package.json +25 -0
  42. package/templates/test-site/server.js +125 -0
  43. package/templates/test-site/src/App.css +130 -0
  44. package/templates/test-site/src/App.jsx +78 -0
  45. package/templates/test-site/src/index.css +39 -0
  46. package/templates/test-site/src/main.jsx +10 -0
  47. package/templates/test-site/vite.config.js +12 -0
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- var _0x52df4c=_0x2628;(function(_0x48417c,_0x45e05f){var _0x51efeb=_0x2628,_0x5d9254=_0x48417c();while(!![]){try{var _0x529125=parseInt(_0x51efeb(0xec))/0x1*(-parseInt(_0x51efeb(0xfe))/0x2)+parseInt(_0x51efeb(0xfc))/0x3+-parseInt(_0x51efeb(0xf4))/0x4*(parseInt(_0x51efeb(0xf2))/0x5)+parseInt(_0x51efeb(0x111))/0x6*(parseInt(_0x51efeb(0x137))/0x7)+-parseInt(_0x51efeb(0x101))/0x8+-parseInt(_0x51efeb(0xfd))/0x9*(-parseInt(_0x51efeb(0xf9))/0xa)+parseInt(_0x51efeb(0xf6))/0xb*(parseInt(_0x51efeb(0xea))/0xc);if(_0x529125===_0x45e05f)break;else _0x5d9254['push'](_0x5d9254['shift']());}catch(_0x2e4ac4){_0x5d9254['push'](_0x5d9254['shift']());}}}(_0x883e,0x35257));var _0x47fd1e=(function(){var _0x1ea8b5=_0x2628,_0x232240={'ghZHg':function(_0x5cc2ba,_0x247851){return _0x5cc2ba>_0x247851;},'EhMLf':function(_0x548882,_0x4addbf,_0x52abf4){return _0x548882(_0x4addbf,_0x52abf4);},'Xznnd':_0x1ea8b5(0x10a),'oyZwW':_0x1ea8b5(0x116),'dZTax':_0x1ea8b5(0x135),'EFHxB':'QbbtL','EUFhA':_0x1ea8b5(0xf0),'wybId':_0x1ea8b5(0x103),'kWbRC':_0x1ea8b5(0xfb)},_0x4f4b19=!![];return function(_0x440bb2,_0x42096e){var _0x213aee=_0x1ea8b5,_0x21544c={};_0x21544c[_0x213aee(0xeb)]=_0x232240[_0x213aee(0x125)];var _0x1b3c1a=_0x21544c;if(_0x232240[_0x213aee(0x13d)]!==_0x232240[_0x213aee(0x121)]){var _0x3e1216=_0x4f4b19?function(){var _0x4b9baf=_0x213aee,_0xedc0ce={'dxcNv':function(_0x37216c,_0x37b058){var _0x5d7173=_0x2628;return _0x232240[_0x5d7173(0xed)](_0x37216c,_0x37b058);},'ivdfE':function(_0x47a7bc,_0x44200a,_0x271a9c){return _0x232240['EhMLf'](_0x47a7bc,_0x44200a,_0x271a9c);},'cLedH':'inherit'};if(_0x232240[_0x4b9baf(0x131)]===_0x232240[_0x4b9baf(0x149)]){let _0x382e07=_0x285eb5['dependencies']?.[_0x4b9baf(0x139)](_0x4512bd=>!_0x3fa534[_0x4b9baf(0x124)](_0x4512bd))||[];_0xedc0ce[_0x4b9baf(0x146)](_0x382e07['length'],0x0)&&(_0x313e6b[_0x4b9baf(0x142)]('\x20\x20'+_0xe8bfb6['id']+':\x20'+_0x41fcf8['title']),_0x312415[_0x4b9baf(0x142)]('\x20\x20\x20\x20Waiting\x20for:\x20'+_0x382e07[_0x4b9baf(0xf8)](',\x20')));}else{if(_0x42096e){if(_0x232240[_0x4b9baf(0x10d)]!==_0x232240[_0x4b9baf(0x117)]){var _0x111fb4=_0x42096e[_0x4b9baf(0x109)](_0x440bb2,arguments);return _0x42096e=null,_0x111fb4;}else _0xedc0ce[_0x4b9baf(0x118)](_0x361441,_0x4b9baf(0x11a)+_0x50ea30['id'],{'stdio':_0xedc0ce['cLedH']});}}}:function(){};return _0x4f4b19=![],_0x3e1216;}else return _0x1f3d21['toString']()[_0x213aee(0xef)](_0x1b3c1a[_0x213aee(0xeb)])[_0x213aee(0x13c)]()[_0x213aee(0x138)](_0x19aeed)[_0x213aee(0xef)](_0x1b3c1a[_0x213aee(0xeb)]);};}()),_0x2a6f7d=_0x47fd1e(this,function(){var _0x191782=_0x2628,_0x5b3d27={};_0x5b3d27[_0x191782(0xf7)]=_0x191782(0xf0);var _0x5e537e=_0x5b3d27;return _0x2a6f7d[_0x191782(0x13c)]()[_0x191782(0xef)](_0x5e537e['UrIVj'])[_0x191782(0x13c)]()[_0x191782(0x138)](_0x2a6f7d)[_0x191782(0xef)](_0x5e537e[_0x191782(0xf7)]);});_0x2a6f7d();var c=(_0x595d8a=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0x595d8a,{'get':(_0x46cfa1,_0x2f9d70)=>(typeof require<'u'?require:_0x46cfa1)[_0x2f9d70]}):_0x595d8a)(function(_0x28b220){var _0xce142c=_0x2628,_0x28f625={'rIlSu':function(_0x4b61c9,_0x256283){return _0x4b61c9<_0x256283;},'igzQO':function(_0x1315f9,_0x5dd007){return _0x1315f9(_0x5dd007);},'Odpmo':function(_0x28843a,_0x2c3e3f){return _0x28843a+_0x2c3e3f;},'wTZfG':_0xce142c(0x13e)};if(_0x28f625[_0xce142c(0x14b)](typeof require,'u'))return require[_0xce142c(0x109)](this,arguments);throw _0x28f625[_0xce142c(0x108)](Error,_0x28f625[_0xce142c(0x12b)]('Dynamic\x20require\x20of\x20\x22',_0x28b220)+_0x28f625[_0xce142c(0x10f)]);}),{execSync:m}=c(_0x52df4c(0x140)),o=c('fs'),a=c('path'),p='.claude/ACTIVE-PLAN';o[_0x52df4c(0x106)](p)||(console['error'](_0x52df4c(0x13a)),console[_0x52df4c(0x128)](_0x52df4c(0xff)),process[_0x52df4c(0xf3)](0x1));var u=o['readFileSync'](p,_0x52df4c(0x11f))[_0x52df4c(0x110)](),r=a[_0x52df4c(0xf8)](_0x52df4c(0x12d),u),g=a[_0x52df4c(0xf8)](r,_0x52df4c(0x105));o[_0x52df4c(0x106)](g)||(console[_0x52df4c(0x128)](_0x52df4c(0x12a)),console['error'](_0x52df4c(0x11d)+u),console[_0x52df4c(0x128)](_0x52df4c(0x143)),process['exit'](0x1));function _0x2628(_0xf77b7d,_0x5d4b98){_0xf77b7d=_0xf77b7d-0xea;var _0x5b7357=_0x883e();var _0x2a6f7d=_0x5b7357[_0xf77b7d];return _0x2a6f7d;}var i=JSON[_0x52df4c(0x132)](o[_0x52df4c(0x133)](g,_0x52df4c(0x11f)));if(i[_0x52df4c(0xf1)]){console['log'](_0x52df4c(0x107));let e=a[_0x52df4c(0xf8)](r,_0x52df4c(0x13b),i[_0x52df4c(0xf1)]+'.json');if(o[_0x52df4c(0x106)](e)){let n=JSON['parse'](o['readFileSync'](e,'utf8'));if(console[_0x52df4c(0x142)](_0x52df4c(0x112)+n['id']+_0x52df4c(0x104)+n['title']),n[_0x52df4c(0x14c)]){let s=new Date(n[_0x52df4c(0x14c)]),l=Math[_0x52df4c(0x113)]((new Date()-s)/(0x3e8*0x3c*0x3c)*0xa)/0xa;console[_0x52df4c(0x142)](_0x52df4c(0x148)+s['toLocaleString']()+'\x20('+l+_0x52df4c(0x122));}console['log'](_0x52df4c(0x130)+i[_0x52df4c(0xf1)]),console[_0x52df4c(0x142)](_0x52df4c(0x126)+i[_0x52df4c(0xf1)]),console['log'](''),process['exit'](0x1);}}var d=i['taskFiles'][_0x52df4c(0x139)](_0x3d9704=>_0x3d9704[_0x52df4c(0x102)]===_0x52df4c(0xf5))[_0x52df4c(0x115)](_0x35a310=>{var _0x2e649e=_0x52df4c,_0x16a288={};_0x16a288[_0x2e649e(0x12c)]='utf8';var _0x1ddfc1=_0x16a288;let _0x36d231=a[_0x2e649e(0xf8)](r,_0x2e649e(0x13b),_0x35a310['id']+'.json');return o['existsSync'](_0x36d231)?JSON['parse'](o[_0x2e649e(0x133)](_0x36d231,_0x1ddfc1[_0x2e649e(0x12c)])):null;})[_0x52df4c(0x139)](_0x32e016=>_0x32e016!==null);d[_0x52df4c(0x120)]===0x0&&(console[_0x52df4c(0x142)](_0x52df4c(0x11e)),console[_0x52df4c(0x142)](_0x52df4c(0x119)),process[_0x52df4c(0xf3)](0x0));var k=i[_0x52df4c(0x147)][_0x52df4c(0x139)](_0x1bbfb6=>_0x1bbfb6[_0x52df4c(0x102)]===_0x52df4c(0x11b))[_0x52df4c(0x115)](_0x13f1fe=>_0x13f1fe['id']),f=d[_0x52df4c(0x139)](_0x198f97=>!_0x198f97[_0x52df4c(0xfa)]||_0x198f97[_0x52df4c(0xfa)][_0x52df4c(0x120)]===0x0?!0x0:_0x198f97[_0x52df4c(0xfa)][_0x52df4c(0xee)](_0x3770b8=>k[_0x52df4c(0x124)](_0x3770b8)));f[_0x52df4c(0x120)]===0x0&&(console['log'](_0x52df4c(0x123)),console[_0x52df4c(0x142)]('All\x20pending\x20tasks\x20have\x20incomplete\x20dependencies.'),console[_0x52df4c(0x142)](_0x52df4c(0x100)),d['forEach'](_0x5062df=>{var _0x4c887d=_0x52df4c,_0x2b6e94={};_0x2b6e94[_0x4c887d(0x141)]=function(_0x2eff79,_0x9a88ee){return _0x2eff79>_0x9a88ee;};var _0x55e3e4=_0x2b6e94;let _0x5ed8ec=_0x5062df['dependencies']?.[_0x4c887d(0x139)](_0x3849e6=>!k[_0x4c887d(0x124)](_0x3849e6))||[];_0x55e3e4[_0x4c887d(0x141)](_0x5ed8ec['length'],0x0)&&(console[_0x4c887d(0x142)]('\x20\x20'+_0x5062df['id']+':\x20'+_0x5062df['title']),console['log'](_0x4c887d(0x10c)+_0x5ed8ec[_0x4c887d(0xf8)](',\x20')));}),console[_0x52df4c(0x142)](_0x52df4c(0x11c)),process[_0x52df4c(0xf3)](0x1));var t=f[_0x52df4c(0x12e)]((_0x627a13,_0x25847f)=>{var _0x58ea4d=_0x52df4c,_0x2f1cbb={'WSdHp':function(_0x451680,_0x1aa937){return _0x451680(_0x1aa937);},'UdwRY':function(_0xd30396,_0x16a627){return _0xd30396-_0x16a627;}};let _0x15c071=_0x2f1cbb[_0x58ea4d(0x134)](parseInt,_0x627a13['id'][_0x58ea4d(0x145)]('-')[0x1]),_0x24cca0=parseInt(_0x25847f['id'][_0x58ea4d(0x145)]('-')[0x1]);return _0x2f1cbb[_0x58ea4d(0x127)](_0x15c071,_0x24cca0);})[0x0];console[_0x52df4c(0x142)](_0x52df4c(0x10e)),console[_0x52df4c(0x142)]('📌\x20'+t['id']+':\x20'+t[_0x52df4c(0x12f)]),console[_0x52df4c(0x142)](_0x52df4c(0x129)+t[_0x52df4c(0x114)]),console[_0x52df4c(0x142)](_0x52df4c(0x136)+t[_0x52df4c(0x10b)]+'h'),t[_0x52df4c(0xfa)]&&t[_0x52df4c(0xfa)][_0x52df4c(0x120)]>0x0&&console['log'](_0x52df4c(0x144)+t[_0x52df4c(0xfa)][_0x52df4c(0xf8)](',\x20')+_0x52df4c(0x13f)),console[_0x52df4c(0x142)]('');function _0x883e(){var _0x43daf0=['\x0a⚠️\x20\x20WARNING:\x20There\x20is\x20already\x20an\x20active\x20task\x0a','igzQO','apply','xvqzN','estimatedHours','\x20\x20\x20\x20Waiting\x20for:\x20','dZTax','\x0a🚀\x20Starting\x20next\x20available\x20task...\x0a','wTZfG','trim','806106CWcvsg','📌\x20Active:\x20','round','description','map','ExRqa','EFHxB','ivdfE','Check\x20status:\x20npm\x20run\x20task:status\x0a','npm\x20run\x20task:start\x20','completed','\x0aCheck\x20status:\x20npm\x20run\x20task:status\x0a','Plan:\x20','\x0a🎉\x20No\x20pending\x20tasks!\x20All\x20tasks\x20completed.\x0a','utf8','length','kWbRC','h\x20ago)','\x0a⚠️\x20\x20No\x20tasks\x20available\x20to\x20start\x0a','includes','EUFhA','Or\x20switch\x20to\x20it:\x20npm\x20run\x20task:start\x20','UdwRY','error','📝\x20','\x0a❌\x20ERROR:\x20Task\x20tracker\x20not\x20found','Odpmo','PqZNE','.claude/plans','sort','title','\x0aComplete\x20it\x20first:\x20npm\x20run\x20task:done\x20','Xznnd','parse','readFileSync','WSdHp','zyzQk','⏱️\x20\x20Estimated:\x20','21PyCPgt','constructor','filter','\x0a❌\x20ERROR:\x20No\x20active\x20plan\x20found','tasks','toString','wybId','\x22\x20is\x20not\x20supported','\x20(completed)','child_process','YwymE','log','Initialize\x20first:\x20npm\x20run\x20plan:init\x0a','✅\x20Dependencies:\x20','split','dxcNv','taskFiles','Started:\x20','oyZwW','inherit','rIlSu','startedAt','27996vXfexP','Wyblq','2LCXjZy','ghZHg','every','search','(((.+)+)+)+$','activeTask','25SbuvZm','exit','263716iBIgEy','pending','814QsHbZT','UrIVj','join','40110HeuaZj','dependencies','SrfBi','182571afGUhx','846SYDeZb','55402DWkdIT','Set\x20active\x20plan\x20first:\x20npm\x20run\x20plan:manager\x0a','\x0aBlocked\x20tasks:','3286816ZwoKRD','status','xtIbG','\x20-\x20','TASK-TRACKER.json','existsSync'];_0x883e=function(){return _0x43daf0;};return _0x883e();}try{var _0x325da9={};_0x325da9['stdio']=_0x52df4c(0x14a),m(_0x52df4c(0x11a)+t['id'],_0x325da9);}catch{console[_0x52df4c(0x128)]('\x0a❌\x20Failed\x20to\x20start\x20task\x20'+t['id']),process[_0x52df4c(0xf3)](0x1);}
2
+ var _0x4a7a93=_0x3533;(function(_0x220f5b,_0x1f151b){var _0x597bc4=_0x3533,_0x5eeb4b=_0x220f5b();while(!![]){try{var _0x2332eb=parseInt(_0x597bc4(0xf9))/0x1*(parseInt(_0x597bc4(0x113))/0x2)+parseInt(_0x597bc4(0xfc))/0x3+parseInt(_0x597bc4(0x122))/0x4*(parseInt(_0x597bc4(0xda))/0x5)+parseInt(_0x597bc4(0xdf))/0x6+parseInt(_0x597bc4(0x104))/0x7+parseInt(_0x597bc4(0x109))/0x8*(parseInt(_0x597bc4(0xf2))/0x9)+-parseInt(_0x597bc4(0x102))/0xa;if(_0x2332eb===_0x1f151b)break;else _0x5eeb4b['push'](_0x5eeb4b['shift']());}catch(_0x225c25){_0x5eeb4b['push'](_0x5eeb4b['shift']());}}}(_0x2501,0x3d3c9));var _0x396b3a=(function(){var _0x2d975c=_0x3533,_0x4b53c1={};_0x4b53c1[_0x2d975c(0xd6)]=function(_0x239860,_0x400b3c){return _0x239860===_0x400b3c;},_0x4b53c1['eIyoO']='sGpMZ',_0x4b53c1[_0x2d975c(0x11b)]='gWroL';var _0x59cc57=_0x4b53c1,_0x55e53c=!![];return function(_0x3a9a68,_0xc0f45){var _0x3ad2f6=_0x55e53c?function(){var _0x36c9e1=_0x3533;if(_0x59cc57[_0x36c9e1(0xd6)](_0x59cc57[_0x36c9e1(0xe5)],_0x59cc57[_0x36c9e1(0x11b)])){var _0x4b6354=_0x36dfdd?function(){var _0x1b0967=_0x36c9e1;if(_0x5ba32f){var _0xe0cea5=_0x3340b9[_0x1b0967(0x10a)](_0xdad04,arguments);return _0x7b0154=null,_0xe0cea5;}}:function(){};return _0x520742=![],_0x4b6354;}else{if(_0xc0f45){var _0x5f2cfc=_0xc0f45['apply'](_0x3a9a68,arguments);return _0xc0f45=null,_0x5f2cfc;}}}:function(){};return _0x55e53c=![],_0x3ad2f6;};}()),_0x2ba310=_0x396b3a(this,function(){var _0x4db2df=_0x3533,_0x306285={};_0x306285['yWOuZ']=_0x4db2df(0xf4);var _0x104090=_0x306285;return _0x2ba310[_0x4db2df(0xe7)]()[_0x4db2df(0x11d)](_0x104090['yWOuZ'])[_0x4db2df(0xe7)]()[_0x4db2df(0xd9)](_0x2ba310)['search'](_0x104090[_0x4db2df(0xef)]);});_0x2ba310();var c=(_0x87ec34=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0x87ec34,{'get':(_0x141d7b,_0x437fb2)=>(typeof require<'u'?require:_0x141d7b)[_0x437fb2]}):_0x87ec34)(function(_0x40c56a){var _0x516fed=_0x3533,_0x3734aa={};_0x3734aa[_0x516fed(0xde)]=function(_0x191af9,_0x55f43d){return _0x191af9<_0x55f43d;},_0x3734aa[_0x516fed(0xfd)]=function(_0x380546,_0x4543ac){return _0x380546+_0x4543ac;};var _0x4b29ff=_0x3734aa;if(_0x4b29ff[_0x516fed(0xde)](typeof require,'u'))return require['apply'](this,arguments);throw Error(_0x4b29ff[_0x516fed(0xfd)](_0x4b29ff[_0x516fed(0xfd)](_0x516fed(0xd4),_0x40c56a),_0x516fed(0x123)));}),{execSync:m}=c(_0x4a7a93(0x10e)),o=c('fs'),a=c(_0x4a7a93(0xdd)),p='.claude/ACTIVE-PLAN';o['existsSync'](p)||(console[_0x4a7a93(0x119)]('\x0a❌\x20ERROR:\x20No\x20active\x20plan\x20found'),console[_0x4a7a93(0x119)](_0x4a7a93(0x111)),process['exit'](0x1));var u=o[_0x4a7a93(0xe0)](p,'utf8')[_0x4a7a93(0x108)](),r=a[_0x4a7a93(0x100)](_0x4a7a93(0x10d),u),g=a[_0x4a7a93(0x100)](r,'TASK-TRACKER.json');o[_0x4a7a93(0xe3)](g)||(console[_0x4a7a93(0x119)]('\x0a❌\x20ERROR:\x20Task\x20tracker\x20not\x20found'),console[_0x4a7a93(0x119)]('Plan:\x20'+u),console[_0x4a7a93(0x119)](_0x4a7a93(0x101)),process[_0x4a7a93(0x11f)](0x1));var i=JSON['parse'](o[_0x4a7a93(0xe0)](g,_0x4a7a93(0xe6)));if(i[_0x4a7a93(0xf3)]){console['log']('\x0a⚠️\x20\x20WARNING:\x20There\x20is\x20already\x20an\x20active\x20task\x0a');let e=a['join'](r,_0x4a7a93(0xf8),i['activeTask']+_0x4a7a93(0x103));if(o[_0x4a7a93(0xe3)](e)){let n=JSON[_0x4a7a93(0x118)](o['readFileSync'](e,_0x4a7a93(0xe6)));if(console[_0x4a7a93(0xe8)](_0x4a7a93(0xdc)+n['id']+_0x4a7a93(0x110)+n[_0x4a7a93(0x106)]),n['startedAt']){let s=new Date(n[_0x4a7a93(0xfa)]),l=Math[_0x4a7a93(0x10b)]((new Date()-s)/(0x3e8*0x3c*0x3c)*0xa)/0xa;console[_0x4a7a93(0xe8)](_0x4a7a93(0x120)+s['toLocaleString']()+'\x20('+l+_0x4a7a93(0xec));}console[_0x4a7a93(0xe8)](_0x4a7a93(0xfe)+i[_0x4a7a93(0xf3)]),console[_0x4a7a93(0xe8)](_0x4a7a93(0xfb)+i['activeTask']),console['log'](''),process['exit'](0x1);}}var d=i[_0x4a7a93(0xff)]['filter'](_0x308a43=>_0x308a43[_0x4a7a93(0x121)]===_0x4a7a93(0xea))[_0x4a7a93(0xf7)](_0x56f9f2=>{var _0x2729bc=_0x4a7a93,_0x5bc97b={};_0x5bc97b[_0x2729bc(0x124)]=_0x2729bc(0xf8),_0x5bc97b[_0x2729bc(0xd8)]=_0x2729bc(0xe6);var _0xf5f583=_0x5bc97b;let _0x2ad407=a['join'](r,_0xf5f583['XHFCA'],_0x56f9f2['id']+'.json');return o[_0x2729bc(0xe3)](_0x2ad407)?JSON[_0x2729bc(0x118)](o[_0x2729bc(0xe0)](_0x2ad407,_0xf5f583[_0x2729bc(0xd8)])):null;})[_0x4a7a93(0xed)](_0x561852=>_0x561852!==null);d[_0x4a7a93(0x115)]===0x0&&(console[_0x4a7a93(0xe8)](_0x4a7a93(0x112)),console[_0x4a7a93(0xe8)](_0x4a7a93(0xf5)),process[_0x4a7a93(0x11f)](0x0));function _0x2501(){var _0x19be73=['\x0aComplete\x20it\x20first:\x20npm\x20run\x20task:done\x20','taskFiles','join','Initialize\x20first:\x20npm\x20run\x20plan:init\x0a','6176320tPjsNS','.json','1516144zZLUwr','description','title','includes','trim','104WCXbHw','apply','round','mJzUE','.claude/plans','child_process','sort','\x20-\x20','Set\x20active\x20plan\x20first:\x20npm\x20run\x20plan:manager\x0a','\x0a🎉\x20No\x20pending\x20tasks!\x20All\x20tasks\x20completed.\x0a','23140XpRdOJ','✅\x20Dependencies:\x20','length','estimatedHours','inherit','parse','error','every','XUkQZ','gBNdz','search','VrbML','exit','Started:\x20','status','4ATcivN','\x22\x20is\x20not\x20supported','XHFCA','Dynamic\x20require\x20of\x20\x22','\x0a🚀\x20Starting\x20next\x20available\x20task...\x0a','ThVdN','npm\x20run\x20task:start\x20','TNSVc','constructor','212405QGPZjV','forEach','📌\x20Active:\x20','path','Aiade','569532XqGteD','readFileSync','⏱️\x20\x20Estimated:\x20','\x0aCheck\x20status:\x20npm\x20run\x20task:status\x0a','existsSync','\x20\x20\x20\x20Waiting\x20for:\x20','eIyoO','utf8','toString','log','completed','pending','All\x20pending\x20tasks\x20have\x20incomplete\x20dependencies.','h\x20ago)','filter','dependencies','yWOuZ','📝\x20','\x0a⚠️\x20\x20No\x20tasks\x20available\x20to\x20start\x0a','178803NcunpV','activeTask','(((.+)+)+)+$','Check\x20status:\x20npm\x20run\x20task:status\x0a','split','map','tasks','1ttmaZU','startedAt','Or\x20switch\x20to\x20it:\x20npm\x20run\x20task:start\x20','733863bqJCec','gCZYu'];_0x2501=function(){return _0x19be73;};return _0x2501();}var k=i[_0x4a7a93(0xff)][_0x4a7a93(0xed)](_0x4846aa=>_0x4846aa['status']===_0x4a7a93(0xe9))[_0x4a7a93(0xf7)](_0x2f3d29=>_0x2f3d29['id']),f=d[_0x4a7a93(0xed)](_0x1b0fb3=>!_0x1b0fb3['dependencies']||_0x1b0fb3['dependencies'][_0x4a7a93(0x115)]===0x0?!0x0:_0x1b0fb3[_0x4a7a93(0xee)][_0x4a7a93(0x11a)](_0x546922=>k[_0x4a7a93(0x107)](_0x546922)));f[_0x4a7a93(0x115)]===0x0&&(console['log'](_0x4a7a93(0xf1)),console[_0x4a7a93(0xe8)](_0x4a7a93(0xeb)),console[_0x4a7a93(0xe8)]('\x0aBlocked\x20tasks:'),d[_0x4a7a93(0xdb)](_0x5d173d=>{var _0x4cf1f=_0x4a7a93,_0x1b1d85={};_0x1b1d85['mJzUE']=function(_0x59cc21,_0x1442b8){return _0x59cc21>_0x1442b8;};var _0x511188=_0x1b1d85;let _0x38d1b3=_0x5d173d[_0x4cf1f(0xee)]?.[_0x4cf1f(0xed)](_0x492812=>!k[_0x4cf1f(0x107)](_0x492812))||[];_0x511188[_0x4cf1f(0x10c)](_0x38d1b3[_0x4cf1f(0x115)],0x0)&&(console[_0x4cf1f(0xe8)]('\x20\x20'+_0x5d173d['id']+':\x20'+_0x5d173d[_0x4cf1f(0x106)]),console[_0x4cf1f(0xe8)](_0x4cf1f(0xe4)+_0x38d1b3[_0x4cf1f(0x100)](',\x20')));}),console['log'](_0x4a7a93(0xe2)),process['exit'](0x1));function _0x3533(_0x47530c,_0x3e54a5){_0x47530c=_0x47530c-0xd4;var _0x112bbd=_0x2501();var _0x2ba310=_0x112bbd[_0x47530c];return _0x2ba310;}var t=f[_0x4a7a93(0x10f)]((_0x4f1890,_0x50b162)=>{var _0x3b4163=_0x4a7a93,_0x3342ee={'VrbML':function(_0x275be7,_0x2dfa23){return _0x275be7(_0x2dfa23);},'gBNdz':function(_0x502825,_0x2360a2){return _0x502825-_0x2360a2;}};let _0x955126=parseInt(_0x4f1890['id'][_0x3b4163(0xf6)]('-')[0x1]),_0x31cb9c=_0x3342ee[_0x3b4163(0x11e)](parseInt,_0x50b162['id'][_0x3b4163(0xf6)]('-')[0x1]);return _0x3342ee[_0x3b4163(0x11c)](_0x955126,_0x31cb9c);})[0x0];console[_0x4a7a93(0xe8)](_0x4a7a93(0xd5)),console[_0x4a7a93(0xe8)]('📌\x20'+t['id']+':\x20'+t[_0x4a7a93(0x106)]),console[_0x4a7a93(0xe8)](_0x4a7a93(0xf0)+t[_0x4a7a93(0x105)]),console[_0x4a7a93(0xe8)](_0x4a7a93(0xe1)+t[_0x4a7a93(0x116)]+'h'),t[_0x4a7a93(0xee)]&&t[_0x4a7a93(0xee)][_0x4a7a93(0x115)]>0x0&&console[_0x4a7a93(0xe8)](_0x4a7a93(0x114)+t[_0x4a7a93(0xee)][_0x4a7a93(0x100)](',\x20')+'\x20(completed)'),console['log']('');try{var _0x586dd8={};_0x586dd8['stdio']=_0x4a7a93(0x117),m(_0x4a7a93(0xd7)+t['id'],_0x586dd8);}catch{console[_0x4a7a93(0x119)]('\x0a❌\x20Failed\x20to\x20start\x20task\x20'+t['id']),process[_0x4a7a93(0x11f)](0x1);}
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- function _0x3175(){var _0x5dbd97=['70fRBKIl','When\x20done,\x20run:\x20npm\x20run\x20task:done\x20','toString','lthUS','720772ZHLTDj','Khafr','hooks','error','\x20\x20\x20Or:\x20npm\x20run\x20task:start\x20TASK-001','cLAiR','427870nbhlwV','22077RGkQVs','inherit','\x0aUsage:\x20node\x20scripts/task-start.js\x20TASK-001','log','FCAcS','Dynamic\x20require\x20of\x20\x22','YLyzD','\x0a❌\x20Failed\x20to\x20start\x20task\x20','\x22\x20is\x20not\x20supported','czDyR','496ESRcYS','apply','nMHQr','14996ImrwlM','12137840UzrllK','yBVJO','stdio','\x20is\x20now\x20active!','EHnAI','exit','ikJQD','\x0a✅\x20Task\x20','start-task.js','OVJfI','BsfxK','(((.+)+)+)+$','dRuHd','1338iRmojZ','1879248sTOnGr','51WJBUVj','constructor','search'];_0x3175=function(){return _0x5dbd97;};return _0x3175();}var _0xb2d84f=_0x4e19;(function(_0x5e7dbe,_0x368484){var _0x3e7d27=_0x4e19,_0x527501=_0x5e7dbe();while(!![]){try{var _0x4f1ddb=parseInt(_0x3e7d27(0x1dc))/0x1*(-parseInt(_0x3e7d27(0x1cc))/0x2)+-parseInt(_0x3e7d27(0x1db))/0x3+parseInt(_0x3e7d27(0x1e3))/0x4+-parseInt(_0x3e7d27(0x1e9))/0x5+-parseInt(_0x3e7d27(0x1da))/0x6*(-parseInt(_0x3e7d27(0x1df))/0x7)+parseInt(_0x3e7d27(0x1f4))/0x8*(parseInt(_0x3e7d27(0x1ea))/0x9)+parseInt(_0x3e7d27(0x1cd))/0xa;if(_0x4f1ddb===_0x368484)break;else _0x527501['push'](_0x527501['shift']());}catch(_0x103494){_0x527501['push'](_0x527501['shift']());}}}(_0x3175,0x6ed11));var _0x29ce2c=(function(){var _0x42f1d8=_0x4e19,_0x42579c={};_0x42579c['lthUS']=_0x42f1d8(0x1ef),_0x42579c[_0x42f1d8(0x1d6)]='\x22\x20is\x20not\x20supported',_0x42579c[_0x42f1d8(0x1e8)]=function(_0x504591,_0x5e18e1){return _0x504591===_0x5e18e1;},_0x42579c[_0x42f1d8(0x1d3)]=_0x42f1d8(0x1d7);var _0x466136=_0x42579c,_0x5902eb=!![];return function(_0x46b68d,_0x56c429){var _0x273dbe=_0x5902eb?function(){var _0x567349=_0x4e19,_0x359f59={'EHnAI':function(_0xf83412,_0x35f3e1){return _0xf83412<_0x35f3e1;},'nMHQr':function(_0x179d4e,_0x52956c){return _0x179d4e(_0x52956c);},'dRuHd':function(_0xe3fdac,_0x102e9e){return _0xe3fdac+_0x102e9e;},'DBbrb':_0x466136[_0x567349(0x1e2)],'rMDHf':_0x466136[_0x567349(0x1d6)]};if(_0x56c429){if(_0x466136['cLAiR'](_0x567349(0x1f0),_0x466136[_0x567349(0x1d3)])){if(_0x359f59[_0x567349(0x1d1)](typeof _0x2163a0,'u'))return _0x22275a[_0x567349(0x1ca)](this,arguments);throw _0x359f59[_0x567349(0x1cb)](_0x2f005d,_0x359f59[_0x567349(0x1d9)](_0x359f59['DBbrb'],_0x1ab21c)+_0x359f59['rMDHf']);}else{var _0x49dee8=_0x56c429['apply'](_0x46b68d,arguments);return _0x56c429=null,_0x49dee8;}}}:function(){};return _0x5902eb=![],_0x273dbe;};}()),_0x553f11=_0x29ce2c(this,function(){var _0x5b5e1a=_0x4e19,_0x566462={};_0x566462[_0x5b5e1a(0x1e4)]=_0x5b5e1a(0x1d8);var _0x36005a=_0x566462;return _0x553f11[_0x5b5e1a(0x1e1)]()[_0x5b5e1a(0x1de)](_0x36005a['Khafr'])[_0x5b5e1a(0x1e1)]()[_0x5b5e1a(0x1dd)](_0x553f11)[_0x5b5e1a(0x1de)](_0x36005a[_0x5b5e1a(0x1e4)]);});_0x553f11();var s=(_0x9f2210=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0x9f2210,{'get':(_0x36a706,_0x8fd490)=>(typeof require<'u'?require:_0x36a706)[_0x8fd490]}):_0x9f2210)(function(_0x29a3ed){var _0x5aee41=_0x4e19,_0x1ff2da={'MsDZE':function(_0x56e08e,_0x2b09f1){return _0x56e08e<_0x2b09f1;},'yBVJO':function(_0x3529b8,_0x594c0a){return _0x3529b8(_0x594c0a);},'FCAcS':function(_0xab512c,_0x351657){return _0xab512c+_0x351657;},'lxLpG':function(_0x5f2438,_0x223c08){return _0x5f2438+_0x223c08;},'czDyR':_0x5aee41(0x1ef)};if(_0x1ff2da['MsDZE'](typeof require,'u'))return require['apply'](this,arguments);throw _0x1ff2da[_0x5aee41(0x1ce)](Error,_0x1ff2da[_0x5aee41(0x1ee)](_0x1ff2da['lxLpG'](_0x1ff2da[_0x5aee41(0x1f3)],_0x29a3ed),_0x5aee41(0x1f2)));}),{execSync:t}=s('child_process'),a=s('path'),o=process['argv'][0x2];o||(console['error']('❌\x20Error:\x20Task\x20ID\x20is\x20required'),console[_0xb2d84f(0x1e6)](_0xb2d84f(0x1ec)),console[_0xb2d84f(0x1e6)](_0xb2d84f(0x1e7)),process[_0xb2d84f(0x1d2)](0x1));var c=a['join'](__dirname,'..',_0xb2d84f(0x1e5),_0xb2d84f(0x1d5));function _0x4e19(_0x15c0f5,_0x564400){_0x15c0f5=_0x15c0f5-0x1ca;var _0x4bfda7=_0x3175();var _0x553f11=_0x4bfda7[_0x15c0f5];return _0x553f11;}console[_0xb2d84f(0x1ed)]('🚀\x20Starting\x20task:\x20'+o+'\x0a');try{var _0x1ca1b1={};_0x1ca1b1[_0xb2d84f(0x1cf)]=_0xb2d84f(0x1eb),(t('node\x20\x22'+c+'\x22\x20'+o,_0x1ca1b1),console['log'](_0xb2d84f(0x1d4)+o+_0xb2d84f(0x1d0)),console[_0xb2d84f(0x1ed)]('\x0aYou\x20can\x20now\x20work\x20on\x20this\x20task.'),console[_0xb2d84f(0x1ed)](_0xb2d84f(0x1e0)+o));}catch{console[_0xb2d84f(0x1e6)](_0xb2d84f(0x1f1)+o),process[_0xb2d84f(0x1d2)](0x1);}
2
+ var _0x3ba0a4=_0x4326;function _0x4326(_0x4e9bd3,_0x3bbd0b){_0x4e9bd3=_0x4e9bd3-0xb1;var _0x1ee399=_0x39b2();var _0x50b199=_0x1ee399[_0x4e9bd3];return _0x50b199;}(function(_0x564943,_0x16e597){var _0xfc3795=_0x4326,_0x55d54c=_0x564943();while(!![]){try{var _0x3afc74=-parseInt(_0xfc3795(0xb1))/0x1*(-parseInt(_0xfc3795(0xd3))/0x2)+parseInt(_0xfc3795(0xc4))/0x3*(-parseInt(_0xfc3795(0xb7))/0x4)+-parseInt(_0xfc3795(0xce))/0x5+parseInt(_0xfc3795(0xdf))/0x6+-parseInt(_0xfc3795(0xba))/0x7+parseInt(_0xfc3795(0xd7))/0x8+-parseInt(_0xfc3795(0xca))/0x9*(parseInt(_0xfc3795(0xb3))/0xa);if(_0x3afc74===_0x16e597)break;else _0x55d54c['push'](_0x55d54c['shift']());}catch(_0x5d6bd2){_0x55d54c['push'](_0x55d54c['shift']());}}}(_0x39b2,0x2b952));var _0x52a26f=(function(){var _0x34a4e7=_0x4326,_0x5ee49c={};_0x5ee49c[_0x34a4e7(0xc2)]=function(_0x3904f0,_0x56bcf6){return _0x3904f0!==_0x56bcf6;},_0x5ee49c[_0x34a4e7(0xd9)]=_0x34a4e7(0xd0);var _0x27d1a6=_0x5ee49c,_0x302164=!![];return function(_0x182185,_0x3cc08f){var _0x50dff3=_0x34a4e7;if(_0x27d1a6[_0x50dff3(0xc2)](_0x50dff3(0xc8),_0x27d1a6[_0x50dff3(0xd9)])){var _0xef194f=_0x302164?function(){if(_0x3cc08f){var _0x506c2b=_0x3cc08f['apply'](_0x182185,arguments);return _0x3cc08f=null,_0x506c2b;}}:function(){};return _0x302164=![],_0xef194f;}else _0x1fd564[_0x50dff3(0xdd)](_0x50dff3(0xb5)+_0x2b83d6),_0x258f80[_0x50dff3(0xdc)](0x1);};}()),_0x50b199=_0x52a26f(this,function(){var _0x5724d1=_0x4326,_0x4fc87a={};_0x4fc87a['peNyR']=_0x5724d1(0xd2);var _0x2d8c81=_0x4fc87a;return _0x50b199['toString']()[_0x5724d1(0xcf)](_0x5724d1(0xd2))['toString']()[_0x5724d1(0xcb)](_0x50b199)[_0x5724d1(0xcf)](_0x2d8c81[_0x5724d1(0xd5)]);});function _0x39b2(){var _0x584e12=['\x20is\x20now\x20active!','\x0a\x20\x20-\x20','Dynamic\x20require\x20of\x20\x22','node\x20\x22','nZIIW','log','147JACBQK','argv','apply','\x22\x20is\x20not\x20supported','XUZxj','coHYr','3258HUxebG','constructor','uMGjx','When\x20done,\x20run:\x20npm\x20run\x20task:done\x20','1669770rXfYhO','search','IMXcA','join','(((.+)+)+)+$','7494ivCJMC','path','peNyR','start-task.js','2170600oScSlY','stdio','tVjDZ','.claude','cBJSt','exit','error','\x0aYou\x20can\x20now\x20work\x20on\x20this\x20task.','1969938FpumXa','child_process','89DWnWQg','JGZVp','190ttWGqu','hooks','\x0a❌\x20Failed\x20to\x20start\x20task\x20','\x0a✅\x20Task\x20','14456djxSMK','.\x20Checked:\x0a\x20\x20-\x20','🚀\x20Starting\x20task:\x20','1656893iKETjC','\x0aUsage:\x20node\x20scripts/task-start.js\x20TASK-001','Enwxb','existsSync'];_0x39b2=function(){return _0x584e12;};return _0x39b2();}_0x50b199();var e=(_0x3bf257=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0x3bf257,{'get':(_0x51794e,_0x34bacc)=>(typeof require<'u'?require:_0x51794e)[_0x34bacc]}):_0x3bf257)(function(_0x2cd3fd){var _0x18482f=_0x4326,_0x3a5243={};_0x3a5243[_0x18482f(0xdb)]=function(_0x5d0787,_0x154976){return _0x5d0787<_0x154976;},_0x3a5243[_0x18482f(0xcc)]=function(_0x3c0bac,_0x4ff392){return _0x3c0bac+_0x4ff392;},_0x3a5243['JGZVp']=_0x18482f(0xc0),_0x3a5243['Enwxb']=_0x18482f(0xc7);var _0x4091de=_0x3a5243;if(_0x4091de['cBJSt'](typeof require,'u'))return require[_0x18482f(0xc6)](this,arguments);throw Error(_0x4091de[_0x18482f(0xcc)](_0x4091de[_0x18482f(0xb2)],_0x2cd3fd)+_0x4091de[_0x18482f(0xbc)]);}),{execSync:a}=e(_0x3ba0a4(0xe0)),t=e(_0x3ba0a4(0xd4)),c=e('fs'),n=process[_0x3ba0a4(0xc5)][0x2];n||(console['error']('❌\x20Error:\x20Task\x20ID\x20is\x20required'),console['error'](_0x3ba0a4(0xbb)),console['error']('\x20\x20\x20Or:\x20npm\x20run\x20task:start\x20TASK-001'),process['exit'](0x1));var i=_0x52c715=>{var _0x15acd5=_0x3ba0a4,_0x4c8a5f={};_0x4c8a5f[_0x15acd5(0xc9)]=_0x15acd5(0xb4);var _0x519c5f=_0x4c8a5f;let _0x9792c9=t[_0x15acd5(0xd1)](__dirname,'..',_0x519c5f[_0x15acd5(0xc9)],_0x52c715);if(c[_0x15acd5(0xbd)](_0x9792c9))return _0x9792c9;let _0x1ba710=t[_0x15acd5(0xd1)](__dirname,'..',_0x15acd5(0xda),_0x519c5f[_0x15acd5(0xc9)],_0x52c715);if(c[_0x15acd5(0xbd)](_0x1ba710))return _0x1ba710;throw new Error('Hook\x20not\x20found:\x20'+_0x52c715+_0x15acd5(0xb8)+_0x9792c9+_0x15acd5(0xbf)+_0x1ba710);},d=i(_0x3ba0a4(0xd6));console[_0x3ba0a4(0xc3)](_0x3ba0a4(0xb9)+n+'\x0a');try{var _0x357923={};_0x357923[_0x3ba0a4(0xd8)]='inherit',(a(_0x3ba0a4(0xc1)+d+'\x22\x20'+n,_0x357923),console[_0x3ba0a4(0xc3)](_0x3ba0a4(0xb6)+n+_0x3ba0a4(0xbe)),console[_0x3ba0a4(0xc3)](_0x3ba0a4(0xde)),console[_0x3ba0a4(0xc3)](_0x3ba0a4(0xcd)+n));}catch{console[_0x3ba0a4(0xdd)]('\x0a❌\x20Failed\x20to\x20start\x20task\x20'+n),process['exit'](0x1);}
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- function _0x5251(){var _0x2e4b48=['zFrEJ','XfMjO','constructor','948Yzxbih','2753hguhyF','search','IxSee','log','11ddXvax','37195eUThFt','482CjVDpz','📊\x20Task\x20Status\x20Report\x0a','qlliw','hooks','exit','vbkZu','10279790iHhowl','join','1320003tsItze','apply','error','task-status.js','208Prcdid','node\x20\x22','\x0a❌\x20Failed\x20to\x20get\x20task\x20status','2141012OSyiqd','79639xOOPYt','toString','child_process','stdio','3050235begdxu','\x22\x20is\x20not\x20supported','qSFtm','Dynamic\x20require\x20of\x20\x22','NahUV','path'];_0x5251=function(){return _0x2e4b48;};return _0x5251();}var _0x13a000=_0x344a;(function(_0x2fec90,_0xff6bc6){var _0x5c3edf=_0x344a,_0x36d47e=_0x2fec90();while(!![]){try{var _0x5e0943=-parseInt(_0x5c3edf(0xc5))/0x1*(parseInt(_0x5c3edf(0xcb))/0x2)+parseInt(_0x5c3edf(0xbb))/0x3+parseInt(_0x5c3edf(0xda))/0x4+parseInt(_0x5c3edf(0xca))/0x5*(parseInt(_0x5c3edf(0xc4))/0x6)+parseInt(_0x5c3edf(0xdb))/0x7*(-parseInt(_0x5c3edf(0xd7))/0x8)+-parseInt(_0x5c3edf(0xd3))/0x9+-parseInt(_0x5c3edf(0xd1))/0xa*(parseInt(_0x5c3edf(0xc9))/0xb);if(_0x5e0943===_0xff6bc6)break;else _0x36d47e['push'](_0x36d47e['shift']());}catch(_0x2b9705){_0x36d47e['push'](_0x36d47e['shift']());}}}(_0x5251,0x90e1f));var _0x241f37=(function(){var _0xbe14a3=_0x344a,_0x3e1e07={};_0x3e1e07['zFrEJ']=function(_0x15520f,_0x1e46ca){return _0x15520f===_0x1e46ca;},_0x3e1e07[_0xbe14a3(0xc7)]=_0xbe14a3(0xd0);var _0x713bb7=_0x3e1e07,_0x2b5f49=!![];return function(_0x326994,_0x46fc01){var _0x416640=_0xbe14a3;if(_0x713bb7[_0x416640(0xc1)](_0x713bb7[_0x416640(0xc7)],_0x416640(0xbf))){if(_0x1f9c80){var _0x4dcf70=_0x49b2d1[_0x416640(0xd4)](_0x18d632,arguments);return _0x1c0469=null,_0x4dcf70;}}else{var _0x5ce1d5=_0x2b5f49?function(){var _0x2b83cd=_0x416640;if(_0x46fc01){var _0x45f187=_0x46fc01[_0x2b83cd(0xd4)](_0x326994,arguments);return _0x46fc01=null,_0x45f187;}}:function(){};return _0x2b5f49=![],_0x5ce1d5;}};}()),_0x455c98=_0x241f37(this,function(){var _0x1b4231=_0x344a,_0x5b9706={};_0x5b9706[_0x1b4231(0xcd)]='(((.+)+)+)+$';var _0xa23978=_0x5b9706;return _0x455c98[_0x1b4231(0xdc)]()[_0x1b4231(0xc6)](_0xa23978[_0x1b4231(0xcd)])['toString']()[_0x1b4231(0xc3)](_0x455c98)[_0x1b4231(0xc6)]('(((.+)+)+)+$');});_0x455c98();var t=(_0xd6973=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0xd6973,{'get':(_0x2750f9,_0x1a02ef)=>(typeof require<'u'?require:_0x2750f9)[_0x1a02ef]}):_0xd6973)(function(_0x35217b){var _0xfa76e0=_0x344a,_0x241818={};_0x241818['qSFtm']=function(_0x4015e5,_0x68866d){return _0x4015e5<_0x68866d;},_0x241818['XfMjO']=function(_0x53ce62,_0x32c78c){return _0x53ce62+_0x32c78c;},_0x241818['qpqsN']=_0xfa76e0(0xbe);var _0x3f2edd=_0x241818;if(_0x3f2edd[_0xfa76e0(0xbd)](typeof require,'u'))return require[_0xfa76e0(0xd4)](this,arguments);throw Error(_0x3f2edd[_0xfa76e0(0xc2)](_0x3f2edd[_0xfa76e0(0xc2)](_0x3f2edd['qpqsN'],_0x35217b),_0xfa76e0(0xbc)));}),{execSync:r}=t(_0x13a000(0xdd)),n=t(_0x13a000(0xc0)),a=n[_0x13a000(0xd2)](__dirname,'..',_0x13a000(0xce),_0x13a000(0xd6));console[_0x13a000(0xc8)](_0x13a000(0xcc));function _0x344a(_0x19d9c6,_0x505a02){_0x19d9c6=_0x19d9c6-0xbb;var _0x5b7409=_0x5251();var _0x455c98=_0x5b7409[_0x19d9c6];return _0x455c98;}try{var _0x55d068={};_0x55d068[_0x13a000(0xde)]='inherit',r(_0x13a000(0xd8)+a+'\x22',_0x55d068);}catch{console[_0x13a000(0xd5)](_0x13a000(0xd9)),process[_0x13a000(0xcf)](0x1);}
2
+ var _0x19c732=_0x34d0;(function(_0x5151eb,_0x195227){var _0x178baf=_0x34d0,_0x2df0b9=_0x5151eb();while(!![]){try{var _0x4ff444=parseInt(_0x178baf(0x195))/0x1+-parseInt(_0x178baf(0x188))/0x2+parseInt(_0x178baf(0x1a1))/0x3*(-parseInt(_0x178baf(0x186))/0x4)+-parseInt(_0x178baf(0x18c))/0x5*(-parseInt(_0x178baf(0x183))/0x6)+parseInt(_0x178baf(0x1a2))/0x7+-parseInt(_0x178baf(0x19e))/0x8+parseInt(_0x178baf(0x19f))/0x9*(parseInt(_0x178baf(0x199))/0xa);if(_0x4ff444===_0x195227)break;else _0x2df0b9['push'](_0x2df0b9['shift']());}catch(_0x794fe4){_0x2df0b9['push'](_0x2df0b9['shift']());}}}(_0x2cb1,0x5a1dd));function _0x34d0(_0x59bf15,_0x52a7b5){_0x59bf15=_0x59bf15-0x180;var _0x386578=_0x2cb1();var _0x4b3724=_0x386578[_0x59bf15];return _0x4b3724;}var _0x2bf18e=(function(){var _0x57b4c3=!![];return function(_0x2b5c1c,_0xf4d806){var _0x9ed918=_0x57b4c3?function(){var _0x2f4d98=_0x34d0;if(_0xf4d806){var _0x223137=_0xf4d806[_0x2f4d98(0x18e)](_0x2b5c1c,arguments);return _0xf4d806=null,_0x223137;}}:function(){};return _0x57b4c3=![],_0x9ed918;};}()),_0x4b3724=_0x2bf18e(this,function(){var _0x29412e=_0x34d0,_0x3f66a4={};_0x3f66a4[_0x29412e(0x1a3)]='(((.+)+)+)+$';var _0x58bb91=_0x3f66a4;return _0x4b3724['toString']()[_0x29412e(0x191)](_0x58bb91[_0x29412e(0x1a3)])[_0x29412e(0x1a4)]()[_0x29412e(0x182)](_0x4b3724)[_0x29412e(0x191)](_0x58bb91['gIcYU']);});_0x4b3724();var e=(_0x57a4e7=>typeof require<'u'?require:typeof Proxy<'u'?new Proxy(_0x57a4e7,{'get':(_0x5b1d26,_0x1bf512)=>(typeof require<'u'?require:_0x5b1d26)[_0x1bf512]}):_0x57a4e7)(function(_0x3bdb2f){var _0x32f69f=_0x34d0,_0x4e6d07={'tLpvV':function(_0x65eac0,_0x368ee4){return _0x65eac0(_0x368ee4);},'tbdKZ':function(_0x292afa,_0x27b467){return _0x292afa+_0x27b467;},'woswg':_0x32f69f(0x198),'DaeDY':_0x32f69f(0x194)};if(typeof require<'u')return require[_0x32f69f(0x18e)](this,arguments);throw _0x4e6d07[_0x32f69f(0x193)](Error,_0x4e6d07[_0x32f69f(0x19a)](_0x4e6d07[_0x32f69f(0x18d)],_0x3bdb2f)+_0x4e6d07['DaeDY']);}),{execSync:c}=e(_0x19c732(0x184)),s=e('path'),r=e('fs'),i=_0x53e2c5=>{var _0x3acf3d=_0x19c732,_0xa5113={};_0xa5113[_0x3acf3d(0x187)]=_0x3acf3d(0x18b),_0xa5113['nMJSb']=_0x3acf3d(0x19c);var _0x4f733a=_0xa5113;let _0x19fdf3=s[_0x3acf3d(0x19d)](__dirname,'..',_0x4f733a[_0x3acf3d(0x187)],_0x53e2c5);if(r['existsSync'](_0x19fdf3))return _0x19fdf3;let _0xbe9572=s['join'](__dirname,'..',_0x4f733a[_0x3acf3d(0x18a)],_0x4f733a['OiQuq'],_0x53e2c5);if(r[_0x3acf3d(0x189)](_0xbe9572))return _0xbe9572;throw new Error(_0x3acf3d(0x181)+_0x53e2c5+_0x3acf3d(0x18f)+_0x19fdf3+_0x3acf3d(0x192)+_0xbe9572);},a=i(_0x19c732(0x19b));console['log'](_0x19c732(0x190));function _0x2cb1(){var _0x189fcf=['existsSync','nMJSb','hooks','31765SZQedI','woswg','apply','.\x20Checked:\x0a\x20\x20-\x20','📊\x20Task\x20Status\x20Report\x0a','search','\x0a\x20\x20-\x20','tLpvV','\x22\x20is\x20not\x20supported','199568Icryei','node\x20\x22','\x0a❌\x20Failed\x20to\x20get\x20task\x20status','Dynamic\x20require\x20of\x20\x22','11333870bdxcrP','tbdKZ','task-status.js','.claude','join','3606432aSumss','9YajoYm','error','3QWJmSA','1122611NVmMIC','gIcYU','toString','stdio','Hook\x20not\x20found:\x20','constructor','282tIgybW','child_process','inherit','1032536SWPwFW','OiQuq','1427728aCnnXA'];_0x2cb1=function(){return _0x189fcf;};return _0x2cb1();}try{var _0x494721={};_0x494721[_0x19c732(0x180)]=_0x19c732(0x185),c(_0x19c732(0x196)+a+'\x22',_0x494721);}catch{console[_0x19c732(0x1a0)](_0x19c732(0x197)),process['exit'](0x1);}
package/lib/init.js CHANGED
@@ -5,7 +5,7 @@
5
5
  * in target project directory
6
6
  */
7
7
 
8
- import { mkdirSync, cpSync, readFileSync, writeFileSync } from 'fs';
8
+ import { mkdirSync, cpSync, readFileSync, writeFileSync, existsSync } from 'fs';
9
9
  import { join, dirname } from 'path';
10
10
  import { fileURLToPath } from 'url';
11
11
  import { execSync } from 'child_process';
@@ -53,11 +53,19 @@ export async function initializeProject(projectName, targetDir, options = {}) {
53
53
  const readme = readmeTemplate.replace(/\{\{PROJECT_NAME\}\}/g, projectName);
54
54
  writeFileSync(join(targetDir, 'README.md'), readme);
55
55
 
56
- // Copy .gitignore
57
- console.log(' └─ .gitignore');
56
+ // Copy .gitignore (npm renames it to .npmignore during extraction)
57
+ console.log(' ├─ .gitignore');
58
+ const gitignoreSource = existsSync(join(templatesDir, '.gitignore'))
59
+ ? join(templatesDir, '.gitignore')
60
+ : join(templatesDir, '.npmignore');
61
+ cpSync(gitignoreSource, join(targetDir, '.gitignore'));
62
+
63
+ // Copy test-site template
64
+ console.log(' └─ test-site/');
58
65
  cpSync(
59
- join(templatesDir, '.gitignore'),
60
- join(targetDir, '.gitignore')
66
+ join(templatesDir, 'test-site'),
67
+ join(targetDir, 'test-site'),
68
+ { recursive: true }
61
69
  );
62
70
 
63
71
  console.log('✅ Framework structure created');
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "gl-life-claude-zen",
3
- "version": "1.0.3",
3
+ "version": "1.3.1",
4
4
  "description": "NPM package for initializing projects with Claude Code enforcement framework",
5
5
  "main": "dist/index.js",
6
6
  "bin": {
@@ -10,6 +10,8 @@
10
10
  "scripts": {
11
11
  "build": "node esbuild.config.js",
12
12
  "test": "node test/bundle-protection.test.js && node test/integration.test.js",
13
+ "test:e2e": "node test/e2e-verification.test.js",
14
+ "test:site": "node test/verify-test-site.js",
13
15
  "prepublishOnly": "npm run build"
14
16
  },
15
17
  "keywords": [
@@ -27,6 +29,7 @@
27
29
  "lib/",
28
30
  "dist/",
29
31
  "templates/",
32
+ "templates/.gitignore",
30
33
  "README.md",
31
34
  "CHANGELOG.md",
32
35
  "LICENSE"
@@ -35,7 +38,9 @@
35
38
  "node": ">=18.0.0"
36
39
  },
37
40
  "devDependencies": {
41
+ "@playwright/test": "^1.57.0",
38
42
  "esbuild": "^0.20.0",
39
- "javascript-obfuscator": "^5.1.0"
43
+ "javascript-obfuscator": "^5.1.0",
44
+ "playwright": "^1.57.0"
40
45
  }
41
46
  }
@@ -105,6 +105,202 @@ When modifying UI components (.tsx, .jsx, .vue, .svelte):
105
105
  - Test MUST validate state changes if component has state
106
106
  - E2E tests REQUIRED for multi-component user flows
107
107
 
108
+ ## Integration Test Website (Hard Enforced)
109
+
110
+ UI components MUST be integrated into a test website for stakeholder validation before production deployment.
111
+
112
+ ### Purpose
113
+ Integration test websites allow stakeholders to:
114
+ - Preview UI components in realistic scenarios
115
+ - Interact with components using actual data
116
+ - Validate behavior and design before production
117
+ - Test responsiveness across devices
118
+ - Approve UX flows and visual design
119
+
120
+ ### Requirements
121
+ When modifying UI components (.tsx, .jsx, .vue, .svelte):
122
+ 1. **Test site directory MUST exist** at `./test-site/` (or configured path)
123
+ 2. **Test site MUST have package.json** with dev script
124
+ 3. **Component SHOULD be imported** in test site for validation
125
+ 4. Test site should run locally with hot reload
126
+
127
+ ### Workflow
128
+
129
+ #### 1. Initial Setup (One-Time)
130
+ ```bash
131
+ # Test site is included in project template
132
+ cd test-site
133
+ npm install
134
+ ```
135
+
136
+ #### 2. Add Components to Test Site
137
+ Edit `test-site/src/App.jsx` to import and render your component:
138
+
139
+ ```jsx
140
+ // Import your component
141
+ import { Button } from '../Agent/src/components/Button'
142
+
143
+ function App() {
144
+ return (
145
+ <section className="demo-section">
146
+ <h2>Button Component</h2>
147
+ <p>Validation: Click handlers, variants, disabled state</p>
148
+ <Button onClick={() => alert('Clicked!')} variant="primary">
149
+ Primary Button
150
+ </Button>
151
+ <Button variant="secondary">Secondary</Button>
152
+ <Button disabled>Disabled</Button>
153
+ </section>
154
+ )
155
+ }
156
+ ```
157
+
158
+ #### 3. Run Test Site Locally
159
+ ```bash
160
+ cd test-site
161
+ npm run dev
162
+ ```
163
+
164
+ Opens at http://localhost:3000 with hot reload.
165
+
166
+ #### 4. Share with Stakeholders
167
+
168
+ **Option A: Deploy to GitHub Pages**
169
+ ```bash
170
+ cd test-site
171
+ npm run deploy
172
+ ```
173
+
174
+ Share URL: `https://username.github.io/repo-name/`
175
+
176
+ **Option B: Local Network**
177
+ Run `npm run dev` and share your local IP:
178
+ ```
179
+ http://192.168.1.XXX:3000
180
+ ```
181
+
182
+ **Option C: Tunneling (ngrok)**
183
+ ```bash
184
+ npx ngrok http 3000
185
+ ```
186
+
187
+ Share the generated public URL.
188
+
189
+ #### 5. Collect Feedback
190
+ - Schedule live demo sessions
191
+ - Record video walkthroughs
192
+ - Use GitHub Issues for feedback
193
+ - Create approval checklists
194
+
195
+ ### Best Practices
196
+
197
+ **Use Realistic Data**
198
+ ```jsx
199
+ // Good: Realistic data stakeholders recognize
200
+ <UserCard name="John Smith" email="john@company.com" role="Manager" />
201
+
202
+ // Bad: Placeholder text
203
+ <UserCard name="Test User" email="test@test.com" role="User" />
204
+ ```
205
+
206
+ **Show Multiple States**
207
+ ```jsx
208
+ <Button variant="primary">Primary</Button>
209
+ <Button variant="secondary">Secondary</Button>
210
+ <Button disabled>Disabled</Button>
211
+ <Button loading>Loading...</Button>
212
+ ```
213
+
214
+ **Test Edge Cases**
215
+ ```jsx
216
+ <UserName name="Really Long Name That Might Wrap To Multiple Lines" />
217
+ <UserName name="" /> {/* Empty state */}
218
+ <ErrorMessage>Network connection lost. Please try again.</ErrorMessage>
219
+ ```
220
+
221
+ **Group by Feature**
222
+ ```jsx
223
+ <section className="checkout-flow">
224
+ <h2>Checkout Flow</h2>
225
+ <p>Validation: Cart → Shipping → Payment → Confirmation</p>
226
+ <ShoppingCart />
227
+ <ShippingForm />
228
+ <PaymentForm />
229
+ </section>
230
+ ```
231
+
232
+ **Add Annotations**
233
+ ```jsx
234
+ <div className="demo-section">
235
+ <h2>Login Form</h2>
236
+ <p><strong>Validation Points:</strong></p>
237
+ <ul>
238
+ <li>Email validation works correctly</li>
239
+ <li>Password toggle shows/hides password</li>
240
+ <li>Error messages display properly</li>
241
+ <li>Submit button disables during API call</li>
242
+ </ul>
243
+ <LoginForm />
244
+ </div>
245
+ ```
246
+
247
+ ### Configuration
248
+
249
+ Test site requirement can be disabled in `.claude/settings.json`:
250
+ ```json
251
+ {
252
+ "testing": {
253
+ "ui": {
254
+ "requireIntegrationSite": false
255
+ }
256
+ }
257
+ }
258
+ ```
259
+
260
+ Or configure custom directory:
261
+ ```json
262
+ {
263
+ "testing": {
264
+ "ui": {
265
+ "integrationSiteDir": "demo-site"
266
+ }
267
+ }
268
+ }
269
+ ```
270
+
271
+ ### Troubleshooting
272
+
273
+ **Components Not Found**
274
+ - Check import path relative to `test-site/src/`
275
+ - Verify components are exported properly
276
+ - Ensure file extensions match (.jsx, .tsx)
277
+
278
+ **Styles Not Working**
279
+ - Import component CSS alongside components
280
+ - Configure Tailwind/styled-components if used
281
+ - Check CSS module naming conventions
282
+
283
+ **Hot Reload Issues**
284
+ - Save files to trigger reload
285
+ - Check terminal for build errors
286
+ - Restart dev server: `Ctrl+C` then `npm run dev`
287
+
288
+ **Deployment Fails**
289
+ - Ensure GitHub Pages enabled in repo settings
290
+ - Check `gh-pages` branch exists
291
+ - Verify base path in `vite.config.js`
292
+
293
+ ### Framework Support
294
+
295
+ **React (Default)**
296
+ Template uses Vite + React with hot reload.
297
+
298
+ **Vue**
299
+ See `test-site/README.md` for Vue migration guide.
300
+
301
+ **Svelte**
302
+ See `test-site/README.md` for Svelte migration guide.
303
+
108
304
  ## Database Migration Requirements (Hard Enforced)
109
305
  Database changes MUST follow migration workflow:
110
306
  - WRITE migration files in `./Agent/migrations/` or `./Agent/prisma/migrations/`
@@ -74,6 +74,26 @@
74
74
  "CLAUDE_CODE_MAX_OUTPUT_TOKENS": "8192",
75
75
  "DISABLE_NON_ESSENTIAL_MODEL_CALLS": "1"
76
76
  },
77
+ "testing": {
78
+ "ui": {
79
+ "strictMode": true,
80
+ "requireTestFile": true,
81
+ "requireImport": true,
82
+ "requireRender": true,
83
+ "requireProps": true,
84
+ "requireEventTests": true,
85
+ "requireApiMocking": true,
86
+ "requireStateTests": true,
87
+ "requireFormTests": true,
88
+ "requireConditionalTests": true,
89
+ "requireIntegrationSite": true,
90
+ "integrationSiteDir": "test-site",
91
+ "conditionalThreshold": 3,
92
+ "requireVisualCheck": true,
93
+ "requireContract": false,
94
+ "comment": "⚠️ ALL UI testing requirements are HARD REQUIREMENTS (cannot be disabled). Commits will be blocked if any requirement is violated."
95
+ }
96
+ },
77
97
  "hooks": {
78
98
  "SessionStart": [
79
99
  {
@@ -113,6 +133,22 @@
113
133
  "type": "command",
114
134
  "command": "node node_modules/.gl-life-claude/hooks/auto-format.js"
115
135
  },
136
+ {
137
+ "type": "command",
138
+ "command": "node node_modules/.gl-life-claude/hooks/validate-ui-syntax.js"
139
+ },
140
+ {
141
+ "type": "command",
142
+ "command": "node node_modules/.gl-life-claude/hooks/validate-ui-runtime.js"
143
+ },
144
+ {
145
+ "type": "command",
146
+ "command": "node node_modules/.gl-life-claude/hooks/validate-ui-visual.js"
147
+ },
148
+ {
149
+ "type": "command",
150
+ "command": "node node_modules/.gl-life-claude/hooks/validate-component-contract.js"
151
+ },
116
152
  {
117
153
  "type": "command",
118
154
  "command": "node node_modules/.gl-life-claude/hooks/validate-test-quality.js"
@@ -121,6 +157,10 @@
121
157
  "type": "command",
122
158
  "command": "node node_modules/.gl-life-claude/hooks/validate-ui-integration.js"
123
159
  },
160
+ {
161
+ "type": "command",
162
+ "command": "node node_modules/.gl-life-claude/hooks/validate-integration-site.js"
163
+ },
124
164
  {
125
165
  "type": "command",
126
166
  "command": "node node_modules/.gl-life-claude/hooks/validate-database-changes.js"
@@ -0,0 +1,14 @@
1
+ node_modules/
2
+ dist/
3
+ *.log
4
+ .DS_Store
5
+ .env
6
+ .env.local
7
+ *.tgz
8
+
9
+ # Claude Code local settings
10
+ .claude/settings.local.json
11
+
12
+ # Build artifacts
13
+ build/
14
+ coverage/
@@ -67,6 +67,10 @@ Configuration files are in [.claude/](.claude/):
67
67
  - `PLAN-SCHEMA.json` - Project plan schema
68
68
  - `PROJECT-PLAN-TEMPLATE.json` - Plan template
69
69
 
70
+ ### Framework Updates
71
+
72
+ See the [gl-life-claude-zen CHANGELOG](https://github.com/ajayhanda/gl-life-claude/blob/main/create-gl-life-claude/CHANGELOG.md) for framework version history and breaking changes.
73
+
70
74
  ## Development
71
75
 
72
76
  Your code goes here!