---
name: git-auto-push-system
description: Automatically commits and pushes code changes to git with descriptive Conventional Commits messages that name what was actually changed. Use this whenever the user asks Claude to auto-commit, auto-push, save progress to git, push code changes for them, or wants every code change reflected in git history with a proper message — even if they just say "push this" or "commit my changes." Also trigger for git workflow automation requests, "push whenever the code changes," or setting up auto-commit-on-change behavior.
---

# Git Auto Push System

จัดการ commit + push โค้ดอัตโนมัติทุกครั้งที่มีการเปลี่ยนแปลง ผ่าน pipeline 4 stage ที่ตรวจ diff
จริง เขียน commit message ที่ระบุสิ่งที่แก้ไว้ครบ และมี safety gate กันหลุด credential ก่อน push

**เนื้อหากฎทั้งหมดอยู่ในระบบ manifest-driven นี้เอง ไม่ใช่ใน SKILL.md ไฟล์นี้** — ไฟล์นี้เป็นแค่
ทางเข้า (entrypoint) ให้ Claude ค้นพบและโหลดระบบเท่านั้น

## เมื่อ skill นี้ trigger

1. **อ่าน `START_HERE.md` ก่อนเสมอ** — เป็น entrypoint จริงของระบบ ไม่ใช่ไฟล์นี้
2. ทำตามลำดับที่ `START_HERE.md` บอก: `MANIFEST.json` → `CORE_RULES.md` → ไฟล์ที่ routed
   ตาม stage ปัจจุบันเท่านั้น (`task_routes[<stage>].fresh_read`)
3. Pipeline: `CHANGE → REVIEW → COMMIT → PUSH` — ทำทีละ stage ห้ามข้าม ห้ามรับรองงานตัวเอง
   (REVIEW ต้องอ่าน diff จริงจาก git เสมอ ไม่ใช่จากความจำว่าตัวเองแก้อะไรไป)
4. Conditional module `secret_scan` โหลดเฉพาะเมื่อ trigger จริง (diff แตะไฟล์ config/env/key
   หรือมีสตริงคล้าย credential) — เจอแล้ว = HOLD ทันที ห้าม push

## กติกาที่ต้องรู้แบบย่อ (รายละเอียดเต็มอยู่ใน policies/)

- **Commit message** ต้องเป็น Conventional Commits (`type(scope): subject`) และต้องระบุไฟล์/
  เหตุผลที่แก้จริงในทุกกรณีที่แตะมากกว่า 1 ไฟล์ — ห้ามใช้ข้อความทั่วไปเช่น "update"/"fix bug"
  (`policies/COMMIT_MESSAGE_POLICY.md`)
- **ห้าม push งานที่ยังไม่ผ่าน REVIEW** และห้าม force-push โดยไม่มีคำสั่งชัดเจนจากผู้ใช้
  (`policies/PUSH_POLICY.md`)
- **Secret ที่หลุดใน diff** (รวมถึงที่ถูกลบออกจาก diff) ต้อง HOLD และแจ้งผู้ใช้เสมอ
  (`policies/SECRET_HANDLING_POLICY.md`)

ห้ามเดาเนื้อหากฎเหล่านี้เอง — ให้ตาม `START_HERE.md` ไปอ่านไฟล์จริงตามลำดับที่ routed มา

## โครงสร้างระบบ

```
START_HERE.md          entrypoint จริง — อ่านก่อนเสมอ
MANIFEST.json           authority — ไฟล์ที่ไม่ได้ลงทะเบียนที่นี่ ไม่มีผลกับ runtime
CORE_RULES.md           invariants + คำอธิบาย 4 stage
policies/                กติกาการตัดสินใจของแต่ละเรื่อง
skills/                  ขั้นตอนละเอียดของแต่ละ stage (00_router.md เริ่มที่นี่)
schemas/                 รูปแบบ artifact ที่ต้องผลิต (commit message, review report)
validators/               ตรวจระบบด้วยโค้ด: `python validators/validate_system.py --root .`
```

## แก้กฎในระบบนี้

ห้ามแก้ policy/skill/schema ตรงๆ แล้วจบ — ต้องผ่าน `skills/91_release.md` (regenerate manifest,
validate ให้ PASS ก่อนถือว่าเสร็จ) มิฉะนั้น manifest กับไฟล์จริงจะไม่ตรงกัน
