review
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
Chinese/review Skill (PR Comprehensive Review)
/review 技能(PR全面审查)
Purpose
用途
Next.js 16 + Supabase + Stripe + Playwright コードベースのPRを包括レビューし、
マージ可否を判定する。
针对Next.js 16 + Supabase + Stripe + Playwright技术栈的代码仓库PR进行全面审查,并判定是否可以合并。
Invocation
调用方式
/review [owner/repo] [pr-number] [--focus <aspect>]
/review --local [--focus <aspect>]/review [owner/repo] [pr-number] [--focus <aspect>]
/review --local [--focus <aspect>]引数
参数
| 引数 | 必須 | 説明 |
|---|---|---|
| Yes* | GitHubリポジトリ(例: |
| Yes* | PRの番号 |
| No | ローカルの差分をレビュー(PR作成前のセルフレビュー用) |
| No | 実行するレビュー観点を限定(デフォルト: |
* 指定時は と は不要
--localowner/repopr-number| 参数 | 必填 | 说明 |
|---|---|---|
| 是* | GitHub仓库(示例: |
| 是* | PR编号 |
| 否 | 审查本地代码差异(用于PR创建前的自我审查) |
| 否 | 限定审查的维度(默认值: |
*指定时,和为非必填
--localowner/repopr-number--focus オプション
--focus 选项
| 値 | 実行されるエージェント | ユースケース |
|---|---|---|
| 全5エージェント | 通常のPRレビュー(デフォルト) |
| security-code-reviewer | 認証/認可/Stripe変更時 |
| performance-reviewer | N+1/キャッシュ/PPTX処理変更時 |
| test-coverage-reviewer | テストファイル変更時 |
| documentation-accuracy-reviewer | env/README/CLAUDE.md変更時 |
| code-quality-reviewer | 型定義/API変更時 |
| 值 | 启用的Agent | 使用场景 |
|---|---|---|
| 全部5个Agent | 常规PR审查(默认) |
| security-code-reviewer | 涉及认证/授权/Stripe变更时 |
| performance-reviewer | 涉及N+1查询/缓存/PPTX处理变更时 |
| test-coverage-reviewer | 涉及测试文件变更时 |
| documentation-accuracy-reviewer | 涉及环境配置/README/CLAUDE.md变更时 |
| code-quality-reviewer | 涉及类型定义/API变更时 |
--local オプション(ローカルレビュー)
--local 选项(本地审查)
bash
/review --local [--focus <aspect>]PR作成前にローカルの差分をレビュー:
- ベースブランチを自動検出(下記優先順)
- PRコメント投稿なし(ターミナル出力のみ)
- 全観点レビュー or で限定
--focus
ベースブランチ自動検出(優先順):
- → default branch
git symbolic-ref refs/remotes/origin/HEAD - が存在すれば
mainmain - が存在すれば
mastermaster - が存在すれば
developdevelop - で有効なもの
git merge-base HEAD <candidate>
bash
/review --local [--focus <aspect>]在创建PR前审查本地代码差异:
- 自动检测基准分支(优先级如下)
- 不提交PR评论(仅在终端输出)
- 支持全维度审查或通过限定维度
--focus
基准分支自动检测(优先级):
- → 默认分支
git symbolic-ref refs/remotes/origin/HEAD - 若存在则使用
mainmain - 若存在则使用
mastermaster - 若存在则使用
developdevelop - 通过筛选有效分支
git merge-base HEAD <candidate>
例
示例
bash
undefinedbash
undefined全観点レビュー(デフォルト)
全维度审查(默认)
/review my-org/ppt-trans 123
/review my-org/ppt-trans 123
セキュリティのみ
仅安全维度审查
/review my-org/ppt-trans 123 --focus security
/review my-org/ppt-trans 123 --focus security
パフォーマンスのみ
仅性能维度审查
/review my-org/ppt-trans 123 --focus perf
/review my-org/ppt-trans 123 --focus perf
ローカル差分の全観点レビュー
本地代码差异全维度审查
/review --local
/review --local
ローカル差分のセキュリティレビューのみ
本地代码差异仅安全维度审查
/review --local --focus security
undefined/review --local --focus security
undefinedOutput Contract(必須出力)
输出规范(必填输出)
- Summary(2-4行)
- Checklist Coverage(MUST - 必ず出力):
markdown
### Checklist Coverage (must-check v1.0) | Domain | Status | |--------|--------| | Supabase | ✅ OK / ⚠️ 要確認 / ❌ NG / N/A | | Pipeline | ✅ / ⚠️ / ❌ / N/A | | Env/Secrets | ✅ / ⚠️ / ❌ / N/A | | Tests | ✅ / ⚠️ / ❌ / N/A | | Stripe | ✅ / ⚠️ / ❌ / N/A | - Blockers(各: why + where + fix + Evidence)
- Suggestions(confidence>=75 には Evidence必須)
- Nice-to-have
- Merge decision:
- ✅ Merge
- ⚠️ Merge with follow-ups(follow-up一覧)
- ❌ Needs changes(blockers一覧)
- 摘要(2-4行)
- 检查清单覆盖情况(必填 - 必须输出):
markdown
### 检查清单覆盖情况(必查项 v1.0) | 领域 | 状态 | |--------|--------| | Supabase | ✅ 通过 / ⚠️ 需确认 / ❌ 不通过 / N/A 不涉及 | | 流水线 | ✅ / ⚠️ / ❌ / N/A | | 环境配置/密钥 | ✅ / ⚠️ / ❌ / N/A | | 测试 | ✅ / ⚠️ / ❌ / N/A | | Stripe | ✅ / ⚠️ / ❌ / N/A | - 阻塞问题(每项需包含:原因 + 位置 + 修复方案 + 证据)
- 建议(置信度>=75时必须提供证据)
- 优化点
- 合并决策:
- ✅ 可合并
- ⚠️ 可合并但需后续跟进(列出跟进项)
- ❌ 需要修改(列出阻塞问题)
Evidence ルール(MUST)
证据规则(必填)
confidence >= 75 の指摘には必ず Evidence を付与:
- ファイルパス + 行番号
- 加えて grep/diff の断片、または該当コード引用
例:
markdown
- [confidence=85] RLS policy が無い (supabase/migrations/xxx.sql:15)
Evidence: `grep -n "CREATE POLICY" supabase/migrations/xxx.sql` → 結果なし置信度 >=75 的问题必须附带证据:
- 文件路径 + 行号
- 额外提供 grep/diff片段或对应代码引用
示例:
markdown
- [置信度=85] 缺少RLS策略 (supabase/migrations/xxx.sql:15)
证据: `grep -n "CREATE POLICY" supabase/migrations/xxx.sql` → 无结果Guardrails
约束规则
- 秘密情報(env値、keys、tokens)をログ/コメントに出さない
- Blockersは「実際にバグ/脆弱性/データ損失/課金エラー/flaky CI」を引き起こすものに限定
- 大規模リファクタはfollow-up issueとして提案
- 不得在日志/评论中输出敏感信息(环境变量值、密钥、令牌)
- 阻塞问题仅限定为会实际引发bug/漏洞/数据丢失/计费错误/不稳定CI的内容
- 大规模重构需作为后续Issue提出
Workflow
工作流程
Phase 0: 事前情報収集
阶段0:事前信息收集
-
プロジェクトルール読み込み
- を Read
CLAUDE.md - 抽出項目:
- スタック(Next.js 16, React 19, Supabase, Stripe, Playwright)
- コーディング規約(any禁止、Server Actions優先、Schema-First)
- セキュリティ方針(RLS、Rate Limiting、CSRF)
- テスト方針(UNIFIED_TEST_CONFIG、MVP範囲)
-
レビューチェックリスト読み込み
- を Read
.claude/review-checklists/README.md - を Read
.claude/review-checklists/must-check.md - バージョン(例: )を記録
v1.0
-
PR情報取得
--local オプション時(堅牢なBASE検出):
bash
undefined-
读取项目规则
- 读取
CLAUDE.md - 提取内容:
- 技术栈(Next.js 16, React 19, Supabase, Stripe, Playwright)
- 编码规范(禁止使用any、优先使用Server Actions、Schema-First开发)
- 安全策略(RLS、速率限制、CSRF)
- 测试策略(UNIFIED_TEST_CONFIG、MVP范围)
- 读取
-
读取审查检查清单
- 读取
.claude/review-checklists/README.md - 读取
.claude/review-checklists/must-check.md - 记录版本(示例: )
v1.0
- 读取
-
获取PR信息
指定--local选项时(稳健的基准分支检测):
bash
undefined0) 事前 fetch(失敗しても続行)
0) 预先fetch(失败则继续执行)
git fetch origin --prune --tags >/dev/null 2>&1 || true
git fetch origin --prune --tags >/dev/null 2>&1 || true
ベースブランチ自動検出(ループ式で安全に)
自动检测基准分支(循环式安全检测)
BASE=""
BASE=""
1) origin/HEAD から default branch を取得
1) 从origin/HEAD获取默认分支
if git symbolic-ref -q refs/remotes/origin/HEAD >/dev/null 2>&1; then
BASE="$(git symbolic-ref refs/remotes/origin/HEAD | sed 's|refs/remotes/origin/||')"
fi
if git symbolic-ref -q refs/remotes/origin/HEAD >/dev/null 2>&1; then
BASE="$(git symbolic-ref refs/remotes/origin/HEAD | sed 's|refs/remotes/origin/||')"
fi
2) fallback candidates(main → master → develop)
2) 备选分支(main → master → develop)
if [ -z "$BASE" ]; then
for b in main master develop; do
if git show-ref -q "refs/remotes/origin/$b"; then
BASE="$b"
break
fi
done
fi
if [ -z "$BASE" ]; then
for b in main master develop; do
if git show-ref -q "refs/remotes/origin/$b"; then
BASE="$b"
break
fi
done
fi
3) last resort
3) 最终备选
[ -z "$BASE" ] && BASE="main"
echo "Base branch: $BASE"
[ -z "$BASE" ] && BASE="main"
echo "基准分支: $BASE"
4) 対象ファイル列を先に確定(レビュー負荷軽減)
4) 先确定目标文件列表(减轻审查负载)
CHANGED_FILES=$(git diff --name-only "origin/$BASE...HEAD")
echo "Changed files:"
echo "$CHANGED_FILES"
CHANGED_FILES=$(git diff --name-only "origin/$BASE...HEAD")
echo "变更文件:"
echo "$CHANGED_FILES"
5) 領域判定(docs/ だけなら security/perf を N/A に寄せる等)
5) 领域判定(如仅变更docs/则将security/perf标记为N/A)
if echo "$CHANGED_FILES" | grep -qv '^docs/'; then
コード変更あり → 全観点レビュー
git diff "origin/$BASE...HEAD"
else
docs/ のみ → documentation 観点のみ
echo "Docs-only change detected, focusing on documentation review"
fi
**通常(owner/repo PR#)時:**
```bash
gh pr view <PR_NUMBER> --repo <REPO> --json title,body,author,labels,files,additions,deletions,url
gh pr diff <PR_NUMBER> --repo <REPO>- PR要約作成
- 変更目的(1-2行)
- 影響範囲(UI/API/DB/Billing/Auth/PPTX/E2E)
- リスクフラグ(スキーマ変更、認証変更、課金変更、ファイル処理)
if echo "$CHANGED_FILES" | grep -qv '^docs/'; then
存在代码变更 → 全维度审查
git diff "origin/$BASE...HEAD"
else
仅docs/变更 → 仅审查文档维度
echo "检测到仅文档变更,将聚焦文档审查"
fi
**常规模式(owner/repo PR#)时:**
```bash
gh pr view <PR_NUMBER> --repo <REPO> --json title,body,author,labels,files,additions,deletions,url
gh pr diff <PR_NUMBER> --repo <REPO>- 生成PR摘要
- 变更目的(1-2行)
- 影响范围(UI/API/数据库/计费/认证/PPTX/端到端测试)
- 风险标记( schema变更、认证变更、计费变更、文件处理变更)
Phase 1: エージェント並列実行
阶段1:Agent并行执行
--focus オプションに応じてエージェントを選択:
| --focus | 実行エージェント |
|---|---|
| 全5エージェント並列 |
| security-code-reviewer のみ |
| performance-reviewer のみ |
| test-coverage-reviewer のみ |
| documentation-accuracy-reviewer のみ |
| code-quality-reviewer のみ |
全エージェント一覧:
| エージェント | subagent_type | 責務 |
|---|---|---|
| code-quality-reviewer | code-quality-reviewer | コード品質・設計・型安全 |
| performance-reviewer | performance-reviewer | パフォーマンス・N+1・キャッシュ |
| security-code-reviewer | security-code-reviewer | RLS・Webhook・IDOR・XSS |
| test-coverage-reviewer | test-coverage-reviewer | Playwright決定論・モック・カバレッジ |
| documentation-accuracy-reviewer | documentation-accuracy-reviewer | env・手順・文言の整合性 |
実装時の注意:
- または未指定の場合、全5エージェントを 並列で Task実行
--focus all - 指定時、該当エージェントのみ実行
--focus <aspect>
各エージェントへのプロンプト共通部分:
undefined根据--focus选项选择Agent:
| --focus值 | 执行的Agent |
|---|---|
| 全部5个Agent并行执行 |
| 仅security-code-reviewer |
| 仅performance-reviewer |
| 仅test-coverage-reviewer |
| 仅documentation-accuracy-reviewer |
| 仅code-quality-reviewer |
全部Agent列表:
| Agent | subagent_type | 职责 |
|---|---|---|
| code-quality-reviewer | code-quality-reviewer | 代码质量、设计、类型安全 |
| performance-reviewer | performance-reviewer | 性能、N+1查询、缓存 |
| security-code-reviewer | security-code-reviewer | RLS、Webhook、IDOR、XSS |
| test-coverage-reviewer | test-coverage-reviewer | Playwright用例稳定性、Mock、覆盖率 |
| documentation-accuracy-reviewer | documentation-accuracy-reviewer | 环境配置、步骤、文案一致性 |
实现注意事项:
- 当或未指定时,并行执行全部5个Agent任务
--focus all - 当指定时,仅执行对应Agent
--focus <aspect>
各Agent的通用提示词部分:
undefinedコンテキスト
上下文
- スタック: Next.js 16 + React 19 + TypeScript + Supabase + Stripe + Playwright
- プロジェクトルール: [CLAUDE.md要約]
- PR要約: [Phase 0の要約]
- 変更ファイル: [ファイル一覧]
- 技术栈: Next.js 16 + React 19 + TypeScript + Supabase + Stripe + Playwright
- 项目规则: [CLAUDE.md摘要]
- PR摘要: [阶段0生成的摘要]
- 变更文件: [文件列表]
重点チェック(ppt-trans固有)
重点检查项(ppt-trans项目专属)
- Next.js 16: params: Promise<T> の正しい実装
- Server Actions vs API Routes の使い分け
- Schema-First開発(openapi.yaml先行)
- Supabase RLS、snake_case型、型再生成
- E2E: UNIFIED_TEST_CONFIG参照、ハードコード禁止
undefined- Next.js 16: params: Promise<T> 的正确实现
- Server Actions与API Routes的合理区分
- Schema-First开发(openapi.yaml优先)
- Supabase RLS、snake_case类型、类型重新生成
- 端到端测试: 必须引用UNIFIED_TEST_CONFIG、禁止硬编码
undefinedPhase 2: 自動チェック(推奨)
阶段2:自动检查(推荐)
実行可能なら以下を実行し、結果をレビュー本文に記載:
bash
npm run type-check # 型チェック
npm run lint # リント
npm run test # 影響範囲のテスト結果形式:
- ✅成功
- ❌失敗(エラー内容)
- ⏭️未実行(理由)
若可执行则运行以下命令,并将结果纳入审查正文:
bash
npm run type-check # 类型检查
npm run lint # 代码扫描
npm run test # 影响范围测试结果格式:
- ✅成功
- ❌失败(错误内容)
- ⏭️未执行(原因)
Phase 2.5: セキュリティゲート自動検出(3本)
阶段2.5:安全网关自动检测(3项)
PR差分に含まれるファイルに対して以下を自動実行する。grepベースで検出可能なもののみ。
针对PR差异中的文件自动执行以下检查,仅检测可通过grep识别的内容。
Gate 1: performSecurityChecks() 呼び出し漏れ
网关1:遗漏performSecurityChecks()调用
bash
undefinedbash
undefinedPR差分のAPI Routeファイルで performSecurityChecks を呼んでいないものを検出
检测PR差异中的API Route文件是否未调用performSecurityChecks
allowlist: webhook(自前署名検証), health, test endpoints
白名单: webhook(自定义签名验证)、health、测试端点
for f in $(git diff --name-only "origin/$BASE...HEAD" | grep 'src/app/api/./route.ts'); do
if ! grep -q "performSecurityChecks" "$f"; then
basename_dir=$(dirname "$f" | sed 's|src/app/api/||')
# allowlist check
case "$basename_dir" in
stripe/webhook|health|test/) continue ;;
*) echo "MISSING performSecurityChecks: $f" ;;
esac
fi
done
**出力**: 漏れがあれば Blocker として報告(confidence=90)for f in $(git diff --name-only "origin/$BASE...HEAD" | grep 'src/app/api/./route.ts'); do
if ! grep -q "performSecurityChecks" "$f"; then
basename_dir=$(dirname "$f" | sed 's|src/app/api/||')
# 白名单检查
case "$basename_dir" in
stripe/webhook|health|test/) continue ;;
*) echo "缺少performSecurityChecks: $f" ;;
esac
fi
done
**输出**: 若存在遗漏则作为阻塞问题报告(置信度=90)Gate 2: 新テーブル RLS policy 存在確認
网关2:新表RLS策略存在性检查
bash
undefinedbash
undefinedPR差分のマイグレーションで CREATE TABLE があるのに CREATE POLICY がないものを検出
检测PR差异中的迁移文件是否创建了表但未添加RLS策略
for f in $(git diff --name-only "origin/$BASE...HEAD" | grep 'supabase/migrations/.*.sql'); do
tables=$(grep -oP 'CREATE TABLE (?:IF NOT EXISTS )?(?:public.)?\K\w+' "$f" 2>/dev/null)
for t in $tables; do
if ! grep -q "CREATE POLICY.ON.$t" "$f"; then
echo "MISSING RLS: table=$t in $f"
fi
done
done
**出力**: 漏れがあれば Blocker として報告(confidence=95)for f in $(git diff --name-only "origin/$BASE...HEAD" | grep 'supabase/migrations/.*.sql'); do
tables=$(grep -oP 'CREATE TABLE (?:IF NOT EXISTS )?(?:public.)?\K\w+' "$f" 2>/dev/null)
for t in $tables; do
if ! grep -q "CREATE POLICY.ON.$t" "$f"; then
echo "缺少RLS策略: 表=$t 文件=$f"
fi
done
done
**输出**: 若存在遗漏则作为阻塞问题报告(置信度=95)Gate 3: SecurityMonitor.logEvent() 未導入検出
网关3:未引入SecurityMonitor.logEvent()检测
bash
undefinedbash
undefinedPR差分でセキュリティ関連コードパス(reject/error/401/403)があるのにlogEventがないファイルを検出
检测PR差异中包含安全相关代码路径(reject/error/401/403)但未添加logEvent的文件
for f in $(git diff --name-only "origin/$BASE...HEAD" | grep -E '.(ts|tsx)$'); do
セキュリティ判定コード(403/401返却, reject, unauthorized)を含むか
if grep -qE '(status.*40[13]|"unauthorized"|"forbidden"|rejectWith|createErrorResponse.*40)' "$f"; then
if ! grep -q "logEvent|SecurityMonitor" "$f"; then
echo "MISSING SecurityMonitor: $f"
fi
fi
done
**出力**: 漏れがあれば Suggestion として報告(confidence=75)for f in $(git diff --name-only "origin/$BASE...HEAD" | grep -E '.(ts|tsx)$'); do
判断是否包含安全相关代码(返回403/401、reject、unauthorized)
if grep -qE '(status.*40[13]|"unauthorized"|"forbidden"|rejectWith|createErrorResponse.*40)' "$f"; then
if ! grep -q "logEvent|SecurityMonitor" "$f"; then
echo "缺少SecurityMonitor: $f"
fi
fi
done
**输出**: 若存在遗漏则作为建议报告(置信度=75)Phase 3: フィードバック統合(review-aggregator使用)
阶段3:反馈整合(使用review-aggregator)
review-aggregator エージェント()を呼び出し、
各reviewerの出力を統合する。
.claude/agents/review-aggregator.mdaggregatorの処理:
- パース: 各reviewer出力から タグを抽出
[confidence=XX] - フィルタリング:
- Blockers: 全て残す(confidence<60 は「⚠️ 要確認」ラベル)
- Important: confidence>=70 のみ(<70 は「要確認」に降格)
- Suggestions: confidence>=80 のみ(<80 は省略)
- 重複排除: 同一 file:line の指摘をマージ、最高confidence採用
- Merge Decision判定:
- Blockers 0件 → ✅ Merge
- Blockers 全て「要確認」かつ<=2件 → ⚠️ Merge with follow-ups
- Blockers に confidence>=60 が1件以上 → ❌ Needs changes
入力フォーマット: 各reviewerは統一フォーマットで出力( 参照)
.claude/docs/reviewer-output-format.md调用review-aggregator Agent(),整合各审查者的输出。
.claude/agents/review-aggregator.md聚合器处理流程:
- 解析: 从各审查者输出中提取标记
[confidence=XX] - 筛选:
- 阻塞问题: 全部保留(置信度<60标记为「⚠️ 需确认」)
- 重要问题: 仅保留置信度>=70的内容(<70降级为「需确认」)
- 建议: 仅保留置信度>=80的内容(<80则省略)
- 去重: 合并同一file:line的问题,采用最高置信度
- 合并决策判定:
- 无阻塞问题 → ✅ 可合并
- 阻塞问题均为「需确认」且数量<=2 → ⚠️ 可合并但需后续跟进
- 存在置信度>=60的阻塞问题 → ❌ 需要修改
输入格式: 各审查者需以统一格式输出(参考)
.claude/docs/reviewer-output-format.mdPhase 4: PR投稿
阶段4:PR评论提交
Top-level comment(必須):
bash
gh pr comment <PR_NUMBER> --repo <REPO> --body "$(cat <<'EOF'顶层评论(必填):
bash
gh pr comment <PR_NUMBER> --repo <REPO> --body "$(cat <<'EOF'Code Review Summary
代码审查摘要
Summary
摘要
[2-4行の要約]
[2-4行的摘要]
Checklist Coverage (must-check v1.0)
检查清单覆盖情况(必查项 v1.0)
| Domain | Status |
|---|---|
| Supabase | ✅ / ⚠️ / ❌ / N/A |
| Pipeline | ✅ / ⚠️ / ❌ / N/A |
| Env/Secrets | ✅ / ⚠️ / ❌ / N/A |
| Tests | ✅ / ⚠️ / ❌ / N/A |
| Stripe | ✅ / ⚠️ / ❌ / N/A |
| 领域 | 状态 |
|---|---|
| Supabase | ✅ / ⚠️ / ❌ / N/A |
| 流水线 | ✅ / ⚠️ / ❌ / N/A |
| 环境配置/密钥 | ✅ / ⚠️ / ❌ / N/A |
| 测试 | ✅ / ⚠️ / ❌ / N/A |
| Stripe | ✅ / ⚠️ / ❌ / N/A |
🔴 Blockers
🔴 阻塞问题
- [なければ「なし」]
- 无(若不存在)
🟡 Suggestions
🟡 建议
- [confidence>=75 には Evidence 必須]
- 置信度>=75时必须提供证据
🟢 Nice-to-have
🟢 优化点
- [箇条書き]
- 列表形式
Automated Checks
自动检查结果
- Type check: [✅/❌/⏭️]
- Lint: [✅/❌/⏭️]
- Tests: [✅/❌/⏭️]
- 类型检查: [✅/❌/⏭️]
- 代码扫描: [✅/❌/⏭️]
- 测试: [✅/❌/⏭️]
Merge Decision
合并决策
[✅/⚠️/❌ + 理由]
🤖 Reviewed by Claude Code (5-domain parallel review)
EOF
)"
**Inline comment(選択的):**
- 特定ファイル・行に明確にアンカーできる場合のみ
- スパム回避のため最小限に[✅/⚠️/❌ + 理由]
🤖 由Claude Code审查(5领域并行审查)
EOF
)"
**行内评论(可选):**
- 仅当可明确锚定到特定文件和行时使用
- 为避免垃圾评论,需尽量精简機械処理可能な出力(末尾YAMLブロック)
机器可读输出(末尾YAML块)
レビュー結果の末尾に以下のYAMLブロックを必ず追加(1個だけのYAMLフェンス、ネスト禁止):
yaml
review_meta:
checklist_version: "v1.0"
domains_ran: ["code-quality","security","performance","test-coverage","documentation"]
blockers_count: 0
important_count: 2
suggestions_count: 5
confidence_max: 85
merge_decision: "merge" # merge | merge_with_followups | needs_changesフッター:
🤖 Reviewed by Claude Code (ppt-trans 5-domain review)--local オプション時:
- PRコメント投稿なし(ターミナル出力のみ)
- ファイルへの保存も可能(GitHub Actions用)
review_output.md
必须在审查结果末尾添加以下YAML块(仅一个YAML块,禁止嵌套):
yaml
review_meta:
checklist_version: "v1.0"
domains_ran: ["code-quality","security","performance","test-coverage","documentation"]
blockers_count: 0
important_count: 2
suggestions_count: 5
confidence_max: 85
merge_decision: "merge" # merge | merge_with_followups | needs_changes页脚:
🤖 由Claude Code审查(ppt-trans项目5领域审查)指定--local选项时:
- 不提交PR评论(仅在终端输出)
- 可保存到文件(供GitHub Actions使用)
review_output.md
Agent Prompt Templates
Agent提示词模板
code-quality-reviewer prompt
code-quality-reviewer提示词
このPRのコード品質をレビューしてください。
Context:
- Stack: Next.js 16 + React 19 + TypeScript + Supabase + Stripe + Playwright
- Rules: [CLAUDE.md summary]
- PR Map: [short PR map]
- Files: [changed file list]
ppt-trans固有のチェック:
- Next.js 16: params: Promise<T> → await params
- Server Actions優先(API RoutesはWebhook/SSE/バイナリのみ)
- Schema-First開発(openapi.yaml → generate:types → 実装)
- any禁止、!禁止、@/*エイリアス必須
Output format:
Summary / Blockers / Suggestions / Nice-to-have请审查此PR的代码质量。
上下文:
- 技术栈: Next.js 16 + React 19 + TypeScript + Supabase + Stripe + Playwright
- 规则: [CLAUDE.md摘要]
- PR概览: [简短PR概览]
- 文件: [变更文件列表]
ppt-trans项目专属检查项:
- Next.js 16: params: Promise<T> → 需使用await params
- 优先使用Server Actions(API Routes仅用于Webhook/SSE/二进制处理)
- Schema-First开发(openapi.yaml → generate:types → 实现)
- 禁止使用any、!,必须使用@/*别名
输出格式:
摘要 / 阻塞问题 / 建议 / 优化点performance-reviewer prompt
performance-reviewer提示词
このPRのパフォーマンスリスクをレビューしてください。
Context:
- Stack: Next.js 16 + React 19 + TypeScript + Supabase + Stripe + Playwright
- Rules: [CLAUDE.md summary]
- PR Map: [short PR map]
- Files: [changed file list]
ppt-trans固有のチェック:
- N+1クエリ、不要なSELECT
- PPTX処理の同期ブロック、プレビューキャッシュ
- Python subprocess呼び出しの効率
Output format:
Summary / Hotspots / Recommendations请审查此PR的性能风险。
上下文:
- 技术栈: Next.js 16 + React 19 + TypeScript + Supabase + Stripe + Playwright
- 规则: [CLAUDE.md摘要]
- PR概览: [简短PR概览]
- 文件: [变更文件列表]
ppt-trans项目专属检查项:
- N+1查询、不必要的SELECT语句
- PPTX处理的同步阻塞、预览缓存
- Python子进程调用效率
输出格式:
摘要 / 热点问题 / 建议security-code-reviewer prompt
security-code-reviewer提示词
このPRのセキュリティ問題をレビューしてください。
Context:
- Stack: Next.js 16 + React 19 + TypeScript + Supabase + Stripe + Playwright
- Rules: [CLAUDE.md summary]
- PR Map: [short PR map]
- Files: [changed file list]
ppt-trans固有のチェック:
- Supabase RLS有効確認、Service Role Key漏えい
- Stripe Webhook署名検証、冪等性(stripe_events)
- Rate Limiting: 認証10/15min、翻訳50/hour、アップロード20/hour
Output format:
Summary / Blockers / Findings / Follow-ups请审查此PR的安全问题。
上下文:
- 技术栈: Next.js 16 + React 19 + TypeScript + Supabase + Stripe + Playwright
- 规则: [CLAUDE.md摘要]
- PR概览: [简短PR概览]
- 文件: [变更文件列表]
ppt-trans项目专属检查项:
- Supabase RLS启用确认、Service Role Key泄露检查
- Stripe Webhook签名验证、幂等性(stripe_events)
- 速率限制: 认证10次/15分钟、翻译50次/小时、上传20次/小时
输出格式:
摘要 / 阻塞问题 / 发现的问题 / 后续跟进项test-coverage-reviewer prompt
test-coverage-reviewer提示词
このPRのテスト(unit/E2E)をレビューしてください。
Context:
- Stack: Next.js 16 + React 19 + TypeScript + Supabase + Stripe + Playwright
- Rules: [CLAUDE.md summary]
- PR Map: [short PR map]
- Files: [changed file list]
ppt-trans固有のチェック:
- UNIFIED_TEST_CONFIG参照必須(ハードコード禁止)
- 認証状態パス: .auth/user.json
- /api/auth/loginは存在しない(ナビゲーション待機を使用)
Output format:
Summary / Flaky risks / Missing scenarios / Improvements请审查此PR的测试(单元/端到端)。
上下文:
- 技术栈: Next.js 16 + React 19 + TypeScript + Supabase + Stripe + Playwright
- 规则: [CLAUDE.md摘要]
- PR概览: [简短PR概览]
- 文件: [变更文件列表]
ppt-trans项目专属检查项:
- 必须引用UNIFIED_TEST_CONFIG(禁止硬编码)
- 认证状态路径: .auth/user.json
- /api/auth/login不存在(需使用导航等待)
输出格式:
摘要 / 不稳定风险 / 缺失场景 / 改进建议documentation-accuracy-reviewer prompt
documentation-accuracy-reviewer提示词
このPRのドキュメント整合性をレビューしてください。
Context:
- Stack: Next.js 16 + React 19 + TypeScript + Supabase + Stripe + Playwright
- Rules: [CLAUDE.md summary]
- PR Map: [short PR map]
- Files: [changed file list]
ppt-trans固有のチェック:
- .env.example / READMEのenv一覧が最新か
- Schema-First: openapi.yaml更新、generate:types実行
- CLAUDE.md / .claude/rules/ との整合
Output format:
Summary / Docs to update / Inconsistencies / Proposed edits请审查此PR的文档一致性。
上下文:
- 技术栈: Next.js 16 + React 19 + TypeScript + Supabase + Stripe + Playwright
- 规则: [CLAUDE.md摘要]
- PR概览: [简短PR概览]
- 文件: [变更文件列表]
ppt-trans项目专属检查项:
- .env.example / README中的环境变量列表是否为最新
- Schema-First: openapi.yaml是否更新、是否执行generate:types
- 与CLAUDE.md / .claude/rules/ 的一致性
输出格式:
摘要 / 需要更新的文档 / 不一致内容 / 建议修改方案注意事項
注意事项
-
Phase 2の自動チェック結果をレビュー本文に記載
- 成功/失敗/未実行を明示
-
Merge with follow-upsのfollow-upはIssue化前提の粒度
- 例: "RLSテスト追加", "429復帰のE2E安定化"
-
Inlineコメントは差分にアンカーできる時だけ
- スパム回避、top-levelコメントに集約
-
gh CLI前提
- がインストール・認証されている必要あり
gh
-
需将阶段2的自动检查结果纳入审查正文
- 明确标注成功/失败/未执行
-
Merge with follow-ups的跟进项需以可创建Issue的粒度为准
- 示例: "添加RLS测试", "429错误恢复的端到端测试稳定性优化"
-
仅当可锚定到差异时使用行内评论
- 避免垃圾评论,尽量集中到顶层评论
-
依赖gh CLI
- 需已安装并认证工具
gh
- 需已安装并认证