
Cách mình viết skill cho AI - một lần, dùng mãi
Tháng 11 năm 2025, anh Vũ PO ping mình: "Em viết PRD cho multi-AZ control plane của VKS nhé, deadline thứ tư."...
May 2026
✍️ Hana · 🗓️ Tháng 5/2026 📚 Series: Làm Cùng với AI · BA Edition 🔢 Order: 12
Giao diện Mee - Meeting Note Agent với transcript real-time và biên bản họp tự động
Có một việc mà mình chắc bất kỳ BA nào cũng hiểu: cuộc họp kết thúc không phải là hết việc. Mới chỉ là bắt đầu phần viết.
Một cuộc họp alignment 1 tiếng với stakeholder, sau đó mình mất thêm 30-45 phút để viết MoM - Minutes of Meeting. Không phải vì không nhớ, mà vì MoM cần đúng format: thông tin họp, danh sách attendees có đủ đơn vị và chức vụ, nội dung từng agenda item, danh sách next actions với PIC và deadline rõ ràng. Thiếu bất kỳ phần nào là stakeholder hỏi lại.
Rồi còn chuyện thuật ngữ. Team mình làm cloud infrastructure - một buổi họp về VKS có thể nhắc đến HPA, kubeconfig, Helm chart, node pool liên tục. Nếu mình ghi âm rồi dùng transcription tool thông thường, output ra toàn là "APA", "cube config", "hèm chat" - vô nghĩa hoàn toàn. Mỗi lần phải nghe lại và tự sửa từng chỗ.
Mình bắt đầu tự hỏi: tại sao phần "viết lại những gì vừa nói trong 1 tiếng" lại tốn thêm gần 1 tiếng nữa?
Mee là meeting note agent mình build để giải quyết đúng cái pain đó. Tên đầy đủ là Mee - Meeting Note Agent, chạy bằng Python + FastAPI, ghi âm real-time qua microphone hoặc upload file audio, transcription bằng VNGCloud MaaS Whisper API, và sau đó dùng Claude để phân tích transcript và tạo MoM theo đúng template team mình đang dùng.
Workflow từ khi mở app đến khi có file MoM:
Workflow của Mee Agent
Mình sẽ kể ba điểm làm mình thấy đáng build nhất.
Đây là vấn đề mình nói lúc đầu: Whisper không nhận ra "HPA", "kubeconfig", "pgvector" nếu không có context. Giải pháp mình chọn là tích hợp Vocabulary Hints - từ điển thuật ngữ kỹ thuật cho 18 product của VNG Cloud và GreenNode, từ VKS đến AI Stack đến vWAF.
Trước khi bắt đầu ghi âm, mình chọn product liên quan đến cuộc họp - giữ Ctrl để chọn nhiều product cùng lúc. Vocab hints tự merge và dedup. Whisper nhận hints này qua API call và bắt đầu nhận dạng đúng thuật ngữ ngay từ đầu.
Điều mình học được từ cái này: AI tools không phải tự nhiên hiểu context của team bạn. Bạn phải đưa context đó vào một cách có chủ đích - dù là qua skill file, conventions.md, hay vocabulary hints. Kết quả khác nhau rất nhiều khi có và không có bước đó.
Mee stream transcript qua WebSocket - trong lúc mình đang họp, text xuất hiện real-time trên browser. Mình vừa họp vừa liếc xem Whisper có nhận đúng không, nếu thấy tên người hay thuật ngữ bị sai thì note lại để sửa sau.
Cái này thay đổi một thói quen của mình: trước đây mình hay vừa họp vừa gõ notes song song - vừa mất tập trung vừa không kịp. Giờ mình tập trung nghe và nói, phần ghi lại để Mee lo.
Sau khi kết thúc ghi âm, mình nhấn "Tạo biên bản" - Claude đọc toàn bộ transcript và tạo MoM theo đúng template mình đang dùng: thông tin cuộc họp, bảng thành viên tham gia, nội dung từng agenda item, danh sách next actions với PIC và deadline. Output là file .md tải về ngay trên UI.
Không phải mình nhận được raw transcript và tự tổng hợp. AI đọc toàn bộ và trả về đúng cái mình cần nộp cho team.
Một điểm mình thích nhất khi hoàn thiện Mee: không giữ cho riêng mình.
Mình deploy Mee lên GreenNode AgentBase - platform AI agent của VNG. Giờ cả team đều có thể dùng mà không cần tự setup Python, tự điền API key, tự chạy server local. Mở browser, vào đúng endpoint, họp bình thường.
Cái bước từ "tool mình tự dùng" sang "tool cả team dùng được" thực ra không phức tạp về mặt kỹ thuật - nhưng nó đòi hỏi một thứ khác: phải để ý đến UX của người dùng không phải mình. Vocab hints cần UI đủ rõ để người không biết gì về Whisper cũng hiểu tại sao phải chọn. Thông báo lỗi phải nói được cần làm gì tiếp theo, không phải chỉ báo lỗi gì.
Mình đang upgrade Mee thêm một bước nữa, chưa xong nhưng muốn kể trước.
Hiện tại flow dừng ở chỗ: MoM ra, user tải file .md về, next actions thì copy thủ công vào Redmine. Mình muốn bỏ cái bước đó đi.
Plan là: sau khi MoM tạo xong, Mee hiển thị danh sách next actions và cho mình edit trực tiếp trên UI - sửa assignee, viết lại mô tả action theo ngôn ngữ tự nhiên hơn, điều chỉnh deadline. Sau khi confirm, Mee sẽ call qua PM Agent - một agent riêng quản lý task Redmine mà mình và team đang dùng - để tạo task lên Redmine tự động bằng diễn giải ngôn ngữ tự nhiên đó.
Cái thú vị của architecture này là Agent-to-Agent: Mee không trực tiếp gọi Redmine API. Mee gửi next action đã được confirm sang PM Agent, PM Agent hiểu ngữ nghĩa rồi tự quyết định cách map sang Redmine - project nào, tracker nào, assignee ID là gì. Hai agent có domain riêng, giao tiếp với nhau qua ngôn ngữ tự nhiên thay vì hardcode API contract.
Phần này mình sẽ viết riêng một bài khi kết nối Agent-to-Agent xong. Còn nhiều thứ thú vị hơn mình đang nghĩ lúc bắt đầu.
MoM review vẫn cần mình đọc lại, đặc biệt phần next actions.
Claude đọc transcript và ghi lại next actions theo những gì được nói trong cuộc họp - nhưng đôi khi có những thứ được ngầm hiểu mà không ai nói thành lời rõ ràng. "Anh Minh sẽ check lại" trong transcript không cho biết check cái gì, đến bao giờ, output là gì. Mình phải đọc lại phần đó trong context cuộc họp và điền vào chỗ trống.
Transcript cũng hay lẫn khi nhiều người nói cùng lúc hoặc giọng bị lag. Claude cố gắng nhưng không thể reconstruct ý nếu audio gốc đã bị cắt. Những chỗ đó mình đánh dấu [cần xác nhận] và hỏi lại sau họp.
Tổng thời gian viết MoM bây giờ: 5-10 phút review thay vì 30-45 phút gõ lại từ đầu.
Cuộc họp kết thúc không có nghĩa là việc kết thúc. Nhưng phần "viết lại những gì vừa nói" - cái đó AI làm được. Để bạn dành thời gian đó cho phần tiếp theo: chốt action, assign người, đảm bảo không ai quên gì.
Lần gần nhất bạn ngồi viết lại MoM sau 5pm vì buổi sáng họp xong không kịp viết - đó là dấu hiệu tool của bạn đang thiếu. Không phải bạn thiếu kỷ luật. Thiếu tool đúng.
Bài này thuộc series "Làm Cùng với AI - BA Edition". Các bài khác trong series: Cách mình viết PRD cùng với AI - Cách mình viết Userguide cùng với AI - Cách mình chạy workflow bằng skill

Tháng 11 năm 2025, anh Vũ PO ping mình: "Em viết PRD cho multi-AZ control plane của VKS nhé, deadline thứ tư."...

Kể thật nhé. Trước khi có skill, mình viết một PRD đầy đủ mất từ 2 đến 4 ngày. Không phải vì không biết viết – mà vì có quá nhiều thứ phải làm đồng thời, v...
Một hôm mình mở tab Claude mới, paste lại đúng đoạn instruction từ tuần trước - "viết PRD theo chuẩn VNG Cloud, cần có 8 sections, user story dùng Gherkin,...