一键导入
triage
พา issue และ external PR เดินผ่าน state machine ของ triage role — จัดหมวด ตรวจสอบ grill ถ้าจำเป็น และเขียน brief ที่พร้อมให้ agent รับไปทำ
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
พา issue และ external PR เดินผ่าน state machine ของ triage role — จัดหมวด ตรวจสอบ grill ถ้าจำเป็น และเขียน brief ที่พร้อมให้ agent รับไปทำ
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
วางแผนงานก้อนใหญ่ — ใหญ่เกินกว่าหนึ่ง agent session จะรับไหว — เป็นแผนที่ร่วมของ ticket สำหรับการ investigate บน issue tracker ของคุณ แล้วไล่ resolve ทีละใบจนกว่าเส้นทางไปยังจุดหมายจะชัด
สร้าง interface design หลายแบบที่ต่างกันสุดขั้วสำหรับ module หนึ่ง โดยใช้ sub-agent แบบ parallel ใช้เมื่อ user อยากออกแบบ API, สำรวจตัวเลือกของ interface, เปรียบเทียบรูปทรงของ module หรือพูดถึง "design it twice"
QA session แบบ interactive ที่ผู้ใช้เล่าบั๊กหรือปัญหาแบบคุยกันธรรมดา แล้ว agent เปิด GitHub issue ให้ พร้อมสำรวจ codebase เบื้องหลังเพื่อเก็บ context และภาษา domain ใช้เมื่อผู้ใช้อยากรายงานบั๊ก ทำ QA เปิด issue แบบคุยกัน หรือพูดถึง "QA session"
สร้างแผน refactor แบบละเอียดที่ซอยเป็น commit เล็ก ๆ ผ่านการสัมภาษณ์ user แล้วเปิดเป็น GitHub issue ใช้เมื่อ user อยากวางแผน refactor สร้าง refactoring RFC หรือแตก refactor ออกเป็นขั้นเล็ก ๆ ที่ปลอดภัย
สกัด glossary ภาษากลางสไตล์ DDD จากบทสนทนาปัจจุบัน พร้อมชี้จุดกำกวมและเสนอ term มาตรฐาน เซฟลง UBIQUITOUS_LANGUAGE.md ใช้เมื่อผู้ใช้อยากนิยามศัพท์ domain สร้าง glossary ทำ terminology ให้แน่น สร้าง ubiquitous language หรือพูดถึง "domain model" หรือ "DDD"
ถามว่า skill หรือ flow ไหนเหมาะกับสถานการณ์ของคุณ เป็น router ที่ครอบ skill ทั้งหมดใน repo นี้
| name | triage |
| description | พา issue และ external PR เดินผ่าน state machine ของ triage role — จัดหมวด ตรวจสอบ grill ถ้าจำเป็น และเขียน brief ที่พร้อมให้ agent รับไปทำ |
| disable-model-invocation | true |
พา issue บน issue tracker ของโปรเจกต์เดินผ่าน state machine (เครื่องจักรสถานะที่กำหนดว่าย้ายจาก state ไหนไป state ไหนได้) เล็ก ๆ ของ triage role
ถ้า repo นี้ปฏิบัติกับ external pull request เป็นช่องทางรับคำขอด้วย (ดู config ของ issue-tracker) triage ก็ครอบคลุมมันเช่นกัน: PR คือ issue ที่มี code แนบมา — role เดียวกัน state เดียวกัน machine เดียวกัน โดยมีจุดต่างไม่กี่จุดที่กำกับไว้ว่า "สำหรับ PR" ด้านล่าง ถ้าเจอ #42 เปล่า ๆ ให้ resolve ว่าเป็น issue หรือ PR ตาม config ของ tracker
ทุก comment หรือ issue ที่โพสต์ลง issue tracker ระหว่าง triage ต้อง ขึ้นต้นด้วย disclaimer นี้:
> *This was generated by AI during triage.*
.out-of-scope/ ทำงานยังไงrole ประเภท หมวดหมู่ สองตัว:
bug — มีอะไรบางอย่างพังenhancement — feature ใหม่หรือการปรับปรุงrole ประเภท state ห้าตัว:
needs-triage — maintainer ต้องประเมินneeds-info — รอข้อมูลเพิ่มจากผู้รายงานready-for-agent — spec ครบถ้วนแล้ว พร้อมให้ agent แบบ AFK รับไปทำready-for-human — ต้องให้มนุษย์ implementwontfix — จะไม่ดำเนินการสำหรับ PR ให้อ่าน state ชุดเดียวกันโดยเทียบกับ code ที่แนบมา: ready-for-agent แปลว่ามี brief แนบแล้วและ agent ควรทำขั้นถัดไปกับ diff; ready-for-human แปลว่าพร้อมให้มนุษย์ merge
issue ที่ triage แล้วทุกตัวควรมี role หมวดหมู่หนึ่งตัวและ state role หนึ่งตัวพอดี ถ้า state role ขัดแย้งกัน ให้ flag ไว้แล้วถาม maintainer ก่อนทำอย่างอื่น
ชื่อพวกนี้คือชื่อ role มาตรฐาน — string ของ label ที่ใช้จริงใน issue tracker อาจต่างออกไป mapping ควรถูกส่งมาให้คุณแล้ว — ถ้ายังไม่มี ให้รัน /setup-matt-pocock-skills
การเปลี่ยน state: issue ที่ยังไม่มี label ปกติจะไป needs-triage ก่อน จากตรงนั้นค่อยย้ายไป needs-info, ready-for-agent, ready-for-human หรือ wontfix ส่วน needs-info จะกลับไป needs-triage เมื่อผู้รายงานตอบกลับ maintainer สามารถ override ได้ตลอดเวลา — ถ้าการเปลี่ยน state ไหนดูผิดปกติ ให้ flag แล้วถามก่อนดำเนินการต่อ
maintainer เรียก /triage แล้วอธิบายสิ่งที่ต้องการเป็นภาษาธรรมชาติ ตีความคำขอแล้วลงมือทำ ตัวอย่าง:
query issue tracker แล้วนำเสนอสาม bucket เรียงจากเก่าสุดก่อน:
needs-triage — กำลังประเมินอยู่needs-info ที่ผู้รายงานมีความเคลื่อนไหวหลัง triage notes ล่าสุด — ต้องประเมินใหม่เมื่อ PR อยู่ในขอบเขต ให้รวม external PR เข้า bucket พวกนี้ด้วย และติดป้ายแต่ละบรรทัดว่า [PR] หรือ [issue] ขั้นตอนการค้นหาจะโชว์เฉพาะ PR ภายนอก เท่านั้น (config ของ tracker กำหนดว่าใครนับเป็นภายนอก) — PR ที่ collaborator กำลังทำค้างอยู่ไม่ใช่งาน triage filter นี้ใช้เฉพาะตอนค้นหา; PR ที่ถูกระบุชื่อมาตรง ๆ ต้อง triage เสมอไม่ว่าใครเป็นคนเขียน
แสดงจำนวนและสรุปหนึ่งบรรทัดต่อรายการ แล้วให้ maintainer เป็นคนเลือก
เก็บ context อ่าน issue หรือ PR ให้ครบ (เนื้อหา, comment, label, ผู้เขียน, วันที่; ถ้าเป็น PR อ่าน diff ด้วย) parse triage notes ก่อนหน้าเพื่อจะได้ไม่ถามคำถามที่ได้ข้อสรุปแล้วซ้ำ สำรวจ codebase โดยใช้ domain glossary ของโปรเจกต์ และเคารพ ADR ในบริเวณนั้น รันการตรวจสองอย่างกับ codebase: (a) ความซ้ำซ้อน — ค้นหา implementation ที่มีอยู่แล้วของพฤติกรรมที่ถูกขอ โดยค้นตาม concept ของ domain (ไม่ใช่แค่ตามถ้อยคำในคำขอ) และรายงานว่าไปค้นที่ไหนมาบ้าง ถ้าเจอ แปลว่าเป็น wontfix แบบทำไปแล้ว (ขั้นที่ 5) (b) เคยถูกปฏิเสธมาก่อน — อ่าน .out-of-scope/*.md แล้วหยิบอันที่คล้ายกับคำขอนี้ขึ้นมาแสดง
เสนอคำแนะนำ บอก maintainer ว่าแนะนำหมวดหมู่และ state ไหนพร้อมเหตุผล บวกสรุป codebase สั้น ๆ ที่เกี่ยวข้องกับคำขอ — รวมถึงว่ามัน implement ไปแล้วหรือยัง แล้วรอฟังทิศทาง
ตรวจสอบข้อกล่าวอ้าง ก่อนจะ grill ใด ๆ ให้เช็คว่าข้อกล่าวอ้างยืนได้จริง ถ้าเป็น bug ให้ reproduce จากขั้นตอนของผู้รายงาน ถ้าเป็น PR ให้ยืนยันว่า diff ทำตามที่อ้างจริง — checkout ออกมา รัน test หรือคำสั่งที่เกี่ยวข้อง แล้วรายงานผลที่เกิดขึ้น: ยืนยันได้ (พร้อม code path), ล้มเหลว หรือรายละเอียดไม่พอ (สัญญาณ needs-info ที่ชัดมาก) การตรวจสอบที่ยืนยันได้ทำให้ agent brief แข็งแรงขึ้นเยอะ
Grill (ถ้าจำเป็น) ถ้าคำขอยังต้องขัดเกลาให้เป็นรูปเป็นร่าง ให้รัน skill /grilling กับ /domain-modeling คู่กัน — grill มันให้เข้ารูปทีละคำถาม ลับคม domain term และอัปเดต CONTEXT.md/ADR ไปพร้อมกันเมื่อการตัดสินใจตกผลึก
นำผลลัพธ์ไปใช้:
ready-for-agent — โพสต์ comment ที่เป็น agent brief (AGENT-BRIEF.md)ready-for-human — โครงสร้างเดียวกับ agent brief แต่ระบุด้วยว่าทำไม delegate ไม่ได้ (ต้องใช้วิจารณญาณ, ต้องเข้าถึงระบบภายนอก, การตัดสินใจด้าน design, ต้อง test ด้วยมือ)needs-info — โพสต์ triage notes (template ด้านล่าง)wontfix — ปิด โดย comment ขึ้นอยู่กับ เหตุผล:
.out-of-scope/ (KB นั้นมีไว้สำหรับคำขอที่ถูกปฏิเสธ ไม่ใช่อันที่สร้างเสร็จแล้ว).out-of-scope/ ใส่ link ถึงมันใน comment แล้วปิด (OUT-OF-SCOPE.md)needs-triage — ติด role ไว้ จะ comment ด้วยก็ได้ถ้ามีความคืบหน้าบางส่วนถ้า maintainer บอกว่า "ย้าย #42 ไป ready-for-agent" ให้เชื่อเขาแล้วติด role ตรง ๆ เลย ยืนยันสิ่งที่กำลังจะทำ (เปลี่ยน role, comment, ปิด) แล้วลงมือ ข้ามการ grill ถ้าย้ายไป ready-for-agent โดยไม่ผ่าน session grill ให้ถามว่าอยากให้เขียน agent brief ไหม
## Triage Notes
**What we've established so far:**
- point 1
- point 2
**What we still need from you (@reporter):**
- question 1
- question 2
เก็บทุกอย่างที่ได้ข้อสรุประหว่าง grill ไว้ใต้ "established so far" เพื่อไม่ให้งานสูญหาย คำถามต้องเจาะจงและลงมือตอบได้จริง ไม่ใช่ "please provide more info"
ถ้า issue หรือ PR มี triage notes ก่อนหน้าอยู่ ให้อ่าน เช็คว่าผู้รายงานตอบคำถามที่ค้างอยู่บ้างหรือยัง แล้วนำเสนอภาพล่าสุดก่อนทำต่อ อย่าถามคำถามที่ได้ข้อสรุปแล้วซ้ำ