[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CSWN3NENPY681W72RH84YG":3,"skill-same:01M6CSWN3NENPY681W72RH84YG":89},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":27,"linkOnly":28,"markdownContent":29,"markdownBody":30,"frontMatter":31,"refName":33,"commitSha":34,"skillDirectory":35,"forksCount":14,"repositoryHtmlUrl":36,"repositoryHomepageUrl":6,"ownerHtmlUrl":37,"ownerBlogUrl":38,"ownerDescription":6,"updatedAt":39,"install":40,"resources":53},"01M6CSWN3NENPY681W72RH84YG","build-validator",null,"Validates build, tests, and lint before push to ensure quality gates pass.","goffity\u002Fdev-km","goffity","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F778547?v=4","01M6CSW9QQ32YQYTRKQWVKYCAY","Goffity","01M6CSW9VQFVZ3QS6RB4VYJGE6",0,"MIT","https:\u002F\u002Fgithub.com\u002Fgoffity\u002Fdev-km\u002Fblob\u002Fmain\u002Fskills\u002Fbuild-validator\u002FSKILL.md",[],[19,20,21,22,23,24,25,26],"build validator","build","quality gates","lint","push","before push","quality","ensure quality","2026-11-10 10:12:30",false,"---\nname: build-validator\ndescription: Validates build, tests, and lint before push to ensure quality gates pass.\ncontext: fork\nuser-invocable: false\n---\n\n# Build Validator\n\nAgent สำหรับตรวจสอบ build, tests, และ lint ก่อน push\n\n## Purpose\n\n- รัน tests และตรวจสอบผลลัพธ์\n- รัน build และตรวจสอบ success\n- รัน linter และตรวจสอบ errors\n- รวบรวมผลลัพธ์เป็น report\n- Block push ถ้าไม่ผ่าน\n\n## Instructions\n\n### Step 1: Detect Project Type\n\n```bash\n[ -f \"Makefile\" ] && echo \"Makefile detected\"\n[ -f \"package.json\" ] && echo \"Node.js project\"\n[ -f \"go.mod\" ] && echo \"Go project\"\n[ -f \"Cargo.toml\" ] && echo \"Rust project\"\n[ -f \"pyproject.toml\" ] && echo \"Python project\"\n```\n\n### Step 2: Run Tests\n\n| Project Type | Command |\n|---|---|\n| Makefile | `make test` |\n| Node.js | `npm test` \u002F `bun test` \u002F `yarn test` |\n| Go | `go test .\u002F...` |\n| Python | `pytest` |\n| Rust | `cargo test` |\n\n### Step 3: Run Build\n\n| Project Type | Command |\n|---|---|\n| Makefile | `make build` |\n| Node.js | `npm run build` |\n| Go | `go build .\u002F...` |\n| Rust | `cargo build` |\n\n### Step 4: Run Linter\n\n| Project Type | Command |\n|---|---|\n| Node.js\u002FTS | `npm run lint` \u002F `eslint .` |\n| Go | `golangci-lint run` \u002F `go vet .\u002F...` |\n| Python | `ruff check .` \u002F `flake8` |\n| Rust | `cargo clippy` |\n\n### Step 5: Run Type Check (if applicable)\n\n| Project Type | Command |\n|---|---|\n| TypeScript | `npm run typecheck` \u002F `tsc --noEmit` |\n| Python | `mypy .` |\n\n### Step 6: Analyze Results\n\n| Check | Pass Criteria |\n|-------|---------------|\n| Tests | Exit code 0, no failures |\n| Build | Exit code 0, artifacts created |\n| Lint | No errors (warnings OK) |\n| Types | No type errors |\n\n## Output Format\n\n```markdown\n## Build Validation Report\n\n**Project:** [project-name]\n**Date:** YYYY-MM-DD HH:MM:SS\n**Branch:** [branch-name]\n\n### Overall Status: PASS \u002F FAIL\n\n---\n\n### Test Results\n| Status | Details |\n|--------|---------|\n| PASS\u002FFAIL | X tests passed, Y failed |\n\n### Build Results\n| Status | Details |\n|--------|---------|\n| PASS\u002FFAIL | Build details |\n\n### Lint Results\n| Status | Details |\n|--------|---------|\n| PASS\u002FFAIL\u002FWARN | Error\u002Fwarning counts |\n\n### Type Check Results\n| Status | Details |\n|--------|---------|\n| PASS\u002FFAIL | Type error counts |\n\n---\n\n### Summary\n\n| Check | Status | Time |\n|-------|--------|------|\n| Tests | pass\u002Ffail | Xs |\n| Build | pass\u002Ffail | Xs |\n| Lint | pass\u002Ffail | Xs |\n| Types | pass\u002Ffail | Xs |\n\n**Recommendation:** Ready to Push \u002F Do Not Push\n```\n\n## Error Recovery\n\n| Failure | Recovery |\n|---------|----------|\n| Missing deps | `npm install` \u002F `go mod tidy` |\n| Stale cache | Clean and rebuild |\n| Type errors | Fix types first |\n| Lint errors | Run formatter |\n","# Build Validator\n\nAgent สำหรับตรวจสอบ build, tests, และ lint ก่อน push\n\n## Purpose\n\n- รัน tests และตรวจสอบผลลัพธ์\n- รัน build และตรวจสอบ success\n- รัน linter และตรวจสอบ errors\n- รวบรวมผลลัพธ์เป็น report\n- Block push ถ้าไม่ผ่าน\n\n## Instructions\n\n### Step 1: Detect Project Type\n\n```bash\n[ -f \"Makefile\" ] && echo \"Makefile detected\"\n[ -f \"package.json\" ] && echo \"Node.js project\"\n[ -f \"go.mod\" ] && echo \"Go project\"\n[ -f \"Cargo.toml\" ] && echo \"Rust project\"\n[ -f \"pyproject.toml\" ] && echo \"Python project\"\n```\n\n### Step 2: Run Tests\n\n| Project Type | Command |\n|---|---|\n| Makefile | `make test` |\n| Node.js | `npm test` \u002F `bun test` \u002F `yarn test` |\n| Go | `go test .\u002F...` |\n| Python | `pytest` |\n| Rust | `cargo test` |\n\n### Step 3: Run Build\n\n| Project Type | Command |\n|---|---|\n| Makefile | `make build` |\n| Node.js | `npm run build` |\n| Go | `go build .\u002F...` |\n| Rust | `cargo build` |\n\n### Step 4: Run Linter\n\n| Project Type | Command |\n|---|---|\n| Node.js\u002FTS | `npm run lint` \u002F `eslint .` |\n| Go | `golangci-lint run` \u002F `go vet .\u002F...` |\n| Python | `ruff check .` \u002F `flake8` |\n| Rust | `cargo clippy` |\n\n### Step 5: Run Type Check (if applicable)\n\n| Project Type | Command |\n|---|---|\n| TypeScript | `npm run typecheck` \u002F `tsc --noEmit` |\n| Python | `mypy .` |\n\n### Step 6: Analyze Results\n\n| Check | Pass Criteria |\n|-------|---------------|\n| Tests | Exit code 0, no failures |\n| Build | Exit code 0, artifacts created |\n| Lint | No errors (warnings OK) |\n| Types | No type errors |\n\n## Output Format\n\n```markdown\n## Build Validation Report\n\n**Project:** [project-name]\n**Date:** YYYY-MM-DD HH:MM:SS\n**Branch:** [branch-name]\n\n### Overall Status: PASS \u002F FAIL\n\n---\n\n### Test Results\n| Status | Details |\n|--------|---------|\n| PASS\u002FFAIL | X tests passed, Y failed |\n\n### Build Results\n| Status | Details |\n|--------|---------|\n| PASS\u002FFAIL | Build details |\n\n### Lint Results\n| Status | Details |\n|--------|---------|\n| PASS\u002FFAIL\u002FWARN | Error\u002Fwarning counts |\n\n### Type Check Results\n| Status | Details |\n|--------|---------|\n| PASS\u002FFAIL | Type error counts |\n\n---\n\n### Summary\n\n| Check | Status | Time |\n|-------|--------|------|\n| Tests | pass\u002Ffail | Xs |\n| Build | pass\u002Ffail | Xs |\n| Lint | pass\u002Ffail | Xs |\n| Types | pass\u002Ffail | Xs |\n\n**Recommendation:** Ready to Push \u002F Do Not Push\n```\n\n## Error Recovery\n\n| Failure | Recovery |\n|---------|----------|\n| Missing deps | `npm install` \u002F `go mod tidy` |\n| Stale cache | Clean and rebuild |\n| Type errors | Fix types first |\n| Lint errors | Run formatter |\n",{"name":5,"context":32,"description":7,"user-invocable":28},"fork","main","835c1f754a3eab31c2e7eb408d21431a98c633ee","skills\u002Fbuild-validator","https:\u002F\u002Fgithub.com\u002Fgoffity\u002Fdev-km","https:\u002F\u002Fgithub.com\u002Fgoffity","www.narongwate.com","2026-11-10 01:34:18",{"source":8,"skillName":5,"commands":41,"prompt":51,"zipAvailable":52},[42,45,48],{"tool":43,"command":44},"npx","npx skills add goffity\u002Fdev-km --skill build-validator",{"tool":46,"command":47},"bunx","bunx skills add goffity\u002Fdev-km --skill build-validator",{"tool":49,"command":50},"pnpm","pnpm dlx skills add goffity\u002Fdev-km --skill build-validator","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgoffity\u002Fdev-km\u002Fblob\u002Fmain\u002Fskills\u002Fbuild-validator\u002FSKILL.md",true,[54,59,65,69,73,77,81,85],{"path":55,"resourceType":55,"resourceTypeDesc":56,"sizeBytes":57,"sourceHtmlUrl":58},"LICENSE","许可证",1065,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-visual-testing\u002FLICENSE",{"path":60,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":63,"sourceHtmlUrl":64},"references\u002Fcli-reference.md","REFERENCE","参考文档",8255,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-visual-testing\u002Freferences\u002Fcli-reference.md",{"path":66,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":67,"sourceHtmlUrl":68},"references\u002Ferror-recovery.md",5941,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-visual-testing\u002Freferences\u002Ferror-recovery.md",{"path":70,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":71,"sourceHtmlUrl":72},"references\u002Fmock-network.md",3195,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-visual-testing\u002Freferences\u002Fmock-network.md",{"path":74,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":75,"sourceHtmlUrl":76},"references\u002Fstate-manipulation.md",12888,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-visual-testing\u002Freferences\u002Fstate-manipulation.md",{"path":78,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":79,"sourceHtmlUrl":80},"repos\u002Fmetamask-extension.md",12187,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-visual-testing\u002Frepos\u002Fmetamask-extension.md",{"path":82,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":83,"sourceHtmlUrl":84},"SOURCE.md",365,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-visual-testing\u002FSOURCE.md",{"path":86,"resourceType":61,"resourceTypeDesc":62,"sizeBytes":87,"sourceHtmlUrl":88},"TRUST.auto.yaml",2114,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fmetamask-official-visual-testing\u002FTRUST.auto.yaml",[90,101,133,145,153,168],{"skillNo":91,"name":92,"nameZh":6,"description":93,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":94,"categories":95,"keywords":96,"publishedAt":27},"01M6CSZ9DKT0CG5Y2HE8F5D9KX","wait-what","Stop. That last message did not land: re-pitch it.","https:\u002F\u002Fgithub.com\u002Fgoffity\u002Fdev-km\u002Fblob\u002Fmain\u002Fskills\u002Fwait-what\u002FSKILL.md",[],[97,98,99,100],"wait what","land","stop","message",{"skillNo":102,"name":103,"nameZh":6,"description":104,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":105,"categories":106,"keywords":115,"publishedAt":27},"01M6CSZ6B0GH2N75WNPPESCDHX","tdd","Test-driven development loop (red-green-refactor) with commit-based phase state and Jira traceability. Use when the user wants to build a feature or fix a bug test-first, mentions \"tdd\", \"red-green-refactor\", or \"test-first\". Replaces the tdg plugin — combines its commit\u002Fphase discipline with seam-based test quality rules from kb Testing Standards.","https:\u002F\u002Fgithub.com\u002Fgoffity\u002Fdev-km\u002Fblob\u002Fmain\u002Fskills\u002Ftdd\u002FSKILL.md",[107,112],{"categoryNo":108,"categoryName":109,"taxonomyType":110,"taxonomyTypeDesc":111},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",{"categoryNo":113,"categoryName":114,"taxonomyType":110,"taxonomyTypeDesc":111},"01JBSEEDCAT000000000000008","测试与质量",[103,116,117,118,119,120,25,121,122,123,124,125,126,127,20,128,129,130,131,132],"discipline","development","state","first","loop","Rules","fix","kb","use","test","standards","red-green-refactor","green","jira","testing","commit","plugin",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":139,"publishedAt":27},"01M6CSZ3PNYFR2K5GB197TA7GP","td","Creates post-task retrospectives with Before\u002FAfter context and session documentation.","https:\u002F\u002Fgithub.com\u002Fgoffity\u002Fdev-km\u002Fblob\u002Fmain\u002Fskills\u002Ftd\u002FSKILL.md",[],[135,140,141,142,143,144],"documentation","context","session","task","done",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":151,"publishedAt":27},"01M6CSZ1TZKVNHS07B4EBQEKFQ","summary","Generates weekly or monthly session summaries from retrospectives and activity logs.","https:\u002F\u002Fgithub.com\u002Fgoffity\u002Fdev-km\u002Fblob\u002Fmain\u002Fskills\u002Fsummary\u002FSKILL.md",[],[147,152,142],"logs",{"skillNo":154,"name":155,"nameZh":6,"description":156,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":157,"categories":158,"keywords":162,"publishedAt":27},"01M6CSYZQHMHJT9ZV8FYY06XZN","share","Shares knowledge across projects by copying to shared-knowledge directory with cross-project metadata.","https:\u002F\u002Fgithub.com\u002Fgoffity\u002Fdev-km\u002Fblob\u002Fmain\u002Fskills\u002Fshare\u002FSKILL.md",[159],{"categoryNo":160,"categoryName":161,"taxonomyType":110,"taxonomyTypeDesc":111},"01JBSEEDCAT000000000000021","资料检索与研究",[155,163,164,165,166,167],"directory","metadata","file","knowledge","projects",{"skillNo":169,"name":170,"nameZh":6,"description":171,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":172,"categories":173,"keywords":174,"publishedAt":27},"01M6CSYXFZ7D7EKEFXCQE8QW7S","session-analyzer","Analyzes git changes and creates retrospective drafts with Before\u002FAfter context.","https:\u002F\u002Fgithub.com\u002Fgoffity\u002Fdev-km\u002Fblob\u002Fmain\u002Fskills\u002Fsession-analyzer\u002FSKILL.md",[],[142,175,176,141,177],"session analyzer","git","retrospective"]