{
  "specVersion": "1.0",
  "entries": [
    {
      "identifier": "urn:air:www.lilidm.com:content:axum-glitchtip",
      "displayName": "axum glitchtip",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/axum-glitchtip",
      "description": "ค่าผ่านทาง item ลับพิชิตน้ำท่วม สวัสดีนักเดินทางทุกคน เราหายไปนานเลย ช่วงที่ผ่านมาแอบไปศึกษาของเล่นใหม่ ๆ มา โดยเฉพาะฝั่ง Rust ที่อยากลองเอามาใช้กับงานจริงให้ไ…",
      "representativeQueries": [
        "read the article \"axum glitchtip\"",
        "what does Moo say about axum glitchtip?"
      ],
      "updatedAt": "2026-10-18T06:26:47.79757+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:esp32-c3-lcdkit_bevy",
      "displayName": "ESP32-C3-LCDkit_bevy",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/esp32-c3-lcdkit_bevy",
      "description": "ตัวเทียบในไทย ของแท้ สวัสดีนักเดินทางทุกคน วันนี้ก็ได้สำรวจเจอ item ชิ้นใหม่ Item นี้ค่อนข้าง ซับซ้อน มีทั้งภาพขยับได้ พอกดก็มีเสียงตี้ดๆ แหละ ก็เลยไปทำการศึกษ…",
      "representativeQueries": [
        "read the article \"ESP32-C3-LCDkit_bevy\"",
        "what does Moo say about ESP32-C3-LCDkit_bevy?"
      ],
      "updatedAt": "2026-10-03T11:17:39.051202+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:migrate-influxdb3",
      "displayName": "Migrate InfluxDB3",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/migrate-influxdb3",
      "description": "เรือสำหรับการเดินทาง สวัสดีครับ นักเดินทางทุกวัน ช่วงนี้ ระวังตัว ในการเดินทางกันด้วย ส่วนตัวผมน่าจะรอด ( การเดินทางผ่านถ้ำบาดาล ) ในระหว่างการเดินทาง มีผู้โดย…",
      "representativeQueries": [
        "read the article \"Migrate InfluxDB3\"",
        "what does Moo say about Migrate InfluxDB3?"
      ],
      "updatedAt": "2026-09-27T14:20:22.04742+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:esp32-c3-lcdkit",
      "displayName": "ESP32-C3-LCDkit",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/esp32-c3-lcdkit",
      "description": "esp32-c3-lcdkit- click now",
      "representativeQueries": [
        "read the article \"ESP32-C3-LCDkit\"",
        "what does Moo say about ESP32-C3-LCDkit?"
      ],
      "updatedAt": "2026-09-25T04:38:52.216009+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:esp32-c3-devkit-rust-2",
      "displayName": "ESP32-C3-DevKit-RUST-2",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/esp32-c3-devkit-rust-2",
      "description": "ESP32-C3-DevKit-RUST-2 click now",
      "representativeQueries": [
        "read the article \"ESP32-C3-DevKit-RUST-2\"",
        "what does Moo say about ESP32-C3-DevKit-RUST-2?"
      ],
      "updatedAt": "2026-09-25T04:35:36.768975+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:basic_stdio",
      "displayName": "basic_stdio",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/basic_stdio",
      "description": "กำลังหา link shopee มาแปะ งงมากทำไม iphone 15 ขายดี วันนี้นึกขรึมว่าจะลองเขียนพวก if macth ดู แต่ลองเขียนไปเขียนมาสนใจ std IO เฉยๆเลย จะเขียนเก็บไว้เพื่อแชร์ให…",
      "representativeQueries": [
        "read the article \"basic_stdio\"",
        "what does Moo say about basic_stdio?"
      ],
      "updatedAt": "2026-09-19T15:50:07.308593+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:sqlx",
      "displayName": "sqlx",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/sqlx",
      "description": "powerbank น่าสนใจ1 powerbank น่าสนใจ2 สวัสดีเหล่านักเดินงาน วันนี้เรากลับมาค้นหาในเรื่องที่ติดไว้นานแล้วนั้นก็คือ sqlx มันคือ lib ของ rust ที่ใช้ในการจัดการกับ…",
      "representativeQueries": [
        "read the article \"sqlx\"",
        "what does Moo say about sqlx?"
      ],
      "updatedAt": "2026-09-13T13:56:30.655181+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:influx3-rs",
      "displayName": "influx3-rs",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/influx3-rs",
      "description": "influx official Buy dell Optiplex noww วันก่อนผมไปเอา ทองแดงถัก (desoldering braid) มาลองดูดตะกั่ว แต่ปรากฏว่าไม่เวิร์ก 😂 สุดท้าย Ground ที่มีอยู่จุดเดียวบนบอ…",
      "representativeQueries": [
        "read the article \"influx3-rs\"",
        "what does Moo say about influx3-rs?"
      ],
      "updatedAt": "2026-09-06T13:59:46.318652+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:no_std",
      "displayName": "no_std",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/no_std",
      "description": "prepare your head in natural The Embedonomicon สวัสดีนักเดินทางทุกท่าน วันนี้เราย้อนกลับทางเดิมกันนิดหน่อย ตอนแรกก็คิดอยู่ว่า จะไปทางไหนดี เลี้ยวซ้ายไปก็ FreeR…",
      "representativeQueries": [
        "read the article \"no_std\"",
        "what does Moo say about no_std?"
      ],
      "updatedAt": "2026-08-30T09:05:13.837761+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:lcd1602a_barpower",
      "displayName": "lcd1602a_barpower",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/lcd1602a_barpower",
      "description": "click now git สวัสดีนักเดินทางทุกท่าน ก่อนหน้านี้ไป วุ่นกับการรถติดกล้องวิ่งในบ้านมา สุดท้ายติดปัญหาเรื่องการทำโครงกับวางบอร์ด เลยพักไว้ก่อน แผนคือจะวื้อ อคิริ…",
      "representativeQueries": [
        "read the article \"lcd1602a_barpower\"",
        "what does Moo say about lcd1602a_barpower?"
      ],
      "updatedAt": "2026-08-22T15:11:16.083664+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:quick-sort",
      "displayName": "quick sort",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/quick-sort",
      "description": "kino/bw/9781633438538?srsltid=AfmBOop12V zOH0L1gmqGzitqIh Tin- xLOCVoFx6afIxsrFicgyeRZ) shopee ไม่เหมือนเล่มบนนะ แต่เป็นภาษาไทย กลับมากันอีกแล้วในดองอ่านหนังสื…",
      "representativeQueries": [
        "read the article \"quick sort\"",
        "what does Moo say about quick sort?"
      ],
      "updatedAt": "2026-08-15T13:29:23.310868+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:setting_std_xtensa",
      "displayName": "setting_std_xtensa",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/setting_std_xtensa",
      "description": "สวัสดีเหล่านักเดินทางทุกคน ก่อนหน้านี้เราไปเล่น risc-v จะส่วนใหญ่ และเข้าได้ดีกับ rust มาก และเริ่ม project โดยไม่ต้อง ตั้งอะไรเยอะ esp32 s3 วันนี้เรามาลองเริ่…",
      "representativeQueries": [
        "read the article \"setting_std_xtensa\"",
        "what does Moo say about setting_std_xtensa?"
      ],
      "updatedAt": "2026-08-09T14:16:14.979232+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:spi",
      "displayName": "spi",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/spi",
      "description": "สวัสดีเหล่านักเดินทาง วันก่อยเราเผชิญกับหลายสถานที่เราตอนสื่อกับหลากหลายอุปกรณ์กันไปแล้ว งั้นวันนี้ …. board esp32 c3 สุดถูกๆๆๆ ก็เจอเหมือนเดิม เอ้าจะพูดทำไม ต…",
      "representativeQueries": [
        "read the article \"spi\"",
        "what does Moo say about spi?"
      ],
      "updatedAt": "2026-08-01T08:10:45.811968+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:recursive",
      "displayName": "recursive",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/recursive",
      "description": "kino/bw/9781633438538?srsltid=AfmBOop12V zOH0L1gmqGzitqIh Tin- xLOCVoFx6afIxsrFicgyeRZ) shopee ไม่เหมือนเล่มบนนะ แต่เป็นภาษาไทย วันนี้อ่าน Grokking Algorithms…",
      "representativeQueries": [
        "read the article \"recursive\"",
        "what does Moo say about recursive?"
      ],
      "updatedAt": "2026-08-01T07:46:51.739969+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:esp32-s3-cam-n16r8",
      "displayName": "ESP32-S3 CAM N16R8",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/esp32-s3-cam-n16r8",
      "description": "buy now original",
      "representativeQueries": [
        "read the article \"ESP32-S3 CAM N16R8\"",
        "what does Moo say about ESP32-S3 CAM N16R8?"
      ],
      "updatedAt": "2026-07-26T14:00:42.144637+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:esp32-3c-super-mini",
      "displayName": "esp32-3c-super-mini",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/esp32-3c-super-mini",
      "description": "Buy Nowww original",
      "representativeQueries": [
        "read the article \"esp32-3c-super-mini\"",
        "what does Moo say about esp32-3c-super-mini?"
      ],
      "updatedAt": "2026-07-26T13:31:10.793907+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:uart",
      "displayName": "UART",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/uart",
      "description": "Esp32 ถูกๆ สวัสดีเหล่านักเดินทาง วันนี้มีเครื่องมืออีกตัวที่น่าสนใจ เคยสงสัยกันไหมเวลา ที่เราจะให้ board สื่อสารกันจะทำอย่างไร จะต่อโทรจิตกัน หรือเปล่า หรือต่อ…",
      "representativeQueries": [
        "read the article \"UART\"",
        "what does Moo say about UART?"
      ],
      "updatedAt": "2026-07-26T04:42:24.617776+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:esp32_wroom",
      "displayName": "esp32_wroom",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/esp32_wroom",
      "description": "Buy nowwwwww The ESP32-WROOM is the original and most widely used ESP32 module from Espressif. It is based on the first-generation ESP32 chip and is suitable f…",
      "representativeQueries": [
        "read the article \"esp32_wroom\"",
        "what does Moo say about esp32_wroom?"
      ],
      "updatedAt": "2026-07-25T15:49:59.907729+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:i",
      "displayName": "i2c",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/i",
      "description": "หลายคนเริ่มใช้ LCD I2C แล้วก็เสียบสาย SDA/SCL ใช้งานได้เลย แต่พอถามว่า \"ทำไมต้องมี Pull-up?\" หรือ \"Open-Drain คืออะไร?\" มักจะเริ่มงงกันแล้ว ส่วนตัวก็งงเหมือนกั…",
      "representativeQueries": [
        "read the article \"i2c\"",
        "what does Moo say about i2c?"
      ],
      "updatedAt": "2026-07-18T12:14:54.925247+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:asynchronous",
      "displayName": "Asynchronous",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/asynchronous",
      "description": "สวัสดีทุกคนมาถึงน่าบทสรุปสุดท้ายของ 100 excercises to learn rsut กันแล้ว ต้องบอกก่อนผมไม่ได้ทำแบบละเอียดทุกอันแค่พยายามทำให้เข้าใจ concept และปรับไปใช้มากกว่า…",
      "representativeQueries": [
        "read the article \"Asynchronous\"",
        "what does Moo say about Asynchronous?"
      ],
      "updatedAt": "2026-07-14T08:02:53.680547+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:interior",
      "displayName": "Interior",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/interior",
      "description": "ครั้งก่อนเราเขียนถึง channel ใน 100 exercises จะมีเรื่องเกี่ยว Interior mutability หรือที่ผมตั้งชื่อให้ก็คือ wrap unsafe can mut XD ถึงพวก พวกๆ wrap นี้จะมีคุณ…",
      "representativeQueries": [
        "read the article \"Interior\"",
        "what does Moo say about Interior?"
      ],
      "updatedAt": "2026-07-14T08:01:40.661953+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:channel",
      "displayName": "channel",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/channel",
      "description": "ถึงช่วงท้ายๆของ ศึก 100 exercises แล้ว ถ้าใครเขียน program มาระดับนึงจะรู้จักเรื่อง channel กัน แต่ถึงตอนนี้การเขียนนั้นเรายกไปให้ AI จนเกือบหมดแล้วก็ตาม แต่ก็…",
      "representativeQueries": [
        "read the article \"channel\"",
        "what does Moo say about channel?"
      ],
      "updatedAt": "2026-07-14T08:00:19.839739+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:thread",
      "displayName": "thread",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/thread",
      "description": "ไหนๆวันหยุดแล้วเลยอ่านทำความเข้าใจเพิ่มครับ มาถึงจุดนี้แล้วการพูดถึงเรื่อง thread เรื่องนี้ถ้าไครเริ่มาศึกษาได้ไม่นนาน อาจจะ หลงไปกับ async ได้เหมือนกัน เมื่อก…",
      "representativeQueries": [
        "read the article \"thread\"",
        "what does Moo say about thread?"
      ],
      "updatedAt": "2026-07-14T07:59:12.137437+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:hashmap",
      "displayName": "HashMap",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/hashmap",
      "description": "วันนี้เราจะมาเหลาเกี่ยวกับ Map กัน ไม่ใช่ .map() ที่เคยเห็นมานะ มันคือ map Key ,Value ของ Rust ที่เหมือนกับ Record ใน Typescript แต่จริงๆใน 100 example มี 2 เร…",
      "representativeQueries": [
        "read the article \"HashMap\"",
        "what does Moo say about HashMap?"
      ],
      "updatedAt": "2026-07-14T07:57:48.545408+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:array",
      "displayName": "Array",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/array",
      "description": "ตัวเองจะchallenge อ่าน 100 example ให้จบอีกนิดใกล้แล้วว มาถึง Array จนได้ ในหลายๆภาษา programing Array คือ การเก็บข้อมูลรูปแบบนึงที่เอาข้อมูลมาเรียงต่อกัน | 1…",
      "representativeQueries": [
        "read the article \"Array\"",
        "what does Moo say about Array?"
      ],
      "updatedAt": "2026-07-14T07:56:19.58309+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:error",
      "displayName": "Error",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/error",
      "description": "มาถึงอีกตัวหนึ่งที่เป็น เสาหลัก rust กันแล้วนั้นคือ Error ตามธรรมเนียมของ rust Error ถือว่าเป็น Trait (จำเป็นพฤติกรรมละกัน) ตัวนึงเหมือนกัน ที่บอกว่า ถ้า กลุ่ม…",
      "representativeQueries": [
        "read the article \"Error\"",
        "what does Moo say about Error?"
      ],
      "updatedAt": "2026-07-14T07:54:36.543119+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:wrap-type",
      "displayName": "Wrap type",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/wrap-type",
      "description": "Wrap type (เรียกเองส่วนตัวมากๆ) ใน rust จะเป็นภาษาที่ ค่อนข้าง stick เรื่องของการใช้ type มาก ไม่รวมถึง ไวยกรณ์ที่ไม่คุ้นหน้าคุ้นตากันเท่าไหร่ การใช้ wrap( อะไ…",
      "representativeQueries": [
        "read the article \"Wrap type\"",
        "what does Moo say about Wrap type?"
      ],
      "updatedAt": "2026-07-14T07:53:12.439472+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:enum",
      "displayName": "Enum",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/enum",
      "description": "Rust จะมี โครงสร้าง data type แบบนนึงที่สามารถระบุได้ว่าภายในนั้น สามารถเปลี่ยนเป็นอะไรได้บ้าง นั้นก็คือ Enums ตัว Enums จะคล้ายการ hold struct ไว้ในตัวโดยเลือ…",
      "representativeQueries": [
        "read the article \"Enum\"",
        "what does Moo say about Enum?"
      ],
      "updatedAt": "2026-07-14T07:51:35.309084+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:auto-trait",
      "displayName": "auto trait",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/auto-trait",
      "description": "auto trait trait หรือ เรียกอีกอย่างว่า Interface ก็ได้ ใน rust นี้ใช้ trait เป็น feature เยอะมากๆ แล้วหลายๆอย่างก็ implement มาให้เรียบร้อยแล้ว และ ที่น่าสนใจห…",
      "representativeQueries": [
        "read the article \"auto trait\"",
        "what does Moo say about auto trait?"
      ],
      "updatedAt": "2026-07-14T07:49:59.884101+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:string-slices",
      "displayName": "String slices",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/string-slices",
      "description": "วันนี้มาคุยเรื่อง String slices กัน จริงๆ อ่านไปถึง copy แล้วดูแล้วเนื้อหามันเยอะเลยเอาเรื่อง String slices ก่อนละกัน String slices เรียกอีกชื่อก็คือ string li…",
      "representativeQueries": [
        "read the article \"String slices\"",
        "what does Moo say about String slices?"
      ],
      "updatedAt": "2026-07-14T07:48:40.294173+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:trait",
      "displayName": "Trait",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/trait",
      "description": "4.1. Trait 4.2. Orphan rule 4.3. Operator overloading 4.4. Derive macros 4.5. Trait bounds ช่วยตั้งใจอยากจบอันนี้อย่างจริงจัง แต่ไม่ได้รีบจนไม่ได้คุณภาพเลยคิดว…",
      "representativeQueries": [
        "read the article \"Trait\"",
        "what does Moo say about Trait?"
      ],
      "updatedAt": "2026-07-14T07:47:09.226425+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:destructors",
      "displayName": "Destructors",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/destructors",
      "description": "Destructors อ่านไม่รู้คำแปลเลยเดา ว่า สลายโตว้ ? de - ไม่ struct - โครง ?? เติม tor 🤣 แต่ใน บทความเกี่ยวกับการ var ที่ถือ Owner จบ scope แล้วถูก drop (dead) ใ…",
      "representativeQueries": [
        "read the article \"Destructors\"",
        "what does Moo say about Destructors?"
      ],
      "updatedAt": "2026-07-14T07:45:54.077464+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:references",
      "displayName": "References",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/references",
      "description": "วันนี้จะสบายๆหน่อย เพราะ &References ใน example นี้มีไม่เยอะ References คือชี้ไปตำแหน่งของ memory ( as a pointer ) ที่คุ้นๆตากันคือ &str , &mut what do you wan…",
      "representativeQueries": [
        "read the article \"References\"",
        "what does Moo say about References?"
      ],
      "updatedAt": "2026-07-14T07:44:38.954221+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:stack",
      "displayName": "stack",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/stack",
      "description": "วันนี้ก็มาถึงจนได้ วันที่เราพูดถึง Heap เรามี stack แล้วเราจะมี Heap ไปทำไม ปัญหาของ stack คือต้องรู้ size ของข้อมูลถึงจะใช้ เพราะ เราต้องจองขนาดให้พอดีกับข้อม…",
      "representativeQueries": [
        "read the article \"stack\"",
        "what does Moo say about stack?"
      ],
      "updatedAt": "2026-07-14T07:41:28.06596+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:memory-layout",
      "displayName": "Memory layout",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/memory-layout",
      "description": "Memory layout คือเรื่องสำคัญเรื่องนึง ที่เป็นสาเหตุที่ต้องมี ownership ขึ้นมาด้วย เพราะการใช้ heap เราต้องจัดการจองหรือเอาออกเองงั้นมันค้างไปตลอด แต่วันนี้เราจ…",
      "representativeQueries": [
        "read the article \"Memory layout\"",
        "what does Moo say about Memory layout?"
      ],
      "updatedAt": "2026-07-14T07:40:15.813941+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:mutable",
      "displayName": "Mutable",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/mutable",
      "description": "Mutable ตอนนี้มาดูการที่เราจะเปลี่ยนค่าของ feild กันบ้าง ถ้าใช้ Pub feild ก็จะเป็นอีกแบบแต่ วันนี้เราจะลอง Private Feild ที่ เปลี่ยนโดยใช้ funciton อีกที 1. Ta…",
      "representativeQueries": [
        "read the article \"Mutable\"",
        "what does Moo say about Mutable?"
      ],
      "updatedAt": "2026-07-14T07:37:19.813292+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:ownership",
      "displayName": "Ownership",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/ownership",
      "description": "วันนี้เราเดินทางมาถึง Ownership กันแล้วและเพื่อนของมันคือ Borrowing คือ กระบวนการอย่างนึงที่ทำให้ rust ไม่ต้องใช้ garbage collect ในการจัดการ พื้นที่ของ memory…",
      "representativeQueries": [
        "read the article \"Ownership\"",
        "what does Moo say about Ownership?"
      ],
      "updatedAt": "2026-07-14T07:35:35.527184+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:encapsulation",
      "displayName": "Encapsulation",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/encapsulation",
      "description": "กลับมา ต่อ 100 exercise หลังจากหายไป ทำ game jam XD เพิ่งพักพื้นร่างกายกลับมา วันนี้มาถึง Encapsulation ( การห่อ แต่อยากเรียกห้องปิดตายมากกว่า ) เพราะ เวลาจะเร…",
      "representativeQueries": [
        "read the article \"Encapsulation\"",
        "what does Moo say about Encapsulation?"
      ],
      "updatedAt": "2026-07-14T07:34:11.496135+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:modules",
      "displayName": "Modules",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/modules",
      "description": "มาถึง Modules คือ โครงสร้างของ Project เรามาจะมีเส้นทางไปไหนได้บ้าง หรือเรียกอีกอย่างว่า Modules tree โดยจุดเริ่มต้น คือ crate (crate root) หรือถ้าใช้ src/lib.…",
      "representativeQueries": [
        "read the article \"Modules\"",
        "what does Moo say about Modules?"
      ],
      "updatedAt": "2026-07-14T07:24:09.849863+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:validation",
      "displayName": "Validation",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/validation",
      "description": "สงสัยไหมว่าปกติแล้วถ้า user ส่งค่าถูกต้องตาม type มา แต่ใส่ชื่อผิดรูปแบบ รายละเอียดยาวไป หรือ ใส่อะไรที่ type ไม่สามารถคุมได้มา เราจะคุมอย่างไร จึงมีการ Valida…",
      "representativeQueries": [
        "read the article \"Validation\"",
        "what does Moo say about Validation?"
      ],
      "updatedAt": "2026-07-14T07:22:06.010079+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:structs",
      "displayName": "Structs",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/structs",
      "description": "วันนี้ใน 100-exercises-to-learn-rust มาถึงเรื่องเกี่ยวกับ Structs ในบทความที่เขาเขียนจะแบ่งหัวข้อได้ Defining a struct <- ตั้งชื่อ struct Defining fields <- บอ…",
      "representativeQueries": [
        "read the article \"Structs\"",
        "what does Moo say about Structs?"
      ],
      "updatedAt": "2026-07-14T07:16:20.09671+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:overflow",
      "displayName": "Overflow",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/overflow",
      "description": "Overflow is a topic I’m interested in. Before learning about loops, I found that in many programming languages, an overflow causes a panic when a variable exce…",
      "representativeQueries": [
        "read the article \"Overflow\"",
        "what does Moo say about Overflow?"
      ],
      "updatedAt": "2026-07-14T07:13:19.323162+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:loops",
      "displayName": "Loops",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/loops",
      "description": "Loops, part 1: while Previously, we learned about recursion, which works by having a function call itself to compute a result. Another approach is to solve the…",
      "representativeQueries": [
        "read the article \"Loops\"",
        "what does Moo say about Loops?"
      ],
      "updatedAt": "2026-07-14T07:11:20.278136+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:function",
      "displayName": "function",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/function",
      "description": "We cover various topics such as: - How to define a function - How to call a function - Which integer types are available in Rust - Which arithmetic operators a…",
      "representativeQueries": [
        "read the article \"function\"",
        "what does Moo say about function?"
      ],
      "updatedAt": "2026-07-14T07:09:07.301167+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:panics",
      "displayName": "panics",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/panics",
      "description": "We arrived at Panic. Use panic! only for defined, unrecoverable conditions—misusing it can stop the entire program, especially on platforms like Cloudflare. 10…",
      "representativeQueries": [
        "read the article \"panics\"",
        "what does Moo say about panics?"
      ],
      "updatedAt": "2026-07-14T06:53:35.736147+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:pulse",
      "displayName": "pulse",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/pulse",
      "description": "ควบคุมความสว่าง LED ด้วย PWM board esp32 c3 สุดถูกๆๆๆ กลับมาเจอกันอีกครั้ง 👋 ครั้งก่อนเราได้รู้จักกับ ADC และสามารถอ่านค่าจาก Potentiometer ได้แล้ว แล้วจะเอาค…",
      "representativeQueries": [
        "read the article \"pulse\"",
        "what does Moo say about pulse?"
      ],
      "updatedAt": "2026-07-12T10:03:36.272589+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:analog-signal",
      "displayName": "Analog Signal",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/analog-signal",
      "description": "อ่านค่า Analog ด้วย ADC กลับมาเจอกันอีกครั้ง 👋. แต่อย่าลืมกดซื้อหัวชาร์จของกันด้วย จาก ZMI ก่อนหน้านี้เราได้ลองใช้ GPIO กับปุ่มกดกันไปแล้ว ซึ่งเป็นการอ่านค่าแ…",
      "representativeQueries": [
        "read the article \"Analog Signal\"",
        "what does Moo say about Analog Signal?"
      ],
      "updatedAt": "2026-07-05T10:55:20.795736+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:punch-the-button",
      "displayName": "Punch the button",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/punch-the-button",
      "description": "Punch the button เมื่อครั้งที่แล้วที่เราเจอกันเราได้ทำการทดลองการเปิดแสงสว่างภายในบอร์ดไปแล้ว โดยตัว esp32 supermini c3 จะใช้ GPIO8 เป็น LED ในบอร์ด board esp3…",
      "representativeQueries": [
        "read the article \"Punch the button\"",
        "what does Moo say about Punch the button?"
      ],
      "updatedAt": "2026-06-28T14:47:12.853466+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:bright-path",
      "displayName": "bright path",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/bright-path",
      "description": "สวัสดีเหล่านักเดินทาง ก่อนหน้านี้เราได้คุยกันเรื่องเตรียมอุปกรณ์กันหลาย ๆ อย่าง แต่มั่นใจได้เลยหลายคนน่าจะงงกันเป็นเรื่องปกติ ถ้าเราไม่เคยใช้อุปกรณ์นั้นจริง ๆ…",
      "representativeQueries": [
        "read the article \"bright path\"",
        "what does Moo say about bright path?"
      ],
      "updatedAt": "2026-06-21T15:26:03.197259+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:there_are_tools",
      "displayName": "there are tools",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/there_are_tools",
      "description": "เอาล่ะ... หลังจากสร้างโปรเจกต์เสร็จ Flash ลงบอร์ดได้แล้ว ก็ถึงเวลาที่เราจะเริ่มคุยกับ ESP32 กันจริง ๆ แต่เดี๋ยวก่อน... board esp32 c3 สุดถูกๆๆๆ ถึงจะมี GPIO, U…",
      "representativeQueries": [
        "read the article \"there are tools\"",
        "what does Moo say about there are tools?"
      ],
      "updatedAt": "2026-06-14T17:49:07.952204+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:prepare-for-new-world",
      "displayName": "prepare-for-new-world",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/prepare-for-new-world",
      "description": "board esp32 c3 สุดถูกๆๆๆ สวัสดีชาว rust bro ผมเชื่อใครอ่านถึงตรงนี้ต้องเข้าเส้นสักนิดนึงแล้วละ เอาละมาเตรียมสู้การเดินทางกัน ใครอยากเตรียมตัวแน่น เอามาดูคู่มือ…",
      "representativeQueries": [
        "read the article \"prepare-for-new-world\"",
        "what does Moo say about prepare-for-new-world?"
      ],
      "updatedAt": "2026-06-06T17:05:52.409492+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:started-way-to-mc",
      "displayName": "started-way-to-mc",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/started-way-to-mc",
      "description": "สวัสดีทุกคน เรามาขึ้น ss ใหม่ คือ esp-rs แต่บอกเลยว่าอาจจะไม่ได้ลงทุกอาทิตย์ เพราะส่วนตัว เรื่อง hardware กับ ไฟฟ้าของข้างน้อย แต่ที่สนใจทำอันนี้เพราะมีอยากไปป…",
      "representativeQueries": [
        "read the article \"started-way-to-mc\"",
        "what does Moo say about started-way-to-mc?"
      ],
      "updatedAt": "2026-06-01T10:27:53.482579+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:primitive-types",
      "displayName": "Primitive types",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/primitive-types",
      "description": "100 exercises ต้องบอกว่าใน Rust เป็นภาษาที่ต้องข้างสติ๊กกับ ประเภทของข้อมูลเลยจะใช้อะไรต้องให้ complier เดาได้ว่าข้อมูลที่ใช้อยู่เป็นประเภทไหน และ integer ที่เ…",
      "representativeQueries": [
        "read the article \"Primitive types\"",
        "what does Moo say about Primitive types?"
      ],
      "updatedAt": "2026-05-30T15:06:16.949291+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:syntax",
      "displayName": "syntax",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/syntax",
      "description": "ไหนมาเขียนเรื่องที่ลงใน facebook มาลงใหม่เริ่มจาก sytax เบื้องต้นของ Rust จำคร่าวๆเฉยๆก็ได้ 100 exercises // comment fn hello(say:String) - String { format!(\"{…",
      "representativeQueries": [
        "read the article \"syntax\"",
        "what does Moo say about syntax?"
      ],
      "updatedAt": "2026-05-30T14:52:02.926605+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:Checkpoint_Start",
      "displayName": "Checkpoint_Start",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/Checkpoint_Start",
      "description": "ขนมระหว่างเรียน เริ่มต้นใสๆ ถ้าหลายๆคนมาจากภาษาอื่นเราจะมา โชว์ codeที่ทำให้หลายๆคนคุ้นเคยกันก่อน เพราะใน rust จะมี เรื่อง ownership และ borrow checker ที่ค่อน…",
      "representativeQueries": [
        "read the article \"Checkpoint_Start\"",
        "what does Moo say about Checkpoint_Start?"
      ],
      "updatedAt": "2026-05-09T16:35:00.042193+00:00",
      "metadata": {
        "kind": "article"
      }
    },
    {
      "identifier": "urn:air:www.lilidm.com:content:Rust_is_hard",
      "displayName": "Rust is hard",
      "type": "text/markdown; profile=\"urn:air:agent-skills\"",
      "url": "https://www.lilidm.com/content/Rust_is_hard",
      "description": "🦀 Rust: ภาษาที่คนชอบพูดว่า “ยาก” ทั้งที่ยังไม่เคยลอง 😏 ทุกคนบอกว่า Rust ปลอดภัยสุด แต่พอให้ลอง compile ก็หายไปเลย… 🫠 อย่าเพิ่งหนีครับ ถ้าอยากเข้าใจ Rust แบบ…",
      "representativeQueries": [
        "read the article \"Rust is hard\"",
        "what does Moo say about Rust is hard?"
      ],
      "updatedAt": "2026-04-15T09:48:02.025555+00:00",
      "metadata": {
        "kind": "article"
      }
    }
  ]
}