This skill enables dynamic team creation and management for executing complex engineering tasks through coordinated AI agents with intelligent model selection, cost optimization, and continuous performance evaluation.
Invoke this skill when:
IMPORTANT: This skill includes an autonomous initialization system. When invoked for the first time or when configuration is missing, it will automatically:
.trae/config/providers.json exists
.trae/config/team-roles.json exists
.trae/data/model_scores.json exists
If configuration files are missing or incomplete, the skill will proactively ask the user:
Step 1: Provider Setup
Step 2: Model Configuration
For each provider, ask:
Step 3: Host Model Selection
Step 4: Budget Configuration
.trae/config/providers.json
.trae/config/team-roles.json
.trae/data/model_scores.json
Users can manage their configuration at any time using these commands:
View Configuration
User: "Show me my current provider and model configuration"
Response: Display complete configuration from .trae/config/providers.json
Add Provider
User: "Add a new provider: [provider name]"
Action: Interactive prompts for provider details, then append to configuration
Add Model
User: "Add model [model name] to provider [provider name]"
Action: Interactive prompts for model details, then add to provider's model list
Update Model Pricing
User: "Update pricing for [model name]"
Action: Ask for new pricing details and update configuration
Remove Model
User: "Remove model [model name] from provider [provider name]"
Action: Confirm and remove from configuration
Change Host Model
User: "Change the host model to [model name]"
Action: Update host_model configuration
View Model Scores
User: "Show me the performance scores for all models"
Response: Display current model capability scores from .trae/data/model_scores.json
Reset Configuration
User: "Reset all configurations to default"
Action: Confirm with user, then reinitialize
Provider Configuration (.trae/config/providers.json)
{
"version": "1.0",
"last_updated": "2026-02-12T11:00:00Z",
"providers": [
{
"name": "openai",
"api_key": "${OPENAI_API_KEY}",
"base_url": "https://api.openai.com/v1",
"models": [
{
"name": "gpt-4",
"pricing_model": "pay_per_use",
"input_cost_per_1k": 0.03,
"output_cost_per_1k": 0.06,
"context_window": 128000,
"capabilities": ["reasoning", "coding", "analysis"],
"max_concurrent_tasks": 3
}
]
}
],
"host_model": {
"provider": "openai",
"model": "gpt-4"
},
"budget": {
"max_monthly_cost": 100.00,
"currency": "USD",
"alert_threshold": 0.8
}
}
Team Roles Configuration (.trae/config/team-roles.json)
{
"version": "1.0",
"last_updated": "2026-02-12T11:00:00Z",
"roles": {
"project_manager": {
"description": "Coordinates team activities and manages timeline",
"required_capabilities": ["planning", "coordination", "communication"],
"preferred_model_traits": {
"reliability": "high",
"thinking_depth": "medium",
"response_speed": "medium"
}
}
}
}
Model Scores Database (.trae/data/model_scores.json)
{
"version": "1.0",
"last_updated": "2026-02-12T11:00:00Z",
"evaluation_interval": 3600,
"scores": {}
}
Before executing any team task, verify:
.trae/config/providers.json exists and contains at least one provider
.trae/config/team-roles.json exists with role definitions
.trae/data/model_scores.json exists (can be empty initially)
If any checklist item fails, trigger interactive initialization.
All models are periodically evaluated by peer models across multiple dimensions:
Evaluation Dimensions:
Scoring Mechanism:
Score Storage:
{
"model_scores": {
"gpt-4": {
"response_speed": 8.5,
"response_frequency": 9.0,
"thinking_depth": 9.5,
"multi_threading": 7.0,
"code_quality": 9.0,
"creativity": 8.5,
"reliability": 9.5,
"context_understanding": 9.0,
"overall_score": 8.75,
"evaluation_count": 42,
"last_updated": "2026-02-12T10:30:00Z"
}
}
}
Subscription-Based (订阅制)
{
"pricing_model": "subscription",
"cost": 20.00,
"currency": "USD",
"valid_from": "2026-02-01",
"valid_until": "2026-03-01",
"status": "active"
}
Tiered Usage (阶段用量制)
{
"pricing_model": "tiered_usage",
"daily_quota": 1000,
"daily_used": 450,
"monthly_quota": 30000,
"monthly_used": 12500,
"cost": 15.00,
"currency": "USD",
"overage_rate": 0.02
}
Pay-Per-Use (用量计费制)
{
"pricing_model": "pay_per_use",
"input_cost_per_1k": 0.03,
"output_cost_per_1k": 0.06,
"currency": "USD",
"total_spent": 2.45
}
Cost Score Calculation:
cost_score = (normalized_cost) * (usage_efficiency) * (availability_factor)
Status Tracking:
available: Ready to accept tasks
busy: Currently processing tasks
expired: Subscription expired
quota_exceeded: Daily/monthly quota reached
rate_limited: Temporarily unavailable due to rate limits
offline: Provider API unavailable
Busy State Management:
{
"model_status": {
"gpt-4": {
"status": "busy",
"current_tasks": ["task-123", "task-456"],
"max_concurrent": 3,
"estimated_free_at": "2026-02-12T11:00:00Z"
}
}
}
Step 1.1: User submits request to Host Model (主模型)
Step 1.2: Host model decomposes requirements
Step 1.3: User confirmation
Output:
{
"task_id": "task-789",
"phases": [
{
"phase_id": "phase-1",
"name": "Requirement Analysis",
"subtasks": [
{
"subtask_id": "st-1",
"description": "Analyze user requirements",
"required_capabilities": ["analysis", "communication"],
"estimated_complexity": "medium"
}
]
}
]
}
Step 2.1: Host model convenes all available models
Step 2.2: Task briefing
Step 2.3: Collaborative role definition
Meeting Output:
{
"meeting_id": "meeting-456",
"required_roles": [
{
"role_name": "architect",
"required_capabilities": ["system-design", "architecture"],
"estimated_workload": "high",
"priority": "critical"
},
{
"role_name": "developer",
"required_capabilities": ["coding", "debugging"],
"estimated_workload": "high",
"priority": "high"
}
],
"consensus_reached": true
}
Step 3.1: Self-nomination
Step 3.2: Conflict resolution
Step 3.3: Final assignment
Assignment Algorithm:
for each role:
candidates = models.filter(capable_and_available)
if len(candidates) == 1:
assign to candidates[0]
elif len(candidates) > 1:
scores = calculate_combined_score(candidates, role)
winner = vote_among_models(candidates, scores)
assign to winner
else:
negotiate_with_best_available_model()
Combined Score Calculation:
combined_score = (capability_score * 0.4) +
(cost_efficiency_score * 0.3) +
(availability_score * 0.2) +
(workload_balance_factor * 0.1)
Step 4.1: Select Herald (传令官)
Herald Responsibilities:
Step 4.2: Communication channels
Model A → Herald → Model B
Model A → Herald → All Models
Herald → Host Model (status reports)
Herald Configuration:
{
"herald": {
"model": "gpt-3.5-turbo",
"selection_criteria": "fastest_response",
"polling_interval": 30,
"timeout_threshold": 300,
"responsibilities": [
"message_relay",
"status_monitoring",
"progress_tracking",
"failure_reporting"
]
}
}
Step 5.1: Parallel execution
Step 5.2: Coordination
Step 5.3: Progress tracking
{
"task_progress": {
"task_id": "task-789",
"overall_progress": 65,
"subtask_status": {
"st-1": "completed",
"st-2": "in_progress",
"st-3": "pending"
},
"blockers": [],
"estimated_completion": "2026-02-12T14:00:00Z"
}
}
Step 6.1: Completion notification
Step 6.2: Summary meeting
Step 6.3: Performance re-evaluation
Evaluation Form:
{
"evaluation": {
"evaluator": "gpt-4",
"evaluatee": "claude-3",
"task_id": "task-789",
"role_played": "developer",
"scores": {
"response_speed": 8,
"thinking_depth": 9,
"code_quality": 9,
"collaboration": 8
},
"role_fit": "excellent",
"comments": "Strong problem-solving skills"
}
}
Step 7.1: Failure detection
Step 7.2: Failure analysis meeting
Step 7.3: User consultation
Step 7.4: Iteration or termination
.trae/config/providers.json)
{
"providers": [
{
"name": "openai",
"api_key": "${OPENAI_API_KEY}",
"base_url": "https://api.openai.com/v1",
"models": [
{
"name": "gpt-4",
"pricing_model": "pay_per_use",
"input_cost_per_1k": 0.03,
"output_cost_per_1k": 0.06,
"context_window": 128000,
"capabilities": ["reasoning", "coding", "analysis"],
"max_concurrent_tasks": 3
},
{
"name": "gpt-3.5-turbo",
"pricing_model": "subscription",
"subscription_cost": 20.00,
"valid_from": "2026-02-01",
"valid_until": "2026-03-01",
"context_window": 16385,
"capabilities": ["fast-response", "coding"],
"max_concurrent_tasks": 5
}
]
},
{
"name": "anthropic",
"api_key": "${ANTHROPIC_API_KEY}",
"base_url": "https://api.anthropic.com",
"models": [
{
"name": "claude-3-opus",
"pricing_model": "tiered_usage",
"daily_quota": 500,
"monthly_quota": 15000,
"input_cost_per_1k": 0.015,
"output_cost_per_1k": 0.075,
"context_window": 200000,
"capabilities": ["reasoning", "analysis", "long-context"],
"max_concurrent_tasks": 2
}
]
}
],
"host_model": {
"provider": "openai",
"model": "gpt-4",
"role": "primary_interface"
},
"budget": {
"max_monthly_cost": 100.00,
"currency": "USD",
"alert_threshold": 0.8
}
}
.trae/config/team-roles.json)
{
"roles": {
"project_manager": {
"description": "Coordinates team activities and manages timeline",
"required_capabilities": ["planning", "coordination", "communication"],
"preferred_model_traits": {
"reliability": "high",
"thinking_depth": "medium",
"response_speed": "medium"
},
"typical_workload": "medium"
},
"architect": {
"description": "Designs system architecture and technical approach",
"required_capabilities": ["system-design", "architecture", "patterns"],
"preferred_model_traits": {
"thinking_depth": "high",
"creativity": "high",
"context_understanding": "high"
},
"typical_workload": "high"
},
"developer": {
"description": "Implements code following specifications",
"required_capabilities": ["coding", "debugging", "refactoring"],
"preferred_model_traits": {
"code_quality": "high",
"response_speed": "medium",
"reliability": "high"
},
"typical_workload": "high"
},
"tester": {
"description": "Creates and executes test suites",
"required_capabilities": ["testing", "qa", "validation"],
"preferred_model_traits": {
"thinking_depth": "medium",
"response_speed": "high",
"reliability": "high"
},
"typical_workload": "medium"
},
"reviewer": {
"description": "Performs code reviews and quality checks",
"required_capabilities": ["code-review", "best-practices", "security"],
"preferred_model_traits": {
"thinking_depth": "high",
"code_quality": "high",
"reliability": "high"
},
"typical_workload": "medium"
},
"analyst": {
"description": "Analyzes requirements and breaks down tasks",
"required_capabilities": ["analysis", "communication", "documentation"],
"preferred_model_traits": {
"thinking_depth": "high",
"context_understanding": "high",
"creativity": "medium"
},
"typical_workload": "medium"
}
}
}
.trae/data/model_scores.json)
{
"last_evaluation": "2026-02-12T10:30:00Z",
"evaluation_interval": 3600,
"scores": {
"gpt-4": {
"dimensions": {
"response_speed": 8.5,
"response_frequency": 9.0,
"thinking_depth": 9.5,
"multi_threading": 7.0,
"code_quality": 9.0,
"creativity": 8.5,
"reliability": 9.5,
"context_understanding": 9.0
},
"overall_score": 8.75,
"evaluation_count": 42,
"role_fit_history": {
"architect": 9.2,
"developer": 8.8,
"reviewer": 9.0
}
}
}
}
Final deliverables include:
.trae/skills/teamwork/
├── SKILL.md # Main skill definition (this file)
├── scripts/ # Execution scripts
│ ├── init.js # Initialization and configuration loader
│ ├── config-manager.js # Provider and model configuration management
│ ├── score-manager.js # Model performance score management
│ ├── team-coordinator.js # Team assembly and task coordination
│ └── herald.js # Communication and message relay system
├── templates/ # Document templates
│ ├── task-report.md # Task execution report template
│ ├── meeting-minutes.md # Meeting minutes template
│ ├── failure-report.md # Failure analysis report template
│ └── evaluation-form.md # Model evaluation form template
├── utils/ # Utility functions
│ ├── index.js # Utility exports
│ ├── helpers.js # General helper functions
│ ├── logger.js # Logging system
│ ├── template-renderer.js # Template rendering engine
│ └── errors.js # Custom error classes
└── data/ # Skill runtime data
└── (generated at runtime)
Purpose: Handles skill initialization and configuration loading.
Key Functions:
ensureDirectories() - Create required directories
checkConfiguration() - Verify configuration status
initializeDefaultRoles() - Create default role definitions
initializeEmptyScores() - Initialize empty scores database
initializeEmptyProviders() - Initialize empty providers config
needsInitialization() - Check if initialization is required
readJSON(filePath) - Read JSON configuration file
writeJSON(filePath, data) - Write JSON configuration file
Usage:
const init = require('./scripts/init.js');
// Check if initialization needed
if (init.needsInitialization()) {
init.initializeDefaultRoles();
init.initializeEmptyScores();
init.initializeEmptyProviders();
}
Purpose: Manage provider and model configurations.
Key Functions:
addProvider(config, providerInfo) - Add new provider
addModel(config, providerName, modelInfo) - Add model to provider
removeModel(config, providerName, modelName) - Remove model
removeProvider(config, providerName) - Remove provider
updateModelPricing(config, providerName, modelName, pricingInfo) - Update pricing
setHostModel(config, providerName, modelName) - Set host model
setBudget(config, budgetInfo) - Set budget limits
getAvailableModels(config) - Get list of available models
getModelStatus(model) - Get model availability status
displayConfiguration(config) - Display current configuration
Usage:
const configManager = require('./scripts/config-manager.js');
const config = init.readJSON(init.PROVIDERS_FILE);
// Add new provider
configManager.addProvider(config, {
name: 'openai',
api_key: '${OPENAI_API_KEY}',
base_url: 'https://api.openai.com/v1'
});
// Add model with subscription pricing
configManager.addModel(config, 'openai', {
name: 'gpt-4',
pricing_model: 'subscription',
subscription_cost: 20.00,
valid_from: '2026-02-01',
valid_until: '2026-03-01',
capabilities: ['reasoning', 'coding']
});
Purpose: Manage model performance evaluation scores.
Key Functions:
initializeModelScore(scores, modelName, provider) - Initialize model scores
updateModelScore(scores, modelName, dimension, newScore, evaluator) - Update dimension score
calculateOverallScore(dimensions, weights) - Calculate weighted overall score
updateRoleFit(scores, modelName, roleName, fitScore) - Update role fit score
getTopModelsForRole(scores, roleName, topN) - Get top models for a role
getModelsByCapability(scores, capability, minScore) - Get models by capability
recordEvaluation(scores, evaluation) - Record complete evaluation
displayScores(scores) - Display all model scores
Usage:
const scoreManager = require('./scripts/score-manager.js');
// Record evaluation
scoreManager.recordEvaluation(scores, {
evaluator: 'gpt-4',
evaluatee: 'claude-3',
task_id: 'task-123',
role_played: 'developer',
scores: {
response_speed: 8,
thinking_depth: 9,
code_quality: 9
},
role_fit: 'excellent'
});
// Get top models for architect role
const topArchitects = scoreManager.getTopModelsForRole(scores, 'architect', 3);
Purpose: Coordinate team assembly and task execution.
Key Class: TeamCoordinator
Methods:
load() - Load configurations
getAvailableModels() - Get available models list
selectHerald() - Select fastest model as herald
assignRoles(requiredRoles) - Assign roles to models
calculateCombinedScore(model, roleFit) - Calculate selection score
createTaskPlan(userRequest) - Create task execution plan
generateMeetingAgenda(meetingType) - Generate meeting agenda
generateEvaluationForms() - Generate peer evaluation forms
generateReport() - Generate task report
Usage:
const TeamCoordinator = require('./scripts/team-coordinator.js');
const coordinator = new TeamCoordinator();
coordinator.load();
// Select herald
const herald = coordinator.selectHerald();
// Assign roles
const assignments = coordinator.assignRoles(['architect', 'developer', 'tester']);
// Create task plan
const plan = coordinator.createTaskPlan('Build a REST API');
Purpose: Manage inter-model communication and coordination.
Key Class: Herald
Methods:
initializeTeam(team) - Initialize team status tracking
broadcast(message, excludeSender) - Broadcast message to all
sendDirectMessage(to, message, from) - Send direct message
updateProgress(model, subtaskId, progress, status) - Update task progress
getTeamStatus() - Get current team status
checkTimeouts() - Check for timeout conditions
pollTeam() - Request status from all members
reportToHost(status) - Send status report to host
notifyFailure(model, error, context) - Notify failure
notifyCompletion(model, result) - Notify completion
getOverallProgress() - Get overall task progress
Usage:
const Herald = require('./scripts/herald.js');
const herald = new Herald('gpt-3.5-turbo', 'openai');
herald.initializeTeam(team);
// Broadcast update
herald.broadcast({ type: 'task_update', content: 'Phase 1 complete' });
// Check progress
const progress = herald.getOverallProgress();
Purpose: Document complete task execution details.
Variables:
task_id - Unique task identifier
timestamp - Report generation time
status - Task status (completed/failed/in_progress)
summary - Executive summary
team_members - Array of team member details
phases - Array of execution phases
model_metrics - Performance metrics per model
total_cost - Total execution cost
deliverables - Array of deliverables
lessons - Lessons learned
recommendations - Recommendations
score_updates - Model score updates
Usage:
const { renderTemplateFromFile } = require('./utils/template-renderer.js');
const report = renderTemplateFromFile('task-report.md', {
task_id: 'task-123',
timestamp: new Date().toISOString(),
status: 'completed',
summary: 'Successfully implemented REST API',
team_members: [...],
phases: [...]
});
Purpose: Document team meeting discussions and decisions.
Variables:
meeting_id - Unique meeting identifier
meeting_type - Type of meeting
date - Meeting date
duration - Meeting duration
participants - Array of participants
agenda_items - Meeting agenda
voting_results - Voting results (if applicable)
action_items - Action items from meeting
next_steps - Next steps to take
Purpose: Document and analyze task failures.
Variables:
task_id - Failed task identifier
failure_time - Time of failure
failure_type - Type of failure
severity - Failure severity
timeline - Timeline of events
primary_cause - Root cause
contributing_factors - Contributing factors
recovery_actions - Actions taken for recovery
recommendations - Recommendations to prevent recurrence
Purpose: Document peer model evaluations.
Variables:
evaluator_model - Evaluating model
evaluatee_model - Model being evaluated
task_id - Related task
role_played - Role in task
response_speed through context_understanding - Dimension scores
role_fit - Overall role fit assessment
strengths - Model strengths
improvements - Areas for improvement
Functions:
generateId(prefix) - Generate unique identifier
formatDate(date) - Format date to ISO string
formatDuration(ms) - Format milliseconds to readable duration
calculateCost(model, inputTokens, outputTokens) - Calculate API cost
deepClone(obj) - Deep clone object
mergeObjects(target, source) - Deep merge objects
retryWithBackoff(fn, maxRetries, delay) - Retry with exponential backoff
chunkArray(array, size) - Split array into chunks
groupBy(array, key) - Group array by key
sortBy(array, key, order) - Sort array by key
uniqueBy(array, key) - Remove duplicates by key
Classes: Logger
Log Levels: DEBUG, INFO, WARN, ERROR
Methods:
debug(message, data) - Log debug message
info(message, data) - Log info message
warn(message, data) - Log warning message
error(message, data) - Log error message
setLevel(level) - Set log level
setLogFile(filePath) - Set log file path
Usage:
const { createLogger, LOG_LEVELS } = require('./utils/logger.js');
const logger = createLogger('teamwork', {
level: LOG_LEVELS.DEBUG,
console: true
});
logger.info('Task started', { task_id: 'task-123' });
Error Classes:
ValidationError - Input validation errors
ConfigurationError - Configuration errors
ModelNotFoundError - Model not found errors
ProviderNotFoundError - Provider not found errors
TaskExecutionError - Task execution errors
TimeoutError - Timeout errors
BudgetExceededError - Budget exceeded errors
QuotaExceededError - Quota exceeded errors
HeraldError - Herald communication errors
Functions:
handleError(error, logger) - Standardized error handling
isRecoverable(error) - Check if error is recoverable
// 1. Initialize skill
const init = require('./scripts/init.js');
if (init.needsInitialization()) {
// Run interactive setup
init.initializeDefaultRoles();
init.initializeEmptyScores();
init.initializeEmptyProviders();
}
// 2. Configure providers
const configManager = require('./scripts/config-manager.js');
const config = init.readJSON(init.PROVIDERS_FILE);
configManager.addProvider(config, { name: 'openai' });
configManager.addModel(config, 'openai', {
name: 'gpt-4',
pricing_model: 'pay_per_use',
input_cost_per_1k: 0.03,
output_cost_per_1k: 0.06,
capabilities: ['reasoning', 'coding']
});
configManager.setHostModel(config, 'openai', 'gpt-4');
init.writeJSON(init.PROVIDERS_FILE, config);
// 3. Create team and execute task
const TeamCoordinator = require('./scripts/team-coordinator.js');
const coordinator = new TeamCoordinator();
coordinator.load();
const herald = coordinator.selectHerald();
const team = coordinator.assignRoles(['architect', 'developer', 'tester']);
const plan = coordinator.createTaskPlan('Build REST API');
// 4. Execute with herald coordination
const Herald = require('./scripts/herald.js');
const heraldInstance = new Herald(herald.model, herald.provider);
heraldInstance.initializeTeam(team);
// 5. Record evaluations and update scores
const scoreManager = require('./scripts/score-manager.js');
const scores = init.readJSON(init.SCORES_FILE);
scoreManager.recordEvaluation(scores, {
evaluator: 'gpt-4',
evaluatee: 'claude-3',
task_id: plan.task_id,
role_played: 'developer',
scores: { response_speed: 8, thinking_depth: 9, code_quality: 9 },
role_fit: 'excellent'
});
init.writeJSON(init.SCORES_FILE, scores);
共 1 个版本