feat(agents): add category and display fields to AgentType model
Add 6 new fields to AgentType for better organization and UI display: - category: enum for grouping (development, design, quality, etc.) - icon: Lucide icon identifier for UI - color: hex color code for visual distinction - sort_order: display ordering within categories - typical_tasks: list of tasks the agent excels at - collaboration_hints: agent slugs that work well together Backend changes: - Add AgentTypeCategory enum to enums.py - Update AgentType model with 6 new columns and indexes - Update schemas with validators for new fields - Add category filter and /grouped endpoint to routes - Update CRUD with get_grouped_by_category method - Update seed data with categories for all 27 agents - Add migration 0007 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -29,7 +29,13 @@
|
||||
"denied": [],
|
||||
"require_approval": ["gitea:delete_*"]
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "development",
|
||||
"icon": "clipboard-check",
|
||||
"color": "#3B82F6",
|
||||
"sort_order": 10,
|
||||
"typical_tasks": ["Requirements discovery", "User story creation", "Backlog prioritization", "Stakeholder alignment"],
|
||||
"collaboration_hints": ["business-analyst", "solutions-architect", "scrum-master"]
|
||||
},
|
||||
{
|
||||
"name": "Project Manager",
|
||||
@@ -61,7 +67,13 @@
|
||||
"denied": [],
|
||||
"require_approval": []
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "development",
|
||||
"icon": "briefcase",
|
||||
"color": "#3B82F6",
|
||||
"sort_order": 20,
|
||||
"typical_tasks": ["Sprint planning", "Risk management", "Status reporting", "Team coordination"],
|
||||
"collaboration_hints": ["product-owner", "scrum-master", "technical-lead"]
|
||||
},
|
||||
{
|
||||
"name": "Business Analyst",
|
||||
@@ -93,7 +105,13 @@
|
||||
"denied": [],
|
||||
"require_approval": []
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "development",
|
||||
"icon": "file-text",
|
||||
"color": "#3B82F6",
|
||||
"sort_order": 30,
|
||||
"typical_tasks": ["Requirements analysis", "Process modeling", "Gap analysis", "Functional specifications"],
|
||||
"collaboration_hints": ["product-owner", "solutions-architect", "qa-engineer"]
|
||||
},
|
||||
{
|
||||
"name": "Solutions Architect",
|
||||
@@ -129,7 +147,13 @@
|
||||
"denied": [],
|
||||
"require_approval": ["gitea:create_pull_request"]
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "development",
|
||||
"icon": "git-branch",
|
||||
"color": "#3B82F6",
|
||||
"sort_order": 40,
|
||||
"typical_tasks": ["System design", "ADR creation", "Technology selection", "Integration patterns"],
|
||||
"collaboration_hints": ["backend-engineer", "frontend-engineer", "security-engineer"]
|
||||
},
|
||||
{
|
||||
"name": "Full Stack Engineer",
|
||||
@@ -166,7 +190,13 @@
|
||||
"denied": [],
|
||||
"require_approval": ["gitea:create_pull_request", "gitea:delete_*"]
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "development",
|
||||
"icon": "code",
|
||||
"color": "#3B82F6",
|
||||
"sort_order": 50,
|
||||
"typical_tasks": ["End-to-end feature development", "API design", "UI implementation", "Database operations"],
|
||||
"collaboration_hints": ["solutions-architect", "qa-engineer", "devops-engineer"]
|
||||
},
|
||||
{
|
||||
"name": "Backend Engineer",
|
||||
@@ -208,7 +238,13 @@
|
||||
"denied": [],
|
||||
"require_approval": ["gitea:create_pull_request", "gitea:delete_*"]
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "development",
|
||||
"icon": "server",
|
||||
"color": "#3B82F6",
|
||||
"sort_order": 60,
|
||||
"typical_tasks": ["API development", "Database optimization", "System integration", "Performance tuning"],
|
||||
"collaboration_hints": ["solutions-architect", "frontend-engineer", "data-engineer"]
|
||||
},
|
||||
{
|
||||
"name": "Frontend Engineer",
|
||||
@@ -249,7 +285,13 @@
|
||||
"denied": [],
|
||||
"require_approval": ["gitea:create_pull_request", "gitea:delete_*"]
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "development",
|
||||
"icon": "layout",
|
||||
"color": "#3B82F6",
|
||||
"sort_order": 70,
|
||||
"typical_tasks": ["UI component development", "State management", "API integration", "Responsive design"],
|
||||
"collaboration_hints": ["ui-ux-designer", "backend-engineer", "qa-engineer"]
|
||||
},
|
||||
{
|
||||
"name": "Mobile Engineer",
|
||||
@@ -286,7 +328,13 @@
|
||||
"denied": [],
|
||||
"require_approval": ["gitea:create_pull_request", "gitea:delete_*"]
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "development",
|
||||
"icon": "smartphone",
|
||||
"color": "#3B82F6",
|
||||
"sort_order": 80,
|
||||
"typical_tasks": ["Native app development", "Cross-platform solutions", "Mobile optimization", "App store deployment"],
|
||||
"collaboration_hints": ["backend-engineer", "ui-ux-designer", "qa-engineer"]
|
||||
},
|
||||
{
|
||||
"name": "UI/UX Designer",
|
||||
@@ -321,7 +369,13 @@
|
||||
"denied": [],
|
||||
"require_approval": []
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "design",
|
||||
"icon": "palette",
|
||||
"color": "#EC4899",
|
||||
"sort_order": 10,
|
||||
"typical_tasks": ["Interface design", "User flow creation", "Design system maintenance", "Prototyping"],
|
||||
"collaboration_hints": ["frontend-engineer", "ux-researcher", "product-owner"]
|
||||
},
|
||||
{
|
||||
"name": "UX Researcher",
|
||||
@@ -355,7 +409,13 @@
|
||||
"denied": [],
|
||||
"require_approval": []
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "design",
|
||||
"icon": "search",
|
||||
"color": "#EC4899",
|
||||
"sort_order": 20,
|
||||
"typical_tasks": ["User research", "Usability testing", "Journey mapping", "Research synthesis"],
|
||||
"collaboration_hints": ["ui-ux-designer", "product-owner", "business-analyst"]
|
||||
},
|
||||
{
|
||||
"name": "QA Engineer",
|
||||
@@ -391,7 +451,13 @@
|
||||
"denied": [],
|
||||
"require_approval": []
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "quality",
|
||||
"icon": "shield",
|
||||
"color": "#10B981",
|
||||
"sort_order": 10,
|
||||
"typical_tasks": ["Test strategy development", "Test automation", "Bug verification", "Quality metrics"],
|
||||
"collaboration_hints": ["backend-engineer", "frontend-engineer", "devops-engineer"]
|
||||
},
|
||||
{
|
||||
"name": "DevOps Engineer",
|
||||
@@ -431,7 +497,13 @@
|
||||
"denied": [],
|
||||
"require_approval": ["gitea:create_release", "gitea:delete_*"]
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "operations",
|
||||
"icon": "settings",
|
||||
"color": "#F59E0B",
|
||||
"sort_order": 10,
|
||||
"typical_tasks": ["CI/CD pipeline design", "Infrastructure automation", "Monitoring setup", "Deployment optimization"],
|
||||
"collaboration_hints": ["backend-engineer", "security-engineer", "mlops-engineer"]
|
||||
},
|
||||
{
|
||||
"name": "Security Engineer",
|
||||
@@ -467,7 +539,13 @@
|
||||
"denied": [],
|
||||
"require_approval": []
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "quality",
|
||||
"icon": "shield-check",
|
||||
"color": "#10B981",
|
||||
"sort_order": 20,
|
||||
"typical_tasks": ["Security architecture", "Vulnerability assessment", "Compliance validation", "Threat modeling"],
|
||||
"collaboration_hints": ["solutions-architect", "devops-engineer", "backend-engineer"]
|
||||
},
|
||||
{
|
||||
"name": "AI/ML Engineer",
|
||||
@@ -503,7 +581,13 @@
|
||||
"denied": [],
|
||||
"require_approval": ["gitea:create_pull_request"]
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "ai_ml",
|
||||
"icon": "brain",
|
||||
"color": "#8B5CF6",
|
||||
"sort_order": 10,
|
||||
"typical_tasks": ["Model development", "Algorithm selection", "Feature engineering", "Model optimization"],
|
||||
"collaboration_hints": ["data-scientist", "mlops-engineer", "backend-engineer"]
|
||||
},
|
||||
{
|
||||
"name": "AI Researcher",
|
||||
@@ -537,7 +621,13 @@
|
||||
"denied": [],
|
||||
"require_approval": []
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "ai_ml",
|
||||
"icon": "microscope",
|
||||
"color": "#8B5CF6",
|
||||
"sort_order": 20,
|
||||
"typical_tasks": ["Research paper analysis", "Novel algorithm design", "Experiment design", "Benchmark evaluation"],
|
||||
"collaboration_hints": ["ai-ml-engineer", "data-scientist", "scientific-computing-expert"]
|
||||
},
|
||||
{
|
||||
"name": "Computer Vision Engineer",
|
||||
@@ -573,7 +663,13 @@
|
||||
"denied": [],
|
||||
"require_approval": ["gitea:create_pull_request"]
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "ai_ml",
|
||||
"icon": "eye",
|
||||
"color": "#8B5CF6",
|
||||
"sort_order": 30,
|
||||
"typical_tasks": ["Image processing pipelines", "Object detection models", "Video analysis", "Computer vision deployment"],
|
||||
"collaboration_hints": ["ai-ml-engineer", "mlops-engineer", "backend-engineer"]
|
||||
},
|
||||
{
|
||||
"name": "NLP Engineer",
|
||||
@@ -609,7 +705,13 @@
|
||||
"denied": [],
|
||||
"require_approval": ["gitea:create_pull_request"]
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "ai_ml",
|
||||
"icon": "message-square",
|
||||
"color": "#8B5CF6",
|
||||
"sort_order": 40,
|
||||
"typical_tasks": ["Text processing pipelines", "Language model fine-tuning", "Named entity recognition", "Sentiment analysis"],
|
||||
"collaboration_hints": ["ai-ml-engineer", "data-scientist", "backend-engineer"]
|
||||
},
|
||||
{
|
||||
"name": "MLOps Engineer",
|
||||
@@ -645,7 +747,13 @@
|
||||
"denied": [],
|
||||
"require_approval": ["gitea:create_release"]
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "operations",
|
||||
"icon": "settings-2",
|
||||
"color": "#F59E0B",
|
||||
"sort_order": 20,
|
||||
"typical_tasks": ["ML pipeline development", "Model deployment", "Feature store management", "Model monitoring"],
|
||||
"collaboration_hints": ["ai-ml-engineer", "devops-engineer", "data-engineer"]
|
||||
},
|
||||
{
|
||||
"name": "Data Scientist",
|
||||
@@ -681,7 +789,13 @@
|
||||
"denied": [],
|
||||
"require_approval": []
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "data",
|
||||
"icon": "chart-bar",
|
||||
"color": "#06B6D4",
|
||||
"sort_order": 10,
|
||||
"typical_tasks": ["Statistical analysis", "Predictive modeling", "Data visualization", "Insight generation"],
|
||||
"collaboration_hints": ["data-engineer", "ai-ml-engineer", "business-analyst"]
|
||||
},
|
||||
{
|
||||
"name": "Data Engineer",
|
||||
@@ -717,7 +831,13 @@
|
||||
"denied": [],
|
||||
"require_approval": ["gitea:create_pull_request"]
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "data",
|
||||
"icon": "database",
|
||||
"color": "#06B6D4",
|
||||
"sort_order": 20,
|
||||
"typical_tasks": ["Data pipeline development", "ETL optimization", "Data warehouse design", "Data quality management"],
|
||||
"collaboration_hints": ["data-scientist", "backend-engineer", "mlops-engineer"]
|
||||
},
|
||||
{
|
||||
"name": "Technical Lead",
|
||||
@@ -749,7 +869,13 @@
|
||||
"denied": [],
|
||||
"require_approval": []
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "leadership",
|
||||
"icon": "users",
|
||||
"color": "#F97316",
|
||||
"sort_order": 10,
|
||||
"typical_tasks": ["Technical direction", "Code review leadership", "Team mentoring", "Architecture decisions"],
|
||||
"collaboration_hints": ["solutions-architect", "backend-engineer", "frontend-engineer"]
|
||||
},
|
||||
{
|
||||
"name": "Scrum Master",
|
||||
@@ -781,7 +907,13 @@
|
||||
"denied": [],
|
||||
"require_approval": []
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "leadership",
|
||||
"icon": "target",
|
||||
"color": "#F97316",
|
||||
"sort_order": 20,
|
||||
"typical_tasks": ["Sprint facilitation", "Impediment removal", "Process improvement", "Team coaching"],
|
||||
"collaboration_hints": ["project-manager", "product-owner", "technical-lead"]
|
||||
},
|
||||
{
|
||||
"name": "Financial Systems Expert",
|
||||
@@ -816,7 +948,13 @@
|
||||
"denied": [],
|
||||
"require_approval": []
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "domain_expert",
|
||||
"icon": "calculator",
|
||||
"color": "#84CC16",
|
||||
"sort_order": 10,
|
||||
"typical_tasks": ["Financial system design", "Regulatory compliance", "Transaction processing", "Audit trail implementation"],
|
||||
"collaboration_hints": ["solutions-architect", "security-engineer", "backend-engineer"]
|
||||
},
|
||||
{
|
||||
"name": "Healthcare Systems Expert",
|
||||
@@ -850,7 +988,13 @@
|
||||
"denied": [],
|
||||
"require_approval": []
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "domain_expert",
|
||||
"icon": "heart-pulse",
|
||||
"color": "#84CC16",
|
||||
"sort_order": 20,
|
||||
"typical_tasks": ["Healthcare system design", "HIPAA compliance", "HL7/FHIR integration", "Clinical workflow optimization"],
|
||||
"collaboration_hints": ["solutions-architect", "security-engineer", "data-engineer"]
|
||||
},
|
||||
{
|
||||
"name": "Scientific Computing Expert",
|
||||
@@ -886,7 +1030,13 @@
|
||||
"denied": [],
|
||||
"require_approval": []
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "domain_expert",
|
||||
"icon": "flask",
|
||||
"color": "#84CC16",
|
||||
"sort_order": 30,
|
||||
"typical_tasks": ["HPC architecture", "Scientific algorithm implementation", "Data pipeline optimization", "Numerical computing"],
|
||||
"collaboration_hints": ["ai-researcher", "data-scientist", "backend-engineer"]
|
||||
},
|
||||
{
|
||||
"name": "Behavioral Psychology Expert",
|
||||
@@ -919,7 +1069,13 @@
|
||||
"denied": [],
|
||||
"require_approval": []
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "domain_expert",
|
||||
"icon": "lightbulb",
|
||||
"color": "#84CC16",
|
||||
"sort_order": 40,
|
||||
"typical_tasks": ["Behavioral design", "Engagement optimization", "User motivation analysis", "Ethical AI guidelines"],
|
||||
"collaboration_hints": ["ux-researcher", "ui-ux-designer", "product-owner"]
|
||||
},
|
||||
{
|
||||
"name": "Technical Writer",
|
||||
@@ -951,6 +1107,12 @@
|
||||
"denied": [],
|
||||
"require_approval": []
|
||||
},
|
||||
"is_active": true
|
||||
"is_active": true,
|
||||
"category": "domain_expert",
|
||||
"icon": "book-open",
|
||||
"color": "#84CC16",
|
||||
"sort_order": 50,
|
||||
"typical_tasks": ["API documentation", "User guides", "Technical specifications", "Knowledge base creation"],
|
||||
"collaboration_hints": ["solutions-architect", "product-owner", "qa-engineer"]
|
||||
}
|
||||
]
|
||||
|
||||
Reference in New Issue
Block a user