mirror of
https://github.com/catlog22/Claude-Code-Workflow.git
synced 2026-03-06 16:31:12 +08:00
refactor: replace Task tool with Agent tool and fix schema compliance
## Task -> Agent Replacement
- Replace all Task({}) calls with Agent({}) across .claude/ directory
- Update allowed-tools declarations from Task to Agent
- Update documentation references from "Task tool" to "Agent tool"
## Schema Compliance Fixes
### Agent Schema
- Add missing required `description` parameter in 6 files
- Add missing `run_in_background: false` for subagent calls
- Add missing `subagent_type` parameter
### AskUserQuestion Schema
- Fix issue-manage/SKILL.md: reduce options from 5 to 4 (max allowed)
### SendMessage Schema
- Fix team-worker.md: use correct params (type, content, summary)
- Remove invalid `team_name` parameter
### TaskCreate/TaskUpdate Schema
- Remove invalid `blockedBy`, `owner`, `status` from TaskCreate calls
- Use separate TaskUpdate calls for dependencies and ownership
- Fix TaskUpdate syntax to use object parameter
### TeamDelete Schema
- Remove parameters from TeamDelete() calls (should be no params)
### TaskOutput Schema
- Fix Python-style syntax to JavaScript object syntax
## Files Changed
- 146 files updated across commands/, skills/, skills_lib/, agents/
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
---
|
||||
name: skill-tuning
|
||||
description: Universal skill diagnosis and optimization tool. Detect and fix skill execution issues including context explosion, long-tail forgetting, data flow disruption, and agent coordination failures. Supports Gemini CLI for deep analysis. Triggers on "skill tuning", "tune skill", "skill diagnosis", "optimize skill", "skill debug".
|
||||
allowed-tools: Task, AskUserQuestion, Read, Write, Bash, Glob, Grep, mcp__ace-tool__search_context
|
||||
allowed-tools: Agent, AskUserQuestion, Read, Write, Bash, Glob, Grep, mcp__ace-tool__search_context
|
||||
---
|
||||
|
||||
# Skill Tuning
|
||||
|
||||
@@ -193,7 +193,7 @@ async function execute(state, workDir) {
|
||||
type: 'agent_failure',
|
||||
severity: 'medium',
|
||||
location: { file: 'SKILL.md' },
|
||||
description: 'Task tool used but not declared in allowed-tools',
|
||||
description: 'Agent tool used but not declared in allowed-tools',
|
||||
evidence: [`${totalCalls} Task calls found, but Task not in allowed-tools`],
|
||||
root_cause: 'Tool declaration mismatch',
|
||||
impact: 'May cause runtime permission issues',
|
||||
|
||||
@@ -216,7 +216,7 @@ async function execute(state, workDir) {
|
||||
file: 'phases/*.md',
|
||||
action: 'modify',
|
||||
diff: `+ try {
|
||||
const result = await Task({...});
|
||||
const result = await Agent({...});
|
||||
+ if (!result) throw new Error('Empty result');
|
||||
+ } catch (e) {
|
||||
+ updateState({ errors: [...errors, e.message], error_count: error_count + 1 });
|
||||
|
||||
@@ -99,8 +99,9 @@ async function runOrchestrator(workDir) {
|
||||
target_skill: { name: state.target_skill.name, path: state.target_skill.path }
|
||||
};
|
||||
|
||||
const result = await Task({
|
||||
const result = await Agent({
|
||||
subagent_type: 'universal-executor',
|
||||
description: `Execute skill-tuning action: ${actionId}`,
|
||||
run_in_background: false,
|
||||
prompt: `
|
||||
[CONTEXT]
|
||||
|
||||
@@ -114,18 +114,21 @@ Write(`${workDir}/final-output.json`, finalResult); // 只存最终结果
|
||||
// 上下文流转模式
|
||||
async function executePhase(context) {
|
||||
const { previousResult, constraints, config } = context;
|
||||
|
||||
const result = await Task({
|
||||
|
||||
const result = await Agent({
|
||||
subagent_type: 'universal-executor',
|
||||
description: 'Execute phase with context passing',
|
||||
run_in_background: false,
|
||||
prompt: `
|
||||
[CONTEXT]
|
||||
Previous: ${JSON.stringify(previousResult)}
|
||||
Constraints: ${constraints.join(', ')}
|
||||
|
||||
|
||||
[TASK]
|
||||
Process and return result directly.
|
||||
`
|
||||
});
|
||||
|
||||
|
||||
return {
|
||||
...context,
|
||||
currentResult: result,
|
||||
|
||||
@@ -140,8 +140,10 @@ function updateHistory(state, newItem) {
|
||||
|
||||
```javascript
|
||||
// Add summarization before passing to next phase
|
||||
const summary = await Task({
|
||||
const summary = await Agent({
|
||||
subagent_type: 'universal-executor',
|
||||
description: 'Summarize content for context compression',
|
||||
run_in_background: false,
|
||||
prompt: `Summarize in <100 words: ${fullContent}\nReturn JSON: { summary, key_points[] }`
|
||||
});
|
||||
nextPhasePrompt = `Previous summary: ${summary.summary}`;
|
||||
@@ -268,12 +270,17 @@ function validateAgentResult(result, requiredFields) {
|
||||
### flatten_nesting
|
||||
|
||||
```javascript
|
||||
// Before: Agent A's prompt tells it to call Task({subagent_type: 'B'})
|
||||
// Before: Agent A's prompt tells it to call Agent({subagent_type: 'B'})
|
||||
// After: Agent A returns signal, orchestrator handles
|
||||
// Agent A: return { needs_agent_b: true, context: {...} }
|
||||
// Orchestrator:
|
||||
if (parsedA.needs_agent_b) {
|
||||
resultB = await Task({ subagent_type: 'B', prompt: `Context: ${parsedA.context}` });
|
||||
resultB = await Agent({
|
||||
subagent_type: 'B',
|
||||
description: 'Handle delegated task from Agent A',
|
||||
run_in_background: false,
|
||||
prompt: `Context: ${parsedA.context}`
|
||||
});
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user