Giới thiệu
Trong thời đại AI hiện nay, việc quản lý ticket bởi các PdMs và quản lý dự án nên được thiết kế dựa trên sự hợp tác giữa con người và LLMs. Chúng ta đang hướng tới một thế giới mà bạn chỉ cần mô tả ý định của mình bằng ngôn ngữ tự nhiên, và mọi thứ—tạo mới, cập nhật, di chuyển, tóm tắt—đều được tự động hóa.
GitHub Projects (v2), với các trường linh hoạt và các truy vấn/tự động hóa mạnh mẽ, là nền tảng hoàn hảo cho điều này. Đó là lý do tôi đã tạo ra gh-pm: một phần mở rộng CLI của GitHub giúp đưa sự kết hợp này vào quy trình làm việc hàng ngày.
Tại Sao Tôi Tạo Ra Nó
Mặc dù GitHub Projects (v2) rất mạnh mẽ, nhưng trên thực tế, bạn sẽ nhanh chóng gặp phải một số vấn đề:
- Việc gán vấn đề vào dự án rất tốn công
- Các cập nhật và thay đổi trạng thái thường xuyên tạo ra gánh nặng
- Việc viết các truy vấn GraphQL thô quá phức tạp cho việc sử dụng hàng ngày
gh-pm giải quyết những vấn đề này bằng cách mở rộng GitHub CLI, và khi kết hợp với một LLM, nó cho phép quản lý dự án qua ngôn ngữ tự nhiên.
Tính Năng & Ví Dụ
0. Cài Đặt
Để cài đặt gh-pm, sử dụng lệnh sau:
gh extension install yahsan2/gh-pm
1. Khởi Tạo với .gh-pm.yml
Bắt đầu bằng cách tạo một tệp cấu hình:
gh pm init
Lệnh này sẽ phát hiện dự án của bạn và tạo ra tệp .gh-pm.yml. Tệp này sẽ lưu lại tên các trường như Status và Priority, giúp bạn sử dụng các lệnh ngắn gọn hơn.
Ví dụ:
fields:
status:
backlog: "Backlog"
in_progress: "Đang Tiến Hành"
done: "Hoàn Thành"
priority:
high: "P0"
medium: "P1"
low: "P2"
deadline:
due_date: "Hạn Chót"
2. Tạo & Cập Nhật Vấn Đề Trong Dự Án
# Tạo vấn đề mới trong dự án với độ ưu tiên P1 và nhãn backend
gh pm create --title "Triển khai xác thực" --priority p1 --label backend
Di chuyển các vấn đề hiện có qua các cột:
# Di chuyển vấn đề #123 đến trạng thái đang tiến hành
gh pm move 123 --status in_progress
3. Tiếp Nhận Các Vấn Đề Chưa Được Theo Dõi
# Thêm tất cả các vấn đề có nhãn bug vào backlog với ưu tiên p2
gh pm intake --label bug --apply "status:backlog,priority:p2"
Với các mặc định trong .gh-pm.yml, bạn có thể làm cho điều này trở nên tương tác.
Ví dụ đoạn mã trong .gh-pm.yml:
intake:
bug:
query: "is:issue is:open -label:pm-tracked"
instruction: "Bắt đầu tiếp nhận các vấn đề chưa được theo dõi. Điều này sẽ thêm nhãn pm-tracked và thiết lập các trường dự án mặc định."
apply:
labels:
- pm-tracked
interactive:
status: true # Hiển thị lựa chọn tương tác để thiết lập trạng thái cho từng vấn đề
4. Chia Nhỏ Vấn Đề Thành Các Vấn Đề Phụ
# Chia nhỏ các vấn đề phụ từ checklist trong nội dung vấn đề
gh pm split 123 --from=body
# Hoặc từ một tệp markdown được tạo bởi một LLM
gh pm split 123 --from=./tasks.md
# Hoặc trực tiếp từ một danh sách
gh pm split 123 '["Nhiệm vụ 1", "Nhiệm vụ 2", "Nhiệm vụ 3"]'
Điều này phụ thuộc vào phần mở rộng khác của tôi là gh-sub-issue.
gh extension install yahsan2/gh-sub-issue
5. Phân Tích Quy Mô
Định nghĩa các quy tắc phân tích trong .gh-pm.yml và xử lý các vấn đề theo lô:
# Ví dụ: đánh dấu tất cả các vấn đề cũ
gh pm triage stale
triage:
stale:
query: "is:issue is:open updated:<@today-7d"
apply:
labels:
- stale
Lưu ý:
@today-7dđược thực hiện nội bộ cho khả năng tương thích CLI nơi hỗ trợ gốc còn thiếu.
6. Đầu Ra Linh Hoạt cho Tự Động Hóa
Đầu ra dưới dạng JSON hoặc CSV để dễ dàng tích hợp với LLMs hoặc các tập lệnh:
gh pm list --format json
Ví Dụ Sử Dụng Phân Tích
- Tự động gán nhãn các nhiệm vụ cũ: đánh dấu các vấn đề không hoạt động trong hơn 7 ngày
- Cố định độ ưu tiên bị thiếu: tương tác gán độ ưu tiên cho tất cả các vấn đề thiếu trường này
Ví dụ cho các độ ưu tiên bị thiếu:
triage:
priority:
query: "is:issue is:open -field:priority"
interactive:
priority: true # Nhắc nhở tương tác để thiết lập độ ưu tiên cho từng vấn đề
Chạy với:
gh pm triage priority
Sử Dụng Với LLMs
Đây là nơi gh-pm tỏa sáng. LLMs như Claude hoặc Codex CLI có thể tạo ra các lệnh phù hợp từ ngôn ngữ tự nhiên:
- “Gán tất cả các vấn đề chưa được theo dõi cho tôi” →
gh pm triage tracked --apply @me - “Di chuyển tất cả các nhiệm vụ P1 đến trạng thái đang tiến hành” →
gh pm move --query "is:issue is:open -priority:high" --status in_progress
Với .gh-pm.yml, các lệnh này trở nên ngắn gọn hơn.
Điều Gì Đang Đến
Giấc mơ là có một LLM “nhớ” những lệnh này (thông qua một cái gì đó như CLAUDE.md) và thực hiện chúng một cách đáng tin cậy. Hiện tại, đôi khi tôi vẫn phải nói rõ như:
“Chạy gh pm split 123 --from=body trên vấn đề tôi vừa tạo.”
Nhưng khi nó hoạt động, GitHub Projects + LLMs = tự động hóa dự án siêu mạnh mẽ. Tôi sẽ tiếp tục cải thiện các nhắc nhở, hướng dẫn và móc nối—vì vậy hãy theo dõi.
Hãy Thử Ngay
Repo tại đây 👉 yahsan2/gh-pm
Phản hồi, ý tưởng và ⭐️ rất được hoan nghênh.
Tóm Tắt
gh-pm là:
- Một phần mở rộng CLI GitHub giúp đơn giản hóa hoạt động dự án GitHub hàng ngày
- Ẩn đi sự phức tạp của GraphQL thông qua các lệnh dễ hiểu
- Sử dụng
.gh-pm.ymlđể lập bản đồ trường linh hoạt - Được thiết kế để kết hợp một cách tự nhiên với LLMs cho các thao tác ngôn ngữ tự nhiên
Một đối tác thực tiễn trong việc quản lý dự án “nhanh chóng, an toàn và rõ ràng.”