/ct — รู้ว่าควรปักหมุด แต่ตอนห้าทุ่มไม่มีใครทำ
ขั้นตอนที่บังคับให้ตัดสินใจตอนหมดแรงจะถูกข้ามเสมอ /ct เลยอ่านเลข version จาก commit message เอง ใช้ tag แบบ annotated ห้ามย้าย tag และไม่ push ให้
ทุกคนรู้ว่าควรปักหมุดไว้ทุกครั้งที่ปล่อยของขึ้น
แล้วมีใครทำจริงบ้าง
ตอนห้าทุ่ม แก้เสร็จพอดี อยากปิดคอมแล้ว ขั้นตอนที่เหลือคือคิดว่ารอบนี้ควรเป็นเลขอะไร
ก็ข้าม
พรุ่งนี้ก็ข้าม อาทิตย์หน้าก็ข้าม แล้ววันที่ต้องใช้จริงๆ ก็ไม่มีอะไรให้กลับไป
ปัญหาไม่ได้อยู่ที่วินัย มันอยู่ที่ขั้นตอนนั้นบังคับให้เราตัดสินใจ ในนาทีที่เราไม่อยากตัดสินใจอะไรอีกแล้ว
คำถามที่มันถามคือ รอบนี้เป็น patch หรือ minor หรือ major
ลองสังเกตตัวเองดู ทุกครั้งที่ถูกถาม เราตอบ patch
ไม่ใช่เพราะขี้เกียจ แต่เพราะตอนนั้นเราอยากจบบทสนทนาแล้วไปนอน patch คือคำตอบที่ทำให้จบเร็วที่สุด
แล้วพอทุกอย่างเป็น patch หมด เลขก็ไม่ได้บอกอะไรอีกต่อไป สุดท้ายก็เลิกปักไปเลย เพราะปักไปก็ไม่มีความหมาย
ทางแก้คือ อย่าให้มันถาม
ให้มันไปอ่านเอาเองจาก commit message ที่เราเขียนไว้ตั้งแต่แรก
มี BREAKING CHANGE: หรือมี ! หลัง type แบบ feat!: ก็ MAJOR
มี feat: ก็ MINOR
มี fix: หรือ perf: ก็ PATCH
มีแต่ docs:, chore:, ci:, test: ก็ PATCH
อันไหนสูงสุดชนะ
วินัยเลยย้ายที่ ไม่ต้องมีตอนปักหมุด ไปมีตอนเขียน commit ซึ่งเป็นตอนที่เรายังอยู่กับงานนั้นอยู่ ยังจำได้ว่าเพิ่งทำอะไร
เขียน commit ให้ตรงความจริง แล้วเลขถูกเองฟรีๆ
มีกฎเพิ่มอีกข้อ ตอนที่ major ยังเป็น 0 อยู่ เจอ breaking change ให้ bump แค่ MINOR เพราะ 0.x คือช่วงที่ทุกอย่างพังได้อยู่แล้ว การเผา v1.0.0 ทิ้งไปกับการ rename ตอนอาทิตย์ที่สอง คือเลขที่เอาคืนไม่ได้
กฎที่เหลือผมเขียนล็อกไว้ในตัว skill เลย ไม่ปล่อยให้มันคิดเอง
tag ต้องเป็น annotated เท่านั้น
annotated แปลว่ามีคนตัด มีวันที่ มีข้อความติดอยู่ในตัวมัน ส่วน lightweight คือชื่อเปล่าๆ วันที่ของพังแล้วเปิดมาเจอ v0.2.0 v0.2.1 v0.2.2 เรียงกัน มันไม่บอกอะไรเลยว่าอันไหนคืออันที่ยังดี
ใน skill ผมให้มันดึง commit ตั้งแต่ tag ก่อนหน้ามาแปะไว้ในตัว tag ทุกครั้ง เปิดมาอ่านก็รู้เลยว่าในนี้มีอะไร
ห้ามย้าย tag เด็ดขาด ชื่อซ้ำให้หยุดแล้วบอก ไม่ใช่เขียนทับ เพราะการย้าย tag คือการทำให้หมุดที่เคยปักไว้ตรงจุดที่ของยังดี ชี้ไปที่อื่น แล้วเราจะไม่รู้จนถึงวันที่ต้องใช้
ห้าม stage ไฟล์ .env หรือ credential เจอให้ดึงออกแล้วเตือน
ห้าม --no-verify เพราะ hook มีไว้ให้ทำงาน
ไม่มีอะไรให้ commit ก็หยุด ไม่ใช่ commit เปล่าๆ ไว้ก่อน
ข้อสุดท้ายและเป็นข้อที่ตั้งใจมากที่สุด มัน push ให้ไม่ได้
มันแค่ print คำสั่ง push ออกมาให้ก๊อป
commit กับ tag ที่อยู่ในเครื่องเรา ลบทิ้งได้ตลอด ตัดผิดก็ตัดใหม่ แต่ tag ที่ push ขึ้นไปแล้ว มีคนเอาไป deploy ต่อได้ เอาไป build ต่อได้ เส้นนั้นควรมีคนกดเอง
ราคาของการมีคนอยู่ตรงเส้นนั้น คือก๊อปหนึ่งบรรทัด ถูกมาก
ของที่ใช้อยู่ทุกวัน ยกมาแจกทั้งตัว ชื่อ ct
curl -sL https://raw.githubusercontent.com/somnus0x/agt-skill-pack/main/install.sh | bash -s ct
/ct ให้มันคิดเลขให้เอง
/ct minor อยากบังคับเลขเองก็ได้
/ct rc ปักไว้ก่อน แบบที่ยังไม่ชัวร์
ตัว rc คือหมุดชั่วคราว ปล่อยไปก่อนแล้วดูอาการ พอมั่นใจว่านิ่งแล้วพิมพ์ /ct อีกที มันจะถอดคำว่า rc ออกให้กลายเป็นตัวจริง
ในไฟล์มี block ให้ก๊อปใส่ CLAUDE.md บอกมันว่า repo เราใช้ branch แบบไหน ใครมี branch เดียวก็ใช้ได้ ไม่ต้องมี staging
ที่อยากให้เอาไปมากกว่าตัว skill คือหลักของมัน
ทุกขั้นตอนที่บังคับให้เราตัดสินใจตอนที่ไม่มีแรงตัดสินใจ สุดท้ายจะถูกข้าม ไม่ว่าจะรู้ว่าสำคัญแค่ไหน
ถ้าอยากให้มันเกิดขึ้นจริง อย่าไปเพิ่มวินัย ให้เอาการตัดสินใจออกจากขั้นตอนนั้นแทน