claude-settings-audit

# Analyser les paramètres Claude Code recommandés Analysez un référentiel pour générer les permissions recommandées du fichier `settings.json` de Claude Code. À utiliser lors de la configuration d'un nouveau projet, de l'audit des paramètres existants, ou de la détermination des commandes bash en lecture seule à autoriser. Détecte la pile technologique, les outils de build et la structure monorepo.

npx skills add https://github.com/getsentry/skills --skill claude-settings-audit

Audit des paramètres Claude

Analysez ce référentiel et générez les permissions settings.json de Claude Code recommandées pour les commandes en lecture seule.

Phase 1 : Détection de la pile technologique

Exécutez ces commandes pour détecter la structure du référentiel :

ls -la
find . -maxdepth 2 \( -name "*.toml" -o -name "*.json" -o -name "*.lock" -o -name "*.yaml" -o -name "*.yml" -o -name "Makefile" -o -name "Dockerfile" -o -name "*.tf" \) 2>/dev/null | head -50

Vérifiez ces fichiers indicateurs :

Catégorie Fichiers à vérifier
Python pyproject.toml, setup.py, requirements.txt, Pipfile, poetry.lock, uv.lock
Node.js package.json, package-lock.json, yarn.lock, pnpm-lock.yaml
Go go.mod, go.sum
Rust Cargo.toml, Cargo.lock
Ruby Gemfile, Gemfile.lock
Java pom.xml, build.gradle, build.gradle.kts
Build Makefile, Dockerfile, docker-compose.yml
Infra fichiers *.tf, kubernetes/, helm/
Monorepo lerna.json, nx.json, turbo.json, pnpm-workspace.yaml

Phase 2 : Détection des services

Vérifiez les intégrations de services :

Service Détection
Sentry sentry-sdk dans les dépendances, packages @sentry/*, .sentryclirc, sentry.properties
Linear fichiers de configuration Linear, répertoire .linear/

Lisez les fichiers de dépendances pour identifier les frameworks :

  • package.json → vérifiez dependencies et devDependencies
  • pyproject.toml → vérifiez [project.dependencies] ou [tool.poetry.dependencies]
  • Gemfile → vérifiez les noms de gem
  • Cargo.toml → vérifiez [dependencies]

Phase 3 : Vérifiez les paramètres existants

cat .claude/settings.json 2>/dev/null || echo "No existing settings"

Phase 4 : Générez les recommandations

Construisez la liste d'autorisation en combinant :

Commandes de base (À toujours inclure)

[
  "Bash(ls:*)",
  "Bash(pwd:*)",
  "Bash(find:*)",
  "Bash(file:*)",
  "Bash(stat:*)",
  "Bash(wc:*)",
  "Bash(head:*)",
  "Bash(tail:*)",
  "Bash(cat:*)",
  "Bash(tree:*)",
  "Bash(git status:*)",
  "Bash(git log:*)",
  "Bash(git diff:*)",
  "Bash(git show:*)",
  "Bash(git branch:*)",
  "Bash(git remote:*)",
  "Bash(git tag:*)",
  "Bash(git stash list:*)",
  "Bash(git rev-parse:*)",
  "Bash(gh pr view:*)",
  "Bash(gh pr list:*)",
  "Bash(gh pr checks:*)",
  "Bash(gh pr diff:*)",
  "Bash(gh issue view:*)",
  "Bash(gh issue list:*)",
  "Bash(gh run view:*)",
  "Bash(gh run list:*)",
  "Bash(gh run logs:*)",
  "Bash(gh repo view:*)",
  "Bash(gh api:*)"
]

Commandes spécifiques à la pile

Incluez uniquement les commandes pour les outils réellement détectés dans le projet.

Python (si des fichiers ou configurations Python sont détectés)

Si détecté Ajoutez ces commandes
N'importe quel Python python --version, python3 --version
poetry.lock poetry show, poetry env info
uv.lock uv pip list, uv tree
Pipfile.lock pipenv graph
requirements.txt (sans autre verrou) pip list, pip show, pip freeze

Node.js (si package.json est détecté)

Si détecté Ajoutez ces commandes
N'importe quel Node.js node --version
pnpm-lock.yaml pnpm list, pnpm why
yarn.lock yarn list, yarn info, yarn why
package-lock.json npm list, npm view, npm outdated
TypeScript (tsconfig.json) tsc --version

Autres langages

Si détecté Ajoutez ces commandes
go.mod go version, go list, go mod graph, go env
Cargo.toml rustc --version, cargo --version, cargo tree, cargo metadata
Gemfile ruby --version, bundle list, bundle show
pom.xml java --version, mvn --version, mvn dependency:tree
build.gradle java --version, gradle --version, gradle dependencies

Outils de build

Si détecté Ajoutez ces commandes
Dockerfile docker --version, docker ps, docker images
docker-compose.yml docker-compose ps, docker-compose config
fichiers *.tf terraform --version, terraform providers, terraform state list
Makefile make --version, make -n

Skills (pour les projets Sentry)

Si c'est un projet Sentry (ou le plugin sentry-skills est installé), incluez :

[
  "Skill(sentry-skills:agents-md)",
  "Skill(sentry-skills:blog-writing-guide)",
  "Skill(sentry-skills:brand-guidelines)",
  "Skill(sentry-skills:claude-settings-audit)",
  "Skill(sentry-skills:code-review)",
  "Skill(sentry-skills:code-simplifier)",
  "Skill(sentry-skills:commit)",
  "Skill(sentry-skills:create-branch)",
  "Skill(sentry-skills:django-access-review)",
  "Skill(sentry-skills:django-perf-review)",
  "Skill(sentry-skills:doc-coauthoring)",
  "Skill(sentry-skills:find-bugs)",
  "Skill(sentry-skills:gh-review-requests)",
  "Skill(sentry-skills:gha-security-review)",
  "Skill(sentry-skills:iterate-pr)",
  "Skill(sentry-skills:pr-writer)",
  "Skill(sentry-skills:presentation-creator)",
  "Skill(sentry-skills:prompt-optimizer)",
  "Skill(sentry-skills:replay-ux-research)",
  "Skill(sentry-skills:security-review)",
  "Skill(sentry-skills:skill-scanner)",
  "Skill(sentry-skills:skill-writer)",
  "Skill(sentry-skills:sred-project-organizer)",
  "Skill(sentry-skills:sred-work-summary)",
  "Skill(sentry-skills:typing-exclusion-worker)"
]

Domaines WebFetch

À toujours inclure (Projets Sentry)

[
  "WebFetch(domain:docs.sentry.io)",
  "WebFetch(domain:develop.sentry.dev)",
  "WebFetch(domain:docs.github.com)",
  "WebFetch(domain:cli.github.com)"
]

Spécifiques au framework

Si détecté Ajoutez les domaines
Django docs.djangoproject.com
Flask flask.palletsprojects.com
FastAPI fastapi.tiangolo.com
React react.dev
Next.js nextjs.org
Vue vuejs.org
Express expressjs.com
Rails guides.rubyonrails.org, api.rubyonrails.org
Go pkg.go.dev
Rust docs.rs, doc.rust-lang.org
Docker docs.docker.com
Kubernetes kubernetes.io
Terraform registry.terraform.io

Suggestions de serveurs MCP

Les serveurs MCP sont configurés dans .mcp.json (pas dans settings.json). Vérifiez la configuration existante :

cat .mcp.json 2>/dev/null || echo "No existing .mcp.json"

Sentry MCP (si SDK Sentry détecté)

Ajoutez à .mcp.json (remplacez {org-slug} et {project-slug} par vos identifiants d'organisation et de projet Sentry) :

{
  "mcpServers": {
    "sentry": {
      "type": "http",
      "url": "https://mcp.sentry.dev/mcp/{org-slug}/{project-slug}"
    }
  }
}

Linear MCP (si l'utilisation de Linear est détectée)

Ajoutez à .mcp.json :

{
  "mcpServers": {
    "linear": {
      "command": "npx",
      "args": ["-y", "@linear/mcp-server"],
      "env": {
        "LINEAR_API_KEY": "${LINEAR_API_KEY}"
      }
    }
  }
}

Note : Ne suggérez jamais GitHub MCP. Utilisez toujours les commandes CLI gh pour GitHub.

Format de sortie

Présentez vos résultats comme suit :

  1. Tableau récapitulatif - Ce qui a été détecté
  2. settings.json recommandé - JSON complet prêt à copier
  3. Suggestions MCP - Le cas échéant
  4. Instructions de fusion - Si des paramètres existants ont été trouvés

Exemple de structure de sortie :

## Pile technologique détectée

| Catégorie       | Trouvée        |
| --------------- | -------------- |
| Langages        | Python 3.x     |
| Gestionnaire de paquets | poetry |
| Frameworks      | Django, Celery |
| Services        | Sentry         |
| Outils de build | Docker, Make   |

## .claude/settings.json recommandé

\`\`\`json
{
"permissions": {
"allow": [
// ... groupées par catégorie avec commentaires
],
"deny": []
}
}
\`\`\`

## .mcp.json recommandé (le cas échéant)

Si vous utilisez Sentry ou Linear, ajoutez la configuration MCP à `.mcp.json`...

Règles importantes

Ce qu'il faut inclure

  • Uniquement les commandes EN LECTURE SEULE qui ne peuvent pas modifier l'état
  • Uniquement les outils réellement utilisés par le projet (détectés via fichiers verrous)
  • Commandes système standard (ls, cat, find, etc.)
  • Le suffixe :* autorise tous les arguments pour la commande de base

Ce qu'il ne faut JAMAIS inclure

  • Chemins absolus - Ne jamais inclure les chemins spécifiques aux utilisateurs comme /home/user/scripts/foo ou /Users/name/bin/bar
  • Scripts personnalisés - Ne jamais inclure les scripts de projet qui pourraient avoir des effets secondaires (par exemple, ./scripts/deploy.sh)
  • Gestionnaires de paquets alternatifs - Si le projet utilise pnpm, N'INCLUEZ PAS les commandes npm/yarn
  • Commandes qui modifient l'état - Pas d'installation, build, exécution, écriture ou suppression

Règles du gestionnaire de paquets

Incluez uniquement le gestionnaire de paquets réellement utilisé par le projet :

Si détecté Incluez N'INCLUEZ PAS
pnpm-lock.yaml commandes pnpm npm, yarn
yarn.lock commandes yarn npm, pnpm
package-lock.json commandes npm yarn, pnpm
poetry.lock commandes poetry pip (sauf s'il y a aussi requirements.txt)
uv.lock commandes uv pip, poetry
Pipfile.lock commandes pipenv pip, poetry

Si plusieurs fichiers verrous existent, incluez uniquement les commandes pour chaque gestionnaire détecté.