close

Ponytail

Mã nguồn mở bởi DietrichGebert

Ponytail là một prompt dạng skill và plugin mã nguồn mở, khiến trợ lý lập trình AI viết ít code hơn: tận dụng thứ đã có trong dự án, thư viện chuẩn và tính năng sẵn của nền tảng trước khi tự viết mới. Plugin cài được vào Claude Code, Codex, OpenCode, Cursor và nhiều trợ lý khác.

Ponytail dùng để làm gì?

  • Bắt trợ lý AI kiểm tra code có sẵn trong dự án và thư viện chuẩn trước khi viết thêm code mới
  • Review thay đổi hiện tại bằng /ponytail-review: lỗi, bảo mật, tải thực tế, thiếu test, đoạn nên bỏ
  • Rà cả repo bằng /ponytail-audit và xếp vấn đề theo thứ tự nên sửa trước
  • Gom các chú thích shortcut: đã hẹn sửa sau thành một danh sách nợ kỹ thuật bằng /ponytail-debt
  • Xem chi phí, token, thời gian agent và kết quả test của từng task trên thanh band và trang board trong Claude Code

Giao diện

Ảnh và video lấy từ README của dự án trên GitHub, bản quyền thuộc nhóm phát triển.

Cần biết trước khi dùng

  • Lưu ýKhông tìm thấy docker-compose hay Dockerfile ở thư mục gốc: chưa thể gắn nút Deploy tự động.
  • Lưu ýDependency được khai báo theo khoảng phiên bản (ví dụ ">="), chưa tra lỗ hổng tự động được. Cần quét trên bản cài thật.
  • Lưu ýTino chưa kiểm thử dự án này.

Kiểm tra tự động ngày 04/11/2026 từ dữ liệu GitHub, OSV.dev và docker-compose. Đây không phải chứng nhận bảo mật; Tino không phát triển hay bảo trì repo này.

Ponytail là gì?

Trợ lý AI hay viết thừa: cài thêm thư viện hoặc tự dựng cả một thành phần trong khi dự án đã có sẵn thứ tương tự. Ponytail đưa vào trợ lý một bậc thang câu hỏi trước khi viết code: việc này có cần không, dự án đã có chưa, thư viện chuẩn hay tính năng của nền tảng có làm được không, dependency đã cài có dùng được không, có viết được một dòng không. Chỉ khi không bậc nào đáp ứng mới viết phần tối thiểu, kèm một test nhỏ nếu có logic.

README nhấn mạnh quy tắc không phải là ít token nhất: không bao giờ cắt kiểm tra dữ liệu đầu vào, xử lý lỗi, bảo mật hay trợ năng. Code có nhánh, vòng lặp, bộ phân tích, tiền hoặc bảo mật phải để lại một test nhỏ. Mỗi câu trả lời kết thúc bằng phần đã bỏ qua hoặc chưa kiểm tra.

Về con số: tác giả công bố bản 5 cho ra ít hơn khoảng một nửa số dòng code và nhanh hơn khoảng 41%, đo trong Claude Code trên 39 task, mỗi task 5 lần. Đây là benchmark tác giả tự chạy, kết quả với dự án của bạn có thể khác.

Lõi của Ponytail là một file prompt (skills/ponytail/SKILL.md), bản rút gọn là AGENTS.md. Phần còn lại của repo nạp prompt đó vào từng trợ lý. Với Claude Code và Codex, plugin chạy hai hook nhỏ bằng Node.js và mặc định chèn bộ quy tắc vào cả các subagent. Mã nguồn theo giấy phép MIT.

Nên dùng khi

  • Trợ lý AI của bạn hay thêm thư viện hoặc tự viết lại thứ dự án đã có
  • Bạn muốn diff do AI tạo ngắn hơn, dễ review hơn
  • Bạn cần một lượt review hoặc audit có xếp mức ưu tiên trước khi merge

Không nên dùng khi

  • Bạn cài từ nguồn khác ngoài GitHub DietrichGebert/ponytail hoặc npm @dietrichgebert/ponytail: tác giả ghi dự án không bao giờ kèm file .exe hay .dll, bản nào có là bản giả
  • Bạn chưa duyệt hook: trên Codex phải tự tin cậy hai hook vòng đời, trên Claude Code hook chạy Node.js mỗi phiên và chèn quy tắc vào mọi subagent
  • Dự án cần dựng sẵn kiến trúc lớn theo yêu cầu rõ ràng: Ponytail mặc định chọn giải pháp tối thiểu, bạn sẽ phải yêu cầu cụ thể
  • Bạn coi con số benchmark của tác giả là cam kết: đó là kết quả tự đo, cần thử trên dự án của mình

Tính năng chính

  • Bốn mức: lite, full (mặc định), ultra, off, đổi bằng /ponytail
  • /ponytail-review đọc cả code bị ảnh hưởng ngoài diff, mỗi lỗi có mô tả, cách sửa và hậu quả nếu bỏ qua
  • /ponytail-audit lập bản đồ repo rồi xếp vấn đề theo mức ưu tiên
  • /ponytail-debt gom chú thích shortcut: thành danh sách nợ kỹ thuật
  • Band trong Claude Code: chi phí, token, thời gian agent, tỉ lệ tái dùng code, trạng thái test
  • Board: trang chạy trên máy tổng hợp các phiên, dữ liệu mặc định nằm trong ~/.config/ponytail/band/
  • Chèn bộ quy tắc vào subagent, lọc được theo loại agent
  • Bản rule cho Cursor, Windsurf, Cline, Copilot, Kiro, Zed và các trợ lý đọc AGENTS.md

Cách cài đặt Ponytail

  1. Cài cho Claude Code Gõ hai lệnh này trong ô chat của Claude Code, gửi thành hai lần riêng. Hook cần lệnh node trong PATH; thiếu Node thì skill vẫn chạy nhưng hook báo lỗi node: command not found.
    /plugin marketplace add DietrichGebert/ponytail
    
    /plugin install ponytail@ponytail
  2. Cài cho Codex Sau đó chạy codex, mở /hooks, xem và tin cậy hai hook vòng đời rồi mở thread mới.
    codex plugin marketplace add DietrichGebert/ponytail
    codex plugin add ponytail@ponytail
  3. Cài cho OpenCode Hoặc thêm { "plugins": ["@dietrichgebert/ponytail"] } vào opencode.json của dự án.
    opencode plugin add @dietrichgebert/ponytail
  4. Cài cho Cursor (hook) Ghi hai hook vào ~/.cursor/hooks.json, giữ hook bạn đã có. Giữ nguyên thư mục clone vì hook chạy node từ đó.
    git clone https://github.com/DietrichGebert/ponytail
    node ponytail/scripts/cursor-hooks.js install
  5. Trợ lý khác Lệnh của skills CLI chép sáu skill vào thư mục skill của trợ lý. Muốn có bộ quy tắc luôn bật, chép thêm file AGENTS.md vào dự án.
    npx skills add DietrichGebert/ponytail

Lệnh chép từ README của dự án. Đọc kỹ trước khi chạy và đối chiếu với README mới nhất, vì lệnh có thể đổi theo phiên bản.

Cấu hình quan trọng

MụcÝ nghĩa
PONYTAIL_DEFAULT_MODEMức mặc định cho phiên mới: lite, full, ultra hoặc off (mặc định full)
~/.config/ponytail/config.jsonFile cài đặt tuỳ chọn, trường defaultMode; trên Windows là %APPDATA%\ponytail\config.json
PONYTAIL_SUBAGENT_MATCHERBiểu thức regex chọn loại subagent được chèn quy tắc; không đặt thì chèn vào mọi subagent

Cách tích hợp và sử dụng

  1. Làm việc như bình thườngPonytail bật sẵn mỗi phiên ở mức full. Yêu cầu trợ lý như mọi khi, câu trả lời sẽ kết thúc bằng phần đã bỏ qua và rủi ro cần biết.
  2. Đổi mứcGõ /ponytail lite, /ponytail ultra hoặc /ponytail off. Gõ /ponytail không kèm tham số để xem mức hiện tại.
  3. Review trước khi mergeChạy /ponytail-review cho diff hiện tại; có thể ghi rõ uncommitted, staged, branch hoặc dán link PR.
  4. Rà cả dự ánChạy /ponytail-audit để có danh sách vấn đề xếp theo thứ tự nên sửa.
  5. Ẩn hoặc hiện bandTrong Claude Code, gõ /ponytail band để ẩn hoặc hiện thanh thông tin. /ponytail band import đưa các phiên cũ vào trang board.

Cập nhật và sao lưu

README không nêu lệnh cập nhật riêng, cập nhật theo cơ chế plugin của từng trợ lý.

Khi gỡ: chạy node scripts/uninstall.js trước, rồi mới gỡ plugin (Claude Code: /plugin remove ponytail; Codex: codex plugin remove ponytail). Script này dọn các file Ponytail ghi bên ngoài thư mục plugin, như cờ chế độ, file config và mục statusLine. Dữ liệu band và board nằm trong ~/.config/ponytail/band/, sao lưu thư mục này nếu muốn giữ lịch sử.

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

Ponytail có cần file cấu hình không?

Không. File ~/.config/ponytail/config.json hoặc biến PONYTAIL_DEFAULT_MODE chỉ dùng khi muốn đổi mức mặc định.

Viết ít code có làm mất phần kiểm tra lỗi, bảo mật không?

Theo README, Ponytail không cắt kiểm tra dữ liệu đầu vào, xử lý lỗi, bảo mật và trợ năng. Dù vậy vẫn nên review diff như mọi thay đổi do AI tạo.

Vì sao code có chú thích shortcut:?

Đó là đánh dấu chỗ cố ý làm tắt và lúc nên xem lại. /ponytail-debt gom chúng thành danh sách. Muốn đổi từ khác hoặc bỏ, ghi trong CLAUDE.md hoặc AGENTS.md của dự án.

Gỡ Ponytail thế nào cho sạch?

Chạy node scripts/uninstall.js trước khi gỡ plugin, vì script nằm trong plugin. Sau đó gỡ bằng lệnh của trợ lý, ví dụ /plugin remove ponytail trong Claude Code.

Ứng dụng liên quan

Miễn trừ trách nhiệm

Tino không phát triển, không sở hữu và không liên kết với Ponytail hay nhóm phát triển DietrichGebert. Tên, logo và nhãn hiệu thuộc về chủ sở hữu tương ứng; việc nhắc tới chỉ để mô tả, không có nghĩa là dự án xác nhận hay hợp tác với Tino.

Ponytail được phân phối theo giấy phép MIT của nhóm phát triển. Tino không bảo đảm về tính năng, bảo mật hay mức độ phù hợp của phần mềm; bạn tự chịu trách nhiệm khi cài đặt, cấu hình và sử dụng.

Lệnh cài và thông tin trên trang lấy từ tài liệu công khai của dự án tại thời điểm cập nhật và có thể đã thay đổi. Đọc tài liệu chính thức và sao lưu dữ liệu trước khi chạy trên máy chủ thật.