เวลาเปิดโปรเจกต์ให้ AI agent อย่าง Claude Code หรือ Cursor ช่วยเขียน agent รู้จัก Laravel ทั่วไปอยู่แล้ว แต่ไม่รู้ว่าโปรเจกต์นี้ใช้ Inertia v3 หรือ v2 ตารางมีคอลัมน์อะไร หรือทีมตกลงกันไว้ว่า model ไม่ต้องมี $fillable ทุก session ใหม่เราจึงต้องเล่าเรื่องเดิมซ้ำ หรือไม่ก็ได้โค้ดที่เขียนตามความจำของ agent ซึ่งอาจเป็นของเวอร์ชันเก่า
Laravel Boost เป็น package จากทีม Laravel ที่จัดบริบทพวกนี้ให้เป็นระบบ
ติดตั้งแล้ว Boost สร้างไฟล์อะไรบ้าง
composer require laravel/boost --dev
php artisan boost:install
boost:install ถามว่าเราใช้ agent ตัวไหน แล้วสร้างไฟล์ให้ตามนั้น สำหรับ Claude Code ใน Boost 2.10 ได้ไฟล์เหล่านี้
AGENTS.mdguideline ที่ agent อ่านตอนเริ่มงาน.claude/skills/skill ของ package ที่ติดตั้งไว้ เช่น Pest, Inertia, Tailwind.mcp.jsonลงทะเบียน MCP server ของ Boost ให้ Claude Code รู้จักboost.jsonจำว่าเลือกอะไรไว้ตอนติดตั้ง
Claude Code อ่าน CLAUDE.md เป็นหลัก ใน repo ของเว็บนี้ CLAUDE.md จึงเป็นไฟล์สั้น ๆ ที่เราเขียนเอง บอก stack, โฟลเดอร์สำคัญ และคำสั่งรัน test แล้วปิดท้ายด้วย @AGENTS.md ซึ่งเป็นวิธีของ Claude Code ที่ดึงไฟล์อื่นเข้ามาอ่านด้วย
guideline เขียนตามเวอร์ชันที่เราติดตั้งจริง
Boost ดูว่าเราติดตั้ง package อะไรไว้บ้าง แล้วเลือก guideline ให้ตรงเวอร์ชัน โปรเจกต์ที่ใช้ Inertia v3 จะได้คำเตือนว่า v3 เอา Axios ออกแล้ว และ Inertia::lazy() เปลี่ยนเป็น Inertia::optional() ซึ่งเป็นเรื่องที่ agent มักเขียนผิดถ้าจำมาจากเวอร์ชันก่อน
เนื้อหาของ Boost อยู่ในบล็อก <laravel-boost-guidelines> เท่านั้น รัน boost:install หรือ boost:update ซ้ำ Boost ก็แทนที่แค่ในบล็อกนั้น ข้อความที่เราเขียนเองนอกบล็อกยังอยู่ครบ ถ้าอยากให้อัปเดตทุกครั้งที่อัปเดต package ใส่ไว้ใน composer.json ได้
"scripts": {
"post-update-cmd": [
"@php artisan boost:update --ansi"
]
}
guideline ของเราเองใส่เป็นไฟล์ .md ใน .ai/guidelines/ ได้ Boost จะรวมเข้าไปให้ แต่ guideline ทุกบรรทัดอยู่ใน context ของ agent ตลอดเวลา ยิ่งยาวยิ่งเหลือที่ให้งานจริงน้อยลง เราจึงเก็บไว้แค่เรื่องที่ใช้กับทั้งโปรเจกต์ เรื่องเฉพาะส่วนย้ายไปไว้ใน rules หรือ skill
MCP ให้ agent ถามแอปได้เอง
MCP (Model Context Protocol) เป็นมาตรฐานที่ให้ agent เรียกเครื่องมือภายนอกได้ Boost เปิด MCP server ด้วยคำสั่ง php artisan boost:mcp ซึ่ง agent รันเองจากที่ลงทะเบียนไว้ใน .mcp.json เครื่องมือที่ใช้บ่อยคือ
- Database Schema อ่านตารางและคอลัมน์จริง agent ไม่ต้องเดาชื่อคอลัมน์จาก migration
- Database Query รัน
SELECTได้อย่างเดียว ไว้ดูข้อมูลบนเครื่อง dev - Search Docs ค้นเอกสารของ Laravel, Inertia, Pest, Livewire, Filament และอื่น ๆ เฉพาะเวอร์ชันที่ติดตั้งไว้ จากคลังกว่า 17,000 ชิ้นของ Boost
- Last Error กับ Read Log Entries อ่าน error ล่าสุดจาก log โดยไม่ต้องให้เรา copy มาวาง
- Browser Logs อ่าน error ฝั่งเบราว์เซอร์ระหว่างพัฒนา
Search Docs ช่วยมากตอนใช้ feature ที่เปลี่ยนบ่อย agent ค้นก่อนเขียนแทนที่จะเชื่อความจำ guideline ของ Boost ก็สั่งให้ทำแบบนั้นอยู่แล้ว ส่วนข้อมูลบน production ไม่ควรให้ agent ต่อตรง ถ้าจำเป็นต้องดูจริง ลองอ่านวิธีให้ AI อ่านฐานข้อมูล production อย่างปลอดภัย
.ai/rules เก็บข้อตกลงที่อ่านจากโค้ดไม่ออก
guideline กับ skill สอน agent ให้เขียน Laravel ให้ถูก แต่ไม่รู้ว่าโปรเจกต์ของเราตกลงอะไรกันไว้ Boost 2 จึงมี project rules เป็นไฟล์ markdown ใน .ai/rules แต่ละไฟล์บอกใน front matter ว่าใช้กับไฟล์ไหน
---
paths:
- routes/console.php
---
# Routes
## Every scheduled job lives in the scheduler
Add every scheduled job as a `Schedule::` entry here, never as a crontab line.
Each box has exactly one `* * * * * … artisan schedule:run` line for this checkout.
Boost ทำไฟล์ .ai/rules/index.md ที่จับคู่ glob กับไฟล์ rule แล้ว guideline สั่งให้ agent เปิด index ก่อนแก้ไฟล์ไหนก็ตาม agent ที่กำลังแก้ routes/console.php จะอ่าน rule ข้างบนก่อน ส่วน rule ของ model ไม่ต้องโหลดมาให้เปลือง context
วิธีเพิ่ม rule คือบอก agent ตรง ๆ เช่น "จำไว้ว่าทุกงานที่ตั้งเวลาต้องอยู่ใน routes/console.php" agent จะเรียกเครื่องมือ record-rule ซึ่งเขียนไฟล์และอัปเดต index ให้ ถ้าเป็นโปรเจกต์เก่าที่มีข้อตกลงอยู่ในโค้ดแล้ว สั่ง agent ให้ใช้ skill infer-conventions ได้ skill นี้ไล่ดูโค้ดทั้งโปรเจกต์ แล้วเสนอ rule พร้อมหลักฐานให้เรากดรับทีละข้อ
rule ที่ดีคือเรื่องที่ต้องอธิบายซ้ำทุก session ใหม่ เช่น model ใน repo นี้ไม่มี $fillable เพราะเรียก Model::unguard() ไว้ หรือเรื่องที่ดูจากโค้ดรอบ ๆ ไม่ออก การแก้งานครั้งเดียวอย่าง "ลบ typo ตรงนี้" ไม่ใช่ rule ต่างจาก memory ของ agent ที่อยู่แค่บนเครื่องเรา .ai/rules commit เข้า repo คนในทีมและ agent ทุกตัวที่เปิดโปรเจกต์นี้จึงได้ชุดเดียวกัน
เรื่องที่ควรดูก่อน commit
.mcp.jsonอาจมี token ติดมา ไฟล์นี้ไม่ได้มีแค่ Boost ถ้าเราเพิ่ม MCP server อื่นที่ต้องใช้ token ค่าจริงจะอยู่ในไฟล์ และ gitleaks ไม่จับ token ใน header แบบนี้ ให้เขียนเป็น${ชื่อตัวแปร}แล้วเก็บค่าจริงไว้นอก repo เอกสารของ Boost ยังบอกว่าจะใส่.mcp.json,AGENTS.mdและboost.jsonใน.gitignoreก็ได้ เพราะboost:installสร้างใหม่ได้เสมอ- guideline เป็นแค่คำแนะนำ agent ทำตามได้เกือบทุกครั้ง แต่ไม่ทุกครั้ง เรื่องที่พลาดแล้วเสียหายต้องกันไว้ในโค้ด อย่าง
DB::prohibitDestructiveCommands()ที่กันmigrate:freshในค่าที่ตั้งตั้งแต่วันแรกของโปรเจกต์ หรือ test ที่ fail เมื่อมีคนแก้ trustProxies กลับเป็น * - ให้เครื่องมือตรวจงานของ agent ทุกรอบ formatter, linter และ static analysis ทำงานเดิมได้ทุกครั้งโดยไม่ต้องจำ เราตั้ง hook ให้ Claude Code รัน Pint และ ESLint หลังแก้ไฟล์ ไว้คู่กับ Boost
Boost ทำให้ agent เริ่มงานจากที่เดียวกับคนในทีม คือรู้ว่าโปรเจกต์ใช้อะไร ตกลงอะไรกันไว้ และหาข้อมูลเองได้ ส่วนการตัดสินใจและการ review ยังเป็นงานของเราเหมือนเดิมครับ






