Files
Claude-Code-Workflow/docs/skills/templates/autonomous-action.md
catlog22 8ceae6d6fd Add Chinese documentation for custom skills development and reference guide
- Created a new document for custom skills development (`custom.md`) detailing the structure, creation, implementation, and best practices for developing custom CCW skills.
- Added an index document (`index.md`) summarizing all built-in skills, their categories, and usage examples.
- Introduced a reference guide (`reference.md`) providing a quick reference for all 33 built-in CCW skills, including triggers and purposes.
2026-03-01 13:08:12 +08:00

5.8 KiB

Autonomous Action Template

用途: 自主行动模板,用于 Autonomous 类型 Skill 的具体行动

模板

# Action: {Action Name}

> **Skill**: {Skill Name}
> **Action Type**: {Analysis|Execution|Verification}
> **Estimated Duration**: {X minutes}

## Description

详细描述这个行动的目的和功能

## Trigger Conditions

| Condition | Description | Check Method |
|-----------|-------------|--------------|
| condition1 | 描述 | 如何检查 |
| condition2 | 描述 | 如何检查 |

## Input Parameters

| Parameter | Type | Required | Description | Default |
|-----------|------|----------|-------------|---------|
| param1 | string | Yes | 参数描述 | - |
| param2 | number | No | 参数描述 | 42 |
| param3 | array | No | 参数描述 | [] |

## Output

| Field | Type | Description |
|-------|------|-------------|
| result1 | string | 结果描述 |
| result2 | object | 结果描述 |
| success | boolean | 行动是否成功 |

## Execution Logic

### Step 1: {Step Name}

**Description**: 步骤描述

**Implementation**:
```typescript
// 示例代码
const step1Result = await doSomething(input);
if (!step1Result) {
  throw new Error('Step 1 failed');
}

Validation: 如何验证步骤成功

Step 2: {Step Name}

Description: 步骤描述

Implementation:

// 示例代码
const step2Result = await process(step1Result);

Validation: 如何验证步骤成功

Step 3: {Step Name}

...

Error Handling

Error Cause Handling Retry
ErrorType1 原因描述 处理方式 Yes/No
ErrorType2 原因描述 处理方式 Yes/No

Error Recovery Logic:

try {
  return await execute();
} catch (error) {
  if (error instanceof RecoverableError) {
    return await recover(error);
  }
  throw error;
}

Side Effects

Effect Description Mitigation
Side effect 1 描述 缓解措施
Side effect 2 描述 缓解措施

Dependencies

Dependency Type Version Description
dep1 internal - 内部依赖描述
dep2 external ^1.0.0 外部依赖描述

Testing

Test Cases

Case Input Expected Output
Normal case {param: "value"} {result: "expected"}
Edge case {param: null} {result: "default"}
Error case {param: "invalid"} Throws Error

Test Implementation

describe('ActionName', () => {
  it('should handle normal case', async () => {
    const result = await actionName({ param: 'value' });
    expect(result).toEqual({ result: 'expected' });
  });

  it('should handle edge case', async () => {
    const result = await actionName({ param: null });
    expect(result).toEqual({ result: 'default' });
  });

  it('should throw on invalid input', async () => {
    await expect(actionName({ param: 'invalid' }))
      .rejects.toThrow(Error);
  });
});

Metrics

Metric Type Unit
duration histogram milliseconds
success_rate gauge percentage
error_count counter count

Example Usage

// 基本使用
const result = await actionName({
  param1: 'value1',
  param2: 100
});

console.log(result);

// 带重试
const result = await actionName.withRetry({
  param1: 'value1'
}, { maxRetries: 3 });

// 带回调
await actionName.withCallback({
  param1: 'value1'
}, {
  onProgress: (progress) => console.log(progress),
  onComplete: (result) => console.log('Done', result)
});

## 使用说明

1. **触发**: skill-generator Phase 3 (Autonomous 模式)
2. **输入**: Phase 2 skill-config.json
3. **输出**: actions/{action-name}.md
4. **命名**: 使用动词-名词格式 (如 collect-context.md)

---

## 示例

### 简化示例

```markdown
# Action: quick-scan

> **Skill**: review-code
> **Action Type**: Analysis
> **Estimated Duration**: 5 minutes

## Description

快速扫描目标代码,识别高风险区域,为深度审查提供焦点

## Trigger Conditions

| Condition | Description | Check Method |
|-----------|-------------|--------------|
| context_collected | 上下文收集完成 | state.context != null |
| target_exists | 目标路径有效 | file exists check |

## Input Parameters

| Parameter | Type | Required | Description | Default |
|-----------|------|----------|-------------|---------|
| files | array | Yes | 要扫描的文件列表 | - |
| dimensions | array | No | 要检查的维度 | ["all"] |
| risk_threshold | number | No | 风险阈值 | 0.5 |

## Output

| Field | Type | Description |
|-------|------|-------------|
| risk_areas | array | 高风险区域列表 |
| scan_summary | object | 扫描摘要 |
| recommendations | array | 建议的审查重点 |

## Execution Logic

### Step 1: 按文件类型分组

```typescript
const groups = groupBy(files, f => f.extension);
// ts/tsx -> TypeScript review rules
// py -> Python review rules

Step 2: 应用快速检查规则

const risks = [];
for (const file of files) {
  const fileRisks = applyQuickChecks(file);
  risks.push(...fileRisks);
}

Step 3: 聚合和排序

const aggregated = aggregateByLocation(risks);
const sorted = sortBySeverity(aggregated);

Error Handling

Error Cause Handling Retry
FileAccessError 文件无法读取 跳过文件,记录警告 No
ParseError 代码解析失败 标记为需要人工审查 No

Testing

Case Input Expected Output
Normal 10 files risk_areas non-empty
Empty 0 files risk_areas empty
ParseError Invalid code Area marked for manual review