mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-05 01:50:27 +08:00
- Introduced quality gates specification for skill tuning, detailing quality dimensions, scoring, and gate definitions. - Added comprehensive tuning strategies for various issue categories, including context explosion, long-tail forgetting, data flow, and agent coordination. - Created templates for diagnosis reports and fix proposals to standardize documentation and reporting processes.
4.1 KiB
4.1 KiB
Action: Abort
Abort the tuning session due to unrecoverable errors.
Purpose
- Safely terminate on critical failures
- Preserve diagnostic information for debugging
- Ensure backup remains available
- Notify user of failure reason
Preconditions
- state.error_count >= state.max_errors
- OR critical failure detected
Execution
async function execute(state, workDir) {
console.log('Aborting skill tuning session...');
const errors = state.errors;
const targetSkill = state.target_skill;
// Generate abort report
const abortReport = `# Skill Tuning Aborted
**Target Skill**: ${targetSkill?.name || 'Unknown'}
**Aborted At**: ${new Date().toISOString()}
**Reason**: Too many errors or critical failure
---
## Error Log
${errors.length === 0 ? '_No errors recorded_' :
errors.map((err, i) => `
### Error ${i + 1}
- **Action**: ${err.action}
- **Message**: ${err.message}
- **Time**: ${err.timestamp}
- **Recoverable**: ${err.recoverable ? 'Yes' : 'No'}
`).join('\n')}
---
## Session State at Abort
- **Status**: ${state.status}
- **Iteration Count**: ${state.iteration_count}
- **Completed Actions**: ${state.completed_actions.length}
- **Issues Found**: ${state.issues.length}
- **Fixes Applied**: ${state.applied_fixes.length}
---
## Recovery Options
### Option 1: Restore Original Skill
If any changes were made, restore from backup:
\`\`\`bash
cp -r "${state.backup_dir}/${targetSkill?.name || 'backup'}-backup"/* "${targetSkill?.path || 'target'}/"
\`\`\`
### Option 2: Resume from Last State
The session state is preserved at:
\`${workDir}/state.json\`
To resume:
1. Fix the underlying issue
2. Reset error_count in state.json
3. Re-run skill-tuning with --resume flag
### Option 3: Manual Investigation
Review the following files:
- Diagnosis results: \`${workDir}/diagnosis/*.json\`
- Error log: \`${workDir}/errors.json\`
- State snapshot: \`${workDir}/state.json\`
---
## Diagnostic Information
### Last Successful Action
${state.completed_actions.length > 0 ? state.completed_actions[state.completed_actions.length - 1] : 'None'}
### Current Action When Failed
${state.current_action || 'Unknown'}
### Partial Diagnosis Results
- Context: ${state.diagnosis.context ? 'Completed' : 'Not completed'}
- Memory: ${state.diagnosis.memory ? 'Completed' : 'Not completed'}
- Data Flow: ${state.diagnosis.dataflow ? 'Completed' : 'Not completed'}
- Agent: ${state.diagnosis.agent ? 'Completed' : 'Not completed'}
---
*Skill tuning aborted - please review errors and retry*
`;
// Write abort report
Write(`${workDir}/abort-report.md`, abortReport);
// Save error log
Write(`${workDir}/errors.json`, JSON.stringify(errors, null, 2));
// Notify user
await AskUserQuestion({
questions: [{
question: `Skill tuning aborted due to ${errors.length} errors. Would you like to restore the original skill?`,
header: 'Restore',
multiSelect: false,
options: [
{ label: 'Yes, restore', description: 'Restore original skill from backup' },
{ label: 'No, keep changes', description: 'Keep any partial changes made' }
]
}]
}).then(async response => {
if (response['Restore'] === 'Yes, restore') {
// Restore from backup
if (state.backup_dir && targetSkill?.path) {
Bash(`cp -r "${state.backup_dir}/${targetSkill.name}-backup"/* "${targetSkill.path}/"`);
console.log('Original skill restored from backup.');
}
}
}).catch(() => {
// User cancelled, don't restore
});
return {
stateUpdates: {
status: 'failed',
completed_at: new Date().toISOString()
},
outputFiles: [`${workDir}/abort-report.md`, `${workDir}/errors.json`],
summary: `Tuning aborted: ${errors.length} errors. Check abort-report.md for details.`
};
}
State Updates
return {
stateUpdates: {
status: 'failed',
completed_at: '<timestamp>'
}
};
Output
- File:
abort-report.md - Location:
${workDir}/abort-report.md
Error Handling
This action should not fail - it's the final error handler.
Next Actions
- None (terminal state)