Claude Skill MartKhám phá skillCâu dùng ngayHọc qua videoDùng terminalSkill là gì?
← Về danh sách

Trình tạo message squash cho PR

Phân tích đúng phần diff thuần giữa base và head của PR để tạo một message squash theo Conventional Commits, rồi xác thực bằng commitlint, cập nhật tiêu đề PR và copy phần mô tả vào clipboard.

Lập trìnhTrung cấp★ 941⑂ 110Điểm AI 9/10Cập nhật lần cuối: 9 thg 10, 2026

Nó làm được gì

  • Tự xác định nhánh base bằng gh (không hardcode main hay develop) và chỉ đọc git diff origin/BASE...HEAD — phần thay đổi thực sự, không kể lịch sử commit trên nhánh.
  • Chọn type (feat/fix/test/docs/chore) theo tác động thực tế tới người dùng của repo, rồi viết header 1 dòng + body (tối đa ~12 dòng, wrap 72 cột) + entry phụ nếu cần + footer (Closes #n, ---------, Co-authored-by).
  • Tự thu thập và loại trùng danh sách co-author từ author/committer của các commit và các trailer có sẵn, không bao giờ bịa danh tính.
  • Ghi message ra file tạm và kiểm tra bằng npx --no-install commitlint --verbose, đồng thời kiểm tra độ dài dòng và độ dài body.
  • Cập nhật tiêu đề PR khớp với header qua gh api PATCH, chỉ copy phần mô tả vào clipboard, và luôn in cả tiêu đề lẫn mô tả trong câu trả lời.
  • Với PR không đáng tin (fork, tác giả ngoài tổ chức), skill sẽ không chạy lệnh từ nhánh mà hỏi trước và báo rõ đã bỏ qua bước nào.

Phù hợp với ai

  • Nhóm dùng Squash merge trên GitHub kèm Conventional Commits và commitlint.
  • Dự án sinh CHANGELOG/phiên bản tự động (release-please), nơi chất lượng message quyết định chất lượng release note.
  • Maintainer muốn chuẩn hoá message squash giữa nhiều người đóng góp.

Ví dụ sử dụng

  1. "Viết message squash cho PR này" → skill phát hiện base là develop, đọc diff và tạo header feat(api): add pagination to search endpoint cùng vài bullet ngắn.
  2. Nhánh có nhiều commit sửa lỗi do chính nó gây ra: những commit này vô hình với base nên không xuất hiện dưới dạng fix.
  3. PR vừa thêm tính năng vừa sửa workflow CI: sau body sẽ có đoạn ci(github): ... riêng để CHANGELOG tách thành hai mục.
  4. Phát hiện file lạ như .env.local lọt vào diff và cảnh báo ngoài message để bạn loại bỏ trước khi merge.

· · · Hướng dẫn cài đặt · · ·

Dùng thử ngay, không cần cài

Dán đoạn dưới vào Claude là dùng được skill này mà không cần cài đặt.

Hãy đọc hướng dẫn trong tệp này và làm theo để giúp mình:
https://raw.githubusercontent.com/scenario-labs/skills/HEAD/.agents/skills/pr-squash-message/SKILL.md

Mình muốn: (viết việc bạn cần ở đây)

Nếu Claude không mở được liên kết, hãy mở liên kết và copy nội dung vào rồi dán.

↓ Thấy hữu ích thì tải ZIP bên dưới và cài. Sau đó skill tự chạy, không phải dán lại mỗi lần.

Cài vào ứng dụng Claude (không cần terminal)
  1. Tải tệp ZIP bằng nút bên dưới.
  2. Trong Claude, mở Settings → Capabilities và bật 'Code execution and file creation'. (chỉ một lần)
  3. Vào Customize → Skills → + → 'Upload a skill' rồi tải tệp ZIP lên.
↓ Tải ZIP
Cài vào Claude Code

Để Claude làm — dán câu dưới đây vào Claude Code

Hãy cài skill mình tìm thấy trên Claude Skill Mart.
Copy thư mục .agents/skills/pr-squash-message từ repo GitHub scenario-labs/skills vào ~/.claude/skills/pr-squash-message/ của mình.
Sau khi cài xong, cho mình biết skill này làm được gì trong một câu.

Cài bằng lệnh thủ công

git clone https://github.com/scenario-labs/skills.git /tmp/sl-skills && mkdir -p ~/.claude/skills && cp -r /tmp/sl-skills/.agents/skills/pr-squash-message ~/.claude/skills/

⚠ Đây là skill do người khác tạo. Hãy kiểm tra repo gốc trước khi cài.

  1. Clone repo: git clone https://github.com/scenario-labs/skills.git /tmp/sl-skills
  2. Tạo thư mục skill: mkdir -p ~/.claude/skills
  3. Copy riêng skill này: cp -r /tmp/sl-skills/.agents/skills/pr-squash-message ~/.claude/skills/
  4. Kiểm tra công cụ bắt buộc: git --version, gh --version (GitHub CLI) và gh auth status để chắc đã đăng nhập.
  5. Kiểm tra repo có cấu hình commitlint (commitlint.config.*); nếu không có thì bước xác thực sẽ bị bỏ qua.
  6. Kiểm tra công cụ clipboard: macOS có pbcopy sẵn; Linux cần wl-copy hoặc xclip.
  7. Khởi động lại Claude Code, checkout nhánh PR và yêu cầu: "tạo message squash cho PR này".