16.2 Skills 配置选项

配置选项概述

Skills 提供了丰富的配置选项,允许用户根据具体需求定制 Skills 的行为。本节将详细介绍各种配置选项及其使用方法。

配置层级

1. 全局配置

1.1 配置文件位置

全局配置文件

文件位置

  • Linux/macOS: ~/.claude/config.yaml
  • Windows: %USERPROFILE%.claude\config.yaml

配置示例

# Claude Code 全局配置
version: "1.0"
 
skills:
  # 全局 Skill 设置
  default_timeout: 300
  max_retries: 3
  log_level: INFO
 
  # 默认参数
  defaults:
    code-review:
      strict: false
      include_security: true
 
    generate-tests:
      framework: pytest
      coverage_target: 80

1.2 全局配置项

# 全局配置项详解
skills:
  # 执行配置
  execution:
    timeout: 300 # 默认超时时间(秒)
    max_concurrent: 4 # 最大并发数
    retry_policy:
      max_attempts: 3 # 最大重试次数
      backoff: exponential # 退避策略:linear, exponential
      initial_delay: 1 # 初始延迟(秒)
 
  # 缓存配置
  cache:
    enabled: true # 是否启用缓存
    ttl: 3600 # 缓存生存时间(秒)
    max_size: 1000 # 最大缓存条目数
    storage: memory # 存储类型:memory, disk, redis
 
  # 日志配置
  logging:
    level: INFO # 日志级别:DEBUG, INFO, WARNING, ERROR
    format: text # 日志格式:text, json
    output: console # 输出位置:console, file, both
    file_path: /tmp/claude-skills.log
 
  # 性能配置
  performance:
    enable_profiling: false # 是否启用性能分析
    profile_interval: 60 # 性能分析间隔(秒)
    memory_limit: 1024 # 内存限制(MB)
 
  # 安全配置
  security:
    validate_inputs: true # 是否验证输入
    sanitize_outputs: true # 是否清理输出
    allow_network: false # 是否允许网络访问

2. 项目配置

2.1 配置文件位置

    ## 项目配置文件
 
    ### 文件位置
    - 项目根目录: .claude/project.yaml
 
    ### 配置示例
    ~~~yaml
 
```yaml
    # 项目特定配置
    version: "1.0"
 
    project:
      name: "my-project"
      type: "web-application"
      language: "python"
      framework: "flask"
 
    skills:
      # 项目特定的 Skill 设置
      code-review:
        strict: true
        custom_rules:
          - no_print_statements
          - type_hints_required
        ignore_patterns:
          - "*/tests/*"
          - "*/migrations/*"
          - "*/vendor/*"
 
      generate-tests:
        framework: "pytest"
        coverage_target: 90
        test_dir: "tests"
        mock_external_calls: true
 
      format-code:
        style: "black"
        line_length: 88
        target_version: "py38"
 
    #### 2.2 项目配置项
 
yaml
```

项目配置项详解

project:

项目元数据

metadata: name: "my-project" description: "A web application" version: "1.0.0" author: "Team"

技术栈

tech_stack: language: "python" version: "3.9" frameworks: - name: "flask" version: "2.3.0" - name: "sqlalchemy" version: "2.0.0" libraries: - name: "requests" version: "2.28.0" - name: "numpy" version: "1.24.0"

代码规范

code_standards: style_guide: "PEP8" formatter: "black" linter: "pylint" max_line_length: 88 docstring_style: "google"

测试配置

testing: framework: "pytest" coverage_target: 80 test_dir: "tests" mock_external: true

文档配置

documentation: format: "markdown" include_api_docs: true include_examples: true output_dir: "docs"

skills:

Skill 覆盖配置

overrides: code-review: enabled: true priority: high parameters: strict: true include_security: true include_performance: true

 
    generate-tests:
      enabled: true
      priority: medium
      parameters:
        framework: pytest
        coverage_target: 90
        generate_mocks: true

3. 用户配置

3.1 配置文件位置

用户配置文件

文件位置

  • Linux/macOS: ~/.claude/user.yaml
  • Windows: %USERPROFILE%.claude\user.yaml

配置示例

 
    `yaml
 
    # 用户特定配置
    version: "1.0"
 
    user:
    name: "John Doe"
    email: "[email protected]"
 
    preferences:
     # 编码偏好
    coding:
    language: "python"
    style: "PEP8"
    formatter: "black"
    indent_size: 4
 
     # 输出偏好
    output:
    format: "markdown"
    verbosity: "normal"
    include_code_blocks: true
    color_output: true
 
     # 交互偏好
    interaction:
    auto_confirm: false
    show_progress: true
    show_timing: true
 
     # 编辑器偏好
    editor:
```yaml
    default: "vscode"
    line_numbers: true
    word_wrap: false
 
    skills:

用户自定义的 Skill 设置

aliases: cr: code-review gt: generate-tests fc: format-code

favorites:

  • code-review
  • generate-tests
  • refactor-code
 

3.2 用户配置项

用户配置项详解

user:

用户信息

profile: name: "John Doe" email: "[email protected]" timezone: "UTC+8" language: "zh-CN" preferences:

交互偏好

interaction: auto_confirm: false # 自动确认 show_progress: true # 显示进度 show_timing: true # 显示耗时 show_details: false # 显示详细信息 prompt_style: "compact" # 提示样式:compact, verbose

输出偏好

output: format: "markdown" # 输出格式:markdown, json, html verbosity: "normal" # 详细程度:quiet, normal, verbose include_code_blocks: true # 包含代码块 include_line_numbers: false # 包含行号 color_output: true # 彩色输出 max_lines: 1000 # 最大输出行数

编辑器偏好

editor: default: "vscode" # 默认编辑器 open_in_new_tab: true # 在新标签页打开 focus_after_open: true # 打开后聚焦 line_numbers: true # 显示行号 word_wrap: false # 自动换行

通知偏好

notifications: enabled: true # 启用通知 on_completion: true # 完成时通知 on_error: true # 错误时通知 sound: false # 播放声音 skills:

Skill 别名

aliases: cr: code-review gt: generate-tests fc: format-code ref: refactor-code doc: generate-docs

常用 Skills

favorites:

  • code-review
  • generate-tests
  • format-code
  • refactor-code

Skill 默认参数

defaults: code-review: strict: false include_security: true generate-tests: framework: pytest coverage_target: 80 format-code: style: black line_length: 88
 
 
    ### 4. Skill 特定配置
    #### 4.1 代码审查配置

code-review Skill 配置

skills: code-review: # 基本设置 enabled: true priority: high

 
    # 审查标准
    standards:
      # 代码质量
      quality:
        check_complexity: true
        max_complexity: 10
        check_duplication: true
        max_duplication: 5
 
      # 安全性
      security:
        enabled: true
        check_sql_injection: true
        check_xss: true
        check_hardcoded_secrets: true
        check_insecure_deserialization: true
 
      # 性能
      performance:
        enabled: true
        check_n_plus_one: true
        check_memory_leaks: true
        check_inefficient_loops: true
 
      # 最佳实践
      best_practices:
        enabled: true
        check_error_handling: true
        check_logging: true
        check_documentation: true
        check_type_hints: true
 
    # 严格程度
    strictness: "medium"  # low, medium, high, strict
 
    # 忽略规则
    ignore_rules:
      - "line-too-long"
      - "too-many-arguments"
 
    # 忽略模式
    ignore_patterns:
      - "*/tests/*"
      - "*/migrations/*"
      - "*/vendor/*"
      - "*/node_modules/*"
 
    # 输出格式
    output:
      format: "markdown"
      include_code_snippets: true
      include_fix_suggestions: true
      group_by_severity: true
 
    # 自定义规则
    custom_rules:
      - name: "no_print_statements"
        severity: "warning"
        message: "Avoid using print statements"
        pattern: "print\\("
 
      - name: "type_hints_required"
        severity: "error"
        message: "Function must have type hints"
        check_function: has_type_hints

4.2 测试生成配置

generate-tests Skill 配置

skills: generate-tests:

基本设置

enabled: true priority: medium

测试框架

framework: "pytest" # pytest, unittest, jest, mocha

测试类型

test_types:

  • unit_tests
  • integration_tests
  • edge_cases

覆盖率目标

coverage: enabled: true target: 80 minimum: 60

测试生成策略

generation: strategy: "comprehensive" # basic, comprehensive, exhaustive include_positive_tests: true include_negative_tests: true include_edge_cases: true include_boundary_tests: true

Mock 配置

mocking: enabled: true mock_external_calls: true mock_database: true mock_network: true use_realistic_mocks: true

测试数据

test_data: generate_fixtures: true use_realistic_data: true include_edge_cases: true

输出配置

output: testdir: "tests" file_naming: "test{module}.py" include_docstrings: true include_comments: true

断言配置

assertions: use_strict_assertions: true include_error_messages: true check_return_values: true check_exceptions: true

 
    #### 4.3 代码格式化配置

format-code Skill 配置

skills: format-code: # 基本设置 enabled: true priority: low

 
    # 格式化工具
    formatter: "black"  # black, autopep8, yapf, prettier
 
    # 格式化规则
    rules:
      line_length: 88
      indent_size: 4
      indent_style: "space"
      quote_style: "double"
      trailing_comma: true
      spaces_around_operators: true
 
    # 目标版本
    target_version: "py38"
 
    # 排除文件
    exclude:
      - "*/tests/*"
      - "*/migrations/*"
      - "*/vendor/*"
 
    # 自动修复
    auto_fix: true
    fix_imports: true
    sort_imports: true
 
    # 输出配置
    output:
      in_place: true
      create_backup: true
      show_diff: true

配置优先级

优先级规则

配置优先级(从高到低)

1. 命令行参数

 
    `bash
 
    claude --skill code-review --strict --file src/main.py
 
    ```### 2. 环境变量
 
bash
 
```typescript
export CLAUDE_SKILL_CODE_REVIEW_STRICT=true

### 3\. 项目配置

```bash

    ````yaml

```yaml
    # .claude/project.yaml
    skills:
    code-review:
    strict: true

    ```### 4. 用户配置

yaml

~/.claude/user.yaml

skills: code-review: strict: false

5. 全局配置

 
    ````yaml
 
```yaml
    # ~/.claude/config.yaml
    skills:
    code-review:
    strict: false
 
    ```### 6. 默认配置
 
yaml

内置默认值

strict: false

配置合并

 
```python
    class ConfigManager:
        def __init__(self):
            self.configs = {
                "default": self.load_default_config(),
                "global": self.load_global_config(),
                "user": self.load_user_config(),
                "project": self.load_project_config()
            }
 
        def get_config(self, skill_name, key):

按优先级查找配置

            for config_type in ["project", "user", "global", "default"]:
                config = self.configs[config_type]
                if skill_name in config.get("skills", {}):
                    skill_config = config["skills"][skill_name]
                    if key in skill_config:
                        return skill_config[key]
            return None
 
        def merge_configs(self, skill_name):

合并所有配置

merged =

            for config_type in ["default", "global", "user", "project"]:
                config = self.configs[config_type]
                if skill_name in config.get("skills", {}):
                    merged = self.deep_merge(merged, config["skills"][skill_name])
            return merged
 
        def deep_merge(self, dict1, dict2):
            result = dict1.copy()
            for key, value in dict2.items():
                if key in result and isinstance(result[key], dict) and isinstance(value, dict):
                    result[key] = self.deep_merge(result[key], value)
                else:
                    result[key] = value
            return result
 

动态配置

1. 环境变量

环境变量配置

命名规则

  • 前缀: CLAUDE_SKILL_
  • 格式: CLAUDE_SKILL_{SKILL_NAME}_{KEY}
  • 示例: CLAUDE_SKILL_CODE_REVIEW_STRICT

使用示例

`bash
 
# 设置代码审查严格模式
 
```typescript
export CLAUDE_SKILL_CODE_REVIEW_STRICT=true
 
```
 
# 设置测试生成覆盖率目标
 
```typescript
export CLAUDE_SKILL_GENERATE_TESTS_COVERAGE_TARGET=90
 
```
 
# 设置格式化工具
 
```typescript
export CLAUDE_SKILL_FORMAT_CODE_FORMATTER=black
 
```
 
```> >
 
````
 
### 2\. 运行时配置
 
```python
class RuntimeConfig: def **init**(self): self.config = {} def set(self, key, value): self.config[key] = value def get(self, key, default=None): return self.config.get(key, default) def update(self, updates): self.config.update(updates) def clear(self): self.config.clear()
 
````
 
## 使用示例
 
runtime_config = RuntimeConfig() runtime_config.set("code_review.strict", True) runtime_config.set("generate_tests.coverage_target", 90)
 
```bash
 
### 3. 条件配置
```
 
## 条件配置示例
 
skills: code-review: # 根据环境配置 environments: development: strict: false include_performance: false testing: strict: true include_performance: true production: strict: true include_performance: true include_security: true
 
```bash
 
# 根据文件类型配置
file_types:
  python:
    check_type_hints: true
    check_docstrings: true
  javascript:
    check_eslint: true
    check_typescript: true
  html:
    check_accessibility: true
    check_seo: true
```
 
## 配置验证
 
### 1\. 配置验证
 
```python
class ConfigValidator: def **init**(self): self.schemas = self.load_schemas() def validate(self, skill_name, config): schema = self.schemas.get(skill_name) if not schema: return True errors = [] for key, value in config.items(): if key not in schema: errors.append(f"Unknown configuration key: {key}") continue key_schema = schema[key] if not self.validate_value(value, key_schema): errors.append(f"Invalid value for {key}: {value}") return len(errors) == 0, errors def validate_value(self, value, schema): value_type = schema.get("type") if value_type == "boolean": return isinstance(value, bool) elif value_type == "integer": return isinstance(value, int) elif value_type == "string": return isinstance(value, str) elif value_type == "enum": return value in schema.get("values", []) return True def load_schemas(self): return { "code-review": { "strict": {"type": "boolean"}, "include_security": {"type": "boolean"}, "include_performance": {"type": "boolean"}, "strictness": {"type": "enum", "values": ["low", "medium", "high", "strict"]} }, "generate-tests": { "framework": {"type": "enum", "values": ["pytest", "unittest", "jest", "mocha"]}, "coverage_target": {"type": "integer"}, "mock_external_calls": {"type": "boolean"} } }
 
```
 
```bash
 
### 2. 配置迁移
```
 
```python
class ConfigMigrator: def **init**(self): self.migrations = { "1.0": self.migrate_1_0_to_1_1, "1.1": self.migrate_1_1_to_1_2 }
 
```
 
````bash
 
def migrate(self, config, from_version, to_version):
    current_version = from_version
    while current_version != to_version:
        if current_version in self.migrations:
            config = self.migrations[current_version](config)
            current_version = self.increment_version(current_version)
        else:
            break
    return config
 
def migrate_1_0_to_1_1(self, config):
    # 迁移逻辑
    if "skills" in config:
        for skill_name, skill_config in config["skills"].items():
            if "strict" in skill_config:
                skill_config["strictness"] = "high" if skill_config["strict"] else "low"
    return config
 
def increment_version(self, version):
    major, minor = version.split(".")
    return f"{major}.{int(minor) + 1}"
 
```bash
 
## 总结
 
Skills 的配置选项提供了灵活的定制能力,通过合理的配置可以显著提高 Skills 的适用性和效率。理解配置层级、优先级和验证机制有助于更好地管理和使用 Skills。
 
在下一节中,我们将探讨 Skills 的生命周期管理,了解 Skills 的创建、更新、删除等操作。
 
````
 
```
 
```