Token导航 LogoToken导航TokenDH.com
研究检索需要联网unknown未标认证来源可访问许可证需确认审计未展示

review-pr审查公关

Agent Skill

review-pr 用于查找、检索和筛选相关信息,适合在 Local Agent 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

315

周安装

13

下载量

103
Local Agent

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:review-pr(审查公关)
来源仓库:https://smithery.ai
仓库路径:review-pr
安装命令:
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。当前暂无明确安装命令,请以来源页面说明为准。

简介

用于检索 Pull Request 相关讨论与解决方案。

  • 适合查找相似问题的处理经验与代码片段。
  • 可归纳常见合并冲突与审查要点。review-pr 属于研究检索类 Skill,可作为该场景下的辅助能力补充。
  • 结果来自公开仓库与开发者社区。适用宿主包括 Local Agent,接入前应确认版本、权限和运行环境要求。
  • 安装前建议限制查询频率避免触发限流。

SKILL.md

Review PR

GitHub PR に対して code-reviewer / security-reviewer / typescript-reviewer(TS/JS 変更がある場合のみ)を並列実行し、統合サマリーを提示する。承認があれば Pending Review としてインラインコメントを投稿する。

引数解析 → 差分取得 → 言語判定 → エージェント並列 → 統合サマリー → 確認 → Pending Review 投稿

優先度分類

  • 🔴 Critical — セキュリティ脆弱性、バグ、データロスのリスク
  • 🟡 Warning — コード品質の懸念、潜在的な問題
  • 🟢 Suggestion — 改善提案、スタイル、可読性

引数

$ARGUMENTS

優先順:

  1. PR番号 (^\d+$ / ^#\d+$): gh pr diff <番号>
  2. PR URL (github.com を含む): URL から番号抽出 → gh pr diff
  3. 引数なし: gh pr view --json number --jq '.number' で現ブランチから自動検出

手順

Phase 1: 情報収集

gh pr view <number>
gh pr diff <number>
gh repo view --json nameWithOwner --jq '.nameWithOwner'
gh api repos/{owner}/{repo}/pulls/{number}/comments
gh api repos/{owner}/{repo}/pulls/{number}/reviews

差分が空なら「レビュー対象の差分がありません」と報告して終了する。

差分ファイル一覧に *.ts / *.tsx / *.js / *.jsx / *.mjs / *.cjs が含まれるかで TS/JS 変更の有無 を判定し、Phase 2 の起動対象を決める。

Phase 2: 並列レビュー実行

同一メッセージ内の独立した Agent ツール呼び出しとして並列起動する。各エージェントには PR タイトル・説明・差分・既存コメントを渡す。

  • code-reviewer(常時): 品質・設計・可読性・パフォーマンス・テスト
  • security-reviewer(常時): OWASP Top 10 を含むセキュリティ
  • typescript-reviewer(TS/JS 変更がある場合のみ): 型安全性、非同期の正しさ、Node/Web セキュリティ、イディオマティックなパターン

Phase 3: 統合サマリー

Overview

Summary 1 文(ビジネス/プロダクト背景を含む平易な表現)と Type/Scope/Impact/Size の表を記載する。レビュアーが 5 秒で PR を理解できることを狙う。

Key Changes

ファイルごとに読み物として解説する。レビュアーが差分を開く前に全体像を把握できるようにする。

  • 読み順を決める (一般的には: データ構造/ドメインモデル → コアロジック → 統合/オーケストレーション → UI → テスト)
  • 各ファイルは #### N. 見出しブロック (Markdown のナンバードリストは使わない)

- 見出し: #### N. + 太字バッククォートのファイルパス + (new)/(modified)/(deleted)/(renamed) - 本文: (a) アーキテクチャ上の役割、(b) 本 PR での変更と理由、(c) 前後ファイルとの繋がり、(d) 非自明な設計判断・トレードオフ - 重要なコードスニペットはインラインコメント付きで引用し、Claude Code でのレンダリングのため > ブロッククォートで囲む

  • プロジェクト固有の用語・略語は初出時に短く補足する

Findings

指摘前に以下のフィルタを順番に適用し、通らない指摘は除外する:

  1. 作者の意図 — 周辺コード・コールサイトを読み、合理的な意図があればフラグを立てない
  2. 実行パスの完全検証 — エンドツーエンドで追う。並行性はトランザクション境界とロック取得をすべて辿る
  3. 具体的な影響 — 「理論的にありえる」「一貫性のため」は不十分。現実的な破綻シナリオを説明できなければ立てない
  4. 指摘数の下限なし — 指摘ゼロは良い結果

指摘がない場合は本文に No findings. と書く (空テーブルは描画しない、セクション自体は省略しない)。指摘はテーブル形式 (箇条書き不可)。

各指摘に含める要素:

  • 優先度 (上記「優先度分類」)
  • 出典 (code-reviewer / security-reviewer / typescript-reviewer / 複数併記)
  • ファイル:行 (絶対行番号が取れない場合は file (function_name) にフォールバック)
  • 問題の説明
  • 具体的な修正案

複数エージェントが同一箇所を指摘したら統合し、出典欄にすべて記載する。

集計テーブル:

  • 行は 🔴 Critical / 🟡 Warning / 🟢 Suggestion の 3 行のみ (「計」行なし)
  • 列は 起動したエージェント分のみ (TS/JS 変更がなければ typescript-reviewer 列は出さない)
  • 統合された指摘は各出典列に 1 件ずつ計上し、合計 も 1 件とする (列の単純和ではない)

Phase 4: Pending Review 投稿(オプション)

統合サマリー提示後、ユーザーに投稿対象の指摘番号を尋ねる (例: 1,3,5 / all / skip)。

  • skip → 表示のみで終了
  • それ以外 → 選ばれた指摘を Pending Review のインラインコメントとして投稿
  • submit はユーザーに委ねる (Pending 状態のまま残す)

指摘 → コメントへのマッピング

指摘テーブル 1 行 = 1 インラインコメント。

  • path ← ファイル:行 のファイル部分
  • line元ファイルの絶対行番号 (diff ハンク内の相対位置ではない)

- side: "RIGHT" のとき PR 適用後 (head) の絶対行番号、side: "LEFT" のとき PR 適用前 (base) の絶対行番号 - 絶対行番号が取れない指摘 (file (function_name) フォールバック) はインライン投稿不可。選択肢から除外し、Phase 3 の表には残す

  • side ← 追加/変更行は RIGHT、削除行は LEFT
  • body ← 下記テンプレート: {絵文字} **{優先度}**: {問題の説明} {具体的な修正案}

手順

1. 既存 Pending Review を確認 (自分が作成したもののみ対象):

ME=$(gh api user --jq .login)
gh api repos/{owner}/{repo}/pulls/{PR番号}/reviews \
  --jq ".[] | select(.state == \"PENDING\") | select(.user.login == \"$ME\") | {id, state, user: .user.login}"

2a. Pending Review なし → REST API で新規作成

event フィールドを省略すると pending 状態になる (event: "PENDING" を明示すると 422):

cat <<'PAYLOAD' | gh api repos/{owner}/{repo}/pulls/{PR番号}/reviews --method POST --input -
{
  "comments": [
    {
      "path": "src/example.ts",
      "line": 10,
      "side": "RIGHT",
      "body": "🔴 **Critical**: SQL injection via unsanitized input\n\nUse parameterized queries."
    }
  ]
}
PAYLOAD

2b. Pending Review あり → GraphQL でコメント追加 (REST では既存 pending にコメント追加不可)

Node ID 取得 → コメント追加:

gh api graphql -f query="
{
  repository(owner: \"{owner}\", name: \"{repo}\") {
    pullRequest(number: {PR番号}) {
      reviews(states: PENDING, first: 20) {
        nodes { id state author { login } }
      }
    }
  }
}" --jq ".data.repository.pullRequest.reviews.nodes[] | select(.author.login == \"$ME\")"
cat <<'GQL' | gh api graphql --input -
{
  "query": "mutation($input: AddPullRequestReviewThreadInput!) { addPullRequestReviewThread(input: $input) { thread { id comments(first: 1) { nodes { id body } } } } }",
  "variables": {
    "input": {
      "pullRequestReviewId": "PRR_kwDOxxxxxxx",
      "path": "src/example.ts",
      "line": 10,
      "side": "RIGHT",
      "body": "コメント本文"
    }
  }
}
GQL

エラーハンドリング

シナリオ対応
いずれかのエージェントが失敗残りの結果で続行し、失敗したエージェントを明記する
Pending Review 作成失敗エラー内容を表示し、統合サマリーはユーザーに残す

出力フォーマット

## PR レビューサマリー

### 概要

> パスワードリセット時にリセットトークンの有効期限を検証していなかったため、期限切れのトークンでもリセットが成功してしまう不具合を修正する。

| | |
|---|---|
| **種別** | バグ修正 |
| **スコープ** | 認証機能 — パスワードリセットフロー |
| **影響** | 期限切れのリセットリンクが、これまで通ってしまっていたのを正しくエラーとして返すようになる |
| **規模** | 3 ファイル変更、+45 / -12 行 |

### 主な変更

#### 1. **`src/errors.ts`** (新規)

ここから読む。認証フローの失敗モードを区別するためのカスタムエラークラスとして `TokenExpiredError` を導入。ミドルウェア (#3) で個別捕捉して汎用 500 ではなく 401 を返せるようにする。

> ```ts
> // src/errors.ts:1-6
> export class TokenExpiredError extends Error {
>   constructor(message = "Reset token has expired") {
>     super(message);
>   }
> }
> ```

auth.ts (#2) と middleware.ts (#3) の両方から import される。

#### 2. **`src/auth.ts`** (変更)

(同様の解説 + コードスニペット引用)

#### 3. **`src/middleware.ts`** (変更)

(同様の解説 + コードスニペット引用)

---

### 指摘事項

| # | 優先度 | 出典 | ファイル | 問題 | 推奨対応 |
|---|-------|------|---------|------|---------|
| 1 | 🔴 Critical | security-reviewer, typescript-reviewer | src/auth.ts:42 | サニタイズされていない入力による SQL インジェクション | パラメータ化クエリを使用する |
| 2 | 🟡 Warning | typescript-reviewer | src/api.ts:15 | 非同期呼び出しで未処理の Promise rejection | `await` + try-catch でエラーを伝播させる |
| 3 | 🟢 Suggestion | code-reviewer | src/utils.ts:8 | ロジックの重複 | 共通ヘルパーに抽出する |

### 集計

(TS/JS 変更がある PR の例 — 変更がない場合は `typescript-reviewer` 列を省略する)

| 優先度 | code-reviewer | security-reviewer | typescript-reviewer | 合計 |
|---|---|---|---|---|
| 🔴 Critical | 0 | 1 | 1 | 1 |
| 🟡 Warning | 0 | 0 | 1 | 1 |
| 🟢 Suggestion | 1 | 0 | 0 | 1 |

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Local Agent

71.91%
按下载量换算74

安全审计

暂无安全审计结果可展示。

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills