mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-02-14 02:42:04 +08:00
Add quality gates and tuning strategies documentation
- 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.
This commit is contained in:
195
.claude/skills/skill-tuning/phases/actions/action-complete.md
Normal file
195
.claude/skills/skill-tuning/phases/actions/action-complete.md
Normal file
@@ -0,0 +1,195 @@
|
||||
# Action: Complete
|
||||
|
||||
Finalize the tuning session with summary report and cleanup.
|
||||
|
||||
## Purpose
|
||||
|
||||
- Generate final summary report
|
||||
- Record tuning statistics
|
||||
- Clean up temporary files (optional)
|
||||
- Provide recommendations for future maintenance
|
||||
|
||||
## Preconditions
|
||||
|
||||
- [ ] state.status === 'running'
|
||||
- [ ] quality_gate === 'pass' OR max_iterations reached
|
||||
|
||||
## Execution
|
||||
|
||||
```javascript
|
||||
async function execute(state, workDir) {
|
||||
console.log('Finalizing skill tuning session...');
|
||||
|
||||
const targetSkill = state.target_skill;
|
||||
const startTime = new Date(state.started_at);
|
||||
const endTime = new Date();
|
||||
const duration = Math.round((endTime - startTime) / 1000);
|
||||
|
||||
// Generate final summary
|
||||
const summary = `# Skill Tuning Summary
|
||||
|
||||
**Target Skill**: ${targetSkill.name}
|
||||
**Path**: ${targetSkill.path}
|
||||
**Session Duration**: ${duration} seconds
|
||||
**Completed**: ${endTime.toISOString()}
|
||||
|
||||
---
|
||||
|
||||
## Final Status
|
||||
|
||||
| Metric | Value |
|
||||
|--------|-------|
|
||||
| Final Health Score | ${state.quality_score}/100 |
|
||||
| Quality Gate | ${state.quality_gate.toUpperCase()} |
|
||||
| Total Iterations | ${state.iteration_count} |
|
||||
| Issues Found | ${state.issues.length + state.applied_fixes.flatMap(f => f.issues_resolved || []).length} |
|
||||
| Issues Resolved | ${state.applied_fixes.flatMap(f => f.issues_resolved || []).length} |
|
||||
| Fixes Applied | ${state.applied_fixes.length} |
|
||||
| Fixes Verified | ${state.applied_fixes.filter(f => f.verification_result === 'pass').length} |
|
||||
|
||||
---
|
||||
|
||||
## Diagnosis Summary
|
||||
|
||||
| Area | Issues Found | Severity |
|
||||
|------|--------------|----------|
|
||||
| Context Explosion | ${state.diagnosis.context?.issues_found || 'N/A'} | ${state.diagnosis.context?.severity || 'N/A'} |
|
||||
| Long-tail Forgetting | ${state.diagnosis.memory?.issues_found || 'N/A'} | ${state.diagnosis.memory?.severity || 'N/A'} |
|
||||
| Data Flow | ${state.diagnosis.dataflow?.issues_found || 'N/A'} | ${state.diagnosis.dataflow?.severity || 'N/A'} |
|
||||
| Agent Coordination | ${state.diagnosis.agent?.issues_found || 'N/A'} | ${state.diagnosis.agent?.severity || 'N/A'} |
|
||||
|
||||
---
|
||||
|
||||
## Applied Fixes
|
||||
|
||||
${state.applied_fixes.length === 0 ? '_No fixes applied_' :
|
||||
state.applied_fixes.map((fix, i) => `
|
||||
### ${i + 1}. ${fix.fix_id}
|
||||
|
||||
- **Applied At**: ${fix.applied_at}
|
||||
- **Success**: ${fix.success ? 'Yes' : 'No'}
|
||||
- **Verification**: ${fix.verification_result}
|
||||
- **Rollback Available**: ${fix.rollback_available ? 'Yes' : 'No'}
|
||||
`).join('\n')}
|
||||
|
||||
---
|
||||
|
||||
## Remaining Issues
|
||||
|
||||
${state.issues.length === 0 ? '✅ All issues resolved!' :
|
||||
`${state.issues.length} issues remain:\n\n` +
|
||||
state.issues.map(issue =>
|
||||
`- **[${issue.severity.toUpperCase()}]** ${issue.description} (${issue.id})`
|
||||
).join('\n')}
|
||||
|
||||
---
|
||||
|
||||
## Recommendations
|
||||
|
||||
${generateRecommendations(state)}
|
||||
|
||||
---
|
||||
|
||||
## Backup Information
|
||||
|
||||
Original skill files backed up to:
|
||||
\`${state.backup_dir}\`
|
||||
|
||||
To restore original skill:
|
||||
\`\`\`bash
|
||||
cp -r "${state.backup_dir}/${targetSkill.name}-backup"/* "${targetSkill.path}/"
|
||||
\`\`\`
|
||||
|
||||
---
|
||||
|
||||
## Session Files
|
||||
|
||||
| File | Description |
|
||||
|------|-------------|
|
||||
| ${workDir}/tuning-report.md | Full diagnostic report |
|
||||
| ${workDir}/diagnosis/*.json | Individual diagnosis results |
|
||||
| ${workDir}/fixes/fix-proposals.json | Proposed fixes |
|
||||
| ${workDir}/fixes/applied-fixes.json | Applied fix history |
|
||||
| ${workDir}/tuning-summary.md | This summary |
|
||||
|
||||
---
|
||||
|
||||
*Skill tuning completed by skill-tuning*
|
||||
`;
|
||||
|
||||
Write(`${workDir}/tuning-summary.md`, summary);
|
||||
|
||||
// Update final state
|
||||
return {
|
||||
stateUpdates: {
|
||||
status: 'completed',
|
||||
completed_at: endTime.toISOString()
|
||||
},
|
||||
outputFiles: [`${workDir}/tuning-summary.md`],
|
||||
summary: `Tuning complete: ${state.quality_gate} with ${state.quality_score}/100 health score`
|
||||
};
|
||||
}
|
||||
|
||||
function generateRecommendations(state) {
|
||||
const recommendations = [];
|
||||
|
||||
// Based on remaining issues
|
||||
if (state.issues.some(i => i.type === 'context_explosion')) {
|
||||
recommendations.push('- **Context Management**: Consider implementing a context summarization agent to prevent token growth');
|
||||
}
|
||||
|
||||
if (state.issues.some(i => i.type === 'memory_loss')) {
|
||||
recommendations.push('- **Constraint Tracking**: Add explicit constraint injection to each phase prompt');
|
||||
}
|
||||
|
||||
if (state.issues.some(i => i.type === 'dataflow_break')) {
|
||||
recommendations.push('- **State Centralization**: Migrate to single state.json with schema validation');
|
||||
}
|
||||
|
||||
if (state.issues.some(i => i.type === 'agent_failure')) {
|
||||
recommendations.push('- **Error Handling**: Wrap all Task calls in try-catch blocks');
|
||||
}
|
||||
|
||||
// General recommendations
|
||||
if (state.iteration_count >= state.max_iterations) {
|
||||
recommendations.push('- **Deep Refactoring**: Consider architectural review if issues persist after multiple iterations');
|
||||
}
|
||||
|
||||
if (state.quality_score < 80) {
|
||||
recommendations.push('- **Regular Tuning**: Schedule periodic skill-tuning runs to catch issues early');
|
||||
}
|
||||
|
||||
if (recommendations.length === 0) {
|
||||
recommendations.push('- Skill is in good health! Monitor for regressions during future development.');
|
||||
}
|
||||
|
||||
return recommendations.join('\n');
|
||||
}
|
||||
```
|
||||
|
||||
## State Updates
|
||||
|
||||
```javascript
|
||||
return {
|
||||
stateUpdates: {
|
||||
status: 'completed',
|
||||
completed_at: '<timestamp>'
|
||||
}
|
||||
};
|
||||
```
|
||||
|
||||
## Output
|
||||
|
||||
- **File**: `tuning-summary.md`
|
||||
- **Location**: `${workDir}/tuning-summary.md`
|
||||
- **Format**: Markdown
|
||||
|
||||
## Error Handling
|
||||
|
||||
| Error Type | Recovery |
|
||||
|------------|----------|
|
||||
| Summary write failed | Write to alternative location |
|
||||
|
||||
## Next Actions
|
||||
|
||||
- None (terminal state)
|
||||
Reference in New Issue
Block a user