[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CSYNSM2M8DAVEEN53884YB":3,"skill-same:01M6CSYNSM2M8DAVEEN53884YB":67},{"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":23,"publishedAt":31,"linkOnly":32,"markdownContent":33,"markdownBody":34,"frontMatter":35,"refName":37,"commitSha":38,"skillDirectory":39,"forksCount":14,"repositoryHtmlUrl":40,"repositoryHomepageUrl":6,"ownerHtmlUrl":41,"ownerBlogUrl":42,"ownerDescription":6,"updatedAt":43,"install":44,"resources":56},"01M6CSYNSM2M8DAVEEN53884YB","review",null,"Runs automated code review before push to catch bugs, security issues, and performance problems.","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\u002Freview\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",[5,24,25,26,27,28,29,30],"code review","security","performance","code","issues","push","before push","2026-11-10 10:12:30",false,"---\nname: review\ndescription: Runs automated code review before push to catch bugs, security issues, and performance problems.\nuser-invocable: true\n---\n\n# Code Review\n\nรัน automated code review ก่อน push code\n\n## Usage\n\n```\n\u002Freview\n```\n\n## Instructions\n\n### Language Setting\n\n> Check `LANGUAGE` in `docs\u002Fcurrent.md`. If `th`, translate output per `references\u002Flanguage-guide.md`. See `references\u002Fbash-helpers.md` for detection snippet.\n\n### Step 1: Get Changed Files\n\n```bash\necho \"=== Changed Files ===\"\ngit diff --name-only HEAD\ngit diff --cached --name-only\n\necho \"=== Diff Stats ===\"\ngit diff --stat HEAD\n```\n\n### Step 2: Run Code Review\n\nใช้ Task tool กับ subagent_type=\"general-purpose\" เพื่อ review code:\n\n```\nPrompt:\n\"Review the code changes in this branch compared to main.\n\nCheck for:\n1. **Code Quality**: Best practices, clean code, naming conventions\n2. **Bugs**: Potential bugs, logic errors, edge cases\n3. **Security**: SQL injection, XSS, command injection, secrets exposure\n4. **Performance**: N+1 queries, memory leaks, inefficient algorithms\n5. **Tests**: Test coverage, missing tests, test quality\n\nFor each finding, provide:\n- Severity: CRITICAL \u002F WARNING \u002F INFO\n- File and line number\n- Description of the issue\n- Suggested fix\n\nOutput format:\n## Review Summary\n\n### Critical Issues (must fix)\n- [ ] Issue description\n\n### Warnings (should fix)\n- [ ] Issue description\n\n### Info (nice to have)\n- [ ] Issue description\n\n### Overall Assessment\nPass \u002F Fail with reason\"\n```\n\n### Step 3: Report Results\n\n**ถ้ามี CRITICAL issues:**\n\n```markdown\n## Code Review Failed\n\n### Critical Issues Found\n\n[list of critical issues]\n\n### Action Required\nแก้ไข critical issues ก่อน push\n\n### Commands\n- แก้ไข code\n- รัน `\u002Freview` อีกครั้ง\n```\n\n**ถ้าไม่มี CRITICAL issues:**\n\n```markdown\n## Code Review Passed\n\n### Summary\n- Critical: 0\n- Warnings: [count]\n- Info: [count]\n\n### Warnings (should fix)\n[list if any]\n\n### Ready to Push\nCode is ready for `\u002Ftd` or manual push\n```\n\n## Review Checklist\n\n| Category | What to Check |\n|----------|---------------|\n| **Code Quality** | Naming, formatting, comments, DRY |\n| **Bugs** | Null checks, error handling, edge cases |\n| **Security** | Input validation, auth, secrets |\n| **Performance** | Queries, loops, memory |\n| **Tests** | Coverage, quality, assertions |\n\n## Severity Levels\n\n| Level | Description | Action |\n|-------|-------------|--------|\n| CRITICAL | Security vulnerability, data loss, crash | Must fix before push |\n| WARNING | Bug risk, bad practice, missing test | Should fix |\n| INFO | Style, optimization, suggestion | Nice to have |\n\n## Integration with \u002Ftd\n\n`\u002Ftd` command จะเรียก `\u002Freview` โดยอัตโนมัติใน Step 4\n\nถ้า review fail → `\u002Ftd` จะหยุดและแจ้งให้แก้ไขก่อน\n\n## Examples\n\n### Example Output (Pass)\n\n```markdown\n## Code Review Passed\n\n### Summary\n- Critical: 0\n- Warnings: 2\n- Info: 3\n\n### Warnings\n1. `internal\u002Fauth\u002Fservice.go:45` - Missing error check on database call\n2. `internal\u002Fuser\u002Fhandler.go:78` - No input validation for email\n\n### Info\n1. `internal\u002Fauth\u002Fservice.go:12` - Consider using constants for magic numbers\n2. `internal\u002Fuser\u002Fmodel.go:5` - Add godoc comment for exported type\n3. `tests\u002Fauth_test.go:30` - Consider adding edge case test\n\n### Ready to Push\n```\n\n### Example Output (Fail)\n\n```markdown\n## Code Review Failed\n\n### Critical Issues Found\n\n1. `internal\u002Fdb\u002Fquery.go:23` - SQL Injection vulnerability\n   ```go\n   query := \"SELECT * FROM users WHERE id = \" + userId\n   ```\n   **Fix:** Use parameterized queries\n   ```go\n   query := \"SELECT * FROM users WHERE id = $1\"\n   db.Query(query, userId)\n   ```\n\n2. `config\u002Fsecrets.go:5` - Hardcoded API key exposed\n   ```go\n   const API_KEY = \"sk-1234567890\"\n   ```\n   **Fix:** Use environment variables\n\n### Action Required\nแก้ไข critical issues ก่อน push\n```\n\n## Related Commands\n\n| Command | Purpose |\n|---------|---------|\n| `\u002Ftd` | จบ session (เรียก review อัตโนมัติ) |\n| `\u002Fcommit` | Atomic commits |\n| `\u002Freview` | Manual code review (คุณอยู่ที่นี่) |\n","# Code Review\n\nรัน automated code review ก่อน push code\n\n## Usage\n\n```\n\u002Freview\n```\n\n## Instructions\n\n### Language Setting\n\n> Check `LANGUAGE` in `docs\u002Fcurrent.md`. If `th`, translate output per `references\u002Flanguage-guide.md`. See `references\u002Fbash-helpers.md` for detection snippet.\n\n### Step 1: Get Changed Files\n\n```bash\necho \"=== Changed Files ===\"\ngit diff --name-only HEAD\ngit diff --cached --name-only\n\necho \"=== Diff Stats ===\"\ngit diff --stat HEAD\n```\n\n### Step 2: Run Code Review\n\nใช้ Task tool กับ subagent_type=\"general-purpose\" เพื่อ review code:\n\n```\nPrompt:\n\"Review the code changes in this branch compared to main.\n\nCheck for:\n1. **Code Quality**: Best practices, clean code, naming conventions\n2. **Bugs**: Potential bugs, logic errors, edge cases\n3. **Security**: SQL injection, XSS, command injection, secrets exposure\n4. **Performance**: N+1 queries, memory leaks, inefficient algorithms\n5. **Tests**: Test coverage, missing tests, test quality\n\nFor each finding, provide:\n- Severity: CRITICAL \u002F WARNING \u002F INFO\n- File and line number\n- Description of the issue\n- Suggested fix\n\nOutput format:\n## Review Summary\n\n### Critical Issues (must fix)\n- [ ] Issue description\n\n### Warnings (should fix)\n- [ ] Issue description\n\n### Info (nice to have)\n- [ ] Issue description\n\n### Overall Assessment\nPass \u002F Fail with reason\"\n```\n\n### Step 3: Report Results\n\n**ถ้ามี CRITICAL issues:**\n\n```markdown\n## Code Review Failed\n\n### Critical Issues Found\n\n[list of critical issues]\n\n### Action Required\nแก้ไข critical issues ก่อน push\n\n### Commands\n- แก้ไข code\n- รัน `\u002Freview` อีกครั้ง\n```\n\n**ถ้าไม่มี CRITICAL issues:**\n\n```markdown\n## Code Review Passed\n\n### Summary\n- Critical: 0\n- Warnings: [count]\n- Info: [count]\n\n### Warnings (should fix)\n[list if any]\n\n### Ready to Push\nCode is ready for `\u002Ftd` or manual push\n```\n\n## Review Checklist\n\n| Category | What to Check |\n|----------|---------------|\n| **Code Quality** | Naming, formatting, comments, DRY |\n| **Bugs** | Null checks, error handling, edge cases |\n| **Security** | Input validation, auth, secrets |\n| **Performance** | Queries, loops, memory |\n| **Tests** | Coverage, quality, assertions |\n\n## Severity Levels\n\n| Level | Description | Action |\n|-------|-------------|--------|\n| CRITICAL | Security vulnerability, data loss, crash | Must fix before push |\n| WARNING | Bug risk, bad practice, missing test | Should fix |\n| INFO | Style, optimization, suggestion | Nice to have |\n\n## Integration with \u002Ftd\n\n`\u002Ftd` command จะเรียก `\u002Freview` โดยอัตโนมัติใน Step 4\n\nถ้า review fail → `\u002Ftd` จะหยุดและแจ้งให้แก้ไขก่อน\n\n## Examples\n\n### Example Output (Pass)\n\n```markdown\n## Code Review Passed\n\n### Summary\n- Critical: 0\n- Warnings: 2\n- Info: 3\n\n### Warnings\n1. `internal\u002Fauth\u002Fservice.go:45` - Missing error check on database call\n2. `internal\u002Fuser\u002Fhandler.go:78` - No input validation for email\n\n### Info\n1. `internal\u002Fauth\u002Fservice.go:12` - Consider using constants for magic numbers\n2. `internal\u002Fuser\u002Fmodel.go:5` - Add godoc comment for exported type\n3. `tests\u002Fauth_test.go:30` - Consider adding edge case test\n\n### Ready to Push\n```\n\n### Example Output (Fail)\n\n```markdown\n## Code Review Failed\n\n### Critical Issues Found\n\n1. `internal\u002Fdb\u002Fquery.go:23` - SQL Injection vulnerability\n   ```go\n   query := \"SELECT * FROM users WHERE id = \" + userId\n   ```\n   **Fix:** Use parameterized queries\n   ```go\n   query := \"SELECT * FROM users WHERE id = $1\"\n   db.Query(query, userId)\n   ```\n\n2. `config\u002Fsecrets.go:5` - Hardcoded API key exposed\n   ```go\n   const API_KEY = \"sk-1234567890\"\n   ```\n   **Fix:** Use environment variables\n\n### Action Required\nแก้ไข critical issues ก่อน push\n```\n\n## Related Commands\n\n| Command | Purpose |\n|---------|---------|\n| `\u002Ftd` | จบ session (เรียก review อัตโนมัติ) |\n| `\u002Fcommit` | Atomic commits |\n| `\u002Freview` | Manual code review (คุณอยู่ที่นี่) |\n",{"name":5,"description":7,"user-invocable":36},true,"main","835c1f754a3eab31c2e7eb408d21431a98c633ee","skills\u002Freview","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":45,"prompt":55,"zipAvailable":36},[46,49,52],{"tool":47,"command":48},"npx","npx skills add goffity\u002Fdev-km --skill review",{"tool":50,"command":51},"bunx","bunx skills add goffity\u002Fdev-km --skill review",{"tool":53,"command":54},"pnpm","pnpm dlx skills add goffity\u002Fdev-km --skill review","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgoffity\u002Fdev-km\u002Fblob\u002Fmain\u002Fskills\u002Freview\u002FSKILL.md",[57,63],{"path":58,"resourceType":59,"resourceTypeDesc":60,"sizeBytes":61,"sourceHtmlUrl":62},"SOURCE.md","REFERENCE","参考文档",212,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fwalletconnect-mcp\u002FSOURCE.md",{"path":64,"resourceType":59,"resourceTypeDesc":60,"sizeBytes":65,"sourceHtmlUrl":66},"TRUST.auto.yaml",2217,"https:\u002F\u002Fgithub.com\u002Fjiayaoqijia\u002Fcryptoskill\u002Fblob\u002Fmain\u002Fskills\u002Fwallets\u002Fwalletconnect-mcp\u002FTRUST.auto.yaml",[68,79,109,121,129,144],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":31},"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",[],[75,76,77,78],"wait what","land","stop","message",{"skillNo":80,"name":81,"nameZh":6,"description":82,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":83,"categories":84,"keywords":89,"publishedAt":31},"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",[85,86],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},{"categoryNo":87,"categoryName":88,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000008","测试与质量",[81,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108],"discipline","development","state","first","loop","quality","Rules","fix","kb","use","test","standards","red-green-refactor","build","green","jira","testing","commit","plugin",{"skillNo":110,"name":111,"nameZh":6,"description":112,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":113,"categories":114,"keywords":115,"publishedAt":31},"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",[],[111,116,117,118,119,120],"documentation","context","session","task","done",{"skillNo":122,"name":123,"nameZh":6,"description":124,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":125,"categories":126,"keywords":127,"publishedAt":31},"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",[],[123,128,118],"logs",{"skillNo":130,"name":131,"nameZh":6,"description":132,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":133,"categories":134,"keywords":138,"publishedAt":31},"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",[135],{"categoryNo":136,"categoryName":137,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究",[131,139,140,141,142,143],"directory","metadata","file","knowledge","projects",{"skillNo":145,"name":146,"nameZh":6,"description":147,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":148,"categories":149,"keywords":150,"publishedAt":31},"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",[],[118,151,152,117,153],"session analyzer","git","retrospective"]