Skip to content

chore: add Claude settings example file#58

Merged
joshsmithxrm merged 1 commit intomainfrom
chore/standardize-claude-settings
Dec 31, 2025
Merged

chore: add Claude settings example file#58
joshsmithxrm merged 1 commit intomainfrom
chore/standardize-claude-settings

Conversation

@joshsmithxrm
Copy link
Copy Markdown
Owner

Summary

  • Add settings.local.example.json with standardized permissions
  • Move git add/commit/push/checkout/stash to ALLOW for smoother workflow
  • Include dotnet commands and sn (strong name) tool
  • Expand GH CLI read commands, keep only mutators in ASK
  • Deny dotnet nuget push to prevent accidental NuGet publish

Usage

Copy to settings.local.json to use:

cp .claude/settings.local.example.json .claude/settings.local.json

Test Plan

  • Copy example to settings.local.json
  • Verify Claude Code session allows expected commands
  • Verify dotnet nuget push is blocked

- Add settings.local.example.json with standardized permissions
- Move git add/commit/push/checkout/stash to ALLOW
- Include dotnet commands and sn (strong name) tool
- Expand GH CLI read commands, keep mutators in ASK
- Deny dotnet nuget push to prevent accidental NuGet publish
Copilot AI review requested due to automatic review settings December 31, 2025 17:21
@gemini-code-assist
Copy link
Copy Markdown

Summary of Changes

Hello @joshsmithxrm, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request introduces a new example configuration file, "settings.local.example.json", designed to standardize and streamline the permissions for the Claude AI assistant. It refines command access by allowing common development operations, including various Git and .NET commands, while requiring explicit confirmation for potentially destructive actions and outright denying sensitive operations like force pushes and accidental NuGet package publishing.

Highlights

  • New Example Settings File: Introduced "settings.local.example.json" to provide a standardized set of permissions for Claude, ensuring consistent and secure operation.
  • Git Command Permissions: Moved several common Git commands (e.g., "git add", "git commit", "git push", "git checkout", "git stash") from 'ask' to 'allow' for a smoother development workflow.
  • .NET and Strong Name Tool Support: Added permissions for various "dotnet" commands (build, test, pack, restore, clean, run, sln) and the "sn" (strong name) tool, enhancing support for .NET development.
  • GitHub CLI Permissions: Expanded the allowed GitHub CLI read commands (e.g., "gh pr list", "gh issue view") while retaining mutator commands (e.g., "gh pr create", "gh issue close") in the 'ask' category for explicit user confirmation.
  • Prevent Accidental NuGet Publish: Explicitly denied the "dotnet nuget push" command to prevent unintended package publishing, improving security and control.
Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request introduces a settings.local.example.json file, which is a great addition to help users get started with standardized permissions for Claude. The permissions are well-structured into allow, deny, and ask categories, providing a good balance between functionality and safety. My review includes one suggestion to enhance safety by moving several file-modifying commands from the allow list to the ask list. This change would help prevent accidental data loss while still providing a powerful set of default capabilities.

Comment on lines +3 to +95
"allow": [
"Bash(ls:*)",
"Bash(dir:*)",
"Bash(cd:*)",
"Bash(pwd:*)",
"Bash(cat:*)",
"Bash(head:*)",
"Bash(tail:*)",
"Bash(less:*)",
"Bash(more:*)",
"Bash(echo:*)",
"Bash(printf:*)",
"Bash(which:*)",
"Bash(where:*)",
"Bash(grep:*)",
"Bash(rg:*)",
"Bash(find:*)",
"Bash(findstr:*)",
"Bash(awk:*)",
"Bash(sed:*)",
"Bash(sort:*)",
"Bash(uniq:*)",
"Bash(wc:*)",
"Bash(test:*)",
"Bash([:*)",
"Bash(mkdir:*)",
"Bash(touch:*)",
"Bash(cp:*)",
"Bash(copy:*)",
"Bash(mv:*)",
"Bash(move:*)",
"Bash(git status:*)",
"Bash(git diff:*)",
"Bash(git log:*)",
"Bash(git show:*)",
"Bash(git branch:*)",
"Bash(git ls-files:*)",
"Bash(git ls-tree:*)",
"Bash(git rev-parse:*)",
"Bash(git remote:*)",
"Bash(git fetch:*)",
"Bash(git checkout:*)",
"Bash(git add:*)",
"Bash(git commit:*)",
"Bash(git push:*)",
"Bash(git stash:*)",
"Bash(git stash drop:*)",
"Bash(git stash pop:*)",
"Bash(git rm:*)",
"Bash(git mv:*)",
"Bash(git worktree list:*)",
"Bash(git worktree prune:*)",
"Bash(git describe:*)",
"Bash(git tag:*)",
"Bash(git -C:*)",
"Bash(dotnet:*)",
"Bash(dotnet build:*)",
"Bash(dotnet test:*)",
"Bash(dotnet pack:*)",
"Bash(dotnet restore:*)",
"Bash(dotnet clean:*)",
"Bash(dotnet run:*)",
"Bash(dotnet sln:*)",
"Bash(sn:*)",
"Bash(powershell:*)",
"Bash(pwsh:*)",
"Bash(Get-ChildItem:*)",
"Bash(Test-Path:*)",
"Bash(Get-Content:*)",
"Bash(Select-Object:*)",
"Bash(ForEach-Object:*)",
"Bash(Where-Object:*)",
"Bash(Measure-Object:*)",
"Bash(gh pr list:*)",
"Bash(gh pr view:*)",
"Bash(gh pr status:*)",
"Bash(gh pr checkout:*)",
"Bash(gh pr diff:*)",
"Bash(gh api repos/*/pulls/*/comments:*)",
"Bash(gh api repos/*/pulls/*/comments/*:*)",
"Bash(gh issue list:*)",
"Bash(gh issue view:*)",
"Bash(gh issue status:*)",
"Bash(gh repo view:*)",
"Bash(gh repo list:*)",
"Bash(gh run list:*)",
"Bash(gh run view:*)",
"Bash(gh run watch:*)",
"Bash(gh auth status:*)",
"Bash(gh release list:*)",
"Bash(gh release view:*)",
"WebSearch"
],
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

This is a great set of default permissions. However, several commands in the allow list can perform file modification, overwriting, or deletion. To prevent accidental data loss or corruption if the AI makes a mistake, it would be safer to move these to the ask list to require user confirmation.

The commands I recommend moving are:

  • Bash(echo:*) and Bash(printf:*): Can overwrite files using redirection (>).
  • Bash(sed:*) and Bash(awk:*): Can modify files in-place (e.g., sed -i) or write to new files.
  • Bash(cp:*), Bash(copy:*), Bash(mv:*), and Bash(move:*): Can overwrite or move files, which can be destructive.
  • Bash(git rm:*) and Bash(git mv:*): These commands remove files from the working directory. For consistency with rm being in the ask list and for general safety, they should also require confirmation.

Moving these to ask would provide a crucial safety layer for developers using this example configuration.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR adds a Claude settings example file that defines permissions for automated command execution. The configuration organizes bash commands into three categories: allowed (safe read-only and basic operations), denied (dangerous operations), and ask (operations requiring user confirmation).

Key Changes:

  • New settings file with comprehensive permission rules for git, dotnet, GitHub CLI, and shell commands
  • Git workflow commands (add, commit, push, checkout, stash) moved to allow list for smoother automation
  • .NET commands and strong name tool included with deny rule for nuget push
  • GitHub CLI read commands in allow list, mutating operations in ask list

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

"Bash(dotnet test:*)",
"Bash(dotnet pack:*)",
"Bash(dotnet restore:*)",
"Bash(dotnet clean:*)",
Copy link

Copilot AI Dec 31, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The 'git clean' command appears in both the allow list (line 63 as 'dotnet clean') and the deny list (line 99). However, these are actually two different commands: 'dotnet clean' (a safe .NET build cleanup command) and 'git clean' (which can delete untracked files). While they don't technically conflict, this could cause confusion. Consider adding a comment to clarify that 'dotnet clean' is allowed but 'git clean' is denied.

Copilot uses AI. Check for mistakes.
"Bash(git describe:*)",
"Bash(git tag:*)",
"Bash(git -C:*)",
"Bash(dotnet:*)",
Copy link

Copilot AI Dec 31, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The permission 'Bash(dotnet:*)' on line 58 is a catch-all that would allow all dotnet commands, making the more specific dotnet permission entries (lines 59-65) redundant. Additionally, this conflicts with the deny rule for 'dotnet nuget push' on line 100. The catch-all should be removed to ensure that only explicitly allowed dotnet commands can be executed and that the deny rule functions as intended.

Suggested change
"Bash(dotnet:*)",

Copilot uses AI. Check for mistakes.
Comment on lines +81 to +82
"Bash(gh api repos/*/pulls/*/comments:*)",
"Bash(gh api repos/*/pulls/*/comments/*:*)",
Copy link

Copilot AI Dec 31, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The 'gh api' permission appears twice with different scoping. Line 130 has 'Bash(gh api:)' in the ask list (requiring user confirmation), while lines 81-82 have specific 'gh api repos//pulls//comments' patterns in the allow list (permitted without confirmation). The more specific patterns on lines 81-82 would be overridden by the broader 'gh api:' pattern in the ask list, potentially allowing unintended access to other API endpoints. Consider removing the catch-all from the ask list to ensure only the specific comment-reading endpoints are allowed.

Copilot uses AI. Check for mistakes.
Comment on lines +49 to +50
"Bash(git stash drop:*)",
"Bash(git stash pop:*)",
Copy link

Copilot AI Dec 31, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The 'git stash drop' and 'git stash pop' commands are listed separately (lines 49-50) in addition to the general 'git stash' command (line 48). Since 'Bash(git stash:*)' would already match 'git stash drop' and 'git stash pop' due to the wildcard pattern, these specific entries are redundant and can be removed.

Suggested change
"Bash(git stash drop:*)",
"Bash(git stash pop:*)",

Copilot uses AI. Check for mistakes.
Comment on lines +67 to +68
"Bash(powershell:*)",
"Bash(pwsh:*)",
Copy link

Copilot AI Dec 31, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The PowerShell and pwsh permissions (lines 67-68) are catch-all patterns that would allow execution of any PowerShell scripts or commands. This is overly permissive and could allow potentially dangerous operations. Consider either removing these entries or adding specific PowerShell commands that should be allowed, similar to how git and dotnet commands are handled.

Suggested change
"Bash(powershell:*)",
"Bash(pwsh:*)",

Copilot uses AI. Check for mistakes.
@joshsmithxrm joshsmithxrm self-assigned this Dec 31, 2025
@joshsmithxrm joshsmithxrm merged commit 3e0acf4 into main Dec 31, 2025
9 checks passed
@github-project-automation github-project-automation bot moved this from Todo to Done in PPDS Roadmap Dec 31, 2025
@joshsmithxrm joshsmithxrm deleted the chore/standardize-claude-settings branch December 31, 2025 17:33
joshsmithxrm added a commit that referenced this pull request Jan 8, 2026
* chore: migrate project tracking to GitHub Issues

- Create 37 GitHub issues for planned features and tech debt (#58-94)
- Create 8 epic labels for organization (epic:alm, epic:data, etc.)
- Convert accepted tradeoffs to ADRs in docs/adr/ (7 ADRs)
- Delete ROADMAP.md (GitHub Issues is now source of truth)
- Delete migrated docs/future/*.md files (kept design docs)
- Delete docs/technical-debt/ folder (issues + ADRs replace it)
- Update CLAUDE.md references to point to GitHub Issues and docs/adr/

Closes #56

* chore: simplify .claude/ structure for UI shell pattern

Remove agents, skills, examples, and workflow files that were overkill
for a UI shell extension. Keep only panel templates and essential
commands. Cross-repo commands (handoff, retrospective) moved to
workspace level.

Deleted:
- .claude/agents/ (design-architect, code-guardian)
- .claude/skills/ (code-cleanup, code-review-gateway)
- .claude/examples/
- .claude/WORKFLOW.md
- 8 obsolete commands
- 3 obsolete templates

Kept:
- Panel development templates
- prepare-pr, prepare-release, new-panel commands
- TROUBLESHOOTING.md

* chore: rewrite CLAUDE.md for UI shell architecture

* docs: prepare changelog for v0.3.4 release

* chore: bump version to 0.3.4

* docs: fix changelog formatting

* chore: clean up documentation for UI shell architecture

- Remove obsolete Clean Architecture docs (7 files)
- Delete TROUBLESHOOTING.md (obsolete agent references)
- Delete extension DOCUMENTATION_STYLE_GUIDE.md (use parent's)
- Simplify .claude/ commands and templates
- Fix absolute paths (C:\VS\ppds -> relative)
- Update docs/README.md to reflect simplified structure

* chore: remove obsolete docs for UI shell architecture

Delete obsolete documentation:
- Architecture: Clean Architecture patterns (SDK concern now)
- ADRs: Value objects, panel coordinators (obsolete patterns)
- Future: Design docs (use GitHub Issues instead)
- Testing: Domain/application layer guides (overkill for UI shell)
- Folders: quality, requirements, retrospective, work, design

Keep webview patterns and remaining ADRs relevant to extension.

* chore: renumber ADRs and fix broken references

- Renumber: 0004→0002, 0005→0003, 0006→0004, 0007→0005
- Remove references to deleted architecture docs
- Remove deleted .mcp.example.json and test-notebooks

* chore: fix broken references to deleted architecture docs

Removes references to deleted documentation files:
- CLEAN_ARCHITECTURE_GUIDE.md
- PANEL_ARCHITECTURE.md
- TESTING_GUIDE.md
- INTEGRATION_TESTING_GUIDE.md
- CODE_QUALITY_GUIDE.md
- MAPPER_PATTERNS.md

Updated files:
- CONTRIBUTING.md: Simplified testing section, removed broken links
- SECURITY.md: Removed code quality guide reference
- docs/architecture/*.md: Removed deleted pattern references
- Source files: Removed obsolete pattern references in comments

* fix: upgrade engines.vscode and remove broken ADR link

- Upgrade engines.vscode from ^1.74.0 to ^1.107.0 to match @types/vscode
- Remove broken reference to deleted ODATA_DOMAIN_PATTERN.md in ADR-0001
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

2 participants