关于 claude-settings-audit
这是一个 Claude Code 技能,可分析仓库并为 `settings.json` 提出有依据的只读权限建议。它强调限制命令范围、保留现有规则,并先提交方案供审核,而非直接安装。
主要功能
- 01检测仓库技术栈与服务
- 02检查现有 Claude 设置
- 03建议范围明确的只读权限
- 04按需提供 MCP 配置建议
- 05保留 deny 和 ask 规则
- 06显示前隐藏密钥值
适用场景
- 01审计仓库的 Claude Code 权限
- 02创建只读命令允许列表
- 03审核适配技术栈的权限建议
MCP 相关
若仓库使用 Sentry 或 Linear,该技能可建议相应的 MCP 服务配置。MCP 配置应写入 `.mcp.json`,与 `settings.json` 分开。
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ sickn33/ agentic-awesome-skills --skill claude-settings-audit安装后在 Claude Code 中输入/claude-settings-audit确认已加载。
详细介绍
Claude 设置审计
分析此仓库,并生成针对只读命令的 Claude Code settings.json 权限建议。
适用场景
- 为仓库设置或审计 Claude Code
settings.json权限。 - 需要根据仓库的技术栈、工具和单体仓库结构,推断出安全的只读允许列表。
- 想要根据证据审查或替换现有的 Claude 权限基线。
旧示例中的宽泛前缀并非只读沙箱:find 可以执行或删除内容,gh api 可以执行 POST/PATCH/DELETE 操作,git branch、remote 和 tag 也有修改操作。建议使用范围狭窄且经过审查的命令,或专用只读工具;绝不要仅仅因为某个命令通常用于观察,就自动允许任意参数。构建工具(make -n、Gradle、Maven、包管理器)可能会执行项目代码,或下载/写入缓存。显示设置/MCP 密钥值之前,请先将其脱敏;保留现有的 deny/ask 规则,并提出权限方案,而不是悄悄安装权限或服务。技能调用权限可能会授权修改工作流,不能仅凭名称认定其为只读。
阶段 1:检测技术栈
运行以下命令以检测仓库结构:
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
检查以下指示文件:
| 类别 | 检查文件 |
|---|---|
| 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 |
| 构建 | Makefile、Dockerfile、docker-compose.yml |
| 基础设施 | *.tf 文件、kubernetes/、helm/ |
| 单体仓库 | lerna.json、nx.json、turbo.json、pnpm-workspace.yaml |
阶段 2:检测服务
检查服务集成:
| 服务 | 检测方式 |
|---|---|
| Sentry | 依赖中包含 sentry-sdk、@sentry/* 包、.sentryclirc、sentry.properties |
| Linear | Linear 配置文件、.linear/ 目录 |
读取依赖文件以识别框架:
package.json→ 检查dependencies和devDependenciespyproject.toml→ 检查[project.dependencies]或[tool.poetry.dependencies]Gemfile→ 检查 gem 名称Cargo.toml→ 检查[dependencies]
阶段 3:检查现有设置
cat .claude/settings.json 2>/dev/null || echo "No existing settings"
阶段 4:生成建议
组合以下内容,构建允许列表:
候选基线(逐项审查权限)
[
"Bash(ls:*)",
"Bash(pwd:*)",
"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 --list)",
"Bash(git remote -v)",
"Bash(git tag --list)",
"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 repo view --json nameWithOwner)"
]
特定技术栈的命令
仅包含在项目中实际检测到的工具对应的命令。
Python(如检测到任何 Python 文件或配置)
| 检测到的内容 | 添加这些命令 |
|---|---|
| 任意 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(无其他锁文件) | pip list、pip show、pip freeze |
Node.js(如检测到 package.json)
| 检测到的内容 | 添加这些命令 |
|---|---|
| 任意 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 |
其他语言
| 检测到的内容 | 添加这些命令 |
|---|---|
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 |
构建工具
| 检测到的内容 | 添加这些命令 |
|---|---|
Dockerfile | docker --version、docker ps、docker images |
docker-compose.yml | docker-compose ps、docker-compose config |
*.tf 文件 | terraform --version、terraform providers、terraform state list |
Makefile | make --version、make -n |
技能(适用于 Sentry 项目)
如果这是一个 Sentry 项目(或已安装 sentry-skills 插件),请包含:
[
"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:create-pr)",
"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:security-review)",
"Skill(sentry-skills:skill-creator)",
"Skill(sentry-skills:skill-scanner)",
"Skill(sentry-skills:skill-writer)",
"Skill(sentry-skills:sred-project-organizer)",
"Skill(sentry-skills:sred-work-summary)"
]
WebFetch 域名
始终包含(Sentry 项目)
[
"WebFetch(domain:docs.sentry.io)",
"WebFetch(domain:develop.sentry.dev)",
"WebFetch(domain:docs.github.com)",
"WebFetch(domain:cli.github.com)"
]
特定框架
| 检测到的内容 | 添加域名 |
|---|---|
| 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 |
MCP 服务建议
MCP 服务配置在 .mcp.json 中(而非 settings.json)。检查是否已有配置:
cat .mcp.json 2>/dev/null || echo "No existing .mcp.json"
Sentry MCP(如检测到 Sentry SDK)
添加到 .mcp.json 中(将 {org-slug} 和 {project-slug} 替换为你的 Sentry 组织和项目代号):
{
"mcpServers": {
"sentry": {
"type": "http",
"url": "https://mcp.sentry.dev/mcp/{org-slug}/{project-slug}"
}
}
}
Linear MCP(如果检测到使用 Linear)
添加到 .mcp.json:
{
"mcpServers": {
"linear": {
"command": "npx",
"args": ["-y", "@linear/mcp-server"],
"env": {
"LINEAR_API_KEY": "${LINEAR_API_KEY}"
}
}
}
}
注意:根据用户偏好,使用客户端已批准的 GitHub 连接器,或范围严格限定的 CLI 命令。
输出格式
按以下格式呈现结果:
- 摘要表——检测到的内容
- 建议的 settings.json——可直接复制的完整 JSON
- MCP 建议——如适用
- 合并说明——如果发现现有 settings
输出结构示例:
## Detected Tech Stack
| Category | Found |
| --------------- | -------------- |
| Languages | Python 3.x |
| Package Manager | poetry |
| Frameworks | Django, Celery |
| Services | Sentry |
| Build Tools | Docker, Make |
## Recommended .claude/settings.json
\`\`\`json
{
"permissions": {
"allow": [
"Bash(pwd)"
],
"deny": []
}
}
\`\`\`
## Recommended .mcp.json (if applicable)
If you use Sentry or Linear, add the MCP config to `.mcp.json`...
重要规则
应包含的内容
- 仅包含不会修改状态的只读命令
- 仅包含项目实际使用的工具(通过锁文件检测)
- 标准系统命令(ls、cat、find 等)
:*后缀的匹配范围较广;请核实当前主机的匹配语义以及所有允许参数的作用
绝不可包含的内容
- 绝对路径——绝不包含用户专属路径,例如
/home/user/scripts/foo或/Users/name/bin/bar - 自定义脚本——绝不包含可能产生副作用的项目脚本(例如
./scripts/deploy.sh) - 其他包管理器——如果项目使用 pnpm,则不要包含 npm/yarn 命令
- 会修改状态的命令——不得包含安装、构建、运行、写入或删除命令
包管理器规则
仅包含项目实际使用的包管理器:
| 检测到的内容 | 应包含 | 不应包含 |
|---|---|---|
pnpm-lock.yaml | pnpm 命令 | npm、yarn |
yarn.lock | yarn 命令 | npm、pnpm |
package-lock.json | npm 命令 | yarn、pnpm |
poetry.lock | poetry 命令 | pip(除非同时存在 requirements.txt) |
uv.lock | uv 命令 | pip、poetry |
Pipfile.lock | pipenv 命令 | pip、poetry |
如果存在多个锁文件,则仅包含每个已检测到的包管理器对应的命令。
限制
- 仅当任务明确符合上述范围时,才使用此技能。
- 不要将输出视为环境特定验证、测试或专家审查的替代品。
- 如果缺少必需的输入、权限、安全边界或成功标准,请停止并请求澄清。