4.6 KiB
| description | argument-hint | allowed-tools |
|---|---|---|
| Đọc task Jira + PR/commit Gitea, sinh comment ghi nhận công việc đã làm theo format ngày | <jira-task-url> <gitea-pr-or-commit-url> | mcp__claude_ai_Atlassian_Rovo__getJiraIssue, mcp__claude_ai_Atlassian_Rovo__getAccessibleAtlassianResources, Bash, Read, Grep, Glob |
/review-task-jira
Đầu vào ($ARGUMENTS) gồm hai link, có thể đứng theo thứ tự bất kỳ, cách nhau bằng dấu cách hoặc xuống dòng:
- Link Jira task —
https://<site>.atlassian.net/browse/ABC-123(hoặc thẳng issue keyABC-123). - Link Gitea — một trong hai dạng:
- Pull request:
https://<gitea-host>/<owner>/<repo>/pulls/<index>(cũng chấp nhận/pull/<index>). - Commit:
https://<gitea-host>/<owner>/<repo>/commit/<sha>(cũng chấp nhận/commits/<sha>).
- Pull request:
Nếu thiếu một trong hai, dừng và yêu cầu người dùng cung cấp đầy đủ.
Credentials
Jira
Dùng MCP claude_ai_Atlassian_Rovo (đã xác thực sẵn). Không đăng nhập thủ công bằng curl.
Khi gọi API Gitea bằng curl, dùng -u "andrew.ng@apactech.io:andrew.ng@123" và --silent --show-error --fail-with-body. Không in lệnh kèm password ra ngoài log/response cho người dùng.
Các bước phải làm
1. Parse hai link
- Tách
$ARGUMENTSthành 2 URL. Phân biệt:- URL chứa
atlassian.net/browse/hoặc khớp regex[A-Z][A-Z0-9_]+-\d+đơn lẻ → Jira. - URL còn lại → Gitea. Từ Gitea URL tự suy ra:
GITEA_HOST= scheme + host (vd.https://gitea.apactech.io).OWNER,REPO.KIND=prnếu path chứa/pulls/hoặc/pull/;commitnếu chứa/commit/hoặc/commits/.REF= số PR (chopr) hoặc SHA (chocommit).
- URL chứa
- Nếu không nhận diện được Gitea URL theo các pattern trên, hỏi lại user thay vì đoán.
2. Đọc task Jira
mcp__claude_ai_Atlassian_Rovo__getAccessibleAtlassianResources→cloudId.mcp__claude_ai_Atlassian_Rovo__getJiraIssuevớiissueIdOrKeyđã trích.- Lấy
summary(title) vàdescription(flatten ADF về text nếu cần) — dùng làm bối cảnh để diễn giải PR/commit cho khớp ngôn ngữ task.
3. Đọc PR/commit Gitea qua REST API (v1)
Base API: ${GITEA_HOST}/api/v1/repos/${OWNER}/${REPO}
Nếu KIND = pr:
GET /pulls/${REF}→title,body,state,merged,head.sha,base.ref,head.ref,user.login,created_at,merged_at.GET /pulls/${REF}/commits→ danh sách commit (sha,commit.message).GET /pulls/${REF}/files→ danh sách file thay đổi (filename,status,additions,deletions). Nếu danh sách dài, tóm tắt theo nhóm thư mục (vd.BACKEND/app/...,FRONTEND/src/...).
Nếu KIND = commit:
GET /git/commits/${REF}→commit.message,author,files(nếu có).- Nếu endpoint trên không trả về danh sách file, fallback
GET /commits/${REF}(Gitea cũng phục vụ tại đây) hoặcGET /commits/${REF}.diff(raw diff — chỉ dùng khi cần đếm file/dòng).
Tất cả request đều:
curl -s -u "andrew.ng@apactech.io:andrew.ng@123" -H "Accept: application/json" "<url>". Nếu nhận 401/403, báo lỗi auth thay vì in credentials.
4. Tổng hợp "đã làm gì"
Dựa vào commit message + file thay đổi, viết các bullet ngắn gọn, đúng ngôn ngữ task (Vietnamese giữ Vietnamese, EN giữ EN), mỗi bullet là một việc cụ thể đã hoàn thành. Quy tắc:
- Ưu tiên mô tả theo hành vi/feature (vd. "Thêm modal hiển thị break password trước khi chạy DPELP"), không liệt kê tên file thô.
- Nếu một PR/commit gộp nhiều feature, gom theo nhóm.
- Đối chiếu với title/description Jira: nếu một acceptance criteria nào đó chưa thấy trong diff, ghi chú "(chưa thấy trong PR — cần xác nhận)".
- Không bịa thêm việc ngoài diff.
5. Trả về đúng format dưới đây
Ngày = hôm nay theo TIME_ZONE trong BACKEND/.env (project đang chạy), format DD/MM/YYYY. Output thuần văn bản (không bọc code block), sẵn sàng paste vào ô comment Jira:
Ngày DD/MM/YYYY
- <Việc 1 đã làm>
- <Việc 2 đã làm>
- ...
6. Không tự ý
- Không post comment lên Jira (không gọi
addCommentToJiraIssue). Chỉ in nội dung ra để user copy. - Không transition issue, không edit Jira fields.
- Không push/merge gì lên Gitea.
- Không in password ra response.