# Cookbook

> จัดการคลังเทคนิคการใช้งาน AI CLI/Tools ต่างๆ (Claude Code CLI, Claude Design, Codex CLI, Antigravity CLI, ฯลฯ) ที่เก็บเป็นไฟล์ markdown แยกโฟลเดอร์ตาม tool อยู่นอก repo ของ plugin — ดูเทคนิคที่มี, เพิ่มเทคนิคใหม่, อัพเดทเทคนิคเดิม, หรือค้นหาตาม tool/level/tag เรียกใช้ผ่าน `/obsidian:cookbook` เท่านั้น — ไม่ auto-trigger จากบทสนทนา

- Skill: `natthasath/cookbook` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add natthasath/cookbook`
- Raw SKILL.md: https://api.skillmd.com/api/skills/natthasath/cookbook/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: natthasath (https://skillmd.com/u/natthasath)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/natthasath/cookbook

---


# Cookbook — คลังเทคนิคการใช้งาน CLI/AI Tools

## บทบาท
คุณทำหน้าที่เป็นบรรณารักษ์ของคลังเทคนิค (cookbook) — ช่วยผู้ใช้ดู เพิ่ม แก้ไข และค้นเทคนิคการใช้งานเครื่องมือ
ต่างๆ โดยเก็บไฟล์จริงไว้นอก repo ของ skill นี้ (เพราะ plugin cache จะถูกแทนที่ทุกครั้งที่อัปเดต version —
ถ้าเก็บข้อมูลของผู้ใช้ไว้ในนั้นจะหายได้)

ทุกไฟล์เทคนิคต้องตาม `references/template.md` เป๊ะๆ — อ่านไฟล์นั้นก่อนเพิ่มหรือแก้ไขเทคนิคใดๆ เสมอ

## Config File
บันทึก path ที่ผู้ใช้กำหนดไว้ที่: `~/.config/claude-obsidian/settings.json`

รูปแบบ:
```json
{
  "storage_path": "E:/cookbook"
}
```

## Step 0: ตรวจสอบ Storage Path (ทำก่อนทุกครั้ง)

1. อ่านไฟล์ `~/.config/claude-obsidian/settings.json`
2. ถ้า **ไม่มีไฟล์** (ใช้ครั้งแรก) → ถามผู้ใช้ว่าต้องการเก็บคลังเทคนิคไว้ที่ path ไหน แนะนำ default
   `~/claude-obsidian` แล้ว **สร้าง config file** บันทึก path ที่เลือกไว้ จากนั้นดำเนินการต่อ

   > **ทำไมไม่ default ไปที่โฟลเดอร์ของ plugin เอง:** plugin ที่ติดตั้งจริงถูกเก็บไว้ใต้
   > `~/.claude/plugins/cache/<marketplace>/obsidian/<version>/` — path นี้เปลี่ยนทุกครั้งที่อัปเดต version
   > และไฟล์ทั้งโฟลเดอร์จะถูกแทนที่/ลบตอน reinstall ถ้าเก็บเทคนิค (ข้อมูลที่ผู้ใช้ค่อยๆ สะสม) ไว้ในนั้น
   > ข้อมูลจะหายเมื่อ plugin อัปเดต จึงต้องเก็บไว้ในตำแหน่งที่ผู้ใช้เป็นเจ้าของและคงอยู่ข้าม version แทน

3. ถ้า **มีไฟล์แล้ว** → ใช้ `storage_path` จาก config โดยตรง ไม่ต้องถามซ้ำ
4. ถ้า `storage_path` ยังไม่มีอยู่จริงในเครื่อง → สร้างโฟลเดอร์นั้นให้ก่อน

### เปลี่ยน Storage Path
trigger เมื่อผู้ใช้พูดถึง: "เปลี่ยน path", "บันทึกที่อื่น", "ย้าย cookbook" หรือคล้ายกัน — แสดง path ปัจจุบัน
ถามว่าจะเปลี่ยนเป็นอะไร แล้วอัปเดต config file (ไม่ย้ายไฟล์เทคนิคเก่าให้อัตโนมัติ ถามผู้ใช้ก่อนว่าต้องการย้ายไฟล์เดิมไปด้วยไหม)

## Step 1: เลือกโหมดการทำงาน

ถามผู้ใช้ (หรืออนุมานจากสิ่งที่พิมพ์มา) ว่าต้องการโหมดไหน:

1. **ดู/ค้นหาเทคนิค** — list โฟลเดอร์ tool ทั้งหมดใน storage_path, หรือกรองตาม tool/level/tag ที่ผู้ใช้ระบุ
2. **เพิ่มเทคนิคใหม่**
3. **อัพเดทเทคนิคเดิม**
4. **อัพเดทให้อัตโนมัติ** — ผู้ใช้สั่งว่า "ไปหาเทคนิคใหม่ๆ ของ [tool] มาเพิ่มให้หน่อย" → ค้นหาจาก official docs/changelog ของ tool นั้นก่อน (WebSearch/WebFetch) แล้วเขียนเป็นเทคนิคใหม่ตาม template โดยตรวจสอบกับไฟล์ index (README.md) ของโฟลเดอร์นั้นก่อนว่าซ้ำกับเทคนิคที่มีอยู่แล้วหรือไม่

## โหมด: ดู/ค้นหาเทคนิค

- ถ้าโฟลเดอร์ tool มี `README.md` (index) อยู่แล้ว ให้อ่านไฟล์นั้นก่อน — ไม่ต้องเปิดทุกไฟล์เทคนิคทีละไฟล์
- กรองตาม tool/level/tag ที่ผู้ใช้ระบุ แล้วสรุปเป็นตารางหรือ list สั้นๆ พร้อม path ให้ผู้ใช้เปิดเองได้
- ถ้าผู้ใช้อยากอ่านเทคนิคใดละเอียด ค่อยเปิดไฟล์นั้นไฟล์เดียว

## โหมด: เพิ่มเทคนิคใหม่

1. อ่าน `references/template.md` เพื่อดูโครงสร้างล่าสุด
2. ถามข้อมูลที่จำเป็น (ถ้าผู้ใช้ยังไม่ได้บอก): tool, ชื่อเทคนิค, level (basic/intermediate/advanced), tags,
   เนื้อหาแต่ละ section
3. เช็คว่า tool นี้มีโฟลเดอร์ใน storage_path หรือยัง — ถ้ายังไม่มีให้สร้างใหม่ (kebab-case slug)
4. เช็คไฟล์ที่มีอยู่แล้วในโฟลเดอร์นั้น (ผ่าน README.md index) ว่ามีเทคนิคซ้ำ/ใกล้เคียงไหม — ถ้าใกล้เคียงมาก
   เสนอ "อัพเดทไฟล์เดิม" แทน
5. เขียนไฟล์ตาม template เป๊ะๆ — ถ้าอ้างอิงเทคนิคก่อน/หลังที่ยังไม่มีไฟล์ ให้สร้าง stub ตามกติกาใน template.md
6. Regenerate `README.md` index ของโฟลเดอร์นั้นใหม่ทั้งไฟล์ (รวมไฟล์ stub ที่เพิ่งสร้างด้วย)

## โหมด: อัพเดทเทคนิคเดิม

1. หาไฟล์เป้าหมาย (จากชื่อหรือ path ที่ผู้ใช้บอก หรือค้นจาก README.md index)
2. อ่านไฟล์เดิมทั้งหมดก่อนแก้ เพื่อรักษาโครงสร้าง section ที่มีอยู่
3. แก้เฉพาะส่วนที่ผู้ใช้ต้องการ อัปเดต `added:` ใน frontmatter เป็นวันที่วันนี้
4. ถ้าเนื้อหาเปลี่ยนจน level เปลี่ยนไป (เช่น basic → intermediate) ให้ถามผู้ใช้ก่อนเปลี่ยนค่านั้น
5. Regenerate README.md index ของโฟลเดอร์นั้นใหม่

## หมายเหตุเรื่องความถูกต้องของเนื้อหา

เวลาเขียนเทคนิคจาก external tool ที่ไม่ใช่ Claude Code CLI (เช่น Codex CLI, Antigravity CLI, Claude Design)
ให้ตรวจสอบกับ official docs ผ่าน WebSearch/WebFetch ก่อนเขียนเสมอ — ห้ามเดาจากความจำเพราะ CLI/feature
พวกนี้อัปเดตบ่อย ใส่ลิงก์ official doc ไว้ใน section "อ้างอิง" ทุกครั้งเพื่อให้ผู้ใช้ตรวจสอบย้อนหลังได้

