Blog

Codex Skills: Tạo skill cho các tác vụ lặp lại

Markdown

Cấu trúc SKILL.md, đường dẫn tải, cách gọi rõ ràng và tự động, tiêu chí kết quả và cách chuyển một skill sang Claude Code.

Đọc toàn bộ bài viết

Nếu tuần nào bạn cũng phải giải thích cùng một việc cho Codex năm lần — cách định dạng báo cáo, sắp xếp email hoặc chuẩn bị nội dung theo phong cách của bạn — bạn có thể ghi lại hướng dẫn đó một lần trong skill. Sau đó, agent có thể tìm skill dựa trên phần mô tả khi mô tả khớp với tác vụ, hoặc bạn có thể gọi skill một cách tường minh. Skill là một thư mục thông thường có tệp văn bản tên là SKILL.md; không cần lập trình để dùng trong trường hợp cơ bản.

Dưới đây, chúng tôi sẽ trình bày cấu trúc của skill, nơi Codex tìm skill, cách tạo từng bước và cách chọn model dựa trên chi phí. Các lệnh và mức giá dựa trên tài liệu chính thức của OpenAI tính đến ngày 20 tháng 9 năm 2026. Chúng tôi không nhắc lại hướng dẫn cài đặt Codex ở đây; hướng dẫn đó có trong bài Codex của OpenAI: Là gì, cách cài đặt và chạy.

Thông tin thực tế về cách sử dụng Ailoot có trong tài liệu hướng dẫn.

Skill trong Codex là gì?

Điểm chính

Skill của Codex là một thư mục có tệp SKILL.md mô tả một quy trình: cần làm gì, dựa trên những gì và kết quả tốt trông như thế nào. Ban đầu, Codex chỉ giữ tên và mô tả của các skill trong ngữ cảnh; khi quyết định sử dụng một skill, Codex sẽ tải toàn bộ hướng dẫn.

Định dạng này có tên Agent Skills. Đây là một tiêu chuẩn mở do Anthropic phát triển ban đầu và công bố tại agentskills.io. Nhiều agent hỗ trợ tiêu chuẩn này, bao gồm Codex, Claude Code và các client tương thích khác. Có thể chuyển một skill đơn giản chỉ gồm hướng dẫn dạng văn bản giữa các công cụ bằng cách sao chép thư mục. Nếu skill có script, phần phụ thuộc hoặc tệp agents/openai.yaml, hãy kiểm tra skill sau khi chuyển: một số cài đặt chỉ dành riêng cho một client cụ thể.

Cách tải này được gọi là tiết lộ tăng dần. Agent dùng tên và mô tả của skill để xác định khi nào skill phù hợp. Khi tác vụ khớp với mô tả, agent đọc toàn bộ SKILL.md và làm theo hướng dẫn. Nhờ vậy, bạn có thể giữ hàng chục skill trong Codex mà không phải tải mọi hướng dẫn vào ngữ cảnh: danh sách ban đầu chiếm không quá 2% cửa sổ ngữ cảnh (hoặc 8.000 ký tự nếu không biết kích thước cửa sổ). Nếu có nhiều skill, trước tiên Codex rút gọn mô tả; với số lượng rất lớn, Codex có thể bỏ một số skill khỏi danh sách và thông báo cho bạn.

Rất dễ nhầm skill với AGENTS.md. Codex đọc tệp này trong mỗi phiên làm việc với dự án. Tệp chứa các quy tắc áp dụng thường trực: công nghệ sử dụng, quy ước và phong cách lập trình. Skill chỉ được tải theo yêu cầu khi tác vụ phù hợp. Vì vậy, hãy đặt các quy tắc thường trực trong AGENTS.md, còn quy trình lặp lại gồm nhiều bước thì đặt trong skill.

Skill của Hermes Agent hoạt động tương tự, nhưng được lưu trong các thư mục khác và cài đặt theo cách khác. Nội dung này được trình bày trong một hướng dẫn riêng: Hermes Agent Skills: Cài đặt và tạo skill. Bài viết này chỉ nói về Codex.

Một skill gồm những gì?

Điểm chính

Tối thiểu, một skill có một tệp SKILL.md với hai trường bắt buộc: name và description. Bạn cũng có thể thêm các thư mục scripts/, references/ và assets/, cùng với tệp agents/openai.yaml chứa các cài đặt.

Thư mục skill có cấu trúc như sau:

my-skill/
  SKILL.md        - bắt buộc: siêu dữ liệu và hướng dẫn
  scripts/        - tùy chọn: mã có thể thực thi
  references/     - tùy chọn: tài liệu để tải khi cần
  assets/         - tùy chọn: mẫu và tài nguyên
  agents/
    openai.yaml   - tùy chọn: giao diện và phần phụ thuộc

Tệp SKILL.md bắt đầu bằng khối siêu dữ liệu được kẹp giữa ba dấu gạch ngang, sau đó là phần hướng dẫn viết bằng Markdown:

---
name: weekly-sales-report
description: Tổng hợp báo cáo doanh số hằng tuần từ tệp xuất CSV. Dùng khi được yêu cầu lập báo cáo doanh số hằng tuần hoặc tóm tắt theo quản lý.
---

1. Đọc tệp xuất tại đường dẫn do người dùng cung cấp.
2. Nhóm các hàng theo quản lý rồi tính tổng và số thương vụ.
3. So sánh với tuần trước nếu tệp của tuần trước ở gần đó. Nếu không có tệp, hãy nói rõ điều đó trong báo cáo.
4. Lưu kết quả vào report.md: bảng theo quản lý, tổng số và tối đa ba thay đổi chính kèm số liệu, tùy theo dữ liệu cho phép.

Ba nguyên tắc trong khuyến nghị chính thức của OpenAI:

  • Một skill, một tác vụ. Thay vì “xử lý toàn bộ hoạt động tiếp thị của tôi”, hãy chọn một tác vụ cụ thể: “lập báo cáo doanh số từ tệp xuất này”. Chia quy trình lớn hơn thành các skill riêng có thể gọi lần lượt.
  • Viết các bước trực tiếp, nêu rõ đầu vào và đầu ra: cần dùng gì, làm gì và lưu kết quả ở đâu.
  • Bắt đầu bằng hướng dẫn dạng văn bản. Dùng script trong scripts/ khi một bước cần chạy theo cùng một cách chính xác mỗi lần — chẳng hạn để chuyển đổi tệp hoặc gọi một hệ thống bên ngoài.

Codex chọn skill cho một tác vụ dựa trên trường description, vì vậy hãy bắt đầu phần mô tả bằng tác vụ và những từ bạn thường dùng để diễn đạt tác vụ đó.

Codex tìm skill ở đâu?

Điểm chính

Codex tìm skill ở bốn cấp: thư mục .agents/skills của dự án (kiểm tra thư mục hiện tại và từng thư mục cha cho đến thư mục gốc của kho mã), thư mục cá nhân $HOME/.agents/skills, thư mục hệ thống /etc/codex/skills và các skill tích hợp sẵn của OpenAI.

CấpĐường dẫnMục đích
Dự án.agents/skills trong thư mục hiện tại và các thư mục cha cho đến thư mục gốc của kho mãSkill dành cho một dự án cụ thể, có thể lưu trong git cùng với mã nguồn
Người dùng$HOME/.agents/skillsSkill cá nhân của bạn, có thể dùng trong mọi dự án trên máy
Hệ thống/etc/codex/skillsSkill dùng chung cho mọi người dùng máy hoặc container
Tích hợp sẵnĐi kèm CodexSkill cơ bản của OpenAI, chẳng hạn skill tạo skill

Lưu skill của dự án trong git cùng với mã nguồn rất tiện vì cả nhóm sẽ có cùng một bộ skill. Skill cá nhân phù hợp với quy trình riêng của bạn, chẳng hạn phong cách email. Nếu hai skill ở các cấp khác nhau có cùng tên, Codex không gộp chúng: cả hai đều xuất hiện trong danh sách, khiến việc lựa chọn khó hơn. Hãy đặt tên riêng biệt cho chúng.

Để so sánh, skill của Claude Code được lưu trong .claude/skills, mỗi skill có tệp SKILL.md riêng và dùng cùng tiêu chuẩn mở. Có thể chuyển một skill đơn giản sang đó bằng cách sao chép thư mục, sau đó chạy thử và kiểm tra xem skill có được gọi hay không. Để so sánh các tiện ích mở rộng của Claude Code, xem Skills, Subagents, MCP hay Plugins.

Codex quyết định gọi skill nào như thế nào?

Điểm chính

Bạn có thể gọi skill một cách tường minh: trong Codex CLI hoặc tiện ích mở rộng IDE, nhập $skill-name vào yêu cầu hoặc chọn skill qua /skills. Với cách gọi ngầm, Codex tự động chọn skill nếu tác vụ khớp với mô tả. Skill phải khả dụng và việc gọi tự động phải được cho phép.

Lúc đầu, gọi tường minh đáng tin cậy hơn: trong Codex CLI, nhập $weekly-sales-report để chọn đúng quy trình đó. Gọi ngầm tiện hơn cho công việc hằng ngày. Sau khi viết skill, hãy thử bằng lời lẽ thông thường: yêu cầu Codex thực hiện tác vụ theo cách diễn đạt của bạn, không dùng $, rồi xem nó có chọn skill đó hay không. Nếu không, trước tiên hãy kiểm tra Codex có thấy skill trong /skills không, skill có nằm trong thư mục được tải hay không, và skill hoặc tính năng gọi tự động có bị tắt hay không. Nếu skill khả dụng và cài đặt đúng, hãy chỉnh description: nêu tác vụ và các cách thường dùng để diễn đạt yêu cầu.

Nếu muốn chỉ gọi skill bằng lệnh tường minh, bạn cũng có thể cấu hình như vậy: trong agents/openai.yaml, tham số allow_implicit_invocation: false sẽ tắt tính năng gọi tự động, còn $name vẫn hoạt động. Bạn có thể tắt hoàn toàn một skill mà không xóa nó thông qua ~/.codex/config.toml:

[[skills.config]]
path = "/full/path/to/the/skill/SKILL.md"
enabled = false

Sau khi chỉnh sửa config.toml, hãy khởi động lại Codex. Codex tự nhận biết các thay đổi trong thư mục skill, nhưng nếu skill mới không xuất hiện, hãy khởi động lại Codex.

Cách tự tạo skill: từng bước

Điểm chính

Chọn một tác vụ lặp lại, tạo skill bằng trợ lý tích hợp $skill-creator hoặc tự tạo, viết hướng dẫn nêu rõ kết quả cần đạt, thử gọi skill bằng lời lẽ thông thường và cải thiện skill sau mỗi lần chạy.

  1. Chọn một tác vụ

    Hãy chọn một quy trình bạn thường xuyên lặp lại và có kết quả rõ ràng: báo cáo, bảng, thư hoặc bản phân tích. Nếu chưa từng nhận được loại kết quả đó, trước tiên hãy tự hoàn thành tác vụ với một agent. Dùng kết quả nhận được làm chuẩn đối chiếu cho hướng dẫn.

  2. Tạo skill

    Để tạo skill bằng trợ lý tích hợp sẵn, nhập $skill-creator trong một phiên Codex. Trợ lý sẽ hỏi skill làm gì, khi nào nên gọi và có cần script hay không, rồi dựng khung cho bạn. Để tự tạo, hãy tạo thư mục .agents/skills trong dự án, cùng thư mục con cho skill, chẳng hạn .agents/skills/weekly-sales-report, rồi đặt tệp SKILL.md bên trong theo ví dụ ở trên.

  3. Viết hướng dẫn

    Viết các bước thành danh sách đánh số, nêu rõ đầu vào và đầu ra. Nếu quy trình cần độ chính xác cao (chuyển dữ liệu, đổi tên, tính toán), hãy mô tả chi tiết từng bước. Với tác vụ sáng tạo (viết nội dung, chọn lập luận), hãy đặt ra giới hạn và tiêu chí cho kết quả tốt, đồng thời để mô hình có không gian xử lý.

  4. Thử gọi skill

    Yêu cầu Codex thực hiện tác vụ theo cách diễn đạt của bạn, không nêu tên skill. Nếu nó chọn đúng skill, nghĩa là mô tả phù hợp với cách diễn đạt đó. Sau đó, thử gọi tường minh bằng $name. Nếu skill không được gọi, hãy kiểm tra thư mục, xem nó có xuất hiện trong /skills hay không và kiểm tra các cài đặt tắt đã nêu ở trên. Nếu skill mới không xuất hiện trong danh sách, hãy khởi động lại Codex. Nếu gọi tường minh được và gọi tự động đã được cho phép, nhưng Codex không phản hồi với yêu cầu theo cách diễn đạt của bạn, hãy chỉnh phần đầu của description: đưa tác vụ lên trước, rồi thêm các cách diễn đạt yêu cầu thường dùng. Thử lại.

  5. Cải thiện sau mỗi lần chạy

    Sau mỗi lần chạy, xem lại kết quả và cho agent biết cần thay đổi gì trong skill: “Lần sau, hãy thêm cột thể hiện tỷ trọng vào bảng tóm tắt.” Nếu phiên bản đầu chưa tạo ra kết quả bạn cần, hãy cải thiện skill sáng tạo dựa trên phản hồi.

Các skill có sẵn của OpenAI và cộng đồng được cài đặt bằng $skill-installer cùng với tên skill. Để chia sẻ skill của bạn với người khác, hãy phân phối skill dưới dạng plugin — đây là phương thức đóng gói riêng, không cần thiết cho mục đích cá nhân.

Cách kiểm tra kết quả của agent

Điểm chính

Đưa tiêu chí nghiệm thu vào thẳng skill: kết quả phải có những gì và agent cần kiểm tra công việc ra sao trước khi bàn giao. Điều này không bảo đảm kết quả chính xác; bạn vẫn cần tự kiểm tra.

Các bước kiểm tra có thể khách quan hoặc chủ quan. Kiểm tra khách quan có thể đo lường được: “báo cáo có đủ 12 quản lý trong tệp xuất” hoặc “tổng trong bảng khớp với tổng CSV”. Hãy ghi các điều này thành yêu cầu bắt buộc. Kiểm tra chủ quan liên quan đến chất lượng: “văn bản có giọng văn giống tôi” hoặc “kết luận ngắn gọn”. Bạn cũng có thể cụ thể hóa chúng: đưa một đoạn mẫu tốt vào skill và yêu cầu agent so sánh kết quả với mẫu.

Một kỹ thuật hữu ích là chu trình rà soát: sau khi chuẩn bị kết quả, agent xem qua danh sách tiêu chí, sửa những gì phát hiện được rồi mới đưa kết quả cho bạn. Anthropic có một mô hình tương tự gọi là evaluator-optimizer: một agent thực hiện công việc, một evaluator riêng rà soát và phản hồi, rồi quy trình lặp lại cho đến khi được chấp nhận. Trong một skill, đây thường là phiên bản đơn giản hóa — bước tự kiểm tra cuối cùng theo danh sách. Hãy lưu ý hạn chế của cách này: nó kém hơn một evaluator độc lập vì agent làm việc có thể không nhận ra lỗi của chính mình.

Ví dụ về khối kiểm tra cho báo cáo của chúng ta:

## Trước khi gửi, hãy kiểm tra
- Bảng có đủ mọi quản lý trong tệp xuất; không bỏ sót ai.
- Tổng số khớp với tổng trong CSV đến từng xu cuối cùng.
- Mọi thay đổi chính đều có số liệu hỗ trợ; nếu không có dữ liệu để so sánh, báo cáo nêu rõ điều đó.
- Tệp được lưu tại report.md và đường dẫn đã được chia sẻ với người dùng.

Nên chọn model nào cho skill?

Điểm chính

Bắt đầu với model đã chạy tốt với skill, sau đó thử các model rẻ hơn: nếu chất lượng vẫn ổn, hãy dùng model rẻ hơn. Giá API và gợi ý cho các lần chạy đầu tiên ở bên dưới, tính đến ngày 20 tháng 9 năm 2026.

ModelĐầu vào, $/triệu tokenĐầu ra, $/triệu tokenNên thử model này trước với
GPT-6 Astra1050Skill cần suy luận kéo dài, hình ảnh và sử dụng trình duyệt
GPT-5.6 Sol420Skill văn bản có độ phức tạp trung bình
GPT-5.6 Terra2.5015Quy trình đơn giản với kết quả rõ ràng
GPT-5.6 Luna0.201.20Tác vụ máy móc: định dạng lại, tính toán, lập danh sách

Cột ngoài cùng bên phải gợi ý các tác vụ để kiểm tra ban đầu. Đây không phải bảng xếp hạng hay kết quả so sánh: chỉ sau khi chạy thử và so sánh với kết quả chuẩn, bạn mới xác định được model phù hợp cho skill của mình.

Giá trong bảng là giá API trên trang model tính đến ngày 20 tháng 9 năm 2026, không phải giá đăng ký ChatGPT. Khi dùng gói đăng ký, mức sử dụng sẽ tính vào giới hạn của gói. Tính đến ngày này, Sol có giá khuyến mãi $4/$20 ít nhất đến ngày 21 tháng 11 năm 2026; giá tiêu chuẩn là $5/$30. Trước khi chạy quy mô lớn định kỳ, hãy kiểm tra trang giá: các chương trình khuyến mãi của OpenAI thay đổi theo thời gian.

Chạy cùng một skill trên model rẻ hơn tiếp theo và so sánh kết quả với kết quả chuẩn. Nếu chất lượng vẫn ổn, hãy thử model rẻ hơn nữa. Nếu chất lượng giảm, quay lại model trước đó. Model cũng có các mức độ nỗ lực: Astra có các mức từ low đến max, còn dòng 5.6 có các mức từ none đến max. Hãy thử những mức này với cùng kết quả chuẩn: trước tiên chọn model, sau đó chọn mức độ nỗ lực.

Chạy skill thường xuyên sẽ phát sinh chi phí định kỳ. Giá đầu vào của Astra cao gấp 50 lần Luna, vì vậy dùng các model khác nhau cho cùng một skill lặp lại thường xuyên có thể khiến chi phí chênh lệch đáng kể. Với skill phân tích ảnh chụp màn hình và tài liệu, model yếu hơn có thể tốn nhiều tiền hơn vì phải làm lại.

Những lỗi thường gặp khi tạo và dùng skill

  • Một skill “cho mọi thứ”. Một quy trình, một skill — đó cũng là khuyến nghị của OpenAI. Rất khó mô tả chính xác một skill phổ quát dài mười trang, và Codex chọn skill cho tác vụ dựa trên mô tả của skill.
  • Mô tả mơ hồ. “Hỗ trợ làm báo cáo” không cho biết skill dành cho loại báo cáo nào. Đặt tác vụ và những cách diễn đạt yêu cầu thường dùng ở đầu description.
  • Hướng dẫn không xác định kết quả. Nếu không nêu rõ cần tạo ra gì và lưu ở đâu, kết quả có thể khác nhau sau mỗi lần chạy.
  • Không có bước kiểm tra nào. Nếu thiếu bước cuối cùng với các tiêu chí cụ thể, kết quả có thể chỉ là bản nháp chưa hoàn chỉnh mà bạn phải tự xem lại toàn bộ.
  • Mặc định dùng model có năng lực cao nhất. Trước tiên, hãy kiểm tra xem model rẻ hơn có xử lý được tác vụ không: chạy cùng skill và so sánh kết quả với kết quả chuẩn. Chỉ chuyển model nếu chất lượng vẫn ổn.
  • Trùng tên ở các thư mục khác nhau. Codex không gộp các skill cùng tên, khiến việc chọn đúng skill khó hơn.

Cách bắt đầu và chuyển skill sang Claude Code

Điểm chính

Chọn một quy trình lặp lại, tạo skill bằng $skill-creator, thử gọi skill bằng cách diễn đạt của bạn và thêm bước cuối cùng có tiêu chí nghiệm thu. Sau vài lần chạy, hãy chỉnh sửa mô tả và hướng dẫn dựa trên các lỗi bạn tìm thấy.

Nếu làm việc với nhiều agent, bạn có thể chuyển một thư mục chỉ có hướng dẫn dạng văn bản và tệp SKILL.md sang Claude Code. Tại đó, skill được lưu trong .claude/skills và gọi bằng /name. Hãy kiểm tra skill sau khi chuyển nếu skill có script, phần phụ thuộc hoặc agents/openai.yaml. Để xem hướng dẫn về thư viện skill của Claude Code, hãy đọc Claude Code Skills: Cách xây dựng bộ skill của riêng bạn; để so sánh Codex với Claude Code, xem Codex và Claude Code.

Truy cập Ailoot.

Xem thêm chi tiết

Câu hỏi thường gặp

Vì sao gọi skill trực tiếp được nhưng tự chọn lại không?

Kiểm tra skill hiện trong /skills và đã bật gọi ngầm. Nếu đúng cả hai, sửa mô tả bắt đầu bằng tác vụ và chứa từ bạn thường dùng, rồi thử lại cùng yêu cầu tự nhiên.

Nên xác minh gì trong đầu ra skill báo cáo bán hàng?

Kiểm tra đủ mọi quản lý của bản xuất, tổng khớp nguồn, mỗi biến động có số chứng minh và tệp yêu cầu đã lưu. Thiếu kỳ trước thì báo cáo phải nói rõ.

Tất cả bài viết