Góc chia sẻ

Ponytail: skill giúp AI agent viết ít code hơn mà vẫn chắc chắn

Ponytail là một prompt mã nguồn mở khiến AI agent suy nghĩ như một senior dev lười: tái dùng thứ có sẵn, chỉ viết phần thật cần, nhưng không bao giờ bỏ kiểm tra, bảo mật hay test.

Cập nhật lúc

Ponytail: skill giúp AI agent viết ít code hơn mà vẫn chắc chắn

Ponytail là gì

Bạn hẳn từng gặp kiểu đàn anh lâu năm trong công ty: bạn đưa ra năm mươi dòng code, anh ấy nhìn một lúc, không nói gì, rồi thay bằng một dòng. Ponytail (repo DietrichGebert/ponytail) muốn đưa đúng tư duy đó vào AI agent lập trình của bạn.

Theo mô tả của dự án, Ponytail làm cho AI agent "suy nghĩ như senior dev lười nhất trong phòng", với triết lý: code tốt nhất là code bạn không bao giờ phải viết. Đây là công cụ dành cho lập trình viên đang dùng các agent như Claude Code, Codex, Cursor, Copilot, Gemini và nhiều agent khác.

Điểm đáng chú ý là Ponytail thực chất chỉ là một prompt: file skills/ponytail/SKILL.md, kèm bản rút gọn AGENTS.md cho những agent đọc file quy tắc. Phần còn lại của repo dùng để nạp prompt đó vào các agent khác nhau.

Triết lý: lười về giải pháp, không lười về đọc code

README nhấn mạnh rằng quy tắc chưa bao giờ là "dùng ít token nhất". Quy tắc thật sự là: chỉ viết những gì nhiệm vụ cần, và không bao giờ cắt bỏ phần kiểm tra dữ liệu, xử lý lỗi, bảo mật hay khả năng truy cập. Code nhỏ đi vì nó chỉ còn phần cần thiết, chứ không phải bị ép ngắn cho đẹp.

Trước khi viết code, Ponytail cho agent đi qua một "cái thang" và dừng ở bậc đầu tiên đáp ứng được:

  1. Thứ này có thật sự cần tồn tại không?
  2. Codebase đã có sẵn chưa?
  3. Thư viện chuẩn có làm được không?
  4. Có tính năng gốc của nền tảng không?
  5. Có dependency nào đã cài sẵn làm được không?
  6. Có thể viết trong một dòng không?
  7. Chỉ khi đó mới viết phần tối thiểu chạy được, kèm một test nhỏ nếu có logic.

Cái thang này chỉ chạy sau khi agent đã hiểu vấn đề: nó đọc phần code bị ảnh hưởng và lần theo luồng chạy thực tế. Những đoạn logic có rẽ nhánh, vòng lặp, parser, tiền bạc hay bảo mật sẽ luôn để lại một test nhỏ. Mỗi câu trả lời kết thúc bằng phần đã bỏ qua, phần chưa kiểm tra và các rủi ro bạn nên biết.

Ví dụ trước và sau

README đưa ra một ví dụ: yêu cầu thêm date picker vào frontend. Không có Ponytail, agent cài thư viện date picker hoặc tự dựng cả một cái lịch, tổng cộng 335 dòng. Với Ponytail 5, agent nhìn trước những gì đã có: repo có sẵn component Input, và trình duyệt nào cũng có date picker. Kết hợp hai thứ đó, kết quả chỉ còn một file 10 dòng.

Những con số dự án công bố

Phiên bản Ponytail 5 được giới thiệu là viết lại từ đầu. Theo benchmark của chính dự án, chạy trong Claude Code với cùng một agent có và không có skill, gồm 39 tác vụ (trong đó có một repo FastAPI + React thật), mỗi tác vụ chạy 5 lần:

  • Giảm 53% lượng code, 41% thời gian, 26% chi phí và 45% token.
  • 98% logic rủi ro được giao kèm test, so với 68% khi không dùng Ponytail.
  • Test do agent tự viết bắt được 66% lỗi được cài vào, so với 46% khi không có skill.
  • Ở sáu tác vụ bảo mật (SQL injection, path traversal, token giả mạo, rate limiting, dòng CSV lỗi, caching), Ponytail vượt qua cả 30 lượt chạy.

Phương pháp, bảng chi tiết từng tác vụ và giới hạn của benchmark được dự án ghi trong thư mục benchmarks/results. Bạn nên tự đọc để đánh giá trước khi dựa vào các con số này.

Các tính năng chính

/ponytail-review: review như người bị gọi dậy khi hệ thống sập

Lệnh này không chỉ đọc diff mà đọc cả phần code mà thay đổi của bạn chạm tới. Nó kiểm tra lỗi, bảo mật, tải thực tế, code rủi ro thiếu test, đường chạy chậm và những gì nên cắt. Mỗi phát hiện đều nói rõ code đang làm gì, sai ở đâu, sửa thế nào và chuyện gì xảy ra nếu bỏ qua. Bạn có thể thu hẹp phạm vi bằng các từ như uncommitted, staged, branch hoặc một link PR.

/ponytail-audit: kiểm tra toàn bộ repo

Audit chạy cùng bộ kiểm tra trên cả repo. Nó vẽ bản đồ code trước: điểm vào, cách dữ liệu di chuyển, mức tải dự kiến. Sau đó xếp hạng các vấn đề và cho bạn biết nên sửa gì trước.

Band và Board (mới ở bản 5.3)

Trong Claude Code, Ponytail hiển thị một dải thông tin phía trên ô nhập prompt: chi phí tác vụ hiện tại, số token, thời gian agent, tần suất tái dùng code có sẵn và việc test có pass sau thay đổi cuối hay không. Tính năng này cần Claude Code 2.1.290 trở lên, trong terminal hoặc ứng dụng desktop, và không hiển thị trong khung chat VS Code, phiên cloud hay claude -p.

Board mở một trang cục bộ tổng hợp mọi tác vụ trên các dự án của bạn. Mặc định dữ liệu nằm trên máy, trong ~/.config/ponytail/band/.

Các lệnh khác

  • /ponytail [lite | full | ultra | off]: chỉnh mức độ hoặc tắt.
  • /ponytail-debt: gom các comment shortcut: thành sổ nợ kỹ thuật, để "để sau" không thành "không bao giờ".
  • /ponytail-gain: xem bảng điểm tác động từ benchmark.
  • /ponytail-help: tra cứu nhanh các lệnh.

Khi nào bạn nên dùng

  • Agent của bạn hay tự dựng lại thứ mà codebase hoặc trình duyệt đã có sẵn.
  • Bạn muốn giảm chi phí và thời gian chạy agent mà không đánh đổi test hay bảo mật.
  • Bạn cần một bước review hoặc audit có ưu tiên rõ ràng trước khi merge.
  • Bạn muốn theo dõi chi phí, token và thời gian agent qua từng phiên làm việc.

Cách bắt đầu

Với Claude Code, nhập hai prompt riêng biệt:

  1. Thêm marketplace:
    /plugin marketplace add DietrichGebert/ponytail
  2. Cài plugin:
    /plugin install ponytail@ponytail

Với Codex:

  1. Chạy các lệnh sau:
    codex plugin marketplace add DietrichGebert/ponytail
    codex plugin add ponytail@ponytail
  2. Mở /hooks trong Codex, tin cậy hai lifecycle hook của nó.
  3. Bắt đầu một thread mới.

Với các agent khác: chép file AGENTS.md vào dự án, hoặc nhờ agent cài skills/ponytail/SKILL.md như một skill. Hướng dẫn chi tiết cho Copilot, Cursor, OpenCode, Gemini và các agent khác nằm trong file INSTALL.md của repo.

Ponytail không bắt buộc file cấu hình. Nếu muốn, bạn có thể đặt mức mặc định qua ~/.config/ponytail/config.json hoặc biến môi trường PONYTAIL_DEFAULT_MODE.

Lưu ý

  • Giấy phép: MIT.
  • Phiên bản: bản phát hành mới nhất là v5.3.2, cũng có trên npm với tên @dietrichgebert/ponytail.
  • Hỗ trợ lệnh: đầy đủ các lệnh cần host hỗ trợ skill như Claude Code, Codex, Devin CLI, OpenCode, Gemini, Antigravity CLI, Qoder, Grok Build. Các adapter chỉ đọc quy tắc như Windsurf, Cline, Copilot, Kiro sẽ nạp bộ quy tắc mà không có lệnh. Trong Codex, gọi lệnh dạng $ponytail:ponytail-review.
  • An toàn: tác giả khuyến cáo chỉ cài từ repo GitHub chính thức hoặc gói npm nêu trên. Ponytail không bao giờ đi kèm file .exe hay .dll, bản nào có những file đó không phải của tác giả.

Kết luận

Ponytail là một ý tưởng đơn giản nhưng thú vị: thay vì để AI agent viết thật nhiều code, hãy dạy nó hỏi "thứ này đã có chưa" trước khi gõ phím, mà vẫn giữ nguyên kỷ luật về test và bảo mật. Nếu bạn đang dùng agent lập trình hằng ngày, đây là một prompt đáng thử. Xem chi tiết tại github.com/DietrichGebert/ponytail hoặc trang chủ ponytail.dev.