Skip to content

feat(codex): add native Codex skill integration  - #1

Closed
pcbimon wants to merge 2 commits into
wasintoh:mainfrom
pcbimon:feat/codex-native-skills
Closed

pcbimon wants to merge 2 commits into
wasintoh:mainfrom
pcbimon:feat/codex-native-skills

Conversation

@pcbimon

@pcbimon pcbimon commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

🧠 ปัญหา

การทำงานร่วมกับ Codex เดิมของ TOH จำลอง คำสั่ง /toh-* ผ่าน AGENTS.md
ขนาด ~900 บรรทัด (ฝัง agent bodies ทั้งหมด + ตาราง "Command Recognition")
แต่ Codex ไม่มีระบบ slash command แบบกำหนดเอง — การทำงานจึงพึ่งการ
"หลอก" โมเดลผ่าน prompt ซึ่งไม่เสถียร และไม่มีอะไรที่ Codex discover ได้จริง
นอกจากนี้ reinstall แต่ละครั้งยังเขียนทับ .toh/memory/* (state ที่ผู้ใช้ใช้งานอยู่)

🔍 สาเหตุ (Root Cause)

Integration เดิมเกิดก่อนที่ Codex จะมี native skills
(.codex/skills/<name>/SKILL.md ที่ Codex scan จาก project root,
เรียกใช้ด้วย $skill-name หรือ /skills หรือจับคู่อัตโนมัติจาก description)
— ตรวจสอบกับ source code ของ openai/codex แล้วว่ารองรับ path นี้จริง

✨ วิธีแก้

  • สร้าง native Codex skill หนึ่งตัวต่อหนึ่ง TOH command (14 skills)
    generate จาก frontmatter ของ src/commands/*.md (single source of truth)
    — wrapper เป็น thin layer ที่อ้างถึง workflow จริงใน .toh/commands/
    และ supporting skills ใน .toh/skills/ ไม่มีการก๊อปปี้เนื้อหาซ้ำ
  • ลด AGENTS.md เหลือ managed block สั้นๆ (71 บรรทัด): identity,
    capabilities, ตาราง skills, หมายเหตุ compatibility สำหรับ /toh-*
    และ memory protocol
  • แต่ละ skill ระบุ ข้อจำกัดของ Codex ชัดเจน: ไม่มี subagents → ทำงาน
    sequential · ไม่มี Stop hook → บังคับตัวเองไม่จบจน plan ครบ · ไม่มี
    model routing → ข้าม tier ต่างๆ
  • เพิ่ม toh uninstall (--ide codex ลบเฉพาะไฟล์ที่ TOH สร้าง —
    skill ของผู้ใช้และข้อความใน AGENTS.md อยู่ครบ) และใช้ teardown เดียวกัน
    ในเส้นทาง Fresh Install
  • แก้ bug ที่พบระหว่าง verify: --quick ไม่ interactive สมบูรณ์
    (เดิม crash/hang เมื่อรัน headless) และ .toh/memory/* ถูก seed
    เฉพาะเมื่อยังไม่มีไฟล์ (ตรงกับที่ README สัญญาไว้)

🔄 Compatibility

  • Claude Code / Cursor / Gemini / Antigravity: ผลลัพธ์ เหมือนเดิมทุกไบต์
    (ยกเว้นเลขเวอร์ชัน 2.0.0 → 2.1.0) — ตรวจด้วย baseline diff จาก git archive HEAD
  • การอัปเกรดจากเวอร์ชันเก่า: block เดิมใน AGENTS.md ถูกแทนที่ผ่าน marker
    เหมือนเดิม · state ใน .toh/ ไม่ถูกแตะ
  • /toh-plan แบบพิมพ์ข้อความยังใช้ได้ — AGENTS.md สั่งให้ Codex ตีความเป็น
    การเรียก skill ที่ตรงกัน (ระบุชัดว่าเป็น compatibility behavior ไม่ใช่
    native command)

✅ Tests

  • เพิ่ม tests/codex.test.js (node:test) 10 เคส: fresh install,
    เก็บข้อความเดิมใน AGENTS.md, idempotency/determinism, ไม่แตะ skill
    ของผู้ใช้, ลบ stale TOH skill, uninstall แบบ scoped, ความถูกต้องของ
    SKILL.md (frontmatter + reference ที่ resolve ได้จริง)
  • ผูกเข้า npm test และ CI/release gate (Node 18 + 22)
  • Manual verification: ติดตั้งจริงผ่าน CLI 3 รอบติด → 118 ไฟล์
    ไม่มี drift เลยแม้แต่ไฟล์เดียว
    · uninstall ในโปรเจคที่มี skill ของ
    ผู้ใช้เอง → ลบเฉพาะ 14 TOH skills + TOH block ใน AGENTS.md

⚠️ Limitations

  • Codex ไม่มี subagents/teams → THE TOH LOOP ทำงานแบบ sequential ใน
    session เดียว (ระบุไว้ในทุก skill + AGENTS.md)
  • ไม่มี Stop hook → การจบ loop เป็น self-enforced ไม่ใช่ hard gate
  • ไม่มี model routing → ข้าม haiku/sonnet/opus tiers

@pcbimon

pcbimon commented Aug 16, 2026

Copy link
Copy Markdown
Contributor Author

เรียน @wasintoh อ.โต

ช่วยรีวิวด้วยคร๊าาบบบ จาก Codex User ครับ

@wasintoh

Copy link
Copy Markdown
Owner

ขอบคุณมากครับ 🙏

เรื่องที่คุณเจอถูกทั้งหมดครับ AGENTS.md ของเราใหญ่ 117,191 bytes
ชนเพดาน 32 KiB ของ Codex แล้วโดนตัดเงียบๆ กลางไฟล์ ทำให้ agent
6 จาก 8 ตัวไม่เคยถึงโมเดลเลย คุณเป็นคนนอกคนเดียวที่เห็นเรื่องนี้ครับ

ผมต้องขอโทษด้วย v2.1 ที่แก้เรื่องเดียวกันสร้างเสร็จแล้วแต่ผมยังไม่ได้
push เพราะกำลังเทสทีละ IDE อยู่ main บน GitHub เลยยังเป็นของเก่า
คุณจึงไม่มีทางเห็นได้ PR นี้เลยตั้งอยู่บนฐานก่อน v2.1 ครับ

v2.1 ทำอะไรบ้าง: AGENTS.md เหลือ 12,949 bytes พร้อม assertion
ที่ทำให้ install ล้มทันทีถ้าเกิน 24 KiB (กันพลาดซ้ำถาวร) · ย้ายเนื้อ
agent กับ command ไปอ่าน runtime จาก .toh/ · เขียน .codex/config.toml
เพิ่มโควต้าให้ · ส่ง 23 skills + 14 commands เป็น 37 wrappers

มีจุดหนึ่งอยากขอความเห็นครับ โค้ดคุณเขียน skills ลง .codex/skills/
แต่เอกสารทางการของ Codex ระบุ path ที่มันสแกนไว้แค่นี้ครับ

$CWD/.agents/skills
$CWD/../.agents/skills   (ไล่ขึ้นถึง repo root)
$REPO_ROOT/.agents/skills
$HOME/.agents/skills
/etc/codex/skills

https://developers.openai.com/codex/skills

ไม่มี .codex/skills อยู่ในรายการเลย ถ้าเป็นตามนั้น ไฟล์จะถูกเขียนลง
ดิสก์จริงและเทสผ่าน (เพราะเทสเช็คว่าไฟล์มีอยู่) แต่ Codex จะไม่โหลด
มันขึ้นมาใช้ครับ คุณเคยเห็นมันโหลดจริงใน session Codex ไหมครับ
เผื่อคุณลองในแบบที่ผมยังไม่ได้ลอง

อีกเหตุผลที่ผมเลือก .agents/skills คือ Codex, Cursor 2.4 และ
Antigravity อ่าน path เดียวกันหมด เขียนครั้งเดียวได้สามตัว

ผมเลยยังไม่ merge PR นี้นะครับ เพราะฐานมันไม่มีแล้ว และ uninstall.js
ในนี้จะชนกับ uninstall ตัวใหญ่ของ v2.1 (พิสูจน์เจ้าของไฟล์ด้วย sha256
มี dry-run มี backup ก่อนลบ) merge ไปต้องเสียตัวใดตัวหนึ่ง

แต่ผมไม่ปิดครับ เพราะของที่มีค่าที่สุดใน PR นี้ไม่ใช่การแก้ Codex
แต่คือเทสของคุณ โปรเจคนี้ยังไม่มี test suite เลย ของคุณเป็นชุดแรก
และเคสที่เลือกมาตรงจุดมาก โดยเฉพาะ "skills ของผู้ใช้ต้องไม่ถูกแตะ"
"ติดตั้งซ้ำต้องได้ผลเดิม" และ "uninstall ลบ AGENTS.md เฉพาะตอนที่
เป็นของ TOH ล้วน" ทั้งหมดนี้คือสิ่งที่ผมยังตรวจด้วยมืออยู่

ขอเวลาไม่กี่วันให้ผม push v2.1 ขึ้น main ก่อนนะครับ แล้วรบกวนเปิด
PR ใหม่เอาเฉพาะ tests/ กับ npm test มาปรับให้ตรง surface ใหม่
ส่วนนั้นเป็นของเพิ่มล้วนๆ ไม่ชนกับใคร ผมจะใส่เครดิตคุณใน CHANGELOG
ทั้งเรื่องเทสและเรื่องที่คุณเจอบั๊ก Codex ด้วยตัวเองครับ

จะกลับมาคอมเมนต์ตรงนี้ทันทีที่ v2.1 ขึ้น main ครับ ขอบคุณอีกครั้งครับ 🙏

…ce uninstall process

- Changed installation paths from .codex/skills to .agents/skills for better organization.
- Updated uninstall logic to handle new paths and added dry-run functionality.
- Enhanced AGENTS.md handling to ensure size limits are enforced and backups are created.
- Modified tests to reflect changes in directory structure and functionality.
- Improved documentation to clarify the new structure and usage.
@pcbimon

pcbimon commented Aug 17, 2026

Copy link
Copy Markdown
Contributor Author

เรียน @wasintoh อ.โต

ปรับแก้ไขตาม comment มาแล้วเรียบร้อยครับ 😊

@wasintoh

Copy link
Copy Markdown
Owner

อัพเดทตามที่รับปากไว้ครับ v2.1.0 ขึ้น main แล้ว และ publish ขึ้น npm เรียบร้อย

npx toh-framework@latest install

เรื่องที่คุณจุดขึ้นมากับที่ v2.1 แก้คือเรื่องเดียวกันเป๊ะครับ ตอนนี้ AGENTS.md ที่ generate ออกมาอยู่ที่ 12,959 bytes มี assertion ที่ทำให้ install ล้มทันทีถ้าไฟล์โตเกิน 24 KiB (กันพลาดซ้ำถาวร) และเขียน .codex/config.toml เพิ่ม project_doc_max_bytes ให้ด้วย โดยไม่ทับไฟล์ที่คุณมีอยู่แล้ว

skills ไปอยู่ที่ .agents/skills/ ตามที่คุยกันไว้ครับ 37 ตัว (framework skills 23 + command skills /toh-* อีก 14)

แล้วมีของแถมที่ไม่ได้ตั้งใจ ระหว่างเทสผมลองกับ ZCode (Z.ai) ปรากฏว่ามันอ่าน path ชุดเดียวกันเป๊ะ เลยได้รองรับเพิ่มอีกตัวโดยแทบไม่ต้องเขียนอะไรใหม่ ตอนนี้ .agents/skills/ เขียนครั้งเดียวใช้ได้สี่ตัวคือ Codex, Cursor 2.4+, Antigravity และ ZCode ครับ

ขอบคุณมากที่เป็นคนนอกคนแรกที่ลองแล้วบอกนะครับ ถึง PR จะไม่ได้ merge ตรงๆ เพราะฐานมันเป็นก่อน v2.1 ไปแล้ว แต่ประเด็นที่คุณเห็นถูกแก้ครบทุกข้อ

ยังค้างใจอยู่ข้อเดียวจากรอบก่อนครับ ถ้าคุณมีโอกาสลองอีกที รบกวนช่วยดูให้หน่อยว่าใน session Codex จริงๆ มันโหลด skill จาก .codex/skills/ ขึ้นมาใช้ได้ไหม ผมหาในเอกสารทางการแล้วไม่เจอ path นี้เลย ถ้ามันโหลดได้จริงแปลว่าเอกสารตกหล่น ซึ่งน่าสนใจกว่าเดิมอีกครับ

@wasintoh

Copy link
Copy Markdown
Owner

version 2.1 ออกแล้วนะครับ แก้เยอะมากๆ คุณ @pcbimon ทดสอบได้เลยนะครับ ขอบคุณมากๆครับ

@wasintoh wasintoh closed this Aug 18, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants