[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6CSXCZSS7N7ENZ0CWDF1AQA":3,"skill-same:01M6CSXCZSS7N7ENZ0CWDF1AQA":65},{"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":24,"linkOnly":25,"markdownContent":26,"markdownBody":27,"frontMatter":28,"refName":31,"commitSha":32,"skillDirectory":33,"forksCount":14,"repositoryHtmlUrl":34,"repositoryHomepageUrl":6,"ownerHtmlUrl":35,"ownerBlogUrl":36,"ownerDescription":6,"updatedAt":37,"install":38,"resources":50},"01M6CSXCZSS7N7ENZ0CWDF1AQA","focus",null,"Sets current task focus, creates GitHub\u002FJira issues, and creates feature branches.","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\u002Ffocus\u002FSKILL.md",[],[5,19,20,21,22,23],"github","jira","issues","task","branches","2026-11-10 10:12:30",false,"---\nname: focus\ndescription: Sets current task focus, creates GitHub\u002FJira issues, and creates feature branches.\nargument-hint: \"[task]\"\nuser-invocable: true\n---\n\n# Set Focus\n\nตั้ง focus สำหรับงานใหม่ พร้อมสร้าง issue (GitHub หรือ Jira) ด้วย format มาตรฐาน\n\n## Usage\n\n```\n\u002Ffocus [task description]\n```\n\n## Pre-Feature Checklist (discipline, not ceremony)\n\nก่อนเริ่ม feature ใหม่ ทำ 3 ขั้นสั้นๆ (รวม ~5 นาที) แทนการ scaffold context pack เต็ม:\n\n1. **Grep AP registry** — `grep -i \"\u003Ckeyword>\" kb\u002F02-patterns\u002Fanti-patterns\u002Fregistry.md` (2-3 นาที)\n   - ใช้ keyword จากงาน (bank account, gateway, websocket, ฯลฯ) เพื่อเช็คปัญหาเดิมที่เคยเจอ\n2. **Verify data flow ในโค้ดจริง** — grep handler → service → repository → gRPC\u002FKafka ก่อนเขียน spec (1-2 นาที)\n   - Spec\u002FPlan ห้ามใช้ชื่อ file\u002Ffunction โดยไม่ verify — ใส่ `file.go:123` อ้างอิง\n3. **อ่าน CLAUDE.md ของ repo** ก่อนสร้าง infra files (migration, CI config, Dockerfile) — กัน convention drift\n\nถ้า task แตะ ≥ 2 repos + proto\u002Fschema หรือ security-critical → ลองใช้ [[Multi-Repo Feature Development]] §4.4 Validation Agents ก่อน merge\n\n## Instructions\n\n### Step 1: Check Current State\n\n```bash\nexport TZ='Asia\u002FBangkok'\necho \"=== Current Focus ===\"\ncat docs\u002Fcurrent.md\n\necho \"\"\necho \"=== Git Status ===\"\necho \"Branch: $(git branch --show-current)\"\ngit status --short\n```\n\n### Step 2: Handle Existing Focus\n\nถ้า `STATE` ไม่ใช่ `ready` หรือ `completed`:\n\n```\nมี focus อยู่แล้ว:\nTASK: [current task]\nSTATE: [current state]\n\nต้องการ:\n1. ทำต่องานเดิม (keep)\n2. เปลี่ยนไปทำงานใหม่ (switch) - งานเดิมจะถูก mark เป็น pending\n```\n\nถ้า user เลือก switch → เพิ่ม pending entry ใน `docs\u002Flogs\u002Factivity.log`\n\n### Step 3: Get Task from User\n\nถ้าไม่มี argument:\n```\nงานที่จะทำคืออะไร?\n```\n\nถ้ามี argument → ใช้เป็น task description\n\n### Step 3.3: Check Language Setting\n\n```bash\nCURRENT_LANG=$(grep \"^LANGUAGE:\" docs\u002Fcurrent.md 2>\u002Fdev\u002Fnull | cut -d: -f2 | xargs)\necho \"Current language: ${CURRENT_LANG:-not set}\"\n```\n\nถ้า LANGUAGE ยังไม่ได้ตั้งค่า (ไม่มี field หรือค่าเป็น `-`) ให้ถามผู้ใช้ด้วย AskUserQuestion:\n\n```\nภาษาสำหรับ output (Language for generated output):\n1. English (en)\n2. ภาษาไทย (th)\n```\n\nเก็บค่าที่เลือกไว้ใช้ใน Step 7\n\nถ้ามีค่าอยู่แล้ว → ใช้ค่าเดิม ไม่ต้องถามซ้ำ\n\n### Step 3.5: Choose Issue Tracker\n\nใช้ AskUserQuestion เพื่อเลือก issue tracker:\n\n**ตรวจสอบ Jira config ก่อน:**\n```bash\nif [[ -f \".jira-config\" ]] || [[ -f \"$HOME\u002F.config\u002Fclaude-km\u002Fjira.conf\" ]]; then\n    echo \"Jira: configured\"\nelse\n    echo \"Jira: not configured\"\nfi\n```\n\n**ถ้ามี Jira config:**\n```\nเลือก Issue Tracker:\n1. GitHub Issues - สร้าง GitHub issue ใหม่\n2. Jira - สร้าง Jira issue ใหม่\n3. Jira (existing) - ดึง Jira issue ที่มีอยู่มาทำ\n```\n\n**ถ้าไม่มี Jira config:**\nข้ามไป Step 4 (ใช้ GitHub เป็น default)\n\nFor Jira-specific paths (B and C), see `jira-paths.md`.\n\n---\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---\n\n## Path A: GitHub Issues (Default)\n\n### Step 4: Gather Issue Details\n\nใช้ AskUserQuestion เพื่อรวบรวมข้อมูลสำหรับ issue:\n\n**ถามข้อมูลต่อไปนี้:**\n\n1. **Type**: ประเภทของงาน\n   - feat (new feature)\n   - fix (bug fix)\n   - refactor (code restructure)\n   - docs (documentation)\n   - test (testing)\n   - chore (maintenance)\n\n2. **Overview**: อธิบายสั้นๆ ว่างานนี้คืออะไร\n\n3. **Current State**: สถานะปัจจุบันเป็นอย่างไร (ปัญหาที่เจอ, behavior เดิม)\n\n4. **Proposed Solution**: วิธีแก้ไขที่เสนอ\n\n5. **Technical Details**:\n   - Components ที่เกี่ยวข้อง\n   - Implementation approach\n\n6. **Acceptance Criteria**: เกณฑ์การทดสอบ (อย่างน้อย 3 ข้อ)\n   - Specific testable criteria\n   - Performance requirements (ถ้ามี)\n   - UI\u002FUX requirements (ถ้ามี)\n\n### Step 5: Create GitHub Issue\n\nสร้าง GitHub issue ด้วย format มาตรฐาน:\n\n```bash\nexport TZ='Asia\u002FBangkok'\n\ngh issue create \\\n  --title \"[type]: [descriptive title]\" \\\n  --body \"$(cat \u003C\u003CEOF\n## Overview\n\n[user input - brief description]\n\n## Current State\n\n[user input - what exists now]\n\n## Proposed Solution\n\n[user input - what should be implemented]\n\n## Technical Details\n\n- **Components affected:** [user input]\n- **Implementation approach:** [user input]\n\n## Acceptance Criteria\n\n- [ ] [user input criteria 1]\n- [ ] [user input criteria 2]\n- [ ] [user input criteria 3]\n\n---\n\n## Session Info\n\n- **Started:** $(date '+%Y-%m-%d %H:%M')\n- **Branch:** [type]\u002F[issue-number]-[short-slug]\n- **Status:** In Progress\nEOF\n)\"\n```\n\nเก็บ issue number ที่ได้ (เช่น `#123`) ไว้ใช้ใน Step 6\n\n### Step 5.5: Auto-assign Issue (GitHub)\n\n**อัตโนมัติ assign user ให้กับ issue:**\n\n```bash\nISSUE_NUMBER=[issue-number-from-step-5]\nif gh issue edit \"$ISSUE_NUMBER\" --add-assignee @me 2>\u002Fdev\u002Fnull; then\n    echo \"Assigned issue #$ISSUE_NUMBER to you\"\nelse\n    echo \"Auto-assign skipped (already assigned or no permission)\"\nfi\n```\n\n**ไปที่ Step 6: Create Feature Branch**\n\n---\n\n## Step 6: Create Feature Branch (Required)\n\n**ข้อบังคับ:** ถ้าอยู่บน `main`, `master`, หรือ default branch ต้องสร้าง branch ใหม่เสมอ\n\n```bash\nexport TZ='Asia\u002FBangkok'\n\nCURRENT_BRANCH=$(git branch --show-current)\nDEFAULT_BRANCH=$(git symbolic-ref refs\u002Fremotes\u002Forigin\u002FHEAD 2>\u002Fdev\u002Fnull | sed 's@^refs\u002Fremotes\u002Forigin\u002F@@')\n\nif [ -z \"$DEFAULT_BRANCH\" ]; then\n  if git show-ref --verify --quiet refs\u002Fheads\u002Fmain; then\n    DEFAULT_BRANCH=\"main\"\n  else\n    DEFAULT_BRANCH=\"master\"\n  fi\nfi\n\nif [ \"$CURRENT_BRANCH\" = \"main\" ] || [ \"$CURRENT_BRANCH\" = \"master\" ] || [ \"$CURRENT_BRANCH\" = \"$DEFAULT_BRANCH\" ]; then\n  echo \"Currently on $CURRENT_BRANCH - creating feature branch...\"\n  git checkout -b \"[type]\u002F[issue-id]-[short-slug]\"\n  echo \"Created and switched to branch: [type]\u002F[issue-id]-[short-slug]\"\nelse\n  echo \"Already on feature branch: $CURRENT_BRANCH\"\nfi\n```\n\n**Branch Naming Convention:**\n\n| Type | Branch Prefix | GitHub Example | Jira Example |\n|------|---------------|----------------|--------------|\n| feat | `feat\u002F` | `feat\u002F123-add-auth` | `feat\u002FPROJ-123-add-auth` |\n| fix | `fix\u002F` | `fix\u002F45-login-bug` | `fix\u002FPROJ-45-login-bug` |\n| refactor | `refactor\u002F` | `refactor\u002F67-simplify` | `refactor\u002FPROJ-67-simplify` |\n| docs | `docs\u002F` | `docs\u002F89-readme` | `docs\u002FPROJ-89-readme` |\n\n**Short slug rules:**\n- ใช้ lowercase\n- แทนที่ space ด้วย `-`\n- ตัดคำที่ไม่จำเป็นออก (a, an, the)\n- จำกัดความยาวไม่เกิน 30 ตัวอักษร\n\n---\n\n## Step 7: Update Files\n\n**Update `docs\u002Fcurrent.md`:**\n\nFor GitHub:\n```bash\nexport TZ='Asia\u002FBangkok'\ncat > docs\u002Fcurrent.md \u003C\u003C EOF\nSTATE: working\nTASK: [task description from user]\nSINCE: $(date '+%Y-%m-%d %H:%M')\nISSUE: #[issue-number]\nBRANCH: [type]\u002F[issue-number]-[short-slug]\nLANGUAGE: [selected-language from Step 3.3, default: en]\nEOF\n```\n\nFor Jira:\n```bash\nexport TZ='Asia\u002FBangkok'\ncat > docs\u002Fcurrent.md \u003C\u003C EOF\nSTATE: working\nTASK: [ISSUE_KEY] - [summary]\nSINCE: $(date '+%Y-%m-%d %H:%M')\nISSUE: [ISSUE_KEY]\nBRANCH: [type]\u002F[ISSUE_KEY]-[short-slug]\nJIRA_URL: https:\u002F\u002F[domain]\u002Fbrowse\u002F[ISSUE_KEY]\nLANGUAGE: [selected-language from Step 3.3, default: en]\nPLAN: [path to plan file, if any]\nEOF\n```\n\n**Append to `docs\u002Flogs\u002Factivity.log`:**\n\n```bash\nexport TZ='Asia\u002FBangkok'\necho \"$(date '+%Y-%m-%d %H:%M') | working | [task description] ([issue-id])\" >> docs\u002Flogs\u002Factivity.log\n```\n\n## Step 8: Jira Post-Setup (Jira only)\n\n**Transition to In Progress (if available):**\n```bash\n.\u002Fscripts\u002Fjira-client.sh transitions [ISSUE_KEY]\n.\u002Fscripts\u002Fjira-client.sh transition [ISSUE_KEY] [transition_id]\n```\n\n**Assign to self:**\n```bash\n.\u002Fscripts\u002Fjira-client.sh assign [ISSUE_KEY] me\n```\n\n## Step 9: Suggest Session Rename + Color\n\n> `\u002Frename` และ `\u002Fcolor` เป็น **built-in commands** — Claude เรียกเองไม่ได้ ต้องให้ user พิมพ์เอง\n> ดังนั้นให้ปิดท้ายด้วยบรรทัดพร้อม copy-paste เสมอ (ห้ามข้าม)\n\n**เลือกสีตาม type:**\n\n| Type | Color |\n|------|-------|\n| feat | `green` |\n| fix | `red` |\n| refactor | `purple` |\n| perf | `orange` |\n| docs | `blue` |\n| test | `cyan` |\n| infra | `yellow` |\n| chore | `pink` |\n\n**แสดงท้าย output (ปรับ session name ให้สั้น อ่านง่าย ขึ้นต้นด้วย issue id):**\n\n```\nตั้งชื่อ + สี session (copy วางได้เลย):\n\n\u002Frename [ISSUE-ID] [short task name]\n\u002Fcolor [color-by-type]\n```\n\n## Step 10: Confirm\n\n**For GitHub:**\n```markdown\n## Focus Set\n\n**Issue Created:** #[issue-number]\n**Title:** [type]: [title]\n**Branch:** [type]\u002F[issue-number]-[short-slug]\n\nSTATE: working\nTASK: [task]\nSINCE: [timestamp]\n\n### Acceptance Criteria\n- [ ] [criteria 1]\n- [ ] [criteria 2]\n- [ ] [criteria 3]\n\nตั้งชื่อ + สี session (copy วางได้เลย):\n\n\u002Frename #[issue-number] [short task name]\n\u002Fcolor [color-by-type]\n\nพร้อมเริ่มงาน! ใช้ `\u002Ftd` เมื่อจบ session\n```\n\n**For Jira:**\n```markdown\n## Focus Set\n\n**Jira Issue:** [ISSUE_KEY]\n**Summary:** [summary]\n**URL:** https:\u002F\u002F[domain]\u002Fbrowse\u002F[ISSUE_KEY]\n**Branch:** [type]\u002F[ISSUE_KEY]-[short-slug]\n\nSTATE: working\nTASK: [ISSUE_KEY] - [summary]\nSINCE: [timestamp]\n\nStatus: In Progress\nAssigned to: you\n\nตั้งชื่อ + สี session (copy วางได้เลย):\n\n\u002Frename [ISSUE_KEY] [short task name]\n\u002Fcolor [color-by-type]\n\nพร้อมเริ่มงาน! ใช้ `\u002Ftd` เมื่อจบ session\n```\n\n## Issue Title Format\n\n| Type | Prefix | Example |\n|------|--------|---------|\n| feature | `feat:` | `feat: Add user authentication` |\n| bug fix | `fix:` | `fix: Resolve login timeout` |\n| refactor | `refactor:` | `refactor: Simplify auth middleware` |\n| docs | `docs:` | `docs: Update API documentation` |\n| test | `test:` | `test: Add unit tests for auth` |\n| chore | `chore:` | `chore: Update dependencies` |\n\n## Examples\n\n```bash\n# With argument\n\u002Ffocus Implement user authentication\n\n# Without argument (will ask)\n\u002Ffocus\n```\n\n## States Reference\n\n| State | Meaning | Next Action |\n|-------|---------|-------------|\n| `ready` | ว่าง รอ task | `\u002Ffocus` เพื่อตั้งงาน |\n| `working` | กำลังทำ | `\u002Ftd` เมื่อจบ |\n| `pending` | รอทำต่อ | `\u002Frecap` แล้ว `\u002Ffocus` |\n| `blocked` | ติดปัญหา | แก้ปัญหาก่อน |\n| `completed` | เสร็จแล้ว | `\u002Ffocus` งานใหม่ |\n\n## Related Commands\n\n| Command | Description |\n|---------|-------------|\n| `\u002Fjira init` | ตั้งค่า Jira credentials |\n| `\u002Fjira list` | ดู Jira issues |\n| `\u002Fjira transitions` | ดู transitions ที่ทำได้ |\n| `\u002Ftd` | จบ session + retrospective |\n\n","# Set Focus\n\nตั้ง focus สำหรับงานใหม่ พร้อมสร้าง issue (GitHub หรือ Jira) ด้วย format มาตรฐาน\n\n## Usage\n\n```\n\u002Ffocus [task description]\n```\n\n## Pre-Feature Checklist (discipline, not ceremony)\n\nก่อนเริ่ม feature ใหม่ ทำ 3 ขั้นสั้นๆ (รวม ~5 นาที) แทนการ scaffold context pack เต็ม:\n\n1. **Grep AP registry** — `grep -i \"\u003Ckeyword>\" kb\u002F02-patterns\u002Fanti-patterns\u002Fregistry.md` (2-3 นาที)\n   - ใช้ keyword จากงาน (bank account, gateway, websocket, ฯลฯ) เพื่อเช็คปัญหาเดิมที่เคยเจอ\n2. **Verify data flow ในโค้ดจริง** — grep handler → service → repository → gRPC\u002FKafka ก่อนเขียน spec (1-2 นาที)\n   - Spec\u002FPlan ห้ามใช้ชื่อ file\u002Ffunction โดยไม่ verify — ใส่ `file.go:123` อ้างอิง\n3. **อ่าน CLAUDE.md ของ repo** ก่อนสร้าง infra files (migration, CI config, Dockerfile) — กัน convention drift\n\nถ้า task แตะ ≥ 2 repos + proto\u002Fschema หรือ security-critical → ลองใช้ [[Multi-Repo Feature Development]] §4.4 Validation Agents ก่อน merge\n\n## Instructions\n\n### Step 1: Check Current State\n\n```bash\nexport TZ='Asia\u002FBangkok'\necho \"=== Current Focus ===\"\ncat docs\u002Fcurrent.md\n\necho \"\"\necho \"=== Git Status ===\"\necho \"Branch: $(git branch --show-current)\"\ngit status --short\n```\n\n### Step 2: Handle Existing Focus\n\nถ้า `STATE` ไม่ใช่ `ready` หรือ `completed`:\n\n```\nมี focus อยู่แล้ว:\nTASK: [current task]\nSTATE: [current state]\n\nต้องการ:\n1. ทำต่องานเดิม (keep)\n2. เปลี่ยนไปทำงานใหม่ (switch) - งานเดิมจะถูก mark เป็น pending\n```\n\nถ้า user เลือก switch → เพิ่ม pending entry ใน `docs\u002Flogs\u002Factivity.log`\n\n### Step 3: Get Task from User\n\nถ้าไม่มี argument:\n```\nงานที่จะทำคืออะไร?\n```\n\nถ้ามี argument → ใช้เป็น task description\n\n### Step 3.3: Check Language Setting\n\n```bash\nCURRENT_LANG=$(grep \"^LANGUAGE:\" docs\u002Fcurrent.md 2>\u002Fdev\u002Fnull | cut -d: -f2 | xargs)\necho \"Current language: ${CURRENT_LANG:-not set}\"\n```\n\nถ้า LANGUAGE ยังไม่ได้ตั้งค่า (ไม่มี field หรือค่าเป็น `-`) ให้ถามผู้ใช้ด้วย AskUserQuestion:\n\n```\nภาษาสำหรับ output (Language for generated output):\n1. English (en)\n2. ภาษาไทย (th)\n```\n\nเก็บค่าที่เลือกไว้ใช้ใน Step 7\n\nถ้ามีค่าอยู่แล้ว → ใช้ค่าเดิม ไม่ต้องถามซ้ำ\n\n### Step 3.5: Choose Issue Tracker\n\nใช้ AskUserQuestion เพื่อเลือก issue tracker:\n\n**ตรวจสอบ Jira config ก่อน:**\n```bash\nif [[ -f \".jira-config\" ]] || [[ -f \"$HOME\u002F.config\u002Fclaude-km\u002Fjira.conf\" ]]; then\n    echo \"Jira: configured\"\nelse\n    echo \"Jira: not configured\"\nfi\n```\n\n**ถ้ามี Jira config:**\n```\nเลือก Issue Tracker:\n1. GitHub Issues - สร้าง GitHub issue ใหม่\n2. Jira - สร้าง Jira issue ใหม่\n3. Jira (existing) - ดึง Jira issue ที่มีอยู่มาทำ\n```\n\n**ถ้าไม่มี Jira config:**\nข้ามไป Step 4 (ใช้ GitHub เป็น default)\n\nFor Jira-specific paths (B and C), see `jira-paths.md`.\n\n---\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---\n\n## Path A: GitHub Issues (Default)\n\n### Step 4: Gather Issue Details\n\nใช้ AskUserQuestion เพื่อรวบรวมข้อมูลสำหรับ issue:\n\n**ถามข้อมูลต่อไปนี้:**\n\n1. **Type**: ประเภทของงาน\n   - feat (new feature)\n   - fix (bug fix)\n   - refactor (code restructure)\n   - docs (documentation)\n   - test (testing)\n   - chore (maintenance)\n\n2. **Overview**: อธิบายสั้นๆ ว่างานนี้คืออะไร\n\n3. **Current State**: สถานะปัจจุบันเป็นอย่างไร (ปัญหาที่เจอ, behavior เดิม)\n\n4. **Proposed Solution**: วิธีแก้ไขที่เสนอ\n\n5. **Technical Details**:\n   - Components ที่เกี่ยวข้อง\n   - Implementation approach\n\n6. **Acceptance Criteria**: เกณฑ์การทดสอบ (อย่างน้อย 3 ข้อ)\n   - Specific testable criteria\n   - Performance requirements (ถ้ามี)\n   - UI\u002FUX requirements (ถ้ามี)\n\n### Step 5: Create GitHub Issue\n\nสร้าง GitHub issue ด้วย format มาตรฐาน:\n\n```bash\nexport TZ='Asia\u002FBangkok'\n\ngh issue create \\\n  --title \"[type]: [descriptive title]\" \\\n  --body \"$(cat \u003C\u003CEOF\n## Overview\n\n[user input - brief description]\n\n## Current State\n\n[user input - what exists now]\n\n## Proposed Solution\n\n[user input - what should be implemented]\n\n## Technical Details\n\n- **Components affected:** [user input]\n- **Implementation approach:** [user input]\n\n## Acceptance Criteria\n\n- [ ] [user input criteria 1]\n- [ ] [user input criteria 2]\n- [ ] [user input criteria 3]\n\n---\n\n## Session Info\n\n- **Started:** $(date '+%Y-%m-%d %H:%M')\n- **Branch:** [type]\u002F[issue-number]-[short-slug]\n- **Status:** In Progress\nEOF\n)\"\n```\n\nเก็บ issue number ที่ได้ (เช่น `#123`) ไว้ใช้ใน Step 6\n\n### Step 5.5: Auto-assign Issue (GitHub)\n\n**อัตโนมัติ assign user ให้กับ issue:**\n\n```bash\nISSUE_NUMBER=[issue-number-from-step-5]\nif gh issue edit \"$ISSUE_NUMBER\" --add-assignee @me 2>\u002Fdev\u002Fnull; then\n    echo \"Assigned issue #$ISSUE_NUMBER to you\"\nelse\n    echo \"Auto-assign skipped (already assigned or no permission)\"\nfi\n```\n\n**ไปที่ Step 6: Create Feature Branch**\n\n---\n\n## Step 6: Create Feature Branch (Required)\n\n**ข้อบังคับ:** ถ้าอยู่บน `main`, `master`, หรือ default branch ต้องสร้าง branch ใหม่เสมอ\n\n```bash\nexport TZ='Asia\u002FBangkok'\n\nCURRENT_BRANCH=$(git branch --show-current)\nDEFAULT_BRANCH=$(git symbolic-ref refs\u002Fremotes\u002Forigin\u002FHEAD 2>\u002Fdev\u002Fnull | sed 's@^refs\u002Fremotes\u002Forigin\u002F@@')\n\nif [ -z \"$DEFAULT_BRANCH\" ]; then\n  if git show-ref --verify --quiet refs\u002Fheads\u002Fmain; then\n    DEFAULT_BRANCH=\"main\"\n  else\n    DEFAULT_BRANCH=\"master\"\n  fi\nfi\n\nif [ \"$CURRENT_BRANCH\" = \"main\" ] || [ \"$CURRENT_BRANCH\" = \"master\" ] || [ \"$CURRENT_BRANCH\" = \"$DEFAULT_BRANCH\" ]; then\n  echo \"Currently on $CURRENT_BRANCH - creating feature branch...\"\n  git checkout -b \"[type]\u002F[issue-id]-[short-slug]\"\n  echo \"Created and switched to branch: [type]\u002F[issue-id]-[short-slug]\"\nelse\n  echo \"Already on feature branch: $CURRENT_BRANCH\"\nfi\n```\n\n**Branch Naming Convention:**\n\n| Type | Branch Prefix | GitHub Example | Jira Example |\n|------|---------------|----------------|--------------|\n| feat | `feat\u002F` | `feat\u002F123-add-auth` | `feat\u002FPROJ-123-add-auth` |\n| fix | `fix\u002F` | `fix\u002F45-login-bug` | `fix\u002FPROJ-45-login-bug` |\n| refactor | `refactor\u002F` | `refactor\u002F67-simplify` | `refactor\u002FPROJ-67-simplify` |\n| docs | `docs\u002F` | `docs\u002F89-readme` | `docs\u002FPROJ-89-readme` |\n\n**Short slug rules:**\n- ใช้ lowercase\n- แทนที่ space ด้วย `-`\n- ตัดคำที่ไม่จำเป็นออก (a, an, the)\n- จำกัดความยาวไม่เกิน 30 ตัวอักษร\n\n---\n\n## Step 7: Update Files\n\n**Update `docs\u002Fcurrent.md`:**\n\nFor GitHub:\n```bash\nexport TZ='Asia\u002FBangkok'\ncat > docs\u002Fcurrent.md \u003C\u003C EOF\nSTATE: working\nTASK: [task description from user]\nSINCE: $(date '+%Y-%m-%d %H:%M')\nISSUE: #[issue-number]\nBRANCH: [type]\u002F[issue-number]-[short-slug]\nLANGUAGE: [selected-language from Step 3.3, default: en]\nEOF\n```\n\nFor Jira:\n```bash\nexport TZ='Asia\u002FBangkok'\ncat > docs\u002Fcurrent.md \u003C\u003C EOF\nSTATE: working\nTASK: [ISSUE_KEY] - [summary]\nSINCE: $(date '+%Y-%m-%d %H:%M')\nISSUE: [ISSUE_KEY]\nBRANCH: [type]\u002F[ISSUE_KEY]-[short-slug]\nJIRA_URL: https:\u002F\u002F[domain]\u002Fbrowse\u002F[ISSUE_KEY]\nLANGUAGE: [selected-language from Step 3.3, default: en]\nPLAN: [path to plan file, if any]\nEOF\n```\n\n**Append to `docs\u002Flogs\u002Factivity.log`:**\n\n```bash\nexport TZ='Asia\u002FBangkok'\necho \"$(date '+%Y-%m-%d %H:%M') | working | [task description] ([issue-id])\" >> docs\u002Flogs\u002Factivity.log\n```\n\n## Step 8: Jira Post-Setup (Jira only)\n\n**Transition to In Progress (if available):**\n```bash\n.\u002Fscripts\u002Fjira-client.sh transitions [ISSUE_KEY]\n.\u002Fscripts\u002Fjira-client.sh transition [ISSUE_KEY] [transition_id]\n```\n\n**Assign to self:**\n```bash\n.\u002Fscripts\u002Fjira-client.sh assign [ISSUE_KEY] me\n```\n\n## Step 9: Suggest Session Rename + Color\n\n> `\u002Frename` และ `\u002Fcolor` เป็น **built-in commands** — Claude เรียกเองไม่ได้ ต้องให้ user พิมพ์เอง\n> ดังนั้นให้ปิดท้ายด้วยบรรทัดพร้อม copy-paste เสมอ (ห้ามข้าม)\n\n**เลือกสีตาม type:**\n\n| Type | Color |\n|------|-------|\n| feat | `green` |\n| fix | `red` |\n| refactor | `purple` |\n| perf | `orange` |\n| docs | `blue` |\n| test | `cyan` |\n| infra | `yellow` |\n| chore | `pink` |\n\n**แสดงท้าย output (ปรับ session name ให้สั้น อ่านง่าย ขึ้นต้นด้วย issue id):**\n\n```\nตั้งชื่อ + สี session (copy วางได้เลย):\n\n\u002Frename [ISSUE-ID] [short task name]\n\u002Fcolor [color-by-type]\n```\n\n## Step 10: Confirm\n\n**For GitHub:**\n```markdown\n## Focus Set\n\n**Issue Created:** #[issue-number]\n**Title:** [type]: [title]\n**Branch:** [type]\u002F[issue-number]-[short-slug]\n\nSTATE: working\nTASK: [task]\nSINCE: [timestamp]\n\n### Acceptance Criteria\n- [ ] [criteria 1]\n- [ ] [criteria 2]\n- [ ] [criteria 3]\n\nตั้งชื่อ + สี session (copy วางได้เลย):\n\n\u002Frename #[issue-number] [short task name]\n\u002Fcolor [color-by-type]\n\nพร้อมเริ่มงาน! ใช้ `\u002Ftd` เมื่อจบ session\n```\n\n**For Jira:**\n```markdown\n## Focus Set\n\n**Jira Issue:** [ISSUE_KEY]\n**Summary:** [summary]\n**URL:** https:\u002F\u002F[domain]\u002Fbrowse\u002F[ISSUE_KEY]\n**Branch:** [type]\u002F[ISSUE_KEY]-[short-slug]\n\nSTATE: working\nTASK: [ISSUE_KEY] - [summary]\nSINCE: [timestamp]\n\nStatus: In Progress\nAssigned to: you\n\nตั้งชื่อ + สี session (copy วางได้เลย):\n\n\u002Frename [ISSUE_KEY] [short task name]\n\u002Fcolor [color-by-type]\n\nพร้อมเริ่มงาน! ใช้ `\u002Ftd` เมื่อจบ session\n```\n\n## Issue Title Format\n\n| Type | Prefix | Example |\n|------|--------|---------|\n| feature | `feat:` | `feat: Add user authentication` |\n| bug fix | `fix:` | `fix: Resolve login timeout` |\n| refactor | `refactor:` | `refactor: Simplify auth middleware` |\n| docs | `docs:` | `docs: Update API documentation` |\n| test | `test:` | `test: Add unit tests for auth` |\n| chore | `chore:` | `chore: Update dependencies` |\n\n## Examples\n\n```bash\n# With argument\n\u002Ffocus Implement user authentication\n\n# Without argument (will ask)\n\u002Ffocus\n```\n\n## States Reference\n\n| State | Meaning | Next Action |\n|-------|---------|-------------|\n| `ready` | ว่าง รอ task | `\u002Ffocus` เพื่อตั้งงาน |\n| `working` | กำลังทำ | `\u002Ftd` เมื่อจบ |\n| `pending` | รอทำต่อ | `\u002Frecap` แล้ว `\u002Ffocus` |\n| `blocked` | ติดปัญหา | แก้ปัญหาก่อน |\n| `completed` | เสร็จแล้ว | `\u002Ffocus` งานใหม่ |\n\n## Related Commands\n\n| Command | Description |\n|---------|-------------|\n| `\u002Fjira init` | ตั้งค่า Jira credentials |\n| `\u002Fjira list` | ดู Jira issues |\n| `\u002Fjira transitions` | ดู transitions ที่ทำได้ |\n| `\u002Ftd` | จบ session + retrospective |\n\n",{"name":5,"description":7,"argument-hint":29,"user-invocable":30},"[task]",true,"main","835c1f754a3eab31c2e7eb408d21431a98c633ee","skills\u002Ffocus","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":39,"prompt":49,"zipAvailable":30},[40,43,46],{"tool":41,"command":42},"npx","npx skills add goffity\u002Fdev-km --skill focus",{"tool":44,"command":45},"bunx","bunx skills add goffity\u002Fdev-km --skill focus",{"tool":47,"command":48},"pnpm","pnpm dlx skills add goffity\u002Fdev-km --skill focus","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fgoffity\u002Fdev-km\u002Fblob\u002Fmain\u002Fskills\u002Ffocus\u002FSKILL.md",[51,57,61],{"path":52,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":55,"sourceHtmlUrl":56},"example.html","REFERENCE","参考文档",7238,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FPPT-Design\u002Fopen-design-ppt-keynote\u002Fexample.html",{"path":58,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":59,"sourceHtmlUrl":60},"jira-paths.md",1760,"https:\u002F\u002Fgithub.com\u002Fgoffity\u002Fdev-km\u002Fblob\u002Fmain\u002Fskills\u002Ffocus\u002Fjira-paths.md",{"path":62,"resourceType":53,"resourceTypeDesc":54,"sizeBytes":63,"sourceHtmlUrl":64},"open-design.json",5101,"https:\u002F\u002Fgithub.com\u002Fendman100\u002Fskill-router-nexus\u002Fblob\u002Fmain\u002FPPT-Design\u002Fopen-design-ppt-keynote\u002Fopen-design.json",[66,77,110,121,129,144],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":24},"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",[],[73,74,75,76],"wait what","land","stop","message",{"skillNo":78,"name":79,"nameZh":6,"description":80,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":81,"categories":82,"keywords":91,"publishedAt":24},"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",[83,88],{"categoryNo":84,"categoryName":85,"taxonomyType":86,"taxonomyTypeDesc":87},"01JBSEEDCAT000000000000007","代码审查","SCENARIO","使用场景",{"categoryNo":89,"categoryName":90,"taxonomyType":86,"taxonomyTypeDesc":87},"01JBSEEDCAT000000000000008","测试与质量",[79,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,20,107,108,109],"discipline","development","state","first","loop","quality","Rules","fix","kb","use","test","standards","red-green-refactor","build","green","testing","commit","plugin",{"skillNo":111,"name":112,"nameZh":6,"description":113,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":114,"categories":115,"keywords":116,"publishedAt":24},"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",[],[112,117,118,119,22,120],"documentation","context","session","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":24},"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,119],"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":24},"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":86,"taxonomyTypeDesc":87},"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":24},"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",[],[119,151,152,118,153],"session analyzer","git","retrospective"]