claude-settings-audit

Analyse un dépôt pour générer des permissions `settings.json` recommandées pour Claude Code. À utiliser lors de la mise en place d'un nouveau projet, de l'audit de paramètres existants, ou pour déterminer quelles commandes bash en lecture seule autoriser. Détecte la stack 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 recommandées pour Claude Code settings.json pour les commandes en lecture seule.

Phase 1 : Détecter la Stack 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 *.tf files, kubernetes/, helm/
Monorepo lerna.json, nx.json, turbo.json, pnpm-workspace.yaml

Phase 2 : Détecter les Services

Vérifiez les intégrations de services :

Service Détection
Sentry sentry-sdk dans les deps, @sentry/* packages, .sentryclirc, sentry.properties
Linear Fichiers de config 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 gems
  • Cargo.toml → vérifiez [dependencies]

Phase 3 : Vérifier les Paramètres Existants

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

Phase 4 : Générer 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 Stack

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

Python (si des fichiers Python ou config détectés)

Si Détecté Ajouter Ces Commandes
Tout 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 lock) pip list, pip show, pip freeze

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

Si Détecté Ajouter Ces Commandes
Tout 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é Ajouter 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é Ajouter Ces Commandes
Dockerfile docker --version, docker ps, docker images
docker-compose.yml docker-compose ps, docker-compose config
*.tf files 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)"
]

Framework-Spécifique

Si Détecté Ajouter 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 Serveur MCP

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

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

MCP Sentry (si SDK Sentry détecté)

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

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

MCP Linear (si utilisation de Linear 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 MCP GitHub. Utilisez toujours les commandes CLI gh pour GitHub.

Format de Sortie

Présentez vos découvertes comme :

  1. Tableau de Synthèse - Ce qui a été détecté
  2. settings.json Recommandé - JSON complet prêt à copier
  3. Suggestions MCP - Si applicable
  4. Instructions de Fusion - Si des paramètres existants trouvés

Structure d'exemple de sortie :

## Stack Technologique Détectée

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

## .claude/settings.json Recommandé

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

## .mcp.json Recommandé (si applicable)

Si vous utilisez Sentry ou Linear, ajoutez la config 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 effectivement utilisés par le projet (détectés via fichiers lock)
  • Les commandes système standard (ls, cat, find, etc.)
  • Le suffixe :* permet n'importe quels arguments à la commande de base

Ce qu'il NE FAUT JAMAIS Inclure

  • Chemins absolus - N'incluez jamais les chemins spécifiques à l'utilisateur comme /home/user/scripts/foo ou /Users/name/bin/bar
  • Scripts personnalisés - N'incluez jamais les scripts du projet qui pourraient avoir des effets secondaires (ex: ./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'install, build, run, write ou delete commands

Règles du Gestionnaire de Paquets

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

Si Détecté Inclure NE PAS Inclure
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 si aussi requirements.txt)
uv.lock commandes uv pip, poetry
Pipfile.lock commandes pipenv pip, poetry

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

Skills similaires