主题
Claude Code 综合实战:企业级最佳实践指南
课程信息
- 作者:老金
- 预计学时:2-3小时
- 难度等级:⭐⭐⭐ 进阶
- 更新日期:2026年2月
- 适用版本:Claude Code v2.1+(验证于2026-02-25)
📚 本课学习目标
完成本课学习后,你将能够:
- 建立团队协作规范:标准化项目结构、CLAUDE.md规范、代码审查流程
- 配置CI/CD集成:GitHub Actions配置、安全审查、自动化流水线
- 实施安全与合规:权限系统、白名单配置、审计日志、合规检查
- 优化性能与成本:上下文管理、调试技巧、成本控制
术语表(小白必读)
| 术语 | 英文全称 | 通俗解释 |
|---|---|---|
| CI/CD | Continuous Integration/Continuous Deployment | 持续集成/持续部署,自动化代码测试和发布的流程 |
| GitHub Actions | - | GitHub提供的自动化工作流服务 |
| PR | Pull Request | 代码合并请求,用于代码审查 |
| MCP | Model Context Protocol | 模型上下文协议,扩展AI能力的接口标准 |
| 白名单 | Whitelist/Allowlist | 明确允许执行的工具或命令列表 |
| 审计日志 | Audit Log | 记录所有操作的日志,用于安全追踪 |
| Token | - | AI处理文字的计费单位 |
| 上下文窗口 | Context Window | AI单次对话能处理的最大信息量 |
| Forked Context | - | Skills的独立上下文,不影响主会话 |
| Hot Reload | - | Skills修改后自动重新加载 |
目录
1. 团队协作规范
1.1 为什么需要团队规范
当Claude Code从个人工具演变为团队基础设施时,缺乏统一规范会导致严重问题:
典型混乱场景:
- 开发者A的CLAUDE.md有500行自定义规则,开发者B完全没有
- 代码审查时AI生成的代码风格与团队标准完全不同
- 敏感API密钥被AI意外提交到代码仓库
- 不同项目的MCP配置互相冲突导致工具失效
这些问题在3人以下团队可能还能容忍,但团队规模一旦超过5人,没有规范就是灾难的开始。
1.2 项目结构标准化
1.2.1 推荐的目录结构
企业级项目应该采用统一的目录结构,让团队成员和AI助手都能快速定位文件:
project-root/
├── .claude/ # Claude Code专用配置
│ ├── settings.json # 权限和工具配置
│ ├── settings.local.json # 本地覆盖(不入库)
│ ├── commands/ # 自定义Slash命令
│ │ ├── 01-dev.md # 开发相关命令
│ │ ├── 02-test.md # 测试相关命令
│ │ └── 03-deploy.md # 部署相关命令
│ ├── hooks/ # 生命周期钩子
│ │ ├── pre-commit.sh # 提交前检查
│ │ └── post-review.sh # 审查后处理
│ └── skills/ # 技能包(支持forked context和hot reload)
│ └── project-specific/ # 项目特定技能
│ ├── skill.yaml # 技能配置(可添加hooks到frontmatter)
│ ├── prompts/ # 提示词模板
│ └── scripts/ # 辅助脚本
├── .github/ # GitHub集成
│ ├── workflows/ # CI/CD工作流
│ │ └── claude-review.yml # Claude自动审查
│ └── CODEOWNERS # 代码所有者
├── docs/ # 项目文档
│ └── ai-context/ # AI上下文文档
│ ├── project-structure.md # 项目结构说明
│ ├── coding-standards.md # 编码规范
│ └── architecture.md # 架构设计
├── src/ # 源代码
├── tests/ # 测试代码
├── CLAUDE.md # 主配置文件
├── .mcp.json # MCP服务器配置
├── .gitignore # Git忽略规则
└── README.md # 项目说明1.2.2 目录职责划分
.claude/ 目录:Claude Code的"控制中心"
| 子目录/文件 | 职责 | 入库策略 |
|---|---|---|
| settings.json | 团队统一配置 | ✅ 必须入库 |
| settings.local.json | 个人本地配置 | ❌ 禁止入库 |
| commands/ | 团队共享命令 | ✅ 必须入库 |
| hooks/ | 自动化钩子 | ✅ 必须入库 |
| skills/ | 项目技能包 | ✅ 必须入库 |
docs/ai-context/ 目录:AI理解项目的"说明书"
这个目录专门存放帮助AI理解项目的文档,不是给人看的README,而是给AI看的上下文:
markdown
# docs/ai-context/project-structure.md 示例
## 项目技术栈
- 前端:React 18 + TypeScript 5.0 + Vite 5
- 后端:Node.js 20 + Fastify 4
- 数据库:PostgreSQL 15 + Prisma ORM
- 缓存:Redis 7
- 部署:Docker + Kubernetes
## 核心模块
### 用户模块 (src/modules/user/)
- 负责用户注册、登录、权限管理
- 依赖:JWT认证、bcrypt加密
### 订单模块 (src/modules/order/)
- 负责订单创建、支付、状态管理
- 依赖:用户模块、支付网关
## 代码生成约定
- 所有API响应使用统一格式:{ data, error, meta }
- 数据库操作必须使用Prisma Client
- 所有日期时间使用UTC时区1.2.3 命名规范
命令文件命名:{序号}-{功能域}.md
序号规则:
- 00-09:基础设施命令(help、setup)
- 10-19:开发命令(dev、build)
- 20-29:测试命令(test、lint)
- 30-39:部署命令(deploy、release)
- 40-49:数据命令(migrate、seed)
- 90-99:工具命令(debug、monitor)
技能包命名:{项目名}-{功能}
示例:
ecommerce-checkout:电商结算流程cms-content-workflow:CMS内容工作流analytics-report-generator:分析报告生成器
1.3 CLAUDE.md规范
1.3.1 CLAUDE.md层级结构
Claude Code支持三层配置,优先级从低到高:
全局配置 (
~/.claude/CLAUDE.md)- 适用于所有项目
- 存放个人偏好、通用规则
项目配置 (
项目根目录/CLAUDE.md)- 团队共享,入库管理
- 存放项目特定规则、技术栈说明
子目录配置 (
子目录/CLAUDE.md)- 模块级别的特殊规则
- 例如:
src/legacy/CLAUDE.md存放遗留代码的特殊处理规则
1.3.2 项目CLAUDE.md模板
markdown
# [项目名称] - Claude Code配置
## 1. 项目概览
- **项目描述**:[一句话描述项目用途]
- **技术栈**:[主要技术栈列表]
- **当前阶段**:[开发/测试/生产]
## 2. 代码规范
### 通用规则
- 所有代码必须有类型注解
- 函数不超过50行,类不超过300行
- 禁止使用any类型(特殊情况需注释说明)
### 命名约定
- 文件名:kebab-case(如 user-service.ts)
- 类名:PascalCase(如 UserService)
- 函数/变量:camelCase(如 getUserById)
- 常量:UPPER_SNAKE_CASE(如 MAX_RETRY_COUNT)
### 文档要求
- 所有公共API必须有JSDoc/TSDoc注释
- 复杂业务逻辑必须有流程说明
- 使用中文注释,代码用英文
## 3. 安全规则
### 禁止行为
- 禁止在代码中硬编码敏感信息
- 禁止提交.env文件到仓库
- 禁止在日志中输出用户隐私数据
### 必须行为
- 所有输入必须验证和消毒
- 数据库查询必须使用参数化
- API必须有速率限制
## 4. 测试要求
- 新功能必须有单元测试
- 核心逻辑测试覆盖率>80%
- 集成测试必须覆盖主要用户流程
## 5. Git规范
### 分支命名
- feature/xxx:新功能
- fix/xxx:bug修复
- refactor/xxx:重构
- docs/xxx:文档更新
### 提交信息
格式:`<type>(<scope>): <description>`
类型:feat、fix、docs、style、refactor、test、chore
## 6. 项目特殊说明
[项目特有的规则和注意事项]1.3.3 全局CLAUDE.md模板
markdown
# 全局Claude Code配置
## 个人偏好
- 使用中文回复
- 代码注释使用中文
- 偏好简洁的代码风格
## 通用安全规则
- 永远不要在代码中包含真实的API密钥
- 敏感操作需要二次确认
- 不自动执行rm -rf或DROP TABLE等危险命令
## 工具偏好
- Git操作:优先使用命令行而非GUI
- 代码格式化:保存时自动格式化
- 测试:修改代码后自动运行相关测试1.4 代码审查流程
1.4.1 AI辅助代码审查流程
┌─────────────────────────────────────────────────────────────┐
│ AI辅助代码审查流程 │
├─────────────────────────────────────────────────────────────┤
│ │
│ 开发者提交PR │
│ │ │
│ ▼ │
│ ┌─────────────┐ │
│ │ CI触发自动 │ │
│ │ Claude审查 │ │
│ └─────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ Claude Code审查内容: │ │
│ │ 1. 代码风格是否符合CLAUDE.md规范 │ │
│ │ 2. 是否有潜在的安全漏洞 │ │
│ │ 3. 是否有性能问题 │ │
│ │ 4. 测试覆盖是否充分 │ │
│ │ 5. 文档是否完整 │ │
│ └─────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ 自动添加审查评论到PR │
│ │ │
│ ▼ │
│ 人工审查员复核 │
│ │ │
│ ▼ │
│ 合并或请求修改 │
│ │
└─────────────────────────────────────────────────────────────┘1.4.2 代码审查Slash命令
创建 .claude/commands/code-review.md:
markdown
name: code-review
description: AI代码审查命令
# 代码审查
请对以下代码变更进行审查:
## 审查维度
### 1. 代码质量
- 代码是否清晰可读
- 命名是否表意
- 是否有重复代码
- 函数/类是否过长
### 2. 安全性
- 输入验证是否充分
- 是否有SQL注入风险
- 是否有XSS风险
- 敏感数据处理是否安全
### 3. 性能
- 是否有N+1查询问题
- 循环内是否有不必要的计算
- 是否使用了适当的数据结构
### 4. 测试
- 是否有对应的测试
- 测试覆盖是否充分
- 边界情况是否考虑
### 5. 文档
- 公共API是否有文档
- 复杂逻辑是否有注释
- README是否需要更新
## 输出格式
## 审查结果
### 必须修改 (Blocking)
- [问题描述]
- 位置:[文件:行号]
- 建议:[修改建议]
### 建议修改 (Suggestion)
- [问题描述]
- 位置:[文件:行号]
- 建议:[修改建议]
### 表扬 (Praise)
- [做得好的地方]
请开始审查...1.4.3 审查清单
| 检查项 | 通过条件 | 优先级 |
|---|---|---|
| 代码风格 | 符合CLAUDE.md规范 | P0 |
| 安全检查 | 无高危漏洞 | P0 |
| 测试覆盖 | 新代码有测试 | P1 |
| 文档完整 | API有注释 | P1 |
| 性能考量 | 无明显性能问题 | P2 |
1.5 团队协作最佳实践
1.5.1 配置同步策略
入库配置(团队共享):
gitignore
# .gitignore 中不要忽略这些
!.claude/
!.claude/settings.json
!.claude/commands/
!.claude/hooks/
!.claude/skills/
!CLAUDE.md
!.mcp.json不入库配置(个人本地):
gitignore
# .gitignore 中要忽略这些
.claude/settings.local.json
.claude/*.local.*
.env
.env.local1.5.2 配置冲突解决
当团队配置与个人偏好冲突时,使用覆盖机制:
json
// .claude/settings.local.json(不入库)
{
"overrides": {
"model": "claude-sonnet-4-5-20250929",
"verbose": true
}
}1.5.3 新成员入职流程
markdown
## Claude Code新成员入职清单
### 第1步:环境准备
- [ ] 安装Claude Code CLI
- [ ] 配置全局CLAUDE.md
- [ ] 获取API密钥
### 第2步:项目配置
- [ ] 克隆项目仓库
- [ ] 运行 `claude` 初始化
- [ ] 检查MCP服务器是否正常
### 第3步:熟悉规范
- [ ] 阅读项目CLAUDE.md
- [ ] 运行 `/help` 查看可用命令
- [ ] 尝试运行一次代码审查
### 第4步:验证配置
- [ ] 运行测试命令确认配置正确
- [ ] 提交一个测试PR验证CI流程2. CI/CD集成
2.1 GitHub Actions集成概述
Claude Code可以深度集成到GitHub Actions中,实现:
- 自动代码审查
- PR评论交互
- 安全扫描
- 文档生成
2.1.1 官方Action介绍
Anthropic提供了官方的GitHub Action:anthropics/claude-code-action
主要功能:
- 在PR上自动运行Claude Code审查
- 响应Issue评论中的指令
- 执行自定义命令
2.2 GitHub Actions配置详解
2.2.1 基础配置
创建 .github/workflows/claude-review.yml:
yaml
name: Claude Code Review
on:
pull_request:
types: [opened, synchronize, reopened]
issue_comment:
types: [created]
# 权限配置:授予必要的GitHub权限
permissions:
contents: read
pull-requests: write
issues: write
jobs:
claude-review:
# 条件:PR事件 或 Issue评论中包含@claude
if: |
github.event_name == 'pull_request' ||
(github.event_name == 'issue_comment' &&
contains(github.event.comment.body, '@claude'))
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0 # 获取完整历史,用于diff比较
- name: Run Claude Code Review
uses: anthropics/claude-code-action@v1
with:
# API密钥(必须在仓库Secrets中配置)
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
# 可选:指定模型
model: "claude-sonnet-4-5-20250929"
# 可选:最大token数
max_tokens: 4096
# 可选:超时时间(秒)
timeout: 3002.2.2 高级配置:多场景工作流
yaml
name: Claude Code CI/CD Integration
on:
pull_request:
types: [opened, synchronize, reopened]
issue_comment:
types: [created]
push:
branches: [main, develop]
permissions:
contents: read
pull-requests: write
issues: write
actions: read
env:
# 共享环境变量
CLAUDE_MODEL: claude-sonnet-4-5-20250929
jobs:
# ========== PR代码审查 ==========
review:
name: Code Review
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@v40
- name: Claude Code Review
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
model: ${{ env.CLAUDE_MODEL }}
prompt: |
请审查以下代码变更:
变更文件:${{ steps.changed-files.outputs.all_changed_files }}
审查要点:
1. 代码质量和可维护性
2. 潜在的安全问题
3. 性能考量
4. 测试覆盖建议
请使用中文回复,格式化输出审查结果。
# ========== 安全扫描 ==========
security-scan:
name: Security Scan
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Claude Security Scan
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
model: ${{ env.CLAUDE_MODEL }}
prompt: |
请对本次PR进行安全扫描,检查:
1. 硬编码的敏感信息(API密钥、密码等)
2. SQL注入漏洞
3. XSS漏洞
4. 不安全的依赖
5. 权限配置问题
如果发现问题,请标记为 [SECURITY] 并说明风险等级。
# ========== 交互式命令处理 ==========
interactive:
name: Interactive Commands
if: |
github.event_name == 'issue_comment' &&
contains(github.event.comment.body, '@claude')
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Process Claude Command
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
model: ${{ env.CLAUDE_MODEL }}
# 从评论中提取命令
prompt: ${{ github.event.comment.body }}
# ========== 文档生成(push到main时) ==========
docs:
name: Generate Documentation
if: github.event_name == 'push' && github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Generate API Docs
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
model: ${{ env.CLAUDE_MODEL }}
prompt: |
请扫描src/目录下的代码,生成API文档。
文档格式要求:
1. Markdown格式
2. 包含函数签名、参数说明、返回值
3. 包含使用示例
输出到docs/api/目录。2.2.3 配置Secrets
在GitHub仓库设置中添加以下Secrets:
| Secret名称 | 说明 | 获取方式 |
|---|---|---|
| ANTHROPIC_API_KEY | Anthropic API密钥 | console.anthropic.com |
| GITHUB_TOKEN | GitHub Token | 自动提供(默认) |
配置路径:Settings > Secrets and variables > Actions > New repository secret
2.3 /security-review命令
2.3.1 创建安全审查命令
创建 .claude/commands/security-review.md:
markdown
name: security-review
description: 执行安全代码审查
# 安全代码审查
## 审查范围
对指定文件或整个项目进行安全审查。
## 检查清单
### 1. 认证与授权
- [ ] 密码存储是否使用安全哈希(bcrypt/argon2)
- [ ] JWT密钥是否足够复杂
- [ ] 会话管理是否安全
- [ ] 权限检查是否完整
### 2. 输入验证
- [ ] 所有用户输入是否验证
- [ ] 是否防止SQL注入
- [ ] 是否防止XSS攻击
- [ ] 是否防止命令注入
### 3. 敏感数据
- [ ] API密钥是否硬编码
- [ ] 数据库凭据是否安全存储
- [ ] 日志是否泄露敏感信息
- [ ] 错误信息是否泄露内部细节
### 4. 配置安全
- [ ] HTTPS是否强制
- [ ] CORS是否正确配置
- [ ] 安全头是否设置
- [ ] Cookie是否安全配置
### 5. 依赖安全
- [ ] 是否有已知漏洞的依赖
- [ ] 依赖版本是否及时更新
- [ ] 是否使用可信的包源
## 输出格式
# 安全审查报告
## 概要
- 审查时间:[时间]
- 审查范围:[范围]
- 风险等级:[高/中/低]
## 发现的问题
### 高危 (Critical)
**问题**:...
**位置**:...
**描述**:...
**修复建议**:...
### 中危 (Medium)
**问题**:...
### 低危 (Low)
**问题**:...
## 最佳实践建议
[改进建议]
## 执行
请开始安全审查...2.3.2 在CI中集成安全审查
yaml
# .github/workflows/security.yml
name: Security Review
on:
pull_request:
paths:
- 'src/**'
- 'package.json'
- 'package-lock.json'
jobs:
security:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Security Review
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
command: "/security-review"
- name: Check for Critical Issues
run: |
# 解析审查结果,如有高危问题则失败
if grep -q "Critical" claude-review-output.md; then
echo "::error::发现高危安全问题,请修复后重新提交"
exit 1
fi2.4 /install-github-app命令
2.4.1 GitHub App安装指南
Claude Code可以作为GitHub App安装到组织或仓库,提供更深度的集成:
markdown
## GitHub App安装步骤
### 步骤1:访问安装页面
运行命令:/install-github-app
或直接访问:https://github.com/apps/claude-code
### 步骤2:选择安装范围
- 组织级别:应用于组织下所有仓库
- 仓库级别:只应用于选定的仓库
### 步骤3:配置权限
推荐权限配置:
- Contents: Read
- Pull requests: Read & Write
- Issues: Read & Write
- Metadata: Read
### 步骤4:配置Webhook(可选)
- Webhook URL: 你的服务器地址
- Events: Pull request, Issue comment, Push2.4.2 App vs Action对比
| 特性 | GitHub Action | GitHub App |
|---|---|---|
| 安装复杂度 | 低(配置文件) | 中(OAuth流程) |
| 实时响应 | 否(需要触发) | 是(Webhook) |
| 跨仓库 | 否 | 是 |
| 持久化状态 | 否 | 是 |
| 适用场景 | CI/CD集成 | 深度平台集成 |
2.5 完整CI/CD流水线示例
2.5.1 多阶段流水线
yaml
# .github/workflows/full-pipeline.yml
name: Full CI/CD Pipeline with Claude
on:
push:
branches: [main, develop]
pull_request:
branches: [main]
env:
NODE_VERSION: '20'
CLAUDE_MODEL: claude-sonnet-4-5-20250929
jobs:
# ===== 阶段1:代码检查 =====
lint:
name: Lint & Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- run: npm ci
- run: npm run lint
- run: npm run format:check
# ===== 阶段2:单元测试 =====
test:
name: Unit Tests
runs-on: ubuntu-latest
needs: lint
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- run: npm ci
- run: npm test -- --coverage
- uses: codecov/codecov-action@v3
# ===== 阶段3:Claude代码审查(仅PR) =====
claude-review:
name: Claude Code Review
if: github.event_name == 'pull_request'
runs-on: ubuntu-latest
needs: test
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Get PR Diff
id: diff
run: |
git diff origin/main...HEAD > pr_diff.txt
echo "diff_size=$(wc -l < pr_diff.txt)" >> $GITHUB_OUTPUT
- name: Claude Review
if: steps.diff.outputs.diff_size > 0
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
model: ${{ env.CLAUDE_MODEL }}
prompt: |
请审查这个PR的代码变更:
1. 代码质量评估
2. 潜在bug分析
3. 性能建议
4. 安全检查
请给出具体的改进建议。
# ===== 阶段4:安全扫描 =====
security:
name: Security Scan
runs-on: ubuntu-latest
needs: test
steps:
- uses: actions/checkout@v4
- name: Run npm audit
run: npm audit --audit-level=high
continue-on-error: true
- name: Claude Security Scan
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
command: "/security-review"
# ===== 阶段5:构建 =====
build:
name: Build
runs-on: ubuntu-latest
needs: [test, security]
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- run: npm ci
- run: npm run build
- uses: actions/upload-artifact@v4
with:
name: build-output
path: dist/
# ===== 阶段6:部署到Staging(仅develop分支) =====
deploy-staging:
name: Deploy to Staging
if: github.ref == 'refs/heads/develop'
runs-on: ubuntu-latest
needs: build
environment: staging
steps:
- name: Download build
uses: actions/download-artifact@v4
with:
name: build-output
- name: Deploy to Staging
run: |
echo "Deploying to staging..."
# 部署脚本
# ===== 阶段7:部署到Production(仅main分支) =====
deploy-production:
name: Deploy to Production
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
needs: build
environment: production
steps:
- name: Download build
uses: actions/download-artifact@v4
with:
name: build-output
- name: Deploy to Production
run: |
echo "Deploying to production..."
# 部署脚本
- name: Claude Deployment Report
uses: anthropics/claude-code-action@v1
with:
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
prompt: |
部署已完成,请生成部署报告:
- 版本:${{ github.sha }}
- 分支:${{ github.ref }}
- 触发者:${{ github.actor }}3. 安全与合规
3.1 权限系统详解
Claude Code采用三级权限模型:Allow(允许)、Ask(询问)、Deny(拒绝)
3.1.1 权限级别说明
Allow(允许):
- 工具可以直接执行,无需确认
- 适用于低风险、频繁使用的操作
- 示例:读取文件、搜索代码
Ask(询问):
- 执行前需要用户确认
- 适用于有一定风险的操作
- 示例:修改文件、执行命令
Deny(拒绝):
- 完全禁止执行
- 适用于高风险或违反政策的操作
- 示例:访问敏感目录、执行危险命令
3.1.2 权限配置文件
json
// .claude/settings.json
{
"permissions": {
// 默认权限级别
"default": "ask",
// 工具级别权限
"tools": {
"Read": "allow", // 读取文件:直接允许
"Glob": "allow", // 文件搜索:直接允许
"Grep": "allow", // 内容搜索:直接允许
"Edit": "ask", // 编辑文件:需要确认
"Write": "ask", // 写入文件:需要确认
"Bash": "ask", // 执行命令:需要确认
"WebFetch": "allow", // 网络请求:直接允许
"WebSearch": "allow" // 网络搜索:直接允许
},
// 路径级别权限
"paths": {
// 敏感目录:拒绝访问
"deny": [
"~/.ssh/",
"~/.aws/",
"~/.config/gcloud/",
"**/secrets/",
"**/.env*"
],
// 只读目录
"readonly": [
"**/node_modules/",
"**/vendor/",
"**/.git/"
]
},
// 命令级别权限
"commands": {
// 危险命令:拒绝
"deny": [
"rm -rf /",
"rm -rf ~",
":(){ :|:& };:",
"DROP DATABASE",
"DROP TABLE",
"format",
"mkfs"
],
// 需要确认的命令模式
"ask": [
"rm *",
"git push --force",
"git reset --hard",
"npm publish",
"docker rm",
"kubectl delete"
]
}
}
}3.1.3 运行时权限覆盖
bash
# 临时放宽权限(单次会话)
claude --dangerously-skip-permissions
# 临时使用严格模式
claude --permission-mode strict
# 查看当前权限配置
claude config permissions show3.2 allowedTools白名单
3.2.1 白名单配置
json
// .claude/settings.json
{
"allowedTools": [
// 基础工具
"Read",
"Glob",
"Grep",
// 编辑工具(带路径限制)
"Edit(src/**)",
"Write(src/**)",
"Write(tests/**)",
"Write(docs/**)",
// Bash命令(带命令限制)
"Bash(npm *)",
"Bash(node *)",
"Bash(git status)",
"Bash(git diff *)",
"Bash(git add *)",
"Bash(git commit *)",
"Bash(npx *)",
// 通配符权限支持
"Bash(*-h*)", // 允许所有-h帮助命令
"Bash(*--help)", // 允许所有--help命令
// MCP工具
"mcp__context7__*",
"mcp__exa__*"
],
// 明确禁止的工具
"deniedTools": [
"Bash(rm -rf *)",
"Bash(sudo *)",
"Bash(curl * | bash)",
"Write(.env*)",
"Write(**/secrets/*)"
]
}3.2.2 白名单模式详解
精确匹配:
json
"Read" // 只允许Read工具通配符匹配:
json
"Bash(npm *)" // 允许所有npm命令
"Edit(src/**)" // 允许编辑src目录下所有文件MCP工具匹配:
json
"mcp__context7__*" // 允许context7的所有功能
"mcp__exa__web_search_exa" // 只允许exa的搜索功能3.2.3 分环境配置
json
// 开发环境:宽松配置
// .claude/settings.development.json
{
"allowedTools": [
"*" // 开发时允许所有工具
],
"deniedTools": [
"Bash(rm -rf /)",
"Bash(sudo *)"
]
}
// 生产环境:严格配置
// .claude/settings.production.json
{
"allowedTools": [
"Read",
"Glob",
"Grep",
"Bash(npm test)",
"Bash(npm run lint)"
]
}3.3 MCP服务器信任
3.3.1 MCP信任级别
json
// .mcp.json
{
"mcpServers": {
// 完全信任的内部服务器
"internal-api": {
"command": "node",
"args": ["./mcp-servers/internal-api/index.js"],
"trust": "full",
"env": {
"API_KEY": "${INTERNAL_API_KEY}"
}
},
// 部分信任的第三方服务器
"context7": {
"command": "npx",
"args": ["-y", "@context7/mcp-server"],
"trust": "limited",
"allowedMethods": [
"resolve_library_uri",
"search_library_docs"
]
},
// 不信任但需要使用的服务器
"external-tool": {
"command": "npx",
"args": ["-y", "external-mcp-tool"],
"trust": "none",
"sandboxed": true,
"timeout": 30000
}
},
// 全局MCP安全设置
"security": {
"requireHttps": true,
"maxConcurrentConnections": 5,
"defaultTimeout": 60000
}
}3.3.2 MCP安全最佳实践
环境变量隔离:
json
{
"mcpServers": {
"my-server": {
"command": "node",
"args": ["server.js"],
"env": {
// 使用环境变量引用,不硬编码
"API_KEY": "${MCP_API_KEY}",
"DB_URL": "${MCP_DB_URL}"
}
}
}
}网络隔离:
json
{
"mcpServers": {
"isolated-server": {
"command": "node",
"args": ["server.js"],
"network": {
"allowedHosts": ["api.example.com"],
"blockedHosts": ["*.internal.corp"],
"allowedPorts": [443, 8080]
}
}
}
}资源限制:
json
{
"mcpServers": {
"resource-limited": {
"command": "node",
"args": ["server.js"],
"limits": {
"memory": "512mb",
"cpu": "50%",
"timeout": 30000,
"maxRequests": 100
}
}
}
}3.4 审计日志
3.4.1 启用审计日志
json
// .claude/settings.json
{
"audit": {
"enabled": true,
"logPath": "./logs/claude-audit/",
"retention": "90d",
"logLevel": "detailed",
// 需要记录的事件类型
"events": [
"tool_use",
"file_access",
"command_execution",
"permission_change",
"error"
],
// 敏感操作额外记录
"sensitivePatterns": [
"**/secrets/**",
"**/.env*",
"**/credentials*"
]
}
}3.4.2 审计日志格式
json
// logs/claude-audit/2025-01-15.json
{
"entries": [
{
"timestamp": "2025-01-15T10:30:45.123Z",
"sessionId": "sess_abc123",
"userId": "user@company.com",
"event": "tool_use",
"tool": "Bash",
"command": "npm test",
"status": "success",
"duration": 5432,
"context": {
"workingDir": "/project",
"branch": "feature/auth"
}
},
{
"timestamp": "2025-01-15T10:31:00.456Z",
"sessionId": "sess_abc123",
"userId": "user@company.com",
"event": "file_access",
"tool": "Edit",
"path": "src/auth/login.ts",
"action": "modify",
"status": "success",
"diff": {
"linesAdded": 15,
"linesRemoved": 3
}
},
{
"timestamp": "2025-01-15T10:32:00.789Z",
"sessionId": "sess_abc123",
"userId": "user@company.com",
"event": "permission_denied",
"tool": "Read",
"path": ".env.production",
"reason": "Path in denied list",
"status": "blocked"
}
]
}3.4.3 审计日志分析
创建审计分析脚本:
python
#!/usr/bin/env python3
# scripts/analyze-audit.py
import json
from pathlib import Path
from collections import Counter
from datetime import datetime, timedelta
def analyze_audit_logs(log_dir: str, days: int = 7):
"""分析最近N天的审计日志"""
log_path = Path(log_dir)
cutoff = datetime.now() - timedelta(days=days)
stats = {
"total_events": 0,
"tool_usage": Counter(),
"denied_access": [],
"errors": [],
"users": Counter(),
"sensitive_access": []
}
for log_file in log_path.glob("*.json"):
try:
file_date = datetime.strptime(log_file.stem, "%Y-%m-%d")
if file_date < cutoff:
continue
with open(log_file) as f:
data = json.load(f)
for entry in data.get("entries", []):
stats["total_events"] += 1
stats["tool_usage"][entry.get("tool", "unknown")] += 1
stats["users"][entry.get("userId", "unknown")] += 1
if entry.get("status") == "blocked":
stats["denied_access"].append(entry)
if entry.get("event") == "error":
stats["errors"].append(entry)
except Exception as e:
print(f"Error processing {log_file}: {e}")
return stats
def generate_report(stats: dict) -> str:
"""生成审计报告"""
report = []
report.append("=" * 60)
report.append("Claude Code 审计报告")
report.append("=" * 60)
report.append("")
report.append(f"总事件数:{stats['total_events']}")
report.append("")
report.append("工具使用统计:")
for tool, count in stats["tool_usage"].most_common(10):
report.append(f" - {tool}: {count}次")
report.append("")
report.append("用户活动统计:")
for user, count in stats["users"].most_common(10):
report.append(f" - {user}: {count}次")
report.append("")
if stats["denied_access"]:
report.append(f"权限拒绝事件:{len(stats['denied_access'])}次")
for entry in stats["denied_access"][:5]:
report.append(f" - {entry['timestamp']}: {entry.get('path', 'N/A')}")
report.append("")
if stats["errors"]:
report.append(f"错误事件:{len(stats['errors'])}次")
for entry in stats["errors"][:5]:
report.append(f" - {entry['timestamp']}: {entry.get('message', 'N/A')}")
return "\n".join(report)
if __name__ == "__main__":
import sys
log_dir = sys.argv[1] if len(sys.argv) > 1 else "./logs/claude-audit/"
stats = analyze_audit_logs(log_dir)
print(generate_report(stats))3.5 合规性检查清单
3.5.1 数据保护合规
markdown
## GDPR/个人信息保护合规检查
### 数据收集
- [ ] Claude Code不收集用户个人数据
- [ ] 会话数据不持久化到第三方服务器
- [ ] API密钥通过环境变量传递,不硬编码
### 数据处理
- [ ] 代码审查不上传源代码到公网
- [ ] 敏感文件在deny列表中
- [ ] 审计日志中脱敏处理
### 数据存储
- [ ] 本地日志有访问控制
- [ ] 日志保留期限符合政策
- [ ] 定期清理过期数据3.5.2 访问控制合规
markdown
## 访问控制检查清单
### 身份认证
- [ ] API密钥安全存储
- [ ] 密钥定期轮换
- [ ] 不同环境使用不同密钥
### 权限管理
- [ ] 最小权限原则
- [ ] 权限配置入库管理
- [ ] 权限变更有审批流程
### 审计追踪
- [ ] 所有敏感操作有日志
- [ ] 日志防篡改
- [ ] 异常行为有告警4. 性能优化
4.1 上下文管理
4.1.1 上下文窗口理解
Claude Code使用的模型有上下文窗口限制,理解并优化上下文使用是提升性能的关键:
上下文组成:
┌─────────────────────────────────────────────────────────────┐
│ 上下文窗口构成 │
├─────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ │
│ │ 系统提示词 │ ~2,000 tokens │
│ │ (System Prompt) │ │
│ └─────────────────┘ │
│ │ │
│ ┌─────────────────┐ │
│ │ CLAUDE.md │ ~1,000-5,000 tokens │
│ │ 项目配置 │ │
│ └─────────────────┘ │
│ │ │
│ ┌─────────────────┐ │
│ │ 对话历史 │ 动态增长 │
│ │ (History) │ │
│ └─────────────────┘ │
│ │ │
│ ┌─────────────────┐ │
│ │ 工具结果 │ 动态增长 │
│ │ (Tool Results) │ │
│ └─────────────────┘ │
│ │ │
│ ┌─────────────────┐ │
│ │ 当前消息 │ 用户输入 │
│ │ (Current) │ │
│ └─────────────────┘ │
│ │
│ 总计:最大 200,000 tokens(Claude 3.5 Sonnet) │
│ │
└─────────────────────────────────────────────────────────────┘4.1.2 上下文优化策略
策略1:精简CLAUDE.md
markdown
# 优化前(冗长)
## 代码规范
我们的团队使用以下代码规范。首先,所有代码必须使用TypeScript编写。
其次,我们要求所有函数都有JSDoc注释。另外,变量命名必须遵循
camelCase规范。还有,类名必须使用PascalCase...
(继续500字)
# 优化后(精简)
## 代码规范
- 语言:TypeScript
- 注释:JSDoc必需
- 命名:变量camelCase,类PascalCase
- 行数:函数<50行,类<300行策略2:使用文件引用而非内联
markdown
# 不推荐:在CLAUDE.md中内联大量内容
## API文档
{大量JSON内容...}
# 推荐:引用外部文件
## API文档
详见 `docs/api-reference.md`策略3:分层配置
项目根目录/CLAUDE.md # 核心规则(<1000 tokens)
├── src/CLAUDE.md # 源码规则(<500 tokens)
├── tests/CLAUDE.md # 测试规则(<500 tokens)
└── docs/CLAUDE.md # 文档规则(<300 tokens)4.1.3 对话管理
定期清理对话:
bash
# 当对话过长时,使用/clear清理
/clear
# 或创建新会话
claude --new-session
# 跨设备继续会话
/teleport # 将当前会话传送到 claude.ai/code分解大任务:
markdown
# 不推荐:一次性大任务
"重构整个项目的所有模块,包括用户模块、订单模块、支付模块..."
# 推荐:分步骤小任务
1. "先分析用户模块的当前结构"
2. "基于分析结果,提出重构方案"
3. "执行用户模块重构"
4. "验证用户模块重构结果"
5. "继续处理订单模块..."💡 Shift+Enter换行
- 在对话框中按
Shift+Enter可以换行而不发送消息 - 零配置,开箱即用
- 适合输入多行指令或复杂提示词
4.2 --verbose调试
4.2.1 启用详细日志
bash
# 启用verbose模式
claude --verbose
# 或在配置中设置
# .claude/settings.json
{
"verbose": true,
"logLevel": "debug"
}4.2.2 verbose输出解读
[DEBUG] 2025-01-15 10:30:45.123 Session started: sess_abc123
[DEBUG] 2025-01-15 10:30:45.125 Loading CLAUDE.md from /project/CLAUDE.md
[DEBUG] 2025-01-15 10:30:45.130 CLAUDE.md tokens: 1,234
[DEBUG] 2025-01-15 10:30:45.135 Loading .claude/settings.json
[DEBUG] 2025-01-15 10:30:45.140 MCP servers: 3 configured
[DEBUG] 2025-01-15 10:30:45.200 MCP server 'context7' connected
[DEBUG] 2025-01-15 10:30:45.300 MCP server 'exa' connected
[DEBUG] 2025-01-15 10:30:45.400 MCP server 'task-master' connected
[INFO] User message received: "帮我分析src/auth目录的代码结构"
[DEBUG] 2025-01-15 10:30:46.000 Context size: 5,432 tokens
[DEBUG] 2025-01-15 10:30:46.001 Available context: 194,568 tokens
[DEBUG] 2025-01-15 10:30:46.002 Model: claude-sonnet-4-5-20250929
[DEBUG] 2025-01-15 10:30:46.100 Tool call: Glob
[DEBUG] 2025-01-15 10:30:46.101 Pattern: src/auth/**/*
[DEBUG] 2025-01-15 10:30:46.150 Result: 12 files found
[DEBUG] 2025-01-15 10:30:46.151 Tokens used: 234
[DEBUG] 2025-01-15 10:30:46.200 Tool call: Read
[DEBUG] 2025-01-15 10:30:46.201 Path: src/auth/index.ts
[DEBUG] 2025-01-15 10:30:46.250 Result: 156 lines, 2,345 tokens
[DEBUG] 2025-01-15 10:30:47.000 API request sent
[DEBUG] 2025-01-15 10:30:47.001 Input tokens: 8,011
[DEBUG] 2025-01-15 10:30:47.002 Max output tokens: 4,096
[DEBUG] 2025-01-15 10:30:52.000 API response received
[DEBUG] 2025-01-15 10:30:52.001 Output tokens: 1,234
[DEBUG] 2025-01-15 10:30:52.002 Latency: 5,000ms
[DEBUG] 2025-01-15 10:30:52.003 Cost: $0.02344.2.3 性能瓶颈定位
常见瓶颈及解决方案:
| 症状 | 可能原因 | 解决方案 |
|---|---|---|
| 响应慢 | 上下文过大 | 清理对话,精简CLAUDE.md |
| 工具调用失败 | MCP服务器问题 | 检查MCP配置和网络 |
| 频繁token超限 | 单次请求过大 | 分解任务 |
| 成本过高 | 无效调用多 | 优化提示词,减少迭代 |
4.3 成本控制
4.3.1 成本计算公式
单次对话成本 = (输入tokens / 1M * 输入价格) + (输出tokens / 1M * 输出价格)
示例(Claude 3.5 Sonnet):
- 输入:$3/百万tokens
- 输出:$15/百万tokens
- 一次10K输入+2K输出:(10,000/1M * 3) + (2,000/1M * 15) = $0.03 + $0.03 = $0.064.3.2 成本优化策略
策略1:选择合适的模型
| 任务类型 | 推荐模型 | 原因 |
|---|---|---|
| 简单代码生成 | Claude 3.5 Haiku | 成本低,速度快 |
| 代码审查 | Claude 3.5 Sonnet | 平衡质量和成本 |
| 架构设计 | Claude 3.5 Opus | 复杂推理能力强 |
策略2:批量处理
bash
# 不推荐:逐个文件处理
claude "检查src/a.ts的代码质量"
claude "检查src/b.ts的代码质量"
claude "检查src/c.ts的代码质量"
# 推荐:批量处理
claude "检查src/目录下所有.ts文件的代码质量,生成汇总报告"策略3:缓存复用
json
// .claude/settings.json
{
"cache": {
"enabled": true,
"ttl": 3600,
"maxSize": "100mb"
}
}4.3.3 成本监控
创建成本监控脚本:
python
#!/usr/bin/env python3
# scripts/monitor-cost.py
import json
from pathlib import Path
from datetime import datetime, timedelta
# 价格配置(美元/百万tokens)
PRICING = {
"claude-3-5-sonnet": {"input": 3.0, "output": 15.0},
"claude-3-5-haiku": {"input": 0.25, "output": 1.25},
"claude-3-opus": {"input": 15.0, "output": 75.0}
}
def calculate_daily_cost(log_dir: str, date: str = None):
"""计算指定日期的使用成本"""
if date is None:
date = datetime.now().strftime("%Y-%m-%d")
log_file = Path(log_dir) / f"{date}.json"
if not log_file.exists():
return {"date": date, "total_cost": 0, "details": []}
with open(log_file) as f:
data = json.load(f)
total_cost = 0
details = []
for entry in data.get("entries", []):
if "tokens" not in entry:
continue
model = entry.get("model", "claude-3-5-sonnet")
prices = PRICING.get(model, PRICING["claude-3-5-sonnet"])
input_tokens = entry["tokens"].get("input", 0)
output_tokens = entry["tokens"].get("output", 0)
cost = (input_tokens / 1_000_000 * prices["input"]) + \
(output_tokens / 1_000_000 * prices["output"])
total_cost += cost
details.append({
"time": entry.get("timestamp"),
"model": model,
"input_tokens": input_tokens,
"output_tokens": output_tokens,
"cost": cost
})
return {
"date": date,
"total_cost": total_cost,
"details": details
}
if __name__ == "__main__":
import sys
log_dir = sys.argv[1] if len(sys.argv) > 1 else "./logs/claude-audit/"
today = calculate_daily_cost(log_dir)
print(f"今日成本:${today['total_cost']:.2f}")4.3.4 成本预警配置
json
// .claude/settings.json
{
"costControl": {
"dailyLimit": 10.0,
"monthlyLimit": 200.0,
"alertThreshold": 0.8,
"alertEmail": "admin@company.com",
"actions": {
"onDailyLimitReached": "warn",
"onMonthlyLimitReached": "block"
}
}
}4.4 性能基准测试
4.4.1 响应时间基准
| 操作类型 | 预期响应时间 | 实际监控阈值 |
|---|---|---|
| 简单问答 | <2秒 | 5秒告警 |
| 代码生成(<100行) | <5秒 | 10秒告警 |
| 代码审查(<500行) | <10秒 | 20秒告警 |
| 大文件分析 | <30秒 | 60秒告警 |
4.4.2 吞吐量基准
| 指标 | 基准值 | 说明 |
|---|---|---|
| 日均请求数 | <500 | 单用户 |
| 日均token消耗 | <100K | 单用户 |
| 并发会话 | <5 | 单用户 |
5. 综合练习
5.1 练习1:配置企业级项目结构
目标:为一个新的企业项目配置完整的Claude Code环境
要求:
- 创建标准目录结构
- 编写项目CLAUDE.md
- 配置权限白名单
- 设置MCP服务器
步骤提示:
bash
# 1. 创建目录结构
mkdir -p .claude/{commands,hooks,skills}
mkdir -p docs/ai-context
touch CLAUDE.md .mcp.json
# 2. 编写配置文件
# 参考本章模板
# 3. 验证配置
claude config validate验收标准:
- 目录结构符合标准
- CLAUDE.md包含所有必要章节
- 权限配置合理
- MCP服务器可正常连接
5.2 练习2:配置CI/CD流水线
目标:为GitHub仓库配置Claude Code自动审查
要求:
- 创建GitHub Actions工作流
- 配置PR自动审查
- 配置安全扫描
- 设置评论交互
步骤提示:
yaml
# .github/workflows/claude.yml
name: Claude CI
on:
pull_request:
types: [opened, synchronize]
jobs:
review:
runs-on: ubuntu-latest
steps:
# 参考本章配置示例验收标准:
- PR创建时自动触发审查
- 审查结果作为评论发布
- 高危问题阻止合并
- 支持@claude交互
5.3 练习3:安全加固
目标:为现有项目进行安全加固
要求:
- 审计当前权限配置
- 识别并修复安全风险
- 配置审计日志
- 创建安全检查清单
步骤提示:
bash
# 1. 检查当前权限
claude config permissions show
# 2. 识别风险配置
# 检查allowedTools是否过于宽松
# 检查是否有敏感路径暴露
# 3. 配置审计日志
# 参考本章审计配置
# 4. 运行安全扫描
/security-review验收标准:
- 敏感目录在deny列表中
- 危险命令被禁止
- 审计日志正常记录
- 安全扫描无高危问题
5.4 练习4:性能优化
目标:优化现有项目的Claude Code使用性能
要求:
- 分析当前性能瓶颈
- 优化上下文使用
- 配置成本监控
- 建立性能基准
步骤提示:
bash
# 1. 启用verbose模式分析
claude --verbose
# 2. 检查CLAUDE.md大小
wc -c CLAUDE.md
# 目标:<5000字符
# 3. 检查对话上下文
# 关注context size日志
# 4. 配置成本监控
# 参考本章监控脚本验收标准:
- CLAUDE.md精简到<5000字符
- 平均响应时间<5秒
- 日成本<$10
- 有成本监控告警
5.5 综合实战:从零搭建企业级环境
场景:你是一家创业公司的技术负责人,需要为团队(10人)搭建Claude Code企业级开发环境。
任务清单:
markdown
## 第一阶段:基础设施(第1周)
### 任务1.1:标准化项目模板
- [ ] 创建项目模板仓库
- [ ] 包含标准目录结构
- [ ] 包含基础CLAUDE.md
- [ ] 包含.claude/配置目录
### 任务1.2:配置管理
- [ ] 建立全局配置规范
- [ ] 建立项目配置模板
- [ ] 配置Git钩子同步配置
## 第二阶段:CI/CD集成(第2周)
### 任务2.1:GitHub Actions
- [ ] 配置自动代码审查
- [ ] 配置安全扫描
- [ ] 配置文档生成
### 任务2.2:工作流优化
- [ ] 创建团队共享命令
- [ ] 配置自动化钩子
- [ ] 建立审查规范
## 第三阶段:安全合规(第3周)
### 任务3.1:权限管理
- [ ] 定义权限策略
- [ ] 配置分环境权限
- [ ] 配置审计日志
### 任务3.2:合规检查
- [ ] 创建合规检查清单
- [ ] 配置自动合规扫描
- [ ] 建立异常告警
## 第四阶段:监控优化(第4周)
### 任务4.1:成本管控
- [ ] 配置成本监控
- [ ] 设置成本预警
- [ ] 建立成本分析报告
### 任务4.2:性能优化
- [ ] 建立性能基准
- [ ] 优化上下文使用
- [ ] 配置性能监控交付物:
- 项目模板仓库
- CI/CD配置文件
- 安全策略文档
- 监控仪表盘
- 团队培训材料
总结
本章介绍了Claude Code在企业环境中的最佳实践,涵盖:
- 团队协作规范:标准化项目结构、CLAUDE.md规范、代码审查流程
- CI/CD集成:GitHub Actions配置、安全审查、自动化流水线
- 安全与合规:权限系统、白名单配置、审计日志、合规检查
- 性能优化:上下文管理、调试技巧、成本控制
掌握这些内容后,你将能够:
- 为团队建立统一的Claude Code使用规范
- 实现自动化的代码审查和安全扫描
- 确保AI辅助开发的安全性和合规性
- 有效控制使用成本并优化性能
版本历史:
- V1.1.0 (2026-01-19):更新至Claude Code 2.1.12,新增Skills和Hooks frontmatter说明、通配符权限、Shift+Enter换行等新特性
- V1.0.0 (2025-12-24):初始版本,基于企业级最佳实践指南创建
最后更新:2026年2月25日