Agent Dev Thai Academyprinciples · patterns · architecture

รัน Claude Code กับ Codex อยู่หลายเครื่อง เครื่องบ้าน เครื่องออฟฟิศ VPS อีกตัว ทุกครั้งที่

skill คือไฟล์ที่ควรอยู่ใน git เหมือนโค้ด synchro back up skill ทุกเครื่องเข้า vault เดียว copy เฉพาะตัวที่ขาด เจอ conflict ไม่ทับ และเป็น dry-run โดย default

รัน Claude Code กับ Codex อยู่หลายเครื่อง เครื่องบ้าน เครื่องออฟฟิศ VPS อีกตัว ทุกครั้งที่ย้ายเครื่องหรือ setup ใหม่ ต้องมานั่งลง skill ใหม่หมด copy ไฟล์ทีละอัน ลืมว่าตัวไหนอัปเดตล่าสุดอยู่เครื่องไหน สุดท้ายแต่ละเครื่องมี skill คนละเวอร์ชัน โคตรน่ารำคาญ

ปัญหาไม่ใช่ตัว skill แต่คือมันกระจายอยู่หลายเครื่อง ไม่มีที่เดียวที่เป็นของจริง แก้ตัวนึงที่เครื่องนึง อีกเครื่องไม่รู้เรื่อง

คนส่วนใหญ่แก้ด้วยการ copy ไปมา หรือเก็บ prompt ไว้ใน Notes แล้ว paste เอา ซึ่งมันพังทุกครั้งที่เครื่องไม่ตรงกัน

พี่เลยหยุด copy แล้วมองมันใหม่ skill ก็คือไฟล์ ไฟล์ที่ควรถูก version control เหมือนโค้ด

วิธีคือทำ skill ทุกตัวให้อยู่ใน git vault เดียว

skill ทุกตัวจากทุกเครื่องถูก back up เข้า git repo กลางตัวเดียว มี manifest บอกว่า skill ตัวไหนมาจาก root ไหน เครื่องไหน setup เครื่องใหม่ไม่ต้องลงใหม่ทีละอัน pull มาจาก vault ทีเดียวจบ

ที่สำคัญคือมันไม่ทับกัน จุดที่คนทำ vault แบบนี้เจ๊งกันคือ sync จากเครื่องนึงไปเขียนทับอีกเครื่อง skill ที่มีแค่เครื่องเดียวหายเกลี้ยง แต่ synchro แก้ตรงนี้ด้วยการ copy เฉพาะตัวที่ "ขาด" เท่านั้น ถ้าเจอตัวที่มีอยู่แล้วแต่ไฟล์ไม่ตรงกัน มันไม่ทับ มันบอกว่า conflict แล้วข้าม จะทับต้องสั่ง --force เอง แล้วมันยังสำรองตัวเดิมไว้ให้ก่อนด้วย ของทุกเครื่องเลยอยู่ร่วมกันใน repo เดียวได้แบบไม่ตีกันเอง

วิธี setup จริงๆ

ตัวนี้ open source แล้ว repo อยู่ที่ github.com/agent-dev-thai/synchro ลงกับใช้ตามนี้เลย

# 1. ลง (ต้อง Python 3.11+)
python3 -m pip install .
synchro doctor          # เช็คว่าเห็น skill root ครบ

# 2. back up skill ทุกตัวเข้า git vault
synchro backup --repo ~/agent-skill-vault --apply --commit -m "backup skills"

# 3. เครื่องใหม่: clone/pull vault มา แล้ว restore
synchro restore --repo ~/agent-skill-vault --from codex --to claude

ค่า default เป็น dry-run เสมอ ถ้าไม่ใส่ --apply มันจะแค่บอกว่าจะทำอะไรบ้าง ไม่แตะไฟล์จริง และมันไม่ push ให้เอง (push เองเพื่อความปลอดภัย) ไฟล์ .env หรือ settings ส่วนตัวมันก็ไม่ copy เข้า vault ให้ด้วย

ถ้า skill ไม่ได้อยู่ path มาตรฐาน ใส่ root เองใน ~/.synchro/config.json

{
  "roots": {
    "myskills": "/path/to/skills-repo",
    "shared": "/path/to/shared-skills"
  }
}

พอ register แล้ว root ที่ตั้งเองใช้ได้เหมือน built-in เลย backup --root myskills, sync --from shared --to codex

ผลคือเลิกลงใหม่ทุกครั้ง

setup เครื่องใหม่ตอนนี้คือ clone vault แล้ว restore ได้ skill ครบทุกตัว แก้ที่ไหนก็ backup กลับเข้า vault เครื่องอื่น pull ทีหลังก็ได้ของใหม่ ไม่มีคำว่า "เอ๊ะ skill ตัวนี้เวอร์ชันไหนนะ" อีกเลย

skill ไม่ใช่ของที่ต้องลงใหม่ทุกเครื่อง มันคือของที่ควร sync เหมือนโค้ด

เอาไปใช้ได้เลย

ถ้ารัน agent หลายเครื่อง ลองมองว่า skill คือ source code ไม่ใช่ config ที่ต้อง setup ใหม่ เอาเข้า git ตัวเดียว แยก root ตาม tool แล้วเลิก copy ไฟล์ไปมาสักที ตัว synchro โยนขึ้น github ให้แล้วที่ github.com/agent-dev-thai/synchro