mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-04 01:40:45 +08:00
- Updated Phase 1 and Phase 2 documentation to include next phase links and data flow details. - Expanded Phase 5 documentation to include comprehensive validation and README generation steps, along with validation report structure. - Added purpose and usage context sections to various action and script templates (e.g., autonomous-action, llm-action, script-bash). - Improved commands management by simplifying the command scanning logic and enabling/disabling commands through renaming files. - Enhanced dashboard command manager to format group names and display nested groups with appropriate icons and colors. - Updated LiteLLM executor to allow model overrides during execution. - Added action reference guide and template reference sections to the skill-tuning SKILL.md for better navigation and understanding.
9.3 KiB
9.3 KiB
Autonomous Action Template
自主模式动作文件的模板。
Purpose
生成 Autonomous 执行模式的 Action 文件,定义可独立执行的动作单元。
Usage Context
| Phase | Usage |
|---|---|
| Phase 3 (Phase Generation) | config.execution_mode === 'autonomous' 时生成 |
| Generation Trigger | 为每个 config.autonomous_config.actions 生成一个 action 文件 |
| Output Location | .claude/skills/{skill-name}/phases/actions/{action-id}.md |
模板结构
# Action: {{action_name}}
{{action_description}}
## Purpose
{{purpose}}
## Preconditions
{{preconditions_list}}
## Scripts
\`\`\`yaml
# 声明本动作使用的脚本(可选)
# - script-id # 对应 scripts/script-id.py 或 .sh
\`\`\`
## Execution
\`\`\`javascript
async function execute(state) {
{{execution_code}}
// 调用脚本示例
// const result = await ExecuteScript('script-id', { input: state.context.data });
// if (!result.success) throw new Error(result.stderr);
}
\`\`\`
## State Updates
\`\`\`javascript
return {
stateUpdates: {
{{state_updates}}
}
};
\`\`\`
## Error Handling
| Error Type | Recovery |
|------------|----------|
{{error_handling_table}}
## Next Actions (Hints)
{{next_actions_hints}}
变量说明
| 变量 | 说明 |
|---|---|
{{action_name}} |
动作名称 |
{{action_description}} |
动作描述 |
{{purpose}} |
详细目的 |
{{preconditions_list}} |
前置条件列表 |
{{execution_code}} |
执行代码 |
{{state_updates}} |
状态更新 |
{{error_handling_table}} |
错误处理表格 |
{{next_actions_hints}} |
后续动作提示 |
动作类型模板
1. 初始化动作 (Init)
# Action: Initialize
初始化 Skill 执行状态。
## Purpose
设置初始状态,准备执行环境。
## Preconditions
- [ ] state.status === 'pending'
## Execution
\`\`\`javascript
async function execute(state) {
// 1. 创建工作目录
Bash(\`mkdir -p "\${workDir}"\`);
// 2. 初始化数据
const initialData = {
items: [],
metadata: {}
};
// 3. 返回状态更新
return {
stateUpdates: {
status: 'running',
context: initialData
}
};
}
\`\`\`
## State Updates
\`\`\`javascript
return {
stateUpdates: {
status: 'running',
started_at: new Date().toISOString(),
context: { /* 初始数据 */ }
}
};
\`\`\`
## Next Actions
- 成功: 进入主处理循环
- 失败: action-abort
2. 列表动作 (List)
# Action: List Items
显示当前项目列表。
## Purpose
展示所有项目供用户查看和选择。
## Preconditions
- [ ] state.status === 'running'
## Execution
\`\`\`javascript
async function execute(state) {
const items = state.context.items || [];
if (items.length === 0) {
console.log('暂无项目');
} else {
console.log('项目列表:');
items.forEach((item, i) => {
console.log(\`\${i + 1}. \${item.name} - \${item.status}\`);
});
}
return {
stateUpdates: {
last_action: 'list',
current_view: 'list'
}
};
}
\`\`\`
## State Updates
\`\`\`javascript
return {
stateUpdates: {
current_view: 'list',
last_viewed_at: new Date().toISOString()
}
};
\`\`\`
## Next Actions
- 用户选择创建: action-create
- 用户选择编辑: action-edit
- 用户退出: action-complete
3. 创建动作 (Create)
# Action: Create Item
创建新项目。
## Purpose
引导用户创建新项目。
## Preconditions
- [ ] state.status === 'running'
## Execution
\`\`\`javascript
async function execute(state) {
// 1. 收集信息
const input = await AskUserQuestion({
questions: [{
question: "请输入项目名称:",
header: "名称",
multiSelect: false,
options: [
{ label: "手动输入", description: "输入自定义名称" }
]
}]
});
// 2. 创建项目
const newItem = {
id: Date.now().toString(),
name: input["名称"],
status: 'pending',
created_at: new Date().toISOString()
};
// 3. 返回状态更新
return {
stateUpdates: {
context: {
...state.context,
items: [...(state.context.items || []), newItem]
},
last_created_id: newItem.id
}
};
}
\`\`\`
## State Updates
\`\`\`javascript
return {
stateUpdates: {
'context.items': [...items, newItem],
last_action: 'create',
last_created_id: newItem.id
}
};
\`\`\`
## Next Actions
- 继续创建: action-create
- 返回列表: action-list
4. 编辑动作 (Edit)
# Action: Edit Item
编辑现有项目。
## Purpose
修改已存在的项目。
## Preconditions
- [ ] state.status === 'running'
- [ ] state.selected_item_id !== null
## Execution
\`\`\`javascript
async function execute(state) {
const itemId = state.selected_item_id;
const items = state.context.items || [];
const item = items.find(i => i.id === itemId);
if (!item) {
throw new Error(\`Item not found: \${itemId}\`);
}
// 1. 显示当前值
console.log(\`当前名称: \${item.name}\`);
// 2. 收集新值
const input = await AskUserQuestion({
questions: [{
question: "请输入新名称(留空保持不变):",
header: "新名称",
multiSelect: false,
options: [
{ label: "保持不变", description: \`当前: \${item.name}\` },
{ label: "手动输入", description: "输入新名称" }
]
}]
});
// 3. 更新项目
const updatedItems = items.map(i =>
i.id === itemId
? { ...i, name: input["新名称"] || i.name, updated_at: new Date().toISOString() }
: i
);
return {
stateUpdates: {
context: { ...state.context, items: updatedItems },
selected_item_id: null
}
};
}
\`\`\`
## State Updates
\`\`\`javascript
return {
stateUpdates: {
'context.items': updatedItems,
selected_item_id: null,
last_action: 'edit'
}
};
\`\`\`
## Next Actions
- 返回列表: action-list
5. 删除动作 (Delete)
# Action: Delete Item
删除项目。
## Purpose
从列表中移除项目。
## Preconditions
- [ ] state.status === 'running'
- [ ] state.selected_item_id !== null
## Execution
\`\`\`javascript
async function execute(state) {
const itemId = state.selected_item_id;
const items = state.context.items || [];
// 1. 确认删除
const confirm = await AskUserQuestion({
questions: [{
question: "确认删除此项目?",
header: "确认",
multiSelect: false,
options: [
{ label: "确认删除", description: "不可恢复" },
{ label: "取消", description: "返回列表" }
]
}]
});
if (confirm["确认"] === "取消") {
return { stateUpdates: { selected_item_id: null } };
}
// 2. 执行删除
const updatedItems = items.filter(i => i.id !== itemId);
return {
stateUpdates: {
context: { ...state.context, items: updatedItems },
selected_item_id: null
}
};
}
\`\`\`
## State Updates
\`\`\`javascript
return {
stateUpdates: {
'context.items': filteredItems,
selected_item_id: null,
last_action: 'delete'
}
};
\`\`\`
## Next Actions
- 返回列表: action-list
6. 完成动作 (Complete)
# Action: Complete
完成任务并退出。
## Purpose
保存最终状态,结束 Skill 执行。
## Preconditions
- [ ] state.status === 'running'
## Execution
\`\`\`javascript
async function execute(state) {
// 1. 保存最终数据
Write(\`\${workDir}/final-output.json\`, JSON.stringify(state.context, null, 2));
// 2. 生成摘要
const summary = {
total_items: state.context.items?.length || 0,
duration: Date.now() - new Date(state.started_at).getTime(),
actions_executed: state.completed_actions.length
};
console.log('任务完成!');
console.log(\`处理项目: \${summary.total_items}\`);
console.log(\`执行动作: \${summary.actions_executed}\`);
return {
stateUpdates: {
status: 'completed',
summary: summary
}
};
}
\`\`\`
## State Updates
\`\`\`javascript
return {
stateUpdates: {
status: 'completed',
completed_at: new Date().toISOString(),
summary: { /* 统计信息 */ }
}
};
\`\`\`
## Next Actions
- 无(终止状态)
生成函数
function generateAction(actionConfig, skillConfig) {
return `# Action: ${actionConfig.name}
${actionConfig.description || `执行 ${actionConfig.name} 操作`}
## Purpose
${actionConfig.purpose || 'TODO: 描述此动作的详细目的'}
## Preconditions
${actionConfig.preconditions?.map(p => `- [ ] ${p}`).join('\n') || '- [ ] 无特殊前置条件'}
## Execution
\`\`\`javascript
async function execute(state) {
// TODO: 实现动作逻辑
return {
stateUpdates: {
completed_actions: [...state.completed_actions, '${actionConfig.id}']
}
};
}
\`\`\`
## State Updates
\`\`\`javascript
return {
stateUpdates: {
// TODO: 定义状态更新
${actionConfig.effects?.map(e => ` // Effect: ${e}`).join('\n') || ''}
}
};
\`\`\`
## Error Handling
| Error Type | Recovery |
|------------|----------|
| 数据验证失败 | 返回错误,不更新状态 |
| 执行异常 | 记录错误,增加 error_count |
## Next Actions (Hints)
- 成功: 由编排器根据状态决定
- 失败: 重试或 action-abort
`;
}