productize.blog
AI · Developer Tooling

marketplace ไม่ใช่ แค่ที่ไปโหลด ของคนอื่น เราโฮสต์เองได้

เราโฮสต์ marketplace ของ Claude Code เองอยู่ 9 ปลั๊กอิน แก้ไฟล์แล้ว AI ยังทำแบบเดิม เพราะเครื่องอ่านสำเนาที่ก๊อปไว้ ไม่ได้อ่านของที่เราเพิ่งแก้ นี่คือวิธีทำที่เก็บชุดเครื่องมือของตัวเอง วิธีเช็คว่าของไปถึงจริง และ 6 จุดที่ทำให้เสียเวลาโดยทุกคำสั่งขึ้นเขียวหมด

Yim· เขียนด้วยกันกับ Dobby (AI Oracle)/14 ส.ค. 2026

คุณแก้ไฟล์คำสั่งของ AI ไปแล้ว เซฟแล้ว กลับมาสั่งงานใหม่ แล้วมันยังทำแบบเดิมเป๊ะ เหมือนไม่มีอะไรเปลี่ยนเลย

อาการนี้เจอกันบ่อยมาก และเกือบทุกครั้งไม่ได้แปลว่าแก้ผิด แต่แปลว่าของที่แก้ยังไปไม่ถึงตัวที่ทำงานอยู่ เพราะเครื่องไม่ได้อ่านไฟล์ที่เราแก้ตรงๆ มันอ่านสำเนาที่ก๊อปเก็บไว้ตอนติดตั้ง

เทียบให้เห็นภาพ เหมือนเราแก้ไฟล์งานในไดรฟ์ แต่อีกฝ่ายเปิดไฟล์ที่โหลดไปเก็บไว้ในเครื่องตั้งแต่อาทิตย์ก่อน เราแก้จริง เขาก็เห็นของเก่าจริง ไม่มีใครผิด แค่คนละสำเนากัน

คำว่า marketplace ทำให้เข้าใจผิดได้ง่าย มันฟังดูเหมือนร้านค้ากลางที่ใครสักคนเปิดไว้ให้เราไปเดินเลือกของ แต่จริงๆ มันคือแค่โฟลเดอร์ที่มีไฟล์รายการอยู่ข้างใน ใครก็เปิดของตัวเองได้ และมันคือวิธีที่ตรงที่สุดถ้าอยากให้เครื่องหลายเครื่องได้ของชุดเดียวกัน

บทความนี้เล่า 2 ส่วน ส่วนแรกคือโครงไฟล์ที่ต้องมี ซึ่งง่ายกว่าที่คิด ส่วนที่ 2 คือ 6 จุดที่เราเดินชนมาเองครบทุกจุด ทุกข้อมีวันที่กำกับ เพราะเป็นของที่เสียเวลาไปจริง ไม่ใช่ของที่นึกเอาว่าน่าจะพัง

ช่วงที่ 1โครงไฟล์ที่ต้องมี

marketplace ต้องการไฟล์เดียวคือ .claude-plugin/marketplace.json ข้างในบอกชื่อ เจ้าของ และรายการปลั๊กอินว่าแต่ละตัวอยู่โฟลเดอร์ไหน ของเราหน้าตาแบบนี้ ตัดมาให้ดู 2 รายการพอ

{
  "name": "hello-oracle",
  "owner": { "name": "..." },
  "plugins": [
    { "name": "yim-tools",   "source": "./plugins/yim-tools" },
    { "name": "arra-oracle", "source": "./plugins/arra-oracle" }
  ]
}

แล้วปลั๊กอินแต่ละตัวต้องมี .claude-plugin/plugin.json ของตัวเอง ซึ่งบอกชื่อ เลขรุ่น และรายการ skill ที่มันเปิดใช้ จำคำว่าเลขรุ่นไว้ให้ดี เดี๋ยวมันจะกลับมาเล่นงานเราเป็นข้อแรก

เพิ่มเข้าเครื่องด้วยคำสั่งเดียว ชี้ไปที่ URL หรือ path ก็ได้

claude plugin marketplace add https://github.com/<เจ้าของ>/<repo>
claude plugin install yim-tools@hello-oracle

เท่านี้จบ ส่วนที่เหลือของบทความคือเรื่องที่เกิดขึ้นหลังจากนี้ ตอนที่แก้ของแล้วอยากให้ของใหม่ไปถึงเครื่องปลายทาง

ทำไมแก้ไฟล์แล้วไม่มีอะไรเปลี่ยน

เพราะ เซฟไฟล์เสร็จ ไม่ได้แปลว่าตัวที่กำลังทำงานได้ของใหม่ ตอนติดตั้ง Claude Code จะก๊อปปลั๊กอินไปเก็บเป็นสำเนาแยกตามเลขรุ่น แล้วอ่านจากสำเนานั้น ไม่ได้อ่านจากโฟลเดอร์ที่เราแก้ พูดอีกอย่างคือ แก้ไฟล์แล้ว บันทึกเข้าที่เก็บโค้ดแล้ว ส่งขึ้นเซิร์ฟเวอร์แล้ว ของก็ยังไม่ขยับ เพราะไม่มีใครสั่งให้ก๊อปสำเนารอบใหม่

ที่ทำให้มันเจ็บกว่าปกติคือคำตอบตอนสั่งอัปเดต ถ้าเลขรุ่นใน plugin.json เท่าเดิม คำสั่งจะตอบว่า

✔ already at the latest version (1.0.1)

ประโยคนี้อ่านเหมือนสำเร็จ ไม่เหมือนถูกบล็อก เราเลยปิดหน้าต่างแล้วเดินต่อ ทั้งที่ของยังไม่ไปไหน ครั้งที่เจอ (28 ก.ค. 2026) เราแก้ไฟล์ครบ บันทึกครบ สั่งอัปเดตครบทุกอย่าง แล้วสำเนาที่เครื่องอ่านยังเป็นของเก่า

ทางแก้เป็นนิสัยข้อเดียว ขยับเลขรุ่นใน plugin.json ก่อนทุกครั้ง ถ้าไม่ขยับ อย่าคาดหวังว่าจะมีอะไรเปลี่ยน

ช่วงที่ 26 จุดที่เสียเวลาไปจริง

เรียงตามความแพงของเวลาที่เสียไป ข้อ 1 คือข้อข้างบน ยกมาไว้ในลิสต์ให้ครบชุด

  1. เซฟแล้วไม่เท่ากับของไปถึง ต้องขยับเลขรุ่นก่อน ไม่งั้นคำสั่งอัปเดตจะตอบว่าเป็นรุ่นล่าสุดอยู่แล้ว แล้วไม่ก๊อปอะไรใหม่ให้
  2. ก๊อปไฟล์เข้าโฟลเดอร์แบน แล้วไม่มีอะไรเกิดขึ้น ตัวที่เครื่องอ่านจริงคือโฟลเดอร์ที่แยกตามเลขรุ่น ถ้าเราก๊อปไฟล์เข้าโฟลเดอร์ชั้นเดียวที่ไม่มีไฟล์ plugin.json กำกับอยู่ เครื่องจะไม่ถือว่านั่นคือปลั๊กอิน มันเลยไม่หยิบไปใช้ เสียเวลาไปฟรีทั้งรอบ
  3. ใช้ชื่อย่อแล้วค้าง 2 นาที ถ้าพิมพ์ที่อยู่แบบย่อ (แค่ ชื่อเจ้าของ/ชื่อโปรเจกต์) เครื่องจะเปลี่ยนไปต่อผ่านช่องทางที่ต้องยืนยันตัวตนก่อน แล้วถ้าเครื่องเรายังไม่เคยต่อกับ GitHub ทางนั้นมาก่อน มันจะขึ้นคำถามยืนยันแล้วนั่งรอคำตอบที่ไม่มีวันมา จนหมดเวลาไปเอง เราจึงเห็นแค่ว่ามันค้างโดยไม่มีสาเหตุ ⛔ อย่าแก้ด้วยการพิมพ์ยืนยันตอบมันไป เพราะการติดตั้งปลั๊กอินไม่ต้องใช้ช่องทางนั้นเลย พิมพ์ที่อยู่เว็บแบบเต็ม (ขึ้นต้นด้วย https) ก็จบ
  4. อาการที่ดูเหมือนของสุ่ม มักคือความต่างของเครื่อง ข้อ 3 ทำให้เราหลงทางอยู่พักหนึ่ง เพราะบนเครื่องหลักมันผ่านเฉยๆ (เครื่องนั้นเคยต่อกับ GitHub ทางนั้นไว้แล้ว) ส่วนเครื่องใหม่ค้างทุกครั้ง อ่านรวมกันแล้วเหมือน "ค้าง 2 ครั้งจาก 5" ซึ่งฟังดูเหมือนของไม่เสถียร พอทำให้มันค้างซ้ำได้ตามสั่ง มันก็เลิกเป็นของสุ่มทันที (30 ก.ค. 2026 · ยิงซ้ำ 20 รอบด้วย URL เต็มและ path = ค้าง 0 ครั้ง)
  5. ติดตั้งแล้วไม่ได้แปลว่าเปิดใช้ ถ้าผู้ช่วย AI ตัวนั้นถูกเปิดด้วยไฟล์ตั้งค่าของตัวมันเอง ต้องไปเขียนชื่อปลั๊กอินลงในรายการที่อนุญาตของไฟล์นั้นด้วย (ช่อง enabledPlugins) แค่ติดตั้งไว้ในเครื่องยังไม่พอ ข้อนี้เราไม่ได้เดา เราวัดด้วยแขนควบคุม ตัวที่ระบุไว้เห็น 6 skill ส่วนตัวที่ไม่ได้ระบุเห็น 0 (3 ก.ค. 2026)
  6. ตัวตรวจที่กว้างกว่าตัวก๊อป คือด่านที่ไม่มีวันเขียว ตัวก๊อปไฟล์ของเราสั่งให้ก๊อป "ทุกไฟล์" ด้วยเครื่องหมายดอกจัน ซึ่งไม่รวมไฟล์ที่ขึ้นต้นด้วยจุด (ไฟล์ตั้งค่าที่ปกติซ่อนอยู่) แต่ตัวตรวจที่เขียนทีหลังดันไล่เทียบทุกไฟล์ รวมไฟล์ที่ขึ้นต้นด้วยจุดด้วย มันเลยรายงานว่าของสองฝั่งไม่ตรงกันตลอดเวลา และไม่มีทางแก้ให้ตรงได้เลย เพราะตัวก๊อปไม่เคยถูกสั่งให้ย้ายไฟล์พวกนั้นมาตั้งแต่แรก

ข้อ 6 เป็นข้อที่เราชอบที่สุด เพราะมันไม่ใช่บั๊กของเครื่องมือ แต่เป็นบั๊กของการวางตัวตรวจ ด่านที่ตรวจกว้างกว่าสิ่งที่ระบบสัญญาว่าจะทำ จะส่งเสียงตลอดเวลาจนไม่มีใครฟัง

ช่วงที่ 3ตรวจยังไงว่าของถึงปลายทางแล้วจริง

ทั้ง 6 ข้อมีอาการร่วมกันอย่างหนึ่ง คือทุกคำสั่งขึ้นเขียวแล้วของไม่ถึง วิธีเดียวที่กันได้คืออย่าอ่านข้อความว่าสำเร็จ ให้ไปดูของที่ปลายทาง

เราใช้ 2 อย่างคู่กัน อย่างแรกคือถามเครื่องว่าตอนนี้เห็นรุ่นอะไร อย่างที่สองคือเปิดหาไฟล์ในแคชตรงๆ

claude plugin list
test -f <แคช>/<ปลั๊กอิน>/<เลขรุ่นใหม่>/skills/<skill>/SKILL.md

บรรทัดที่สองคือหัวใจ เพราะมันถามคำถามที่ตรง คือ ไฟล์ที่เราเพิ่งแก้ ตอนนี้อยู่ในที่ที่เครื่องอ่านจริงหรือยัง ต่างจากการอ่านข้อความตอบกลับ ซึ่งตอบแค่ว่าคำสั่งจบโดยไม่มี error

และถ้าจะให้แน่กว่านั้นอีกชั้น ลองสั่งให้มันล้มดูสักครั้ง ชี้ไปที่เลขรุ่นที่ไม่มีอยู่จริงแล้วดูว่าคำสั่งแดงไหม ถ้าชี้ผิดแล้วยังเขียว แปลว่าตัวตรวจนั้นไม่ได้ตรวจอะไรเลย

ช่วงที่ 4กฎข้อเดียวที่ต้องจำ

ถ้าจำได้อย่างเดียวจากบทความนี้ ขอให้เป็นข้อนี้ ในระบบที่มีการคัดลอก ข้อความว่าสำเร็จบอกได้แค่ว่าต้นทางไม่มีปัญหา ไม่ได้บอกว่าปลายทางได้ของ

marketplace เป็นตัวอย่างที่ชัดเพราะมันมีชั้นคัดลอกซ้อนกัน 3 ชั้น จากไฟล์ที่เราแก้ ไปที่เก็บโค้ดส่วนกลาง ไปที่สำเนาในเครื่อง แล้วค่อยถึงตัวที่ทำงานอยู่จริง ทุกชั้นตอบว่าเรียบร้อยได้โดยที่ชั้นถัดไปยังไม่ขยับ

เรื่องนี้ไม่ได้จบที่ปลั๊กอิน ที่ไหนก็ตามที่มีการก๊อปสำเนา มีการซิงก์ หรือมีการส่งของขึ้นเซิร์ฟเวอร์ ล้วนมีรูปแบบเดียวกัน นิสัยที่คุ้มที่สุดคือ ทุกครั้งที่จะบอกว่าเสร็จ ให้เปิดของที่ปลายทางดูหนึ่งครั้ง

อ่านต่อในชุดเดียวกัน
ที่มาและอ้างอิง

บทความนี้เป็นหนึ่งชั้นใน สถาปัตยกรรม AI agent ระดับ production ทั้ง 7 ชั้น

ติดตาม

รับบทความใหม่และของฟรีก่อนใคร

ทิ้งอีเมลไว้ บทความใหม่และของฟรีเป็นครั้งคราวจะส่งไปให้ ไม่สแปม

ใช้อีเมลเพื่อส่งอัปเดตเท่านั้น

ความคิดเห็น

ร่วมพูดคุย

แบ่งปันความคิดเห็นได้เลย

ชื่อจะแสดงต่อสาธารณะ อีเมลเก็บเป็นความลับ ไม่แสดงที่ไหน

กำลังโหลดความคิดเห็น…