Skip to main content

สอน Claude Code ให้ใช้ Apple Notes ได้ด้วย Agent Skills

·4 mins

ในปีหน้าใครๆเขาก็บอกว่า AI จะมีบทบาทในการทำงานมากขึ้น บางคนถึงขั้นบอกว่าจะมาแย่งงานเลย

เหล่าผู้รู้ทั้งหลายก็มักจะบอกให้เราทุกคนก็ควรจะเรียนรู้ทักษะใหม่ๆ เพื่อเพิ่มโอกาสอยู่รอดในปี 2026

แต่ว่า… AI agent เองก็ดันเรียนรู้ทักษะใหม่ได้ เหมือนกัน แถมทำได้ง่ายๆด้วยแค่ prompt

แล้วตอนนี้ coding agent หลายๆตัวก็ support แล้วตัวไม่ว่าจะเป็น Claude Code, Codex หรือแม้แต่ OpenCode

แถม AI พวกนี้มันเพิ่มทักษะง่ายเหมือนเสียบปลั๊กในหนัง The Matrix เลย(เกิดทันไหม “I know Kung Fu” อะครับ น้องๆหนูๆ)

แค่วาง folder ของทักษะที่เราอยากให้ AI agent. ทำได้ลงไปใน folder ชื่อ skills แล้วหลังจากนั้นมันก็จะรู้เรื่องขึ้นมาทันที (.claude/skills หรือ .opencode/skill แล้วแต่เจ้าไปอ่าน doc เพิ่มเติมได้)

ดังนั้นแล้วเพื่อเพิ่มโอกาสรอดของเราในปี 2026 ผมเลยจะมาเล่าว่าหยุดยาวนี้(ว๊ายย ไม่ได้หยุดหรอ)

ผมลองเพิ่มทักษะใหม่ให้ตัวเอง ด้วยการหัดสร้างทักษะให้ agent อีกที หรือที่ฝรั่งเขาเรียกกันว่า Agent Skills นั่นแหละ (inception เกิ๊น)

แล้วสร้าง Skill อะไรให้ AI ดี #

เกริ่นก่อนว่าผมเป็นคนที่ใช้ Apple Notes จดทุกอย่างในชีวิต หลังจากย้ายมาหลายค่าย Notion, Obisidian สุดท้ายมาตายรังที่ตัวนี้ เพราะความง่ายเลย

  1. มันอยู่ในทุกอุปกรณ์ที่ผมใช้ทั้ง Macbook, iPhone, iPad (ติดอยู่ใน ecosystem จัด)
  2. ทุกเครื่อง sync กันเองโดยไม่ต้องจ่ายเพิ่ม ไม่ต้องมีคำสั่งพิเศษอะไร ทำให้ผมจัดการสมองที่ 2 ผมได้ทุกที่

แต่ข้อเสียของ Apple Notes ก็คือมันไม่มี Official API ให้ใช้ ดังนั้นแล้วเราจะเอา AI Agent มาช่วยอ่าน ช่วยวิเคราะห์แบบตัวอื่น ไม่ได้!!!

มันก็ถึงคราวที่ผมจะต้องออกแรง(สั่ง)สร้าง Skill ใหม่ ให้ Claude Code ของผมแล้วล่ะ

ไม่มี Official API แล้วทำจะทำยังไงล่ะ คำตอบก็คือ

“AppleScript”

เพราะมันคือภาษาที่เกิดมาเพื่อทำ automation บน macOS อย่างช้านาน ถึงมันจะดูถึกหน่อย แต่นี่ก็เป็นทางที่ Apple เปิดไว้ให้ จะรออะไรล่ะ!!

ทางเลือก: MCP Server vs Agent Skill #

จริงๆ มันมีคนทำ MCP Server ที่เขียนครอบ AppleScript ไว้ให้แล้วนะ ชื่อ applescript-mcp ของคุณ joshrutkowski ไปหาดูใน GitHub ได้เลย (เครื่องมือครบมากๆ)

แต่ถ้าใครอ่านบทความก่อนๆของผมมาจะรู้ว่า MCP Server นั้นไม่เป็นมิตรต่อ context window เท่าไหร่ ผมไม่ได้ต้องการจะ load มันตลอดเวลาสักหน่อย แถมมี tool เยอะขนาดนั้นรกเกินไป ผมอยากได้แค่เอามาเปิด Apple Notes

ผมเลยเลือกทางที่ ‘ถึก’ กว่านิดหน่อยคือการสร้าง Agent Skill เพื่อเอามาตอบโจทย์ตัวเองแถมได้เพิ่ม “ทักษะ” ของตัวเองไปด้วยละกัน เพราะอย่างที่ Anthropic เขาขายมาสักพักแล้ว ก็คือ Agent Skills เนี่ย มันจะไม่ได้ full load ทุกอย่างเข้าไปก่อน แต่จะโยนแค่ meta data ของ skill แต่ละตัวสั้นๆเข้าไปใน context ก่อนเท่านั้น แต่หลังจากเราเรียกใช้มันคือทำการ load prompt ทั้งหมดมาอีกที ทำให้ไม่เปลือง usage token โดยไม่จำเป็นเด้อ

เริ่มสร้าง Skill #

แน่นอนว่าเริ่มจากการ(สั่ง)เขียน AppleScript ขึ้นมา แล้วเอามาลองเรียกผ่าน command line ให้มันสามารถทำงานพื้นฐานที่ผมต้องการได้แบบนี้

  • Search note ในเครื่องแบบใช้ keyword ธรรมดานี่แหละ ไม่ต้องทำ vector search หรอก เอาธรรมดาๆ เดี๋ยวไม่เสร็จ
  • Read note แบบเต็มๆ น้อนๆ agent จะได้รู้ว่าเนื้อหาที่เขียนนั้นคนเขียนมันมั่วขนาดไหน
  • Edit note หลังจากรู้ว่ามั่วก็ช่วยแก้หน่อยละกัน
  • Delete note สำหรับของที่เห็นแล้วว่ารับไม่ได้จริงๆ

จริงๆผมเน้น อ่านให้ได้มากกว่า เพราะว่า note เนี่ยเขียนเอง แต่ให้ agent มาช่วยวิเคราะห์หรือสรุปอีกทีมากกว่า

ตัวอย่างคำสั่งแบบพอให้เห็นภาพจากการเรียก AppleScript

osascript notes-cli.applescript read "Agent Skills" "Area/Blog"

อันนี้กรณีที่ผมอยากเข้าไปอ่าน note ที่ชื่อว่า Agent Skills ใน folder ที่เป็น nested “Area > Blog” (พอดีใช้ folder ตามหนังสือ Building a Second Brain ลองไปหารายละเอียดเพิ่มได้)

แต่ผมจะไม่ลง detail ของ AppleScript ว่ายังไงละกัน เพราะจริงๆทุกคนไปอ่านเองได้และน้อนๆ Opus 4.5 ก็เขียนให้ได้สบายๆอยู่แล้ว

ข้อดี-ข้อเสีย ของ AppleScript #

ข้อดี:

  • Native Access: มันคือ “กุญแจผี” ของ macOS เข้าถึง App พื้นฐานได้ลึกที่สุด ไม่มีใครให้มากกว่านี้อีกแล้ว
  • LLM เขียนเก่ง: ถึง Syntax มันจะดูโหดร้ายในสายตามนุษย์แบบเราๆยุคนี้ แต่ AI กลับเขียน AppleScript ได้ดีเว่อร์ จนเราไม่ต้องไปหาอ่าน doc (ที่ Apple เองก็ไม่ค่อย provide อะนะ)

ข้อเสีย:

  • Mac Only: ใช้ได้เฉพาะสาย Mac เท่านั้น (สวัสดี ecosystem 🍎)
  • Brittle: ถ้า Apple เปลี่ยนโครงสร้าง App เยอะๆ Script ก็อาจจะพังได้ (แต่ App พื้นฐานอย่าง Notes ค่อนข้างเสถียรมานานแล้ว)

มี AppleScript แล้วเอามาสร้าง Skill ยังไง #

เริ่มจากแบบง่ายๆก่อนนะ

สร้าง folder ใน project ของเรา ใครใช้ Claude Code ก็ .claude/skills/apple-notes ใครใช้ OpenCode ก็ .opencode/skill/apple-notes ต่างกันนิดนึง อ่าน doc เอาเด้อ!

แล้วผมก็ยัด AppleScript ลงไปใน skills/apple-notes/scripts เตรียมให้ agent เราเรียกดี

สร้าง skills/apple-notes/SKILL . md มาเขียน prompt เพื่อสอนให้น้องรู้จักว่า agent จะเรียกใช้ AppleScript ของเรายังไงบ้าง มีตัวอย่างการใช้งาน มี document อะไร ยัดไปเลยเขียนให้ครับ (Opus เขียนให้)

แต่อย่าลืมใส่ meta-data บน SKILL ไว้ด้วยนะ ก่อนจะเริ่มเขียน prompt อย่างของผมก็แปะไปประมาณนี้

---
name: apple-notes
description: Reads, searches, lists, creates, and deletes notes in Apple Notes on macOS.
---

เดี๋ยวเต็มๆผมแปะ repository ให้ไปอ่านดูแถมลองใช้ได้เลยนะครับ 💬

เสร็จแล้วก็ลองปิด Claude Code แล้วเปิดใหม่อีกทีใน project เดิม เพียงเท่านี้ น้อน Claude Code ก็จะสามารถเข้าไปยุ่มย่ามกับ Apple Notes ของผมได้แล้ว เพียงแค่สั่งให้ใช้ apple-notes skill

ไหนๆก็มาแล้ว ไปให้สุดกับ Claude Code Plugin #

ด้วยความอยากเท่ แบบ dev-browser ที่เขาเขียนมาให้ติดตั้งผ่าน /plugin ได้เลย ไอ้เราก็อยากลองบ้าง

เลยลองไปอ่าน doc ของ Anthropic และลอกจาก repo ของ dev-browser ผมเลยสร้าง marketplace ของตัวเองพร้อมกับ plugin ซึ่งเป็น json ไฟล์ที่เก็บใน folder .claude-plugin แค่นั้นเองไฟล์เดียวไม่เยอ แต่กำหนด path ดีๆ

หลังจากตาม document และ repo ชาวบ้านไปเรื่อยๆ ผมก็ทำให้ apple-notes skill สามารถถูกติดตั้งผ่าน /plugin ได้ แต่มันเจอปัญหาที่ไม่ค่อยเท่

จริงๆเป็นปัญหาเดียวกันกับตอนใช้ dev-browser เหมือนกัน แต่ตอนนั้นไม่ค่อยสังเกตเท่าไหร่ ปัญหาก็คือเรื่อง

Agent หา script ไม่เจอ น้องไม่รู้ว่าจริงๆแล้ว AppleScript ของผมที่บอกว่าอยู่ใน folder ชื่อ scripts นี่มันอยู่ตรงไหนของเครื่อง

ทุกครั้งที่ agent พยายามใช้ skill น้องจะไปงมกับการหา path ของ script จริงๆอยู่หลาย step เหมือนกัน

ซึ่งมาตระหนักได้อีกว่า skill เนี่ยถ้าเราติดตั้งกันคนละวิธี มันก็จะอยู่คนละที่ คนละทิศ คนละทาง แถมถ้าใช้ harness คนละตัวอย่าง OpenCode นี่ก็มีที่เก็บ skill ไม่เหมือนกันอีก

ผมเลยตัดสินใจแก้ปัญหาแบบ workaround ไปก่อนด้วยการ ย้าย script ไปอยู่ใน npm package แทน แล้วไปแก้ prompt ใน SKILL ให้เรียกแบบนี้แทน

bunx @peerasak-u/apple-notes read "Agent Skills" "Area/Blog"

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

ลองทำแล้ว เป็นไงบ้าง #

Agent Skill มันก็แค่ prompt ที่เพิ่ม meta-data ในไฟล์ markdown แต่มันช่วยให้เราประหยัด context มากกว่าการใช้ MCP Server ได้เยอะมาก การที่เรา load skills เป็นสิบมาก่อน มันใช้ token น้อยกว่าการ load MCP Server เยอะมากๆ แบบแทบไม่ต้องเทียบกันเลย

แต่มันก็ยังใหม่อยู่ ตัว skill ที่แนบ script มาด้วย มักจะเจอปัญหาแบบที่จุกจิกเรื่อง path แต่เอาจริงๆน้องก็ฝืนจนหาทางเจอนะ แต่ถ้าใครทำเองแล้วไม่อยากเสียเวลาตรงนี้ ผมแนะนำว่าให้แปลง script พวกนี้เป็น commandline app ไปก่อน ชีวิตจะได้ง่ายขึ้น จนกว่าคนทำ harness จะแก้ปัญหานี้จริงๆ(ถ้าเขามองว่าเป็นปัญหา)

ผมว่า Agent Skill น่าจะกลายเป็น standard ใหม่ที่มาแทน MCP server แน่ๆ เพราะมันตอบโจทย์เรื่อง prompt ที่ละเอียดได้เต็มที่ รวมถึงการทำ lazy load อีกอย่างการ convert จาก MCP มาเป็น skill ก็ไม่ได้ยากเย็นอะไรได้ ปีหน้า harness ทุกตัวก็คง support Agent Skills หมดเหมือนกับที่ support MCP server นั่นแหละ

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

อย่าง Notes ของผมเนี่ย ผมไม่เคยจดข้อมูลที่เป็น credential อยู่แล้ว มันเป็นแค่บันทึกประจำวัน หรือ Second Brain เฉยๆ พวก password ไปใช้ Bitwarden หรือ 1Password นู่น!! อย่ามาเก็บใน Notes!!

ใครมี Skill ไหนในใจที่อยากทำ อยากเพิ่มให้ทั้งตัวเอง แล้วก็น้อนๆ agent มาเล่าให้ฟังกันได้นะครับ

และนี่คือทักษะใหม่ของผมครับ ใน repo จะรวมตั้งแต่ skill ยัน package script อีก https://github.com/peerasak-u/apple-notes-skill