用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/transcend-io/tools --skill review-comments命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
Interpret Transcend Agent Governance MCP errors that look like policy denials or approval holds. Use when a governed tool call fails with deny, forbidden, unauthorized-for-this-action, require_approval, or similar policy language — or when the user asks why a tool was blocked and what to tell an admin. Do not use for generic network outages, missing servers, or expired OAuth sessions (use verify-governed-connection for those).
Diagnose Transcend Agent Governance MCP connection health: confirm the policy gateway is reachable, list which governed tools are available, and recognise expired or failed browser OAuth sessions. Use when tools are missing, the MCP server shows disconnected, auth fails at connect time, or the user asks whether Agent Governance is wired correctly — not when a listed tool fails with an explicit policy denial (use troubleshoot-policy-denial).
Interactive manual QA of `transcend inventory pull` / `inventory push` against a live test org. Triggers - "manual test push/pull", "manually test pull", "QA inventory sync", "test push for {resource}"
基于 SOC 职业分类
正在显示 SKILL.md
| name | review-comments |
| description | Workflow for efficiently finding and addressing PR review comments from human reviewers |
Created By: Michael Farrell Last Edited: July 8, 2026
| Scenario | Use review-comments? |
|---|---|
| Only PR comments, CI is passing | Yes - read this skill |
| CI is failing (with or without comments) | No - use fix-ci skill (handles both) |
This skill = standalone workflow for PR comments when CI is green fix-ci skill = handles BOTH PR comments (first) AND CI failures
GitHub PR comments come in two different API shapes:
#issuecomment-<id>, fetch it with the issues endpoint: gh api repos/transcend-io/tools/issues/comments/{id}reviewThreads workflow belowDo not expect gh api repos/.../pulls/{PR}/comments to return a top-level #issuecomment-... comment. That endpoint only covers inline review comments.
The REST API (gh api repos/.../pulls/{PR}/comments) does NOT expose resolution status. However, the GraphQL API exposes isResolved on PullRequestReviewThread, which lets you list only unresolved threads.
List all unresolved review threads on a PR:
gh api graphql -f query='
query($owner: String!, $repo: String!, $pr: Int!) {
repository(owner: $owner, name: $repo) {
pullRequest(number: $pr) {
reviewThreads(first: 100) {
nodes {
id
isResolved
isOutdated
path
line
startLine
comments(first: 10) {
nodes {
body
author { login }
createdAt
}
}
}
}
}
}
}' -f owner=transcend-io -f repo=tools -F pr={PR_NUMBER}
Then filter the results to threads where isResolved is false.
If the user says "address this comment" without specifics and you cannot determine the PR number, ask:
"Which specific comment? Can you share a screenshot or paste the comment text?"
When you have the unresolved threads (from the API or user-provided context):
path field) and line numbers (line/startLine fields)background-task/SKILL.md)CRITICAL: After addressing a review comment and pushing the fix, always resolve the conversation thread. This closes out the review thread in the GitHub UI so reviewers can see it's been handled.
gh api graphql -f query='
mutation($threadId: ID!) {
resolveReviewThread(input: { threadId: $threadId }) {
thread { isResolved }
}
}' -f threadId={THREAD_NODE_ID}
The threadId is the id field from the reviewThreads query above (a GraphQL node ID like PRRT_...).
When you've addressed all outstanding comments, resolve them all at once:
# 1. Get all unresolved thread IDs
THREAD_IDS=$(gh api graphql -f query='
query($owner: String!, $repo: String!, $pr: Int!) {
repository(owner: $owner, name: $repo) {
pullRequest(number: $pr) {
reviewThreads(first: 100) {
nodes { id isResolved }
}
}
}
}' -f owner=transcend-io -f repo=tools -F pr={PR_NUMBER} \
--jq '.data.repository.pullRequest.reviewThreads.nodes[] | select(.isResolved == false) | .id')
# 2. Resolve each one
for THREAD_ID in $THREAD_IDS; do
gh api graphql -f query='
mutation($threadId: ID!) {
resolveReviewThread(input: { threadId: $threadId }) {
thread { isResolved }
}
}' -f threadId="$THREAD_ID"
done
| Situation | Action |
|---|---|
| You made the requested code change | Resolve the thread |
| Comment was a question — you replied with an explanation | Resolve the thread |
| Comment requires discussion / you're unsure of the right fix | Do NOT resolve — leave for the reviewer |
| Comment is outdated (code no longer exists) | Resolve the thread |
| Step | Action |
|---|---|
| 1. List unresolved threads | Run the GraphQL query above |
| 2. For each thread | Read the file, understand the comment, make the fix |
| 3. Push the changes | Commit and push to the PR branch |
| 4. Resolve the threads | Run resolveReviewThread for each addressed comment |
| 5. Confirm | Re-run the unresolved threads query to verify none remain |
| User Says | Best Response |
|---|---|
| "Address this comment on PR X" (no details) | Run GraphQL query to list unresolved threads |
| "Address this comment" + screenshot | Extract file/line, make change, resolve thread |
| "Address CI comments on PR X" | Run gh pr checks {PR} to see failing checks |
| "Address review comments" | List unresolved threads → fix → resolve → confirm |