mcpField
C
claude-settings-audit

claude-settings-audit

github.com/sickn33Agent 工作流48.7k76 次安装1 天前更新
代码仓库

关于 claude-settings-audit

这是一个 Claude Code 技能,可分析仓库并为 `settings.json` 提出有依据的只读权限建议。它强调限制命令范围、保留现有规则,并先提交方案供审核,而非直接安装。

主要功能

  1. 01检测仓库技术栈与服务
  2. 02检查现有 Claude 设置
  3. 03建议范围明确的只读权限
  4. 04按需提供 MCP 配置建议
  5. 05保留 deny 和 ask 规则
  6. 06显示前隐藏密钥值

适用场景

  1. 01审计仓库的 Claude Code 权限
  2. 02创建只读命令允许列表
  3. 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

检查以下指示文件:

类别检查文件
Pythonpyproject.toml、setup.py、requirements.txt、Pipfile、poetry.lock、uv.lock
Node.jspackage.json、package-lock.json、yarn.lock、pnpm-lock.yaml
Gogo.mod、go.sum
RustCargo.toml、Cargo.lock
RubyGemfile、Gemfile.lock
Javapom.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
LinearLinear 配置文件、.linear/ 目录

读取依赖文件以识别框架:

  • package.json → 检查 dependencies 和 devDependencies
  • pyproject.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 文件或配置)
检测到的内容添加这些命令
任意 Pythonpython --version、python3 --version
poetry.lockpoetry show、poetry env info
uv.lockuv pip list、uv tree
Pipfile.lockpipenv graph
requirements.txt(无其他锁文件)pip list、pip show、pip freeze
Node.js(如检测到 package.json)
检测到的内容添加这些命令
任意 Node.jsnode --version
pnpm-lock.yamlpnpm list、pnpm why
yarn.lockyarn list、yarn info、yarn why
package-lock.jsonnpm list、npm view、npm outdated
TypeScript(tsconfig.json)tsc --version
其他语言
检测到的内容添加这些命令
go.modgo version、go list、go mod graph、go env
Cargo.tomlrustc --version、cargo --version、cargo tree、cargo metadata
Gemfileruby --version、bundle list、bundle show
pom.xmljava --version、mvn --version、mvn dependency:tree
build.gradlejava --version、gradle --version、gradle dependencies
构建工具
检测到的内容添加这些命令
Dockerfiledocker --version、docker ps、docker images
docker-compose.ymldocker-compose ps、docker-compose config
*.tf 文件terraform --version、terraform providers、terraform state list
Makefilemake --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)"
]
特定框架
检测到的内容添加域名
Djangodocs.djangoproject.com
Flaskflask.palletsprojects.com
FastAPIfastapi.tiangolo.com
Reactreact.dev
Next.jsnextjs.org
Vuevuejs.org
Expressexpressjs.com
Railsguides.rubyonrails.org、api.rubyonrails.org
Gopkg.go.dev
Rustdocs.rs、doc.rust-lang.org
Dockerdocs.docker.com
Kuberneteskubernetes.io
Terraformregistry.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 命令。

输出格式

按以下格式呈现结果:

  1. 摘要表——检测到的内容
  2. 建议的 settings.json——可直接复制的完整 JSON
  3. MCP 建议——如适用
  4. 合并说明——如果发现现有 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.yamlpnpm 命令npm、yarn
yarn.lockyarn 命令npm、pnpm
package-lock.jsonnpm 命令yarn、pnpm
poetry.lockpoetry 命令pip(除非同时存在 requirements.txt)
uv.lockuv 命令pip、poetry
Pipfile.lockpipenv 命令pip、poetry

如果存在多个锁文件,则仅包含每个已检测到的包管理器对应的命令。

限制

  • 仅当任务明确符合上述范围时,才使用此技能。
  • 不要将输出视为环境特定验证、测试或专家审查的替代品。
  • 如果缺少必需的输入、权限、安全边界或成功标准,请停止并请求澄清。

评论

支持 Markdown