feat: Update DevContainer Claude settings with Elu-co-jp common configurations - #189
Conversation
…gurations Elu-co-jp 配下の全プロジェクトの settings.local.json を分析し、共通設定を抽出してDevContainerイメージに反映しました。 ## 主な変更 ### 追加された許可設定 - **WebFetch**: Supabase, GitHub, npm, Recall.ai, LangChain, n8n, Notion など開発に必要なドメイン - **MCP ツール**: IDE診断、Supabase ツールキット - **開発ツール**: - Node.js/Deno エコシステム (npm, pnpm, npx, deno とそのサブコマンド) - テスト・品質ツール (vitest, playwright, eslint, prettier, husky, complexity-report) - タイムアウト付きコマンド実行 - **バージョン管理**: Git全コマンド、GitHub CLI拡張 - **Supabase**: CLI全般、マイグレーション、関数デプロイ、DB操作 - **インフラ**: Docker, Kubernetes, Helm, Terraform - **クラウドCLI**: AWS, Azure, GCP の各種操作 - **その他**: PostgreSQL, Vercel, wscat, openssl, uv, supervisorctl, act ### セキュリティ強化 - 危険な Supabase コマンドを明示的に拒否: - `npx supabase db push` (本番DBへの直接push防止) - `npx supabase migration squash` (マイグレーション履歴の破壊防止) ### その他 - JSON Schema 追加でエディタ補完をサポート 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
️✅ There are no secrets present in this pull request anymore.If these secrets were true positive and are still valid, we highly recommend you to revoke them. 🦉 GitGuardian detects secrets in your source code to help developers and security teams secure the modern development process. You are seeing this because you or someone else with access to this repository has authorized GitGuardian to scan your pull request. |
|
Warning Rate limit exceeded@keito4 has exceeded the limit for the number of commits that can be reviewed per hour. Please wait 2 minutes and 12 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughThe Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Possibly related PRs
Suggested labels
Poem
Pre-merge checks✅ Passed checks (3 passed)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
PR レビュー: DevContainer Claude 設定の統合総合評価: ✅ 承認(軽微な改善提案あり)このPRは、Elu-co-jp 配下の全プロジェクトから共通設定を抽出し、DevContainer イメージに統合する優れた取り組みです。全体的に品質が高く、セキュリティ配慮も適切です。 ✅ 良い点1. セキュリティ強化の明確化
2. JSON Schema の追加
3. 包括的な開発ツール対応
4. 適切な粒度のパーミッション
|
There was a problem hiding this comment.
Actionable comments posted: 1
📜 Review details
Configuration used: defaults
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.devcontainer/claude-settings.json
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: CR
Repo: keito4/config PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-01T03:45:17.253Z
Learning: Publish DevContainer images to ghcr.io/keito4/config-base with semantic versioning
Learnt from: CR
Repo: keito4/config PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-01T03:45:17.253Z
Learning: Applies to .github/workflows/claude.yml : Trigger automatic AI assistance on claude mentions in issues, PRs, and comments using .github/workflows/claude.yml
Learnt from: CR
Repo: keito4/config PR: 0
File: AGENTS.md:0-0
Timestamp: 2025-12-09T08:39:14.049Z
Learning: Follow development quality standards defined in `CLAUDE.md` when using Claude Code for development assistance
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: claude-review
🔇 Additional comments (8)
.devcontainer/claude-settings.json (8)
2-2: Good addition of JSON Schema for editor support.This enables autocompletion and validation in editors, improving maintainability.
5-18: Domain-specific WebFetch permissions improve security.Restricting WebFetch to specific development and documentation domains is a good security practice compared to allowing all internet access.
19-19: MCP IDE diagnostics integration enabled.This aligns with the PR objective to enable MCP tools for better development experience.
103-109: Timeout restrictions are a good security measure.These prevent long-running or hanging commands from consuming resources indefinitely, which is especially important in a DevContainer environment.
110-110: Verify broad wildcard permissions align with security requirements.Several broad wildcard permissions allow all subcommands for powerful tools:
git:*(line 110) - allows force push, destructive resetsgh:*(line 132) - allows all GitHub operationssupabase:*(line 157) andnpx supabase:*(line 171) - allows most Supabase operations despite specific deniesdocker:*(line 183) - allows system-wide operationskubectl:*(line 188) - allows cluster-wide deletionsterraform:*(line 210) - allows infrastructure destructionaws:*(line 212),gcloud:*(line 233) - allow all cloud operationsWhile this may be intentional for DevContainer flexibility, ensure this aligns with your security posture. Consider whether deny rules cover all critical destructive operations, especially for production environments.
Also applies to: 132-132, 157-157, 171-171, 183-183, 188-188, 210-210, 212-212, 233-233, 250-250
262-267: Deny rules are an excellent security measure.Explicitly denying
npx supabase db pushandnpx supabase migration squashprevents dangerous direct database operations that could bypass proper migration workflows and cause data loss in production.
179-180: Supabase MCP toolkit integration looks safe.These read-only operations (
list_tables,get_project_url) enable useful Supabase integration without exposing destructive operations.
194-195: Verify that destructive operations are acceptable in DevContainer context.Several allowed operations can modify or delete resources:
kubectl delete pods/pod(lines 194-195) - deletes Kubernetes resourceskubectl rollout restart(line 197) - restarts deploymentsterraform apply(line 211) - modifies infrastructureSince the PR summary states "affects all projects that build the DevContainer image," ensure that developers are aware these permissions enable destructive operations even in development environments. Consider whether additional safeguards (e.g., environment checks, confirmation prompts) should be implemented at the project level.
Also applies to: 197-197, 211-211
破壊的なコマンドを明示的に拒否するようdenyリストを拡張しました。 ## 追加された拒否コマンド ### Supabase - `supabase db push` - 本番DBへの直接スキーマ適用 - `supabase migration squash` - マイグレーション履歴の削除 - `supabase migration repair` - マイグレーション履歴の修復 - `supabase db branch delete` - ブランチ削除 ### Git - `git push --force` / `git push -f` - 強制push - `git reset --hard` - ハードリセット ### インフラストラクチャ - `kubectl delete namespace` - Kubernetes namespace削除 - `helm delete` / `helm uninstall --purge` - Helmリリース削除 - `terraform destroy` - インフラ破壊 - `rm -rf /` / `rm -rf /*` - ルートディレクトリ削除 ## 削除 - allowリストから `Bash(npx supabase db push:*)` を削除 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Pull Request レビュー結果このPRを詳細にレビューしました。全体的に品質は高く、セキュリティ設定の統合という目的は達成されていますが、いくつかの改善提案があります。 ✅ 良い点1. セキュリティ強化
2. 構造的改善
3. ドキュメント品質
|
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (7)
.devcontainer/claude-settings.json (7)
87-102: Consider removing redundant npx entries.Line 87
Bash(npx:*)already allows all npx commands, making lines 88-102 redundant. While these specific entries may serve as documentation of commonly used commands, they add maintenance overhead.Consider either:
- Removing the specific entries and relying on the wildcard
- Removing the wildcard and maintaining only the specific allowlist for tighter control
110-131: Consider removing redundant git entries.Line 110
Bash(git:*)already allows all git commands, making lines 111-131 redundant. The deny rules (lines 278-283) will appropriately override for force push and hard reset operations.Consider removing the specific git entries to simplify maintenance, or remove the wildcard for explicit control.
132-156: Consider removing redundant gh entries.Line 132
Bash(gh:*)already allows all GitHub CLI commands, making lines 133-156 redundant.Consider removing the specific entries to reduce maintenance overhead.
157-177: Previous contradiction resolved; consider removing redundant entries.The contradictory
Bash(npx supabase db push:*)entry flagged in the previous review has been correctly removed. Line 173 now containsBash(npx supabase db describe:*).The deny rules (lines 262-277) appropriately block destructive Supabase operations while allowing safe administrative and development commands.
Minor optimization: Lines 157 and 171 contain broad wildcards
Bash(supabase:*)andBash(npx supabase:*)that make subsequent specific entries (lines 158-177) redundant.
187-199: Appropriate kubectl permissions with namespace protection.The deny rules (lines 284-285) appropriately protect against namespace deletion, while allowing scoped pod deletions and other safe operations.
Minor optimization: Line 187
Bash(kubectl:*)makes subsequent specific entries (lines 188-199) redundant.
200-208: Appropriate Helm permissions with purge protection.The deny rules (lines 286-287) appropriately block the deprecated
helm deletecommand and the destructivehelm uninstall --purgevariant, while allowing standardhelm uninstalloperations.Minor optimization: Line 200
Bash(helm:*)makes subsequent specific entries (lines 201-207) redundant.
209-210: Appropriate Terraform permissions with destroy protection.The deny rules (lines 288-289) appropriately protect against
terraform destroyoperations while allowing other Terraform commands including apply.Minor optimization: Line 210 is redundant given line 209
Bash(terraform:*).
📜 Review details
Configuration used: defaults
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.devcontainer/claude-settings.json
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: CR
Repo: keito4/config PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-01T03:45:17.253Z
Learning: Applies to {.codex/**,.devcontainer/codex*,package*.json,npm/global.json} : Use Conventional Commits format with release-triggering types (feat/fix/perf/revert/docs) for commits touching .codex/**, .devcontainer/codex*, package*.json, or npm/global.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: claude-review
🔇 Additional comments (6)
.devcontainer/claude-settings.json (6)
5-18: LGTM!The WebSearch and WebFetch domain allowances appropriately enable Claude to access documentation and resources for the development tools used across Elu-co-jp projects. These are read-only operations that facilitate development assistance.
19-19: LGTM!The MCP IDE diagnostics integration enables Claude to access compiler and linter feedback, improving its ability to provide context-aware assistance.
178-181: LGTM!The Supabase MCP toolkit integrations and PostgreSQL client permissions enable safe database inspection and query operations without allowing destructive actions.
211-259: LGTM!The cloud CLI permissions (AWS, Azure, GCP) appropriately allow read operations and safe configuration commands without enabling destructive actions. The additional development tools (Vercel, wscat, OpenSSL, uv, supervisorctl, act, afplay) are appropriate for the development workflow.
262-289: Strong protection against destructive operations.The deny rules comprehensively block destructive operations across multiple tools:
- Supabase: db push, migration squash/repair, branch deletion
- Git: force push, hard reset
- Kubernetes: namespace deletion
- Helm: deprecated delete command and purge operations
- Terraform: destroy operations
Each rule includes both the base command and wildcard suffix (e.g.,
terraform destroyandterraform destroy:*) for thorough protection.
2-2: Update the schema URL to use the current canonical domain.The schema URL should reference the current domain. While
https://json.schemastore.org/claude-code-settings.jsonworks due to a redirect, the canonical URL ishttps://www.schemastore.org/claude-code-settings.json. Update line 2 to use:"$schema": "https://www.schemastore.org/claude-code-settings.json",This enables the intended editor autocompletion and validation while following the schema store's current best practices.
⛔ Skipped due to learnings
Learnt from: CR Repo: keito4/config PR: 0 File: AGENTS.md:0-0 Timestamp: 2025-12-09T08:39:14.049Z Learning: Follow development quality standards defined in `CLAUDE.md` when using Claude Code for development assistanceLearnt from: CR Repo: keito4/config PR: 0 File: CLAUDE.md:0-0 Timestamp: 2025-12-01T03:45:17.253Z Learning: Applies to .github/workflows/claude.yml : Trigger automatic AI assistance on claude mentions in issues, PRs, and comments using .github/workflows/claude.yml
| "Bash(touch:*)", | ||
| "Bash(cp:*)", | ||
| "Bash(mv:*)", | ||
| "Bash(rm:*)", |
There was a problem hiding this comment.
Expand deny rules to protect against additional destructive rm patterns.
While lines 290-291 deny rm -rf / and rm -rf /*, the broad Bash(rm:*) permission still allows highly destructive patterns such as:
rm -rf .(deletes current directory)rm -rf *(deletes all files in current directory)rm -rf ../*(deletes parent directory contents)
Consider adding explicit deny rules for these patterns to prevent accidental data loss.
🔎 Suggested additional deny rules
Add these entries to the deny array:
"Bash(rm -rf /)",
"Bash(rm -rf /*)"
+ "Bash(rm -rf .)",
+ "Bash(rm -rf *)",
+ "Bash(rm -rf ../*)",
+ "Bash(rm -rf .*)"
],📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| "Bash(rm:*)", | |
| "Bash(rm -rf /)", | |
| "Bash(rm -rf /*)", | |
| "Bash(rm -rf .)", | |
| "Bash(rm -rf *)", | |
| "Bash(rm -rf ../*)", | |
| "Bash(rm -rf .*)" |
🤖 Prompt for AI Agents
In .devcontainer/claude-settings.json around line 31, the current deny rules
block only `rm -rf /` and `rm -rf /*` but still permit dangerous `rm` patterns
via "Bash(rm:*)"; update the deny array to add explicit entries for common
destructive variants such as `rm -rf .`, `rm -rf *`, `rm -rf ./*`, `rm -rf ../*`
(and their quoted/escaped forms as appropriate) so these commands are matched
and blocked; ensure the new deny entries follow the same pattern/format as
existing rules and include both plain and glob/relative variants to cover
typical shells and expansions.
… deny list 追加の破壊的コマンドをdenyリストに追加しました。 ## allowリストから削除 - `Bash(helm uninstall:*)` - Helmリリースのアンインストール - `Bash(supabase db reset:*)` - データベースリセット - `Bash(npx supabase db reset:*)` - データベースリセット (npx経由) - `Bash(supabase functions:*)` - 関数の削除を含む可能性 ## denyリストに追加 - `helm uninstall` - Helmリリースのアンインストール - `supabase db reset` - ローカル/リモートDBのリセット - `npx supabase db reset` - ローカル/リモートDBのリセット (npx経由) - `supabase functions` - Edge Functions の削除を含む可能性 これらのコマンドは本番環境やステージング環境で誤実行されると、 データ損失やサービス停止を引き起こす可能性があるため、明示的に拒否します。 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Pull Request Review: DevContainer Claude Settings 更新総合評価: ✅ Approve with Minor SuggestionsこのPRは Elu-co-jp プロジェクト群の共通設定を抽出し、DevContainer イメージに統合する重要な改善です。全体として高品質で、セキュリティ考慮も適切です。 👍 良い点1. セキュリティ強化が適切
2. 開発ツールの網羅的カバレッジ
3. JSON Schema の追加エディタ補完のサポートにより、今後のメンテナンスが容易に。
|
There was a problem hiding this comment.
Actionable comments posted: 1
♻️ Duplicate comments (1)
.devcontainer/claude-settings.json (1)
31-31: Inadequate deny rules for destructive rm patterns.While lines 294-295 deny
rm -rf /andrm -rf /*, the broadBash(rm:*)permission on line 31 still allows highly destructive patterns such asrm -rf .,rm -rf *, andrm -rf ../*that can cause data loss in the development environment.This concern was previously raised but remains unaddressed.
🔎 Suggested additional deny rules
Add these entries to the
denyarray:"Bash(rm -rf /)", - "Bash(rm -rf /*)" + "Bash(rm -rf /*)", + "Bash(rm -rf .)", + "Bash(rm -rf *)", + "Bash(rm -rf ./*)", + "Bash(rm -rf ../*)", + "Bash(rm -rf .*)"
🧹 Nitpick comments (3)
.devcontainer/claude-settings.json (3)
205-206: Optional: Remove redundant terraform apply entry.Line 206
Bash(terraform apply:*)is redundant since line 205Bash(terraform:*)already permits all terraform commands (except those explicitly denied liketerraform destroyon lines 292-293).🔎 Proposed simplification
"Bash(terraform:*)", - "Bash(terraform apply:*)", "Bash(aws:*)",
280-281: Optional: Consolidate helm uninstall deny rules.Lines 280-281 explicitly deny
helm uninstallandhelm uninstall:*, while lines 290-291 denyhelm delete:*andhelm uninstall --purge:*. Sincehelm deleteandhelm uninstallare aliases, and line 280-281 already covershelm uninstall:*(which includes --purge variants), lines 290-291 are partially redundant.Consider consolidating these for clarity.
🔎 Proposed consolidation
"Bash(helm uninstall)", "Bash(helm uninstall:*)", + "Bash(helm delete)", + "Bash(helm delete:*)", "Bash(supabase db reset)", "Bash(supabase db reset:*)", "Bash(npx supabase db reset)", "Bash(npx supabase db reset:*)", "Bash(supabase functions)", "Bash(supabase functions:*)", "Bash(kubectl delete namespace:*)", "Bash(kubectl delete ns:*)", - "Bash(helm delete:*)", - "Bash(helm uninstall --purge:*)", "Bash(terraform destroy)",Also applies to: 290-291
50-50: Reconsider allowing arbitrary bash execution; however, this may be redundant with other broad permissions.
Bash(bash:*)does permit nested bash execution with arbitrary arguments (bash -c 'command'), which could bypass the granular command restrictions. However, the configuration already allows equally broad permissions forpython3:*,node:*,curl:*,docker:*, and other tools capable of arbitrary code execution. If tightening bash permissions is a goal, consider whether similar restrictions should apply to other broadly-permitted tools, or clarify whether unrestricted access to development tools is intentional for this dev container environment.
📜 Review details
Configuration used: defaults
Review profile: CHILL
Plan: Pro
📒 Files selected for processing (1)
.devcontainer/claude-settings.json
🧰 Additional context used
🧠 Learnings (1)
📓 Common learnings
Learnt from: CR
Repo: keito4/config PR: 0
File: CLAUDE.md:0-0
Timestamp: 2025-12-01T03:45:17.253Z
Learning: Applies to {.codex/**,.devcontainer/codex*,package*.json,npm/global.json} : Use Conventional Commits format with release-triggering types (feat/fix/perf/revert/docs) for commits touching .codex/**, .devcontainer/codex*, package*.json, or npm/global.json
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: claude-review
🔇 Additional comments (2)
.devcontainer/claude-settings.json (2)
2-19: Good additions for developer experience.The JSON schema enables editor autocompletion and validation. The WebSearch/WebFetch domains and MCP diagnostic hook are appropriate for the development workflow described in the PR objectives.
110-156: Git and GitHub CLI permissions follow defense-in-depth pattern.The broad
Bash(git:*)andBash(gh:*)wildcards combined with explicit deny rules (lines 274-279) for force push and hard reset operations provide a good balance between developer flexibility and safety guardrails.
| "Bash(supabase seed:*)", | ||
| "Bash(supabase secrets:*)", | ||
| "Bash(supabase secrets list:*)", | ||
| "Bash(supabase functions serve:*)", |
There was a problem hiding this comment.
Critical conflict: deny rule blocks allowed supabase functions serve.
Line 166 explicitly allows Bash(supabase functions serve:*), but lines 286-287 deny Bash(supabase functions) and Bash(supabase functions:*). The deny pattern Bash(supabase functions:*) will match and block supabase functions serve, preventing the intended functionality.
If supabase functions serve should remain allowed for local development, the deny rules need to be more specific. If all functions operations should be blocked, remove line 166 from the allow list.
🔎 Proposed fix to allow serve while blocking other functions operations
Option 1: Make deny rules more specific (if serve should be allowed)
- "Bash(supabase functions)",
- "Bash(supabase functions:*)",
+ "Bash(supabase functions deploy)",
+ "Bash(supabase functions deploy:*)",
+ "Bash(supabase functions delete)",
+ "Bash(supabase functions delete:*)",Option 2: Remove the allow rule (if no functions operations should be allowed)
"Bash(supabase secrets list:*)",
- "Bash(supabase functions serve:*)",
"Bash(supabase logs:*)",Also applies to: 286-287
🤖 Prompt for AI Agents
.devcontainer/claude-settings.json lines 166 and 286-287: the allow entry at
line 166 permits "Bash(supabase functions serve:*)" but the deny entries at
286-287 include "Bash(supabase functions)" and "Bash(supabase functions:*)",
which will block the intended serve command; to fix, either remove the allow at
line 166 if no functions commands should be permitted, or narrow the deny
patterns so they do not match the serve subcommand (e.g., deny only specific
subcommands like "deploy", "invoke", etc., or use a deny pattern that excludes
"serve"), ensuring the allow for serve remains effective.
Elu-co-jp 配下のプロジェクトから settings.local.json を収集し、 共通設定を抽出して DevContainer 設定に自動更新するコマンドを追加しました。 ## 機能 ### 設定収集 - Elu-co-jp 配下の全リポジトリから settings.local.json を検索 - JSON として解析し、permissions を抽出 - 共通パターンを分析(50%以上のリポジトリで使用) ### 自動更新 - .devcontainer/claude-settings.json を更新 - カテゴリ別にソート(WebFetch, MCP, Bash, Read, Skill) - 破壊的コマンドを deny リストに追加 ### PR 作成(オプション) - --create-pr フラグで自動 PR 作成 - 変更サマリーを含む詳細な PR 説明を生成 ## 使用方法 ```bash # ローカル更新のみ /sync-claude-settings # PR を自動作成 /sync-claude-settings --create-pr # カスタムパスを指定 /sync-claude-settings --base-path /path/to/repos ``` ## 利点 - 手動での設定収集・統合作業を自動化 - 共通設定の一貫性を保証 - 新規プロジェクトへの設定適用が容易 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
PR レビュー結果このPRは Elu-co-jp プロジェクト群の共通設定を DevContainer に統合する重要な改善です。全体的に良好な実装ですが、いくつかの改善点と懸念事項があります。 ✅ 優れている点1. セキュリティ強化
2. 構造化された権限管理
3. ドキュメント整備
|
|
🎉 This PR is included in version 1.14.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
概要
Elu-co-jp 配下の全プロジェクトの
settings.local.jsonを分析し、共通設定を抽出して DevContainer イメージに反映しました。変更内容
追加された許可設定
WebFetch ドメイン
MCP ツール
開発ツール
バージョン管理
git:*)Supabase
インフラストラクチャ
その他
セキュリティ強化
危険な Supabase コマンドを明示的に拒否:
npx supabase db push: 本番DBへの直接push防止npx supabase migration squash: マイグレーション履歴の破壊防止その他の改善
影響範囲
テスト
🤖 Generated with Claude Code
Summary by CodeRabbit
✏️ Tip: You can customize this high-level summary in your review settings.