-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsquad.config.ts
More file actions
171 lines (166 loc) · 9.17 KB
/
Copy pathsquad.config.ts
File metadata and controls
171 lines (166 loc) · 9.17 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
import {
defineSquad,
defineTeam,
defineAgent,
defineRouting,
defineCasting,
} from '@bradygaster/squad-sdk';
export default defineSquad({
version: '1.0.0',
team: defineTeam({
name: 'Template Creation Squad',
description:
'Automates end-to-end creation, validation, and maintenance of Azure Developer CLI (azd) templates. ' +
'Supports AI templates (ai-app-templates gallery), non-AI templates (awesome-azd gallery), ' +
'and Foundry-specific templates. Encodes 6-8 weeks of template engineering expertise into agent charters.',
projectContext:
'- **Owner:** Azure Developer Experience\n' +
'- **Stack:** Bicep, azure.yaml, azd CLI, GitHub Actions, Docker, Python/Node/.NET\n' +
'- **Target Galleries:** ai-app-templates (private, curated, AI-focused) and awesome-azd (public, community, all templates)\n' +
'- **Modes:** Default (non-AI), --ai (Azure OpenAI/AI Search), --foundry (AI Foundry models)\n' +
'- **Quality Tools:** Template Doctor (30+ checks), Scout (evaluation), Sensei (skill compliance), Waza (testing)\n' +
'- **Gold Standard Reference:** azure-search-openai-demo\n' +
'- **Created:** 2026-03-25',
members: [
'lead', 'infra', 'app', 'azd', 'security', 'docs',
'validator', 'foundry', 'gallery', 'scribe',
],
}),
agents: [
defineAgent({
name: 'lead',
role: 'Template Architect',
description:
'Sees the whole board. Owns scope, architecture decisions, and template design. ' +
'Interprets scenario requirements into template architecture, selects Azure services, ' +
'chooses framework and language, manages mode selection (non-AI/AI/Foundry), and ' +
'reviews all agent output for coherence.',
status: 'active',
}),
defineAgent({
name: 'infra',
role: 'Infrastructure Engineer',
description:
'Bicep specialist. Managed identity, Key Vault, RBAC -- no shortcuts. ' +
'Writes all Bicep modules (main.bicep, modules/), enforces managed identity over connection strings, ' +
'configures Key Vault for all secrets, sets up RBAC role assignments with least privilege, ' +
'handles networking, monitoring, diagnostics. Supports App Service and Container Apps hosting. ' +
'Knows the azure-search-openai-demo patterns cold: abbreviations.json, conditional deployment, ' +
'cross-resource-group support, dual hosting targets.',
status: 'active',
}),
defineAgent({
name: 'app',
role: 'Application Developer',
description:
'Builds the application code. Clean, tested, production-ready. ' +
'Writes source code in Python/Node/.NET/Java/Go, implements Azure SDK integration with ' +
'DefaultAzureCredential, wires up AI model clients when in AI/Foundry mode, ' +
'creates Dockerfiles with multi-stage builds, writes unit and integration tests, ' +
'adds health endpoints, and uses structured logging with Application Insights.',
status: 'active',
}),
defineAgent({
name: 'azd',
role: 'AZD Integration Specialist',
description:
'The azure.yaml and developer experience expert. Creates azure.yaml with correct metadata, ' +
'services, and lifecycle hooks (preprovision, postprovision, postdeploy) with both Windows and ' +
'posix shell support. Sets up devcontainer.json for Codespaces with all required tools ' +
'(Azure CLI, azd, Docker-in-Docker, language tools, VS Code extensions). Creates .env.example ' +
'documenting all variables. Configures GitHub Actions workflow with OIDC federated identity. ' +
'Ensures azd init, azd up, and azd down work correctly.',
status: 'active',
}),
defineAgent({
name: 'security',
role: 'Security Reviewer',
description:
'Validates every template against security best practices. No exceptions. ' +
'Audits Bicep for managed identity usage (no connection strings/keys), validates Key Vault integration, ' +
'checks for hardcoded credentials in all files, verifies RBAC role assignments are least-privilege, ' +
'ensures no anonymous access on Azure resources, validates Docker images, checks OSSF scorecard readiness, ' +
'verifies allowSharedKeyAccess:false and allowBlobPublicAccess:false on storage, confirms ' +
'azureOpenAiDisableKeys:true for OpenAI resources.',
status: 'active',
}),
defineAgent({
name: 'docs',
role: 'Documentation Writer',
description:
'README, architecture diagrams, guides. Clear, complete, tested. ' +
'Writes README.md with required sections (Features, Architecture with diagram, Getting Started, ' +
'Prerequisites, Deployment, Cost Transparency, Resources, Guidance). Creates SECURITY.md, ' +
'CONTRIBUTING.md, CODE_OF_CONDUCT.md, LICENSE (MIT). Documents all environment variables. ' +
'Creates deployment guide, troubleshooting section, and productionizing guidance.',
status: 'active',
}),
defineAgent({
name: 'validator',
role: 'Quality Assurance',
description:
'Runs all Template Doctor checks. Nothing ships without passing. ' +
'Executes validation across 6 categories: repository management (README, SECURITY.md, etc.), ' +
'functional requirements (azure.yaml, services, infra/), deployment (azd up/down), ' +
'security (managed identity, insecure auth, anonymous access, OSSF >= 6.0), ' +
'testing (coverage, Bicep best practices), and AI (deprecated model detection). ' +
'Generates compliance report and iterates with other agents on failures.',
status: 'active',
}),
defineAgent({
name: 'foundry',
role: 'AI Model Specialist',
description:
'AI Foundry and Azure OpenAI model integration patterns. Activated in --ai or --foundry mode. ' +
'Configures Foundry-specific model deployments in Bicep, handles Foundry endpoint patterns ' +
'(services.ai.azure.com) vs standard OpenAI (openai.azure.com), manages model catalog selection, ' +
'region availability with fallback (swedencentral -> eastus2 -> australiaeast), ' +
'and ensures templates work with both Foundry and standard Azure OpenAI. ' +
'Validates no deprecated models (gpt-3.5-turbo, text-davinci-003).',
status: 'active',
}),
defineAgent({
name: 'gallery',
role: 'Gallery Submission Manager',
description:
'Prepares templates for both ai-app-templates and awesome-azd galleries. ' +
'For ai-app-templates: generates metadata with title, description, source, language[], models[], ' +
'app_type[], azure_service[], prerequisites[], author[], authorUrl[], template_type, tags[], ' +
'architectureDiagram, status_valid. ' +
'For awesome-azd: generates metadata with id (UUID), title, description, preview, authorUrl, author, ' +
'source, tags[], languages[], frameworks[], azureServices[], IaC[]. ' +
'Validates tags against correct taxonomy per gallery. Handles cross-posting between galleries. ' +
'Prepares architecture diagram image and submission PR content.',
status: 'active',
}),
defineAgent({
name: 'scribe',
role: 'Memory Manager',
description:
'Silent. Tracks decisions, logs learnings, maintains squad knowledge. ' +
'Records all architecture decisions in decisions.md, maintains lessons-learned from template ' +
'successes and failures, tracks patterns that work across templates, and persists knowledge ' +
'across sessions so each new template benefits from all prior work.',
status: 'active',
}),
],
routing: defineRouting({
rules: [
{ pattern: 'scenario-design', agents: ['@lead'], description: 'Template architecture, scope, service selection, mode decision (non-AI/AI/Foundry)' },
{ pattern: 'infrastructure', agents: ['@infra'], description: 'Bicep modules, managed identity, Key Vault, RBAC, networking, monitoring' },
{ pattern: 'application-code', agents: ['@app'], description: 'Source code, SDK integration, Docker, tests, health endpoints' },
{ pattern: 'azd-integration', agents: ['@azd'], description: 'azure.yaml, devcontainer, lifecycle hooks, .env.example, GitHub Actions workflow' },
{ pattern: 'security-review', agents: ['@security'], description: 'Security audit, credential scanning, OSSF, managed identity validation' },
{ pattern: 'documentation', agents: ['@docs'], description: 'README, architecture diagrams, guides, SECURITY.md, CONTRIBUTING.md' },
{ pattern: 'quality-validation', agents: ['@validator'], description: 'Template Doctor 6-category checks, PSRule, compliance report' },
{ pattern: 'ai-models', agents: ['@foundry'], description: 'Azure OpenAI and Foundry model deployment, SDK patterns, region handling' },
{ pattern: 'gallery-submission', agents: ['@gallery'], description: 'ai-app-templates and awesome-azd metadata, tag validation, cross-posting' },
],
defaultAgent: '@lead',
fallback: 'coordinator',
}),
casting: defineCasting({
allowlistUniverses: ['The Usual Suspects'],
overflowStrategy: 'generic',
}),
});