Agent Skills cho Dart và Flutter: dạy AI cái framework nó cứ làm sai
Khảo sát Q2 2026 chứa một con số định hình lại cách nên thiết kế tooling cho Flutter: Claude Code 32% và Antigravity 23%, cả hai vượt GitHub Copilot (19%), Cursor (18%) và Codex (17%). Công cụ dạng agent đã vượt qua thế hệ autocomplete. Khoảng một phần ba lập trình viên Flutter giờ có một agent viết một phần đáng kể code của họ.
Điều đó tạo ra một vấn đề mà chính framework phải giải, vì Flutter đi nhanh hơn dữ liệu huấn luyện mô hình. Flutter 3.47 vừa đổi đường dẫn import của hai thư viện được dùng nhiều nhất hệ sinh thái. Mọi mô hình huấn luyện trước tháng 8/2026 sẽ mãi mãi tự tin viết package:flutter/material.dart.
Agent Skills là câu trả lời của Google.
Một Skill thực sự là gì
Skill là một bộ chỉ dẫn theo tác vụ dạy agent cách làm một công việc phát triển cụ thể — không phải tài liệu tra cứu, mà là một quy trình.
Cách diễn đạt trong bài công bố là cách dễ nhớ nhất: MCP đưa cho bạn búa và đinh; Skill đưa bản vẽ và tay nghề để xây nhà. Một MCP server cho agent năng lực — chạy analyzer, mở simulator, đọc file. Một Skill nói cho nó biết làm tốt trông như thế nào khi dùng những năng lực đó.
Hệ quả thực tế là tiết kiệm token. Skill nạp dần, chỉ khi liên quan tới thứ bạn yêu cầu. Bạn không phải dán cả style guide vào mọi prompt và trả tiền cho nó ở mọi lượt.
| MCP server | Agent Skill | |
|---|---|---|
| Cung cấp | Công cụ và năng lực | Quy trình và phán đoán |
| Ẩn dụ | Búa và đinh | Bản vẽ và tay nghề |
| Nạp lúc nào | Kết nối suốt phiên | Nạp dần, khi liên quan |
| Trả lời | ”Tôi làm được gì?" | "Nên làm thế nào cho tốt?” |
Mười skill Flutter
Repository flutter/skills cung cấp:
flutter-add-integration-test— cấu hình Flutter Driver và biến thao tác thành integration test lâu dàiflutter-add-widget-test— test cấp component vớiWidgetTesterđể kiểm chứng render và tương tácflutter-add-widget-preview— thêm widget preview tương tác để kiểm chứng component UIflutter-apply-architecture-best-practices— cấu trúc app theo phân tầng khuyến nghị UI / Logic / Dataflutter-build-responsive-layout— layout thích ứng dùngLayoutBuilder,MediaQuery, hoặcExpanded/Flexibleflutter-fix-layout-issues— xử lý lỗi tràn và ràng buộc không giới hạnflutter-implement-json-serialization— class model vớifromJsonvàtoJsonflutter-setup-declarative-routing— cấu hìnhMaterialApp.routervới package nhưgo_routerflutter-setup-localization— khởi tạo localization vớiflutter_localizationsvàintlflutter-use-http-package— gọi REST bằng packagehttp
Các skill cho Dart nằm riêng ở dart-lang/skills, phủ phần việc cấp ngôn ngữ như refactor pattern matching và thu thập coverage LCOV.
Nhìn danh sách đó như một tập hợp thì logic chọn lựa hiện ra rõ. Đây không phải tác vụ kỳ lạ. Đây là những việc mà một agent để tự do sẽ cho ra thứ biên dịch được, chạy được, và sai một cách tinh vi — một layout chỉ đúng ở một cỡ màn hình, một router cấu hình theo lối mệnh lệnh, một class model âm thầm bỏ mất một trường nullable.
Cài đặt
Skill cài bằng một lệnh cho mỗi repository:
npx skills add flutter/skills --skill '*' --agent universal
npx skills add dart-lang/skills --skill '*' --agent universal
Sau đó bạn chọn skill muốn dùng và agent bạn đang dùng. Đích --agent universal là thứ khiến việc này khả chuyển trên các công cụ trong biểu đồ khảo sát kia thay vì bị buộc vào một nhà cung cấp.
Cài tất cả bằng '*' là đường nhanh. Với repository của cả nhóm, chọn lọc thường tốt hơn — cài những skill khớp quy ước thực tế của bạn, và bỏ qua những skill sẽ cãi nhau với kiến trúc hiện có.
Nơi thứ này có giá trị nhất
Trường hợp giá trị nhất chính là tình huống Flutter 3.47 vừa tạo ra. Hãy nhìn thứ một agent có kiến thức cũ sinh ra hôm nay:
// Thứ một mô hình huấn luyện trước 8/2026 viết
import 'package:flutter/material.dart';
// Thứ Flutter 3.47 muốn
import 'package:material_ui/material_ui.dart';
Cả hai đều biên dịch được ngay lúc này, vì thư viện trong SDK vẫn còn. Một trong hai sẽ bắt đầu cảnh báo deprecate vào tháng 11. Agent không có cách nào biết cái nào hiện hành trừ khi có thứ gì đó nói cho nó — và “thứ gì đó” hoặc là một Skill, hoặc một MCP server phơi tài liệu trực tiếp, hoặc là bạn sửa nó mỗi một lần.
Điều tương tự áp dụng cho annotation @Preview, lời khuyên hiệu năng biết tới Impeller, và Swift Package Manager thay vì CocoaPods. Mỗi thứ trong số đó đều đổi trong vòng hai bản phát hành gần nhất.
Skill không thay thế review
Cần nói thẳng, vì khảo sát có một con số liên quan: lập trình viên tin các tính năng đã được cộng đồng “thử lửa” ở mức 41% so với 26% cho tính năng do Google xây. Sự hoài nghi đó là lành mạnh và nên áp dụng cả ở đây.
Một Skill cải thiện phân phối đầu ra của agent — bớt câu trả lời sai theo mặc định, nhất quán hơn với quy ước framework. Nó không làm đầu ra trở nên đúng. flutter-apply-architecture-best-practices sẽ áp một cách phân tầng lên codebase của bạn; việc cách phân tầng đó có hợp app của bạn hay không là quyết định của bạn, không phải của agent.
Hãy đọc diff sinh ra. Hãy chạy test. Skill biến agent thành một junior tốt hơn, không phải một senior.
Bắt tay vào cài
- Xác định agent bạn thực sự dùng. VS Code (66%) và Android Studio (40%) vẫn là nơi phần lớn công việc Flutter diễn ra; hãy cài cho agent chạy trong editor của bạn.
- Chạy cả hai lệnh
npx skills addchoflutter/skillsvàdart-lang/skills. - Bắt đầu có chọn lọc. Cài
flutter-fix-layout-issuesvàflutter-add-widget-testtrước — hai skill ít áp đặt kiến trúc nhất. - Thử trên một tác vụ đã biết. Bảo agent viết widget test cho một component có sẵn rồi so với thứ bạn sẽ tự viết.
- Thêm các skill có quan điểm mạnh — kiến trúc, routing — chỉ sau khi bạn xác nhận chúng khớp quy ước của mình.
- Ghim phiên bản framework trong prompt khi làm việc với code nhạy cảm về migrate. Skill giúp ích; ngữ cảnh tường minh còn giúp hơn.
- Chạy lại lệnh cài sau mỗi bản phát hành lớn để định nghĩa skill bám theo framework.
Kết luận
Điều thú vị ở Agent Skills không phải là Google ship thêm một tính năng AI. Mà là sự thừa nhận đứng sau nó: một phần ba người dùng giờ viết code thông qua một agent, và nhịp phát hành của framework đã vượt qua mốc kiến thức của các mô hình. Skill là hạ tầng cho khoảng trống đó. Chúng không biến agent của bạn thành kỹ sư Flutter cấp cao, nhưng sẽ ngăn nó tự tin import một thư viện sắp bị deprecate vào tháng 11 — và trên một codebase cỡ nào cũng vậy, hai câu lệnh đó là đáng.