0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Quản lý Dự án GitHub với gh-pm: Công cụ CLI Thông minh

Đăng vào 8 tháng trước

• 5 phút đọc

Chủ đề:

KungFuTech

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:

Copy
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:

Copy
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ư StatusPriority, giúp bạn sử dụng các lệnh ngắn gọn hơn.

Ví dụ:

Copy
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

Copy
# 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:

Copy
# 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

Copy
# 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:

Copy
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ụ

Copy
# 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.

Copy
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ô:

Copy
# Ví dụ: đánh dấu tất cả các vấn đề cũ
gh pm triage stale
Copy
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:

Copy
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:

Copy
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:

Copy
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.”

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào