{"_id":"@kamleshsk/claude-qa","_rev":"29-62e6bf060fc16f3a67b88b33af148670","name":"@kamleshsk/claude-qa","dist-tags":{"latest":"3.7.1"},"versions":{"1.0.1":{"name":"@kamleshsk/claude-qa","version":"1.0.1","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@1.0.1","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"519d17e8f91512e664dd172bdd108279eb3fc816","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-1.0.1.tgz","fileCount":16,"integrity":"sha512-OkjbZBDwLHXc59DgFWDgNjKs2DF6kh979M10IrBtMvKfL2JjY/+CZa3qvkVknNhUP/wOVfJxc872RTLnfhZUfw==","signatures":[{"sig":"MEQCIGBlFTs4V4q/Pk3UtL7GjiJvhix3W86bFI5QgmiUgFC5AiBuVN5jrO1pzA1+SZbloqTP9VCgYTrae5ScWWEJ6YvTrQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213742},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_1.0.1_1779019683450_0.2693986667990034","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@kamleshsk/claude-qa","version":"1.0.2","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@1.0.2","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"a95f3aa284235cf96376a40588437808479c6e43","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-1.0.2.tgz","fileCount":17,"integrity":"sha512-TjHxFXdFomMRH4rRfycLCQwsgLKdQ3fgQmjYMnjUy5wi+SAZv88/hrRgImspuYEJhSAS4yj9tYFNZIAfyI8T0w==","signatures":[{"sig":"MEQCIGOJT2UKttSVL3olc1MEl4MD5ywxBO3wKnbXALcQn5SeAiAjhzb7e67FJiIIJHkO8Ii/jR3sntHsxO/goNVFUJcMfg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":225546},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_1.0.2_1779020675821_0.97637924049564","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@kamleshsk/claude-qa","version":"1.0.3","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@1.0.3","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"ac85090a263ba2c26726c9852f02d254eeb7b247","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-1.0.3.tgz","fileCount":17,"integrity":"sha512-dp9eHtCrV6Z5giSz9koTGj3QkZ1pTyMyuXQtIfC60trL0jaNymNoeQrs1wBpLpvFdeDIzSDdP42Gr4qglyi8jA==","signatures":[{"sig":"MEQCIHXuCLOP/ecGhYuliihJz2NHVRgEva/rFHBHOlCqbgTfAiBnxO8mleB5eEA+YysS2rC48cqFvsyiGc6K43I4icQJLw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":225520},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_1.0.3_1779040227583_0.9788362078878554","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@kamleshsk/claude-qa","version":"1.0.5","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@1.0.5","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"e7aa083174e6641edfd6dca89ca5ce1b120b3be3","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-1.0.5.tgz","fileCount":17,"integrity":"sha512-KWXH0LAIGUCNnj639Ly9JZRj1otO8TTQZ1esiE09H6KIottyIFJvsIiyNHrkctZHa07j0/h3ovMQZMvjTMoSTQ==","signatures":[{"sig":"MEUCIQDQDC7tJLmyNwQn1ivLXWbMq+LPWXGhXo1M0QqMveK5egIgVHgfJMlGocOMLMsjXcbl1pITs97lSTa350N7aKx3ZIM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":245737},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_1.0.5_1779103825342_0.8366330139385283","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@kamleshsk/claude-qa","version":"1.0.6","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@1.0.6","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"ff8688bce52ebe4cb17d29dd9f7ec4f66afc7d9b","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-1.0.6.tgz","fileCount":17,"integrity":"sha512-hm4lZQij8sNGQwy2qefnk5g29Vyd7L76KUKJ9P/r3v63mTNFnZ9KZ8PdugQqC2coTDSY98M95/j3BT3ua5bY0A==","signatures":[{"sig":"MEUCIDD1YuZSESsq5GzvLP909HaszW0EAXjp61OybSEkiJRsAiEAmQFiu6XkBAOQlslnGLwUNZE0w/fMB+bs9C39gKSdyY8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":221518},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_1.0.6_1779104372465_0.4866504974312582","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@kamleshsk/claude-qa","version":"1.0.7","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@1.0.7","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"a63e9590bc483be4934f4c65042b337780483f56","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-1.0.7.tgz","fileCount":33,"integrity":"sha512-OpqnocE37goNjnVVbbC+gJRjopOr98k8Nlzg8RTLAccUCZ8EBGy+hgjX0IUB1AGJdZd0fodgKV5ElWQ7/R+A7g==","signatures":[{"sig":"MEUCIFFrub07PjnAAqCjueY3gAQUX3UbKh0BRoq0i6o6SFVNAiEAnkJpTZSNrbiWKA2g0mhnIFMH8qIbvdIYbQDU1SFHyH0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6971354},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_1.0.7_1779164174196_0.08832532245760594","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@kamleshsk/claude-qa","version":"1.0.8","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@1.0.8","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"d3b2341d10a2864859c1a1763a06febf7e77d52b","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-1.0.8.tgz","fileCount":33,"integrity":"sha512-ASiVApdTjj0Xl9SIKdSX9xZHgNQPuJOTVJ6OdM2O1XT4f9iyp8JKQG1VDH9esZBGuq0AdK6LXbDW70oSaOCE3w==","signatures":[{"sig":"MEUCIQDuhHmNygf/Kopw30/3bx39H73U0C8KlIZhiUvpA6SPLwIgBB2Zd09VP3suHDxYexFie2qs2YpCD1yYc/kgAaVw+oo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6971354},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_1.0.8_1779164396480_0.9284463947269204","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@kamleshsk/claude-qa","version":"1.0.9","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@1.0.9","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"c33d552d6e361ac4c863d6e7941056a4e801dd08","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-1.0.9.tgz","fileCount":33,"integrity":"sha512-elI51Sw1QbcTCh08x5+Zb5kQJMZB7i+ABBKopdSucJYmVG88bplCpY6+TZ991e5HafaWZpkpqyqBwwTrciXnOw==","signatures":[{"sig":"MEQCIC4O9Bd5W0isQGKB79rlYsqkdOUvLuhoE6SAZbBqaz/bAiAFCjY8AckaYS3vpYYc1idG7j4JI3GI4zYhwij96FjItw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6972240},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_1.0.9_1779168461050_0.3166269152891794","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@kamleshsk/claude-qa","version":"1.0.10","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@1.0.10","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"48c6dca6f23490f0d7e44f42d804d7137a39ebd7","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-1.0.10.tgz","fileCount":33,"integrity":"sha512-Kd7PRXKjCSERfQvgVC2gxNnmbUX2MSV/HgBoP127G3HI1rj7iOjdsT9qo3gufXNI2QLcvaPtnYGr46cyfLFtYw==","signatures":[{"sig":"MEUCIQDTIlHeEBn8lNZaTfKdsFlqnmsisGrH0xShooeVZUSejAIgSTBNB2JYOhLo/QO8Odqsn8tIqDYY2f/puLyEsW891RU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6974680},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_1.0.10_1779170987405_0.26369268353018294","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@kamleshsk/claude-qa","version":"1.1.0","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@1.1.0","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"63ce3bf308d221978d584ad56d372e598810ad05","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-1.1.0.tgz","fileCount":33,"integrity":"sha512-h/Bpeuk3LBifezVebqG4c45bOJPkJFuQopHRKJrV8oq/xsfU3wGg6ydbFjrynsTS8DczelHva1LLREgI0/i1wg==","signatures":[{"sig":"MEQCIEYxM2c+18dlD9rovijI8/zxU4BQdRhjyQeimkn1TfiRAiBSsa5IDx7BKE8GeBTY86OU4RtkCD8EcNTMIp8C9alVxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6982397},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_1.1.0_1779187337531_0.8839371887268741","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@kamleshsk/claude-qa","version":"1.2.0","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@1.2.0","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"9066e87f5a69389da3519bd80348a26e5ca76cd9","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-1.2.0.tgz","fileCount":33,"integrity":"sha512-NJEUh5q8zdrf8VwSvSwhCH/+SSMSmEMnsxRZ5AE7doj+On74VMA/1vPOFe5bxv0M7rId/MzI3DJ9kXeJ60IuEQ==","signatures":[{"sig":"MEQCIBNbf0CB5lyrKVnFHzWU94KRiI1Prw/xETd3DxwCPc0KAiAr2U2nc/w6fSx+djAEuvj/iUAv1ml+zPgU8KaVOoboHQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7003496},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"25.9.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_1.2.0_1779276936346_0.6805490769990479","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@kamleshsk/claude-qa","version":"1.3.0","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@1.3.0","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"c69c590794de1efc0d3b6297fd25d315bfe33d64","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-1.3.0.tgz","fileCount":33,"integrity":"sha512-V/70dSpcVsJiDW9cm6WKgOV9sWSRXSnFp7KMyhp3OL08DFEfaxzTI4NOznW/1TuZPicjzkBFpJsYCN64rzRbEw==","signatures":[{"sig":"MEQCIHU7uE1iio+wSS+9wwEGDp3a9xAjRvFb9FGOzliFzwKPAiAigQVeQGLDgB0IqfyIXHoUzKKjdpb9e+1UkuCdXuWyEA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7018453},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"10.9.2","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_1.3.0_1779442981798_0.3253055008023713","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@kamleshsk/claude-qa","version":"1.3.1","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@1.3.1","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"1f9d0c7ed8609b62be2189936c47f07e8d2c228d","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-1.3.1.tgz","fileCount":34,"integrity":"sha512-hcrd1mutY2elu/uFpsVMFdldNmn2Kgc0qCouF6wILLitW149Z7YwdIX5D8n+gwR3PH6/+Gt7A8jtLjnG9ZgdHg==","signatures":[{"sig":"MEQCIEXl629UJd3TIIG3dbPF4Sjm39QgJBaAEvhrctrt8NDSAiA/aQQT26MBis6yWLPA/RnkUh18meVPTq6xKuWAnhqkQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7047602},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"10.9.2","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_1.3.1_1779451441528_0.6979780267526952","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@kamleshsk/claude-qa","version":"1.4.0","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@1.4.0","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"6b132843da38bc53df038bebdb674cf712461d06","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-1.4.0.tgz","fileCount":36,"integrity":"sha512-cxC3zvK9KrhjashluZQsrT2OSgxFvG3wqglryP8GNCt248sN0PumxynWxktiHXHfrr4PboFHSx7a+QTlu58r2g==","signatures":[{"sig":"MEQCHx1hR/UKn3hJNhNcjDFy2JY+n86NMQI25eMzMkxZnikCIQDVrtMXiOWwfLX2yp8PPWiLuyoEFz0KIFboFRbDV3FZRA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7099300},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"10.9.2","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_1.4.0_1779453187231_0.8618780183143262","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@kamleshsk/claude-qa","version":"2.0.0","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@2.0.0","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"821f35d976c8e3b3fbbe6906222a460bd5dde77f","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-2.0.0.tgz","fileCount":36,"integrity":"sha512-a+wDc4+j9ybAQp2j/ikEliZ3H+ivD8aL5yD8UMiZzXRlnX2hwp5A237G18hjrm9uHG0Y2kKn+925xdgm3+S5pw==","signatures":[{"sig":"MEUCIQC4OOGgP0YF0BnVAMZLK7cqnuDpOKseFGcjT8dSOYRoeQIgdxqFk0p7ZD8dAZN4URc37N1afogEUD8ypC6weghDpBI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7099300},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"10.9.2","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_2.0.0_1779461105539_0.18118402910327958","host":"s3://npm-registry-packages-npm-production"}},"2.1.0":{"name":"@kamleshsk/claude-qa","version":"2.1.0","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@2.1.0","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"84978bf20a198df0cdc096ccd033ab081c393428","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-2.1.0.tgz","fileCount":36,"integrity":"sha512-pUZJp24yL9r95URTB6kJlDxHfpZ+qJCnAIQKLAMQQ+GUX97/thZy5ZnzK0989AVJsdDdHuXUXTKLjd626xQ/1g==","signatures":[{"sig":"MEUCIH0USVmS4avt3GAfPijqBlYdTrZQ6jNXdtY39bZoBwKQAiEA+KZvTq30UQoj3PUR47NQTy/ZxfsxSfKl1UEMWTq/2ms=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7099857},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"10.9.2","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_2.1.0_1779692748327_0.0743996219414449","host":"s3://npm-registry-packages-npm-production"}},"3.0.0":{"name":"@kamleshsk/claude-qa","version":"3.0.0","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@3.0.0","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"850efe10fb9d17a4fa9326a4d6c3189bb813b797","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-3.0.0.tgz","fileCount":41,"integrity":"sha512-hkJKIE1u0E6Oq8/iEfDcMOOHJKtikNYlvtpsrw2BaKJ0t6dBjYQtIVQFa1CoIzoPTinTpj6RU+F+EJRJt5gA/A==","signatures":[{"sig":"MEYCIQDCa9c9PXke9VSsx7m7Q8jdrcxgHTBEF5OkW9z7/RqvnAIhAORKgOCpOHiiLXlq+RVSz/tx6hhXPl2NyWkLfFxxRFqK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7124125},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"10.9.2","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_3.0.0_1779793856521_0.9373812828733981","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@kamleshsk/claude-qa","version":"3.0.1","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@3.0.1","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"c14459368d0429eca42a3e7e5305984ada487525","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-3.0.1.tgz","fileCount":41,"integrity":"sha512-pRVnVfp4hXCiWF1/4VdKmlO5erjNCacBY6MQsfzXelLWa8tpFJjXevi1n1KPqFOw1h63DdYa6oruZsa6rxCzuA==","signatures":[{"sig":"MEQCIB+PWEPeJxrhmjwwh0JGd+IaMElNIKhJNzwG2oVBXti0AiBzCVT+XCVfaTUIYDAOYF5GR+mf7Hv8NB0RDGqQjOCy8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7124142},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"10.9.2","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_3.0.1_1779794017831_0.432310642894842","host":"s3://npm-registry-packages-npm-production"}},"3.0.2":{"name":"@kamleshsk/claude-qa","version":"3.0.2","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@3.0.2","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"fe6bc28c2500ad3ce8568f1607cb2eb2059a15b2","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-3.0.2.tgz","fileCount":41,"integrity":"sha512-6wDkD09/WMOk3X1MtZgwlHENxZMO2GkjPjCte/oN21WBQIOmcUSW9m8nvjpDZPhs/2aUZDeqmaui8OSuC9uZPg==","signatures":[{"sig":"MEUCIQDVXfzahdlePLBmW8hkYlyu83A3+wFiS3U+YDo0wQqt/gIgJ6c4HA6+NVIhbosV2WyG03m6avsfZBxShbn+uBVJUos=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7124142},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"10.9.2","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_3.0.2_1779794200352_0.3926745866176278","host":"s3://npm-registry-packages-npm-production"}},"3.0.3":{"name":"@kamleshsk/claude-qa","version":"3.0.3","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@3.0.3","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"df44786959901603d1ae4d137a2b7eefbfb6eb68","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-3.0.3.tgz","fileCount":41,"integrity":"sha512-93bAPzmZNmw5OIP/dU6HYvUQYxfwJT+tWXU+8Amxjj/CpNxOzst+VvDnPxzAqmSJ4S1sXO21Wc2qP5391SP5Jg==","signatures":[{"sig":"MEQCIGHyamCf6HyWmY5a8hx43rd94C4v3IgtBSsvBmy1tt+HAiBuVoblZphUVMU4sifswy8uitFxIey7VxmgeGaWupLjVg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7124142},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"10.9.2","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_3.0.3_1779794605667_0.02001605122639316","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@kamleshsk/claude-qa","version":"3.1.0","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@3.1.0","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"522e905e830271a170ee2600eb1f42656e34019c","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-3.1.0.tgz","fileCount":41,"integrity":"sha512-P+pDLxzsLgK4SLdM9yreZTHffqXKzFUOlffFINq/e5GtEaFbkBJE81joSLRrHM+YOj6IMEABeh08Kmh+nHyTIA==","signatures":[{"sig":"MEUCIDTeBA6XwLLh/GfkYW8/6p5lGYiMQDA2N1wTK4cBvdVJAiEA2V2CiPyNezrbkWXcwgaVHlWeZ8NrFG1S35GJImX1sB4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7232734},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"10.9.2","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_3.1.0_1779800835479_0.4998332007907875","host":"s3://npm-registry-packages-npm-production"}},"3.2.0":{"name":"@kamleshsk/claude-qa","version":"3.2.0","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@3.2.0","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"271c217d2252dcbea48bfff946c288f275a91256","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-3.2.0.tgz","fileCount":41,"integrity":"sha512-o0HXA/JreDbZRk0HFaWAX3t3PV6L+SxI8mFbCHZoMmbIj6oliAev67YRZDCU5gCCHFgUlPOFVkKH536nrcTAXg==","signatures":[{"sig":"MEYCIQDGBanyJTKvAyo6nsKxs2sWoCWkVUfvFTdr27G1t2GoowIhAPJOaqFvPbnuFAp+as27Zz/FZHabYD0HkqP+UshaaIr6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7282783},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"10.9.2","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_3.2.0_1779864519173_0.957791179120328","host":"s3://npm-registry-packages-npm-production"}},"3.3.0":{"name":"@kamleshsk/claude-qa","version":"3.3.0","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@3.3.0","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"611be06c43b3fa3d344566ec6a57846740172aeb","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-3.3.0.tgz","fileCount":41,"integrity":"sha512-DfmwTq1WkP26MLdGjfApvcgyJDUuyP1SFSG57YO2p3l4o0TMwr1IV07I/w7KzLU+o63NxuezdANGhfBoAkp5Aw==","signatures":[{"sig":"MEQCIFG8EN/V/JTuGMssDQZTeZQlQjN4DhXJwbpR5FfB9D7+AiAkoj/vH05DtnjL2HdjFB+qZAaR7huWkUvH3pEYT5uISw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7323621},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"10.9.2","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_3.3.0_1779881897705_0.9255178543275164","host":"s3://npm-registry-packages-npm-production"}},"3.4.0":{"name":"@kamleshsk/claude-qa","version":"3.4.0","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@3.4.0","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"9ede1c2de5922ba906556ce788355c82e84989d7","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-3.4.0.tgz","fileCount":41,"integrity":"sha512-VVxYBg+OV/jVO+DL6Fh0ysXVkxuybPFOawC3GwztxFLLIPC1xvusGLFZx6aFMZ2GjM5WW+++KTfFEIlKGfE+wA==","signatures":[{"sig":"MEYCIQDwRkDOtFdoYvY2PSt7PCozVO3xgmc+/fZ53yznA0vPiwIhAJrvnfXwpXIfp7qZDXfnR2FApT/Y4KPjE4ukse1TYeMN","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7322536},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"10.9.2","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_3.4.0_1779882390475_0.40492232662805727","host":"s3://npm-registry-packages-npm-production"}},"3.5.0":{"name":"@kamleshsk/claude-qa","version":"3.5.0","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@3.5.0","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"7a9a69548a2ab3dea6fbd5b2851730cf97819210","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-3.5.0.tgz","fileCount":39,"integrity":"sha512-l0D9eYP/+UgegtGM++wKXT+KIn7ZE1OMilhRpzZVHBCdkzbnxtlJ344RIXEGPFZzXW+jkNIvPLxY2bN+WRAzYw==","signatures":[{"sig":"MEYCIQCvgHwnZ89hH4SnJNWkO2q6qql9Pyo+/BEgdPDZGNiJMgIhAP2mnCF5hFSoqs1WknVCHo9vl5oKoiepiID27oRSOTSh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7336819},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"10.9.2","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_3.5.0_1780248438256_0.9492422143654557","host":"s3://npm-registry-packages-npm-production"}},"3.6.0":{"name":"@kamleshsk/claude-qa","version":"3.6.0","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@3.6.0","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"311188ec79d25084e9a3928cfaa65e8b25eaf137","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-3.6.0.tgz","fileCount":39,"integrity":"sha512-x0+gFQmorqNvMU1QChEEwwjN0l2tvaC25NBelVVephtmufG+qESeG3JxqA4a3ftU6oiSl6xF7nLX0ZWXut2Y/Q==","signatures":[{"sig":"MEQCIDlVNHiw/VuIKu08ywpDUco7TMEK4JYOI9ebRLiwHjOxAiBfJdRWk5CyXTQfgl83q7ngG5khrNI2HSujEOSIqBYcAg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7347210},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"10.9.2","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_3.6.0_1780651797001_0.5318481449836043","host":"s3://npm-registry-packages-npm-production"}},"3.6.1":{"name":"@kamleshsk/claude-qa","version":"3.6.1","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@3.6.1","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"e212e318d75a4f138c573ab176779986cd9da41d","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-3.6.1.tgz","fileCount":39,"integrity":"sha512-TKKFiWXROX9eh9qdMSTEeDZFWgtvc/DVfAL6a72JfuOhNeZIPEQZGushJuk4P6Zr9y+jZNptWJGoFGt6Rc9Z5w==","signatures":[{"sig":"MEQCIF3w1Juwl1dxlyS2n7nvzOjFtxVc49otmu28qVBPlGtUAiAt9rRc4z5yZFAssnFIBuKNF8HRO0lcpEV7Rd+NJFrjQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7349908},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"10.9.2","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_3.6.1_1781855100579_0.6164702019730313","host":"s3://npm-registry-packages-npm-production"}},"3.7.0":{"name":"@kamleshsk/claude-qa","version":"3.7.0","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@3.7.0","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"bin":{"claude-qa":"bin/install.js"},"dist":{"shasum":"c29bb26806315a0318c21f100ffdbd695e32295b","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-3.7.0.tgz","fileCount":39,"integrity":"sha512-bK6TxATiBNMHy1jBt1Is2Pgsk8ZGE6j9ozznkvf7TCkH+w2aIBLkbOWLtNZLlUtyxCfdYpgUJenHcB37Uy0eAQ==","signatures":[{"sig":"MEUCIH+lFDs2X4xx1vBypBfgbpTqxtzdY0HvpydxcrbLAtdUAiEAofEXEbVX44zR+ALRhMmFEOGiLIec5kX0VAWpKIHhbi8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":7373584},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"_npmVersion":"10.9.2","description":"Claude Code QA skills and commands installer — works with any project","directories":{},"_nodeVersion":"22.14.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/claude-qa_3.7.0_1781953928180_0.9447867429744634","host":"s3://npm-registry-packages-npm-production"}},"3.7.1":{"name":"@kamleshsk/claude-qa","version":"3.7.1","description":"Claude Code QA skills and commands installer — works with any project","bin":{"claude-qa":"bin/install.js"},"keywords":["claude","claude-code","qa","playwright","testing","e2e"],"author":{"name":"kamleshsk"},"license":"MIT","_id":"@kamleshsk/claude-qa@3.7.1","_nodeVersion":"22.14.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-WgPJ3KrFQDzB7Ny+NLGCf267JeRQrUNFY8VYvjWMXcw7cS5/M6fdmd1UOqM2Qnv8TuTGxOIEZXtlJHagBxA28w==","shasum":"37c33ea84b12928544473152b356ca8b251cc646","tarball":"https://registry.npmjs.org/@kamleshsk/claude-qa/-/claude-qa-3.7.1.tgz","fileCount":43,"unpackedSize":7713313,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDlHNthwYvza1se+jXCRmkRuu9h3/kys90BhcHQKc57HgIgWR3BRhGnupll9UYzc0L3vgKkZJkyHZpSIti4EHEAkfc="}]},"_npmUser":{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"},"directories":{},"maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/claude-qa_3.7.1_1784706156559_0.19167478496310375"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-17T12:08:03.376Z","modified":"2026-07-22T07:42:36.960Z","1.0.1":"2026-05-17T12:08:03.613Z","1.0.2":"2026-05-17T12:24:35.965Z","1.0.3":"2026-05-17T17:50:27.717Z","1.0.5":"2026-05-18T11:30:25.501Z","1.0.6":"2026-05-18T11:39:32.687Z","1.0.7":"2026-05-19T04:16:14.506Z","1.0.8":"2026-05-19T04:19:56.861Z","1.0.9":"2026-05-19T05:27:41.360Z","1.0.10":"2026-05-19T06:09:47.810Z","1.1.0":"2026-05-19T10:42:18.002Z","1.2.0":"2026-05-20T11:35:36.668Z","1.3.0":"2026-05-22T09:43:02.058Z","1.3.1":"2026-05-22T12:04:02.308Z","1.4.0":"2026-05-22T12:33:07.511Z","2.0.0":"2026-05-22T14:45:05.933Z","2.1.0":"2026-05-25T07:05:48.625Z","3.0.0":"2026-05-26T11:10:56.884Z","3.0.1":"2026-05-26T11:13:38.093Z","3.0.2":"2026-05-26T11:16:40.708Z","3.0.3":"2026-05-26T11:23:26.353Z","3.1.0":"2026-05-26T13:07:15.768Z","3.2.0":"2026-05-27T06:48:39.437Z","3.3.0":"2026-05-27T11:38:17.954Z","3.4.0":"2026-05-27T11:46:30.867Z","3.5.0":"2026-05-31T17:27:18.557Z","3.6.0":"2026-06-05T09:29:57.320Z","3.6.1":"2026-06-19T07:45:00.803Z","3.7.0":"2026-06-20T11:12:08.537Z","3.7.1":"2026-07-22T07:42:36.849Z"},"author":{"name":"kamleshsk"},"license":"MIT","keywords":["claude","claude-code","qa","playwright","testing","e2e"],"description":"Claude Code QA skills and commands installer — works with any project","maintainers":[{"name":"kamleshsk","email":"kasambe.kamlesh1@gmail.com"}],"readme":"# @kamleshsk/claude-qa\n\n> **This is a CLI tool — run it with `npx`, not `npm install`.**\n>\n> ```bash\n> npx @kamleshsk/claude-qa\n> ```\n>\n> Do **not** run `npm install @kamleshsk/claude-qa`. Installing it as a dependency does nothing useful — it is designed to be executed once per project via `npx`.\n\n> One command to install a complete Claude Code QA automation framework into any project.\n\n[![npm](https://img.shields.io/npm/v/@kamleshsk/claude-qa)](https://www.npmjs.com/package/@kamleshsk/claude-qa)\n[![license](https://img.shields.io/npm/l/@kamleshsk/claude-qa)](./LICENSE)\n\n---\n\n## What's new in v3.7.1\n\n- **`/qa-result` now actually installs.** It shipped in `templates/commands/` since a prior release but `bin/install.js` never copied it — projects that ran `npx @kamleshsk/claude-qa` never received `/qa-result`. Fixed.\n- **New `/qa-common-setup` command.** One-time ingest of a shared/common test-suite spreadsheet into a reusable Playwright function library that `/qa-complex` auto-detects and offers to reuse on every future reference sheet.\n- **`/qa-complex`, `/qa-simple`, `/qa-result`, `/qa-healer`** updated with the latest hardening from real-world project use (selector/timeout fixes, retryReach churn-flake handling, count-reconciliation refinements).\n- **`docs/qa-reference/README.md`** and **`docs/qa-reports/README.md`** templates refreshed to match current conventions.\n\n## What's new in v3.7.0\n\n- **Dynamic test angles — no longer bound to `happy` / `validation` / `hierarchy`.** Angles are now an open palette. A recommended **baseline** set (`happy, validation, hierarchy, negative, boundary, edge, permission, security, api_async, ui_ux`) is always available, but every command may also **invent custom angles** the source material implies — e.g. `accessibility`, `workflow`, `concurrency`, `localization`, `audit_log`, `notification`, `data_integrity`, `performance`. The whole framework was made angle-agnostic: the QA portal runner accepts any registered or safe lowercase angle (no more HTTP 400 on non-baseline angles), the dashboard renders & counts custom paths, `register.js` validates by format instead of a fixed list, and `ANGLE_MAP` passes unknown full angle names through. `export const ANGLES` in generated modules is now variable-length.\n- **Strict full-case generation — every discovered case is created.** `/qa-complex` now enumerates **every discrete test case** inside each reference file (numbered items, table rows, spreadsheet rows, bulleted scenarios) into a flat **MASTER CASE LIST** whose length is the authoritative **DISCOVERED** count. The Coverage Matrix and a fully-enumerated Execution Map must equal that count, and a **hard count-reconciliation gate** blocks completion unless `DISCOVERED == execution-map rows == implemented step-groups == registry entries`. Sampling words/behaviours (\"representative\", \"subset\", \"top N\", \"etc.\") are explicitly forbidden — if it finds 171 cases, it creates 171. `/qa-update` applies the same full-enumeration + count discipline to reference-file diffs.\n- **QA dashboard — fixed the long-module truncation bug.** Module bodies were capped at `max-height: 2000px` with `overflow:hidden`, which silently clipped large modules at ~54 rows (hiding the rest of a path **and every path below it**). The cap is lifted so all cases across all paths render.\n- **QA dashboard — collapsible paths + per-path scrollbars.** Each path section now has its own collapse **chevron** (click the header to expand/collapse) and its own **inner scrollbar**, so a 64-case path scrolls in place instead of running down the page.\n- **Path-level IDs.** Each path now shows a copyable **path ID** (`<module>-<code>`, e.g. `d-psp-hap`) on the dashboard, and **`/qa-debugger` accepts it** to debug/fix an entire path at once — `/qa-debugger d-psp-hap` runs the whole happy path, alongside the existing single-case (`d-psp-hap-001`) and whole-module (`d-psp`) forms.\n\n## What was in v3.6.1\n\n- **`/qa-complex` & `/qa-update` — spreadsheet reference files (`.csv` / `.xlsx` / `.xls`)** — both commands now accept Excel and CSV files as reference material. The file-extension classifier recognises `.csv`/`.xlsx`/`.xls` as a spreadsheet content type. Since the Read tool cannot open binary workbooks, each command now converts `.xlsx`/`.xls` to CSV first (trying `ssconvert`, then `libreoffice --headless --convert-to csv`, then a `pandas` per-sheet fallback) and reads the resulting CSV — treating each row as one test case. Plain `.csv` files are read directly. In `/qa-update`, the converted CSV text (not the raw binary) is stored in the `.snap` `content` field so diffs stay stable.\n\n## What was in v3.6.0\n\n- **`/qa-setup` — direct DB user creation** — QA users are now inserted directly into the database via `php artisan tinker` with `updateOrInsert` (idempotent). No seeder file is written or required. Re-running `/qa-setup` safely updates existing rows.\n- **`/qa-setup` — five-stage safety protocol** — all DB and credential work now follows a strict READ → ANALYSE → PLAN → CONFIRM SAFETY → ACT gate. Claude must fully write out each stage before proceeding to the next. Nothing touches the DB until STAGE 5.\n- **`/qa-setup` — auth structure discovery** — Claude finds the real authenticatable model (never assumes `User.php`), reads migrations for exact table name and role enum values, checks for companion models, and discovers all role values from the live DB before writing a single row.\n- **`/qa-setup` — auto QA credentials** — `QA_EMAIL=qa@yourproject.local` and `QA_PASSWORD=Password@1` are automatically appended to `.env` during Step 1 if missing. Per-role `QA_<ROLE>_EMAIL` and `QA_<ROLE>_PASSWORD` keys are appended in Step 5 for every role discovered in the DB. Existing keys are never overwritten.\n- **`/qa-setup` — mandatory Node / Playwright / Chromium verification** — Step 9 now runs a strict runtime check: Node.js version (≥ 18 required), npm presence, playwright npm package in `node_modules`, and Chromium binary on disk. Each failure prints the exact fix command. Setup does not proceed past this check if any ❌ is present.\n\n## What was in v3.5.0\n\n- **Canonical `docs/qa-reference/` layout** — snap files now live inside `<role>/<feature>/` alongside their txt reference file, named `<feature>-snap.snap` (e.g. `docs/qa-reference/sa/product/product-snap.snap`). Previously they were misplaced at the role level.\n- **txt reference files** moved from `<role>/` into `<role>/<feature>/` — the feature subfolder is now the single source of truth for all artefacts belonging to a role/feature pair.\n- **All four QA commands updated** — `/qa-complex`, `/qa-update`, `/qa-simple`, and `/qa-debugger` read and write the new `<feature>-snap.snap` path inside the feature folder.\n- **Reference-file scan fixed** — `find` exclusion and node.js `.filter()` updated from `-not -name \".snap\"` to `-not -name \"*-snap.snap\"` so snap files living inside the feature folder are never accidentally ingested as reference material.\n\n## What was in v3.4.0\n\n- **`/qa-update` v3.2** — GOD TIER upgrade, live browser meta-tested through a 12-layer × 3-consecutive-pass regression battery on `admin-state`:\n  - **5-level regression verification pipeline** (Structural → Runtime → Behavioral → Deep Reliability → Production Stability) with real Playwright headed browser execution at each level.\n  - **`[QA-MONITOR]` runtime monitoring** injected before browser runs: `page.on('pageerror')`, `page.on('requestfailed')`, `page.on('response')`, `console` tracking, and DOM MutationObserver — all captured in `RUNTIME_CONTEXT`.\n  - **Invariant #16** — Always `fill('')` before `fill(searchValue)` in DataTable verify steps to clear any prior filter or stateSave-restored search.\n  - **Invariant #17** — Never add a second `goto(listingUrl)` after `waitForNavAway()` already landed on the listing page. The second goto triggers DataTables to re-initialize and restore a stale search via stateSave, racing against the new search AJAX.\n  - **`runtime_metadata` in `.snap`** — now records `verification_levels_passed`, `consecutive_stability_passes`, `fix_cycles`, `root_causes_resolved`, `last_browser_run_at`, `angles_executed`.\n  - **Risk Analysis + Validation Impact + Runtime Impact** added to Phase 4 human review summary.\n  - Phase 8 failure recovery: full 10-category root cause detection + complete runtime context capture (console, DOM, network, DB, screenshots, timeline).\n  - Phase 5-A strict per-field faker random data loop: generate → detect unique constraints → pre-check DB → loop until unique.\n- **`/qa-debugger` v3** — Step 7f added: writes `.snap` baseline after successful fix verification (was entirely missing in v2). Covers: folder creation, SHA-256 recomputation for all reference files, test_cases parsing from ANGLES export (handles `api_async→runAsync`, `ui_ux→runUiUx` via ANGLES lookup first, not naive camelCase), CHANGELOG append to module header.\n- **`/qa-simple` v6.2** — Phase 10.5 Regression Stability Loop + Gate 15 jQuery hidden label protection (carried from v3.2.0 work, now properly under `latest` tag).\n- **Invariant count raised to 17** in `/qa-update`.\n\n## What was in v3.1.0\n\n- `/qa-complex` **full rewrite** — 11-phase pipeline: reads folder structure as spec, classifies all test types (happy/validation/negative/boundary/edge/permission/security/api_async/ui_ux), human gap-check HARD STOP, 4-layer constraint audit, fresh faker data + DB uniqueness loop, 3-level verification, writes `.snap` baseline for future diffs\n- `/qa-update` **full rewrite** — surgical reconciler: chat-driven OR reference-driven (`.snap` diff), VDOM-style minimal patch (only changed lines regenerate), human gap-check HARD STOP, byte-identical preservation of all unchanged content, 3-level verification pipeline, updates `.snap` at completion\n- Both commands now write/read `docs/qa-reference/<role>/<feature>/.snap` for reproducible diffs\n\n## What was in v3.0.3\n\n- `/qa` renamed to `/qa-simple` — same usage, no test changes needed\n- New `/qa-complex` introduced (stub)\n- New `/qa-update` introduced (stub)\n- New `docs/qa-reference/` folder — drop in specs and screenshots per role/feature\n\n---\n\n## What it does\n\n`@kamleshsk/claude-qa` gives Claude Code a set of powerful slash commands that turn test creation,\ngeneration from specs, debugging, and repair into a seamless, AI-driven workflow — no configuration,\nno boilerplate, no guesswork.\n\n| Command | What it does |\n|---|---|\n| [`/qa-setup`](#qa-setup) | One-time scaffold — builds the entire QA framework from scratch |\n| [`/qa-common-setup`](#qa-common-setup) | One-time ingest of a shared/common test spreadsheet into a reusable function library |\n| [`/qa-simple`](#qa-simple) | Generate a test module from a description (quick mode) |\n| [`/qa-complex`](#qa-complex) | Generate a test module from reference files in `docs/qa-reference/` |\n| [`/qa-update`](#qa-update) | Update or extend modules when reference files change |\n| [`/qa-debugger`](#qa-debugger) | Debug a single failing test — root cause, fix, verify |\n| [`/qa-healer`](#qa-healer) | Heal the entire test suite in bulk — triage, batch-fix, report |\n| [`/qa-result`](#qa-result) | Run a module (all angles, headless) and show a 6-bucket result table |\n\n---\n\n## Install\n\n> **Use `npx` — not `npm install`.** The npm page always shows `npm i` but that is not how this tool works. Run it with `npx` to execute it directly without adding it to your dependencies.\n\nRun this from your **project root** (the folder that contains `composer.json` or your app root):\n\n```bash\nnpx @kamleshsk/claude-qa\n```\n\nTo always get the latest version:\n\n```bash\nnpx @kamleshsk/claude-qa@latest\n```\n\nThis copies all commands, skills, and reference docs into your project and automatically installs all Node dependencies — no manual setup needed.\n\n---\n\n## What gets installed\n\n```\n.claude/\n├── commands/\n│   ├── qa-setup.md          ← /qa-setup         scaffold the entire framework (run once)\n│   ├── qa-common-setup.md   ← /qa-common-setup  ingest a shared/common test spreadsheet\n│   ├── qa-simple.md         ← /qa-simple        generate a test module from a description\n│   ├── qa-complex.md        ← /qa-complex       generate a test module from reference files\n│   ├── qa-update.md         ← /qa-update        update modules when reference files change\n│   ├── qa-debugger.md       ← /qa-debugger      debug a single failing test\n│   ├── qa-healer.md         ← /qa-healer        heal all broken tests in bulk\n│   └── qa-result.md         ← /qa-result        run a module and show a 6-bucket result table\n└── skills/\n    └── playwright-cli/\n        └── references/  ← 11 reference docs (conditional forms, sessions, tracing…)\n\ndocs/\n└── qa-reference/\n    ├── README.md        ← naming conventions and usage guide\n    ├── admin/           ← drop reference files here for admin role\n    └── doctor/          ← drop reference files here for doctor role\n```\n\n---\n\n## Setup (run once per project)\n\n### 1 — Install\n\n```bash\ncd /your/project\nnpx @kamleshsk/claude-qa\n```\n\n### 2 — Reload Claude Code and run `/qa-setup`\n\nReload Claude Code so it picks up the new commands:\n\n- **VS Code extension:** `Cmd/Ctrl+Shift+P` → `Developer: Reload Window`\n- **CLI:** `exit` then `claude` again\n\nThen type `/qa-setup` in Claude Code. When it finishes:\n\n```bash\nchmod +x scripts/qa scripts/qa-register\n```\n\nThen paste this into Claude Code to register the middleware alias:\n\n```\nFind the EnsureQAAuth middleware file, detect the Laravel version, and register the qa.auth alias\nif it is missing — in bootstrap/app.php for Laravel 11+, or app/Http/Kernel.php for Laravel 10\nand below. Confirm the alias is registered when done.\n```\n\n### 3 — Wire up credentials\n\n```\nInspect this project's auth structure — find the real auth model, table name, and how roles are\nstored. Do not assume any field names. Run pending migrations, then check if the login identifier,\nrole column, active gate, and email verification columns exist. Create safe idempotent migrations\nfor anything missing. Finally, append QA_EMAIL, QA_PASSWORD, and one credential pair per role to\n.env without overwriting existing values. Derive the email domain from APP_URL (use\nyourproject.local if localhost).\n```\n\n### 4 — QA users (handled automatically by `/qa-setup`)\n\n`/qa-setup` Step 5 creates QA users directly in the database via `php artisan tinker` — no seeder required. It discovers the real auth model, table, and role values from the live DB, then runs `updateOrInsert` for one user per role. It also appends `QA_<ROLE>_EMAIL` and `QA_<ROLE>_PASSWORD` to `.env` for every role it finds.\n\nIf you need to re-create or update QA users at any time, just re-run `/qa-setup` — it is fully idempotent.\n\n### 5 — Verify\n\nStart your server and open `<APP_URL>/qa` in a browser. Log in with `QA_EMAIL` / `QA_PASSWORD` from `.env`. The dashboard should load.\n\n---\n\n## Commands\n\n---\n\n### `/qa-setup`\n\n**Scaffolds the entire QA framework from scratch.** Run this once per project after installing.\n\nIt generates:\n- `tests/e2e/js/runner.js` — the `TestRunner` class with interactive autofill, step helpers, and login\n- `tests/e2e/js/main.js` — CLI entry point with module picker and headless/headed modes\n- `tests/e2e/js/register.js` — test case registry (add, list, update status)\n- `tests/e2e/js/config.js` — loads `.env` and builds credentials map per role\n- `scripts/qa`, `scripts/qa-register` — shell wrappers\n- Laravel QA portal — `/qa` login page and dashboard\n\n**Usage:**\n\n```\n/qa-setup\n```\n\n---\n\n### `/qa-simple`\n\n**Generates a complete Playwright test module for any feature** — happy path, validation, and hierarchy angles, all in one shot.\n\nClaude reads your migrations, controllers, and Blade templates to understand the feature's constraints, then writes a production-quality test module with:\n\n- **Happy path** — create, verify, edit, delete with full CRUD coverage\n- **Validation** — required fields, duplicate UNIQUE checks, max-length+1, format violations\n- **Hierarchy** — parent-child relationships, cascade delete, FK constraint verification\n- **Interactive autofill** — Autofill / Submit overlay in headed mode for manual review\n- **Runtime-unique test data** — `_tag` pattern ensures no collisions between runs\n\n**Usage:**\n\n```\n/qa-simple <feature-name> \"<what this feature does>\"\n```\n\n**Examples:**\n\n```\n/qa-simple users \"Admin can create, edit, and delete user accounts\"\n/qa-simple products \"Admin can add products with price, category, and image\"\n/qa-simple orders \"Manager can view, approve, and cancel orders\"\n```\n\nAfter generation, run the test headed to watch it live:\n\n```bash\n./scripts/qa users happy h\n```\n\n**What Claude handles automatically:**\n\n| Scenario | How it's handled |\n|---|---|\n| Conditional fields (`x-show`, `x-if`, `wire:show`) | Sets controlling field first, waits for visibility |\n| Select2 / TomSelect dropdowns | `page.evaluate()` + `dispatchEvent` pattern |\n| Flatpickr / datepickers | `_flatpickr.setDate()` JS API |\n| AJAX-cascaded dropdowns | `:not([disabled])` wait — never `sleep()` |\n| Image / file uploads | Auto-fills from `public/qa-samples/` |\n| Edit pages with image-delete buttons | Uses `data-testid=\"save-<resource>\"` — never `.first()` |\n| Same-URL redirect after save | `domcontentloaded` + toast `waitFor` — never `networkidle` |\n\n> **Migrating from v2.x?** `/qa` has been renamed to `/qa-simple`. Same syntax, same output. The old `.claude/commands/qa.md` is removed automatically when you run `npx @kamleshsk/claude-qa@latest`.\n\n---\n\n### `/qa-common-setup`\n\n**One-time ingest of a shared/common test-suite spreadsheet.** When several modules exercise the same underlying workflow (e.g. a shared assignee/status/notification flow reused across products), drop that shared spreadsheet into `docs/qa-reference/common/` and run this once. It generates a reusable Playwright function library that `/qa-complex` auto-detects and offers to reuse on every future reference sheet, instead of every module re-implementing the same steps.\n\n**Usage:**\n\n```\n/qa-common-setup <path-to-shared-spreadsheet>\n```\n\nRun it before the first `/qa-complex` module that shares logic with others — subsequent `/qa-complex` runs pick up the generated library automatically.\n\n---\n\n### `/qa-complex`\n\n**Generates a complete Playwright test module from reference artefact files** — PDFs, Word docs, screenshots, or plain-text specs stored in `docs/qa-reference/`.\n\nClaude reads the artefacts, extracts feature understanding (CRUD operations, required fields, validation rules, parent-child relationships), and detects which test angles to generate. It then performs the same 4-layer constraint audit as `/qa-simple` before writing any test step.\n\n**Usage:**\n\n```\n/qa-complex <role/feature>\n```\n\n**Examples:**\n\n```\n/qa-complex admin/doctor       ← reads all files at docs/qa-reference/admin/doctor/\n/qa-complex doctor/order       ← reads docs/qa-reference/doctor/order/\n```\n\n**Supported reference file types:**\n\n| Extension | Contents |\n|-----------|----------|\n| `.txt` | Plain-text scenarios, acceptance criteria, user stories |\n| `.pdf` | Formal spec documents, QA plans, exported sheets |\n| `.docx` | Word documents with test case tables or scenario lists |\n| `.csv` / `.xlsx` / `.xls` | Spreadsheets — one test case per row, header row = field meaning |\n| `.png` / `.jpg` | UI screenshots, annotated mockups, wireframes |\n\n**Multiple files per feature are merged:**\n\n```\ndocs/qa-reference/admin/doctor/doctor.pdf    ← formal spec\ndocs/qa-reference/admin/doctor/doctor.png    ← UI screenshot\n```\n\nBoth are read together when you run `/qa-complex admin/doctor`.\n\n**What happens at runtime:**\n1. Reads all reference files for the given role/feature\n2. Extracts Feature Understanding — CRUD ops, fields, constraints\n3. Detects which angles to generate: `happy`, `validation`, `hierarchy`\n4. Prints detection summary and **waits for your confirmation** before generating\n5. Performs 4-layer constraint audit (DB → controller → Blade → JS)\n6. Generates the module, registers it, and updates `index.js`\n\n**When to use `/qa-complex` vs `/qa-simple`:**\n- Use `/qa-simple` when you can describe the feature in a sentence\n- Use `/qa-complex` when you have a spec document, screenshot, or acceptance criteria file\n\n---\n\n### `/qa-update`\n\n**Detects what has changed in reference files relative to what existing test modules cover**, then updates or extends those modules. Works on both simple (description-based) and complex (reference-file-backed) modules.\n\n**Usage:**\n\n```\n/qa-update                              ← scan all modules, update changed\n/qa-update admin/doctor                 ← update one module\n/qa-update --add-missing                ← add missing angles to all modules\n/qa-update admin/doctor --add-missing   ← update + add missing angles to one module\n```\n\n**What it does:**\n1. Finds all modules backed by reference files in `docs/qa-reference/`\n2. Reads the reference files and the existing module\n3. Detects new CRUD ops, new required fields, new validation rules, or missing angles\n4. Prints a change report and **waits for your confirmation**\n5. Appends new steps or angles — never removes or modifies existing steps\n6. Runs the updated module headlessly to verify\n\n**`--add-missing` flag:**\nAdds absent test angles to modules that don't have them. For reference-backed modules, angles are derived from the reference files. For simple modules (no reference file), Claude infers `runValidation` from the form fields in `runHappy`.\n\n**Safety rules (non-negotiable):**\n- Only appends — never removes or overwrites existing steps\n- Only touches `tests/e2e/js/modules/` — nothing else\n- If a change requires modifying existing step logic, it's flagged as a manual action\n\n---\n\n### `/qa-debugger`\n\n**Debugs a single failing test** — finds the root cause, applies the minimum fix, verifies it holds, and checks for regressions.\n\n**Usage:**\n\n```\n/qa-debugger <test-case-name-or-id>\n```\n\n**Examples:**\n\n```\n/qa-debugger users-hap-001          ← registry ID\n/qa-debugger users happy            ← module + angle\n/qa-debugger users                  ← entire module (all angles)\n/qa-debugger \"Admin can create\"     ← title substring\n```\n\n**What it does, step by step:**\n\n1. **Locates** the test in the registry or by file search\n2. **Reproduces** the failure in headless mode, captures the full step trace\n3. **Inspects DB state** before and after — detects leftover records from incomplete cleanup\n4. **Scans network traffic** — surfaces 422/401/403/500 responses for server-side failures\n5. **Classifies** the root cause from 9 failure classes (selector miss, nav timeout, DB state, auth, timing…)\n6. **Auto-scans for missing `data-testid`** — checks every testid the test uses against all Blade templates, proposes the exact Blade edit\n7. **Fixes** the minimum change that resolves the root cause\n8. **Verifies** with 3 consecutive runs — a single pass is not enough\n9. **Regression-checks** related modules using precise scope discovery (by testid, role, and DB table)\n10. **Confirms flakiness** with 12 consecutive runs when the test initially passes\n\n**Failure classes it handles:**\n\n| Class | Signal | Fix |\n|---|---|---|\n| Selector miss | `strict mode violation: N elements` | Scope locator or add `data-testid` |\n| Element missing | `locator.waitFor: Timeout` | Check `data-testid` in Blade template |\n| Nav timeout | `page.waitForURL: Timeout` | Same-URL redirect → use `domcontentloaded` + toast wait |\n| Form submit | Wrong page after submit | Use `[data-testid=\"save-<resource>\"]` on edit forms |\n| Validation fail | 422 response / unexpected redirect | Read form HTML for missing required fields |\n| DB state | Duplicate key / row not found | Broaden `dbCleanup()` to cover `qa.%@test.local` and `QA Test %` |\n| Auth failure | Redirect to `/login`, 401/403 | Check `QA_<ROLE>_EMAIL` / `QA_<ROLE>_PASSWORD` in `.env` |\n| Timing / race | Intermittent passes and fails | Replace `networkidle` with `domcontentloaded` + element `waitFor` |\n\n---\n\n### `/qa-healer`\n\n**Heals the entire broken test suite in one shot.** Where `/qa-debugger` fixes one test at a time, `/qa-healer` treats the whole suite as a single repair job — triage all failures, group them by root cause, apply batch fixes, verify, and report.\n\n**Usage:**\n\n```\n/qa-healer                          ← heal all implemented modules\n/qa-healer --module=users           ← heal only the users module\n/qa-healer --status=all             ← run every registered module\n/qa-healer --module=orders --status=broken\n```\n\n**What makes it brilliant:**\n\nInstead of running `/qa-debugger` 12 times for 12 broken tests, the healer first classifies every failure, then groups them. If 8 tests fail because a Blade template lost its `data-testid` in a refactor, the healer adds the attribute to that one template and confirms all 8 pass. One edit. Eight tests healed.\n\n**How it works:**\n\n```\nStep 1  Environment check — verifies runner, registry, and app reachability\nStep 2  Baseline run — all modules headlessly, 3 in parallel (bounded pool)\nStep 3  Triage — classify every failure by root cause, group into a triage report\nStep 4  Batch repair — fix by class in priority order (DB state → testid → selector → timing)\nStep 5  Verify — re-run each repaired module 3 times (1 pass is not enough)\nStep 6  Stability check — 10-run flakiness confirmation for \"healthy\" modules\nStep 7  Healing report — full summary with manual-action fallbacks\nStep 8  Registry update — marks healed modules as implemented\n```\n\n**Example healing report:**\n\n```\n╔══════════════════════════════════════════════════════════════════════╗\n║  QA HEALER — HEALING REPORT                                           ║\n╚══════════════════════════════════════════════════════════════════════╝\n\nScope        : 8 modules  (--status=implemented)\nBaseline     : 5 healthy  /  3 broken\n\n TRIAGE SUMMARY\n  data-testid-missing : 2 modules — fixed (1 Blade file updated)\n  selector-miss       : 1 module  — fixed\n  Could not auto-fix  : 0\n\n POST-FIX RESULTS\n  ✅ Healed  : products:happy, orders:happy, orders:validation\n  ❌ Still broken : none\n\n MANUAL ACTIONS REQUIRED\n  (none)\n```\n\n**Safe by design** — the healer only touches `tests/e2e/js/modules/` and `resources/views/`. Anything requiring a controller, route, or migration change is flagged as a manual action.\n\n---\n\n### `/qa-result`\n\n**Runs a module (all angles, headless) and shows a 6-bucket result table by angle** — pass / defect / test_script / infra / skip / staged, so you can see the true breakdown of a run at a glance instead of scrolling raw Playwright output.\n\n**Usage:**\n\n```\n/qa-result <module>\n```\n\nSpawns a fresh server, runs every angle of the module headlessly, and prints one row per angle with its bucketed outcome and count. Use it after `/qa-simple` or `/qa-complex` to sanity-check a freshly generated module, or any time you want a results snapshot without digging through `tests/e2e/artifacts/`.\n\n---\n\n## Running tests\n\n```bash\n# Headed (watch the browser live) — start here the first time\n./scripts/qa users happy h\n\n# Headless\n./scripts/qa users happy\n\n# All angles for a module\n./scripts/qa users all\n\n# All modules\n./scripts/qa all x\n```\n\n---\n\n## Quick Reference\n\n| Task | Command |\n|---|---|\n| Install framework | `npx @kamleshsk/claude-qa` |\n| Update to latest | `npx @kamleshsk/claude-qa@latest` |\n| Scaffold QA portal | `/qa-setup` in Claude Code |\n| Make scripts executable | `chmod +x scripts/qa scripts/qa-register` |\n| Generate test from description | `/qa-simple <feature> \"<description>\"` in Claude Code |\n| Generate test from reference files | `/qa-complex <role>/<feature>` in Claude Code |\n| Update module from changed spec | `/qa-update` in Claude Code |\n| Debug a failing test | `/qa-debugger <module> <angle>` in Claude Code |\n| Heal all broken tests | `/qa-healer` in Claude Code |\n| Ingest a shared/common spreadsheet | `/qa-common-setup <path>` in Claude Code |\n| Run a module + show result table | `/qa-result <module>` in Claude Code |\n| Run a module (headed) | `./scripts/qa <module> happy h` |\n| Run a module (headless) | `./scripts/qa <module> happy` |\n| Run all modules | `./scripts/qa all x` |\n| Open browser portal | `<APP_URL>/qa` |\n\n---\n\n## Troubleshooting\n\n| Problem | Fix |\n|---|---|\n| Commands say \"unknown command\" | Reload Claude Code after install |\n| Commands say \"unknown command\" after update | Reload Claude Code — new command files were installed |\n| `/qa` not found after updating | Renamed to `/qa-simple` in v3.0.0 — update your usage |\n| `Target class [qa.auth] does not exist` | Run the middleware verification prompt (Setup Step 2) |\n| `404` at `/qa` | Tell Claude: \"Add the QA routes to routes/web.php\" |\n| Login fails on portal | Run `php artisan config:clear` — cached config may have stale values |\n| `./scripts/qa: Permission denied` | `chmod +x scripts/qa scripts/qa-register` |\n| Test fails on Login step | QA users not in DB — re-run `/qa-setup` (Step 5 re-inserts users directly, idempotent) |\n| Timeout on a locator | Wrong CSS selector — use `/qa-debugger` or F12 the page and update the module |\n| `playwright` not found / Chromium missing | Run `npm install && npx playwright install chromium` from project root |\n| Test passes locally but fails in CI | Run `/qa-debugger` — likely a DB state or missing `QA_` env key issue |\n| `/qa-complex` says role not found | Add `QA_<ROLE>_EMAIL` to `.env` and re-run |\n| `/qa-complex` says no reference files | Add files to `docs/qa-reference/<role>/<feature>/` folder |\n\n---\n\n## Updating\n\n```bash\nnpx @kamleshsk/claude-qa@latest\n```\n\nCommand files are always overwritten with the latest version. Your test modules and runner files are never touched.\n\n---\n\n## Author\n\nCreated by **Kamlesh Kasambe** at [infotech.works](https://infotech.works), under the guidance of **Pooja Kolte**.\n\n---\n\n## License\n\nMIT\n","readmeFilename":"README.md"}