specweave 0.16.5 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,719 @@
1
+ ---
2
+ name: ado-resource-validator
3
+ description: Validates Azure DevOps projects and resources exist, creates missing resources automatically. Smart enough to prompt user to select existing or create new projects. Supports multiple projects for project-per-team strategy, area paths for area-path-based strategy, and teams for team-based strategy. Activates for ado setup, ado validation, ado configuration, missing ado project, azure devops .env setup.
4
+ allowed-tools: Read, Bash, Write, Edit
5
+ ---
6
+
7
+ # Azure DevOps Resource Validator Skill
8
+
9
+ **Purpose**: Validate and auto-create Azure DevOps projects and resources, ensuring .env configuration is correct.
10
+
11
+ **Auto-Activation**: Triggers when Azure DevOps setup or validation is needed.
12
+
13
+ ## What This Skill Does
14
+
15
+ This skill ensures your Azure DevOps configuration in `.env` is valid and all resources exist. It's **smart enough** to:
16
+
17
+ 1. **Validate Azure DevOps projects** - Check if projects exist (multiple for project-per-team)
18
+ 2. **Prompt for action** - Select existing project or create new one
19
+ 3. **Validate area paths** - Check if area paths exist (for area-path-based strategy)
20
+ 4. **Create missing area paths** - Auto-create area paths if missing
21
+ 5. **Validate teams** - Check if teams exist (for team-based strategy)
22
+ 6. **Update .env with correct values** - Ensure configuration is valid
23
+
24
+ ## When This Skill Activates
25
+
26
+ ✅ **Automatically activates when**:
27
+ - You set up Azure DevOps integration for the first time
28
+ - You run `/specweave-ado:sync` and resources are missing
29
+ - Your `.env` has invalid Azure DevOps configuration
30
+ - You mention "ado setup" or "azure devops validation"
31
+
32
+ ## Azure DevOps Configuration Structure
33
+
34
+ ### Required .env Variables
35
+
36
+ ```bash
37
+ AZURE_DEVOPS_PAT=your_token_here
38
+ AZURE_DEVOPS_ORG=yourorganization
39
+ AZURE_DEVOPS_STRATEGY=project-per-team # or area-path-based, team-based
40
+ ```
41
+
42
+ ### Strategy-Specific Variables
43
+
44
+ **Strategy 1: Project-per-team** (Multiple Projects)
45
+ ```bash
46
+ AZURE_DEVOPS_STRATEGY=project-per-team
47
+ AZURE_DEVOPS_PROJECTS=WebApp,MobileApp,Platform
48
+ ```
49
+ → Validates that WebApp, MobileApp, and Platform projects exist
50
+
51
+ **Strategy 2: Area-path-based** (One Project, Multiple Area Paths)
52
+ ```bash
53
+ AZURE_DEVOPS_STRATEGY=area-path-based
54
+ AZURE_DEVOPS_PROJECT=MainProduct
55
+ AZURE_DEVOPS_AREA_PATHS=Frontend,Backend,Mobile
56
+ ```
57
+ → Validates MainProduct project exists
58
+ → Creates area paths if missing: MainProduct\Frontend, MainProduct\Backend, MainProduct\Mobile
59
+
60
+ **Strategy 3: Team-based** (One Project, Multiple Teams)
61
+ ```bash
62
+ AZURE_DEVOPS_STRATEGY=team-based
63
+ AZURE_DEVOPS_PROJECT=MainProduct
64
+ AZURE_DEVOPS_TEAMS=Alpha Team,Beta Team,Gamma Team
65
+ ```
66
+ → Validates MainProduct project exists
67
+ → Creates teams if missing: Alpha Team, Beta Team, Gamma Team
68
+
69
+ ## Validation Flow
70
+
71
+ ### Step 1: Strategy Detection
72
+
73
+ **Read .env and detect strategy**:
74
+ ```bash
75
+ AZURE_DEVOPS_STRATEGY=project-per-team
76
+ ```
77
+
78
+ **Result**:
79
+ ```
80
+ 🔍 Detected strategy: Project-per-team
81
+ Projects to validate: WebApp, MobileApp, Platform
82
+ ```
83
+
84
+ ### Step 2: Project Validation (Project-per-team)
85
+
86
+ **Check if projects exist**:
87
+ ```bash
88
+ # API calls to Azure DevOps
89
+ GET https://dev.azure.com/{org}/_apis/projects/WebApp
90
+ GET https://dev.azure.com/{org}/_apis/projects/MobileApp
91
+ GET https://dev.azure.com/{org}/_apis/projects/Platform
92
+ ```
93
+
94
+ **If all projects exist**:
95
+ ```
96
+ ✅ All projects validated:
97
+ • WebApp (ID: abcd1234)
98
+ • MobileApp (ID: efgh5678)
99
+ • Platform (ID: ijkl9012)
100
+ ```
101
+
102
+ **If some projects don't exist**:
103
+ ```
104
+ ⚠️ Projects not found:
105
+ ✅ WebApp (exists)
106
+ ❌ MobileApp (not found)
107
+ ❌ Platform (not found)
108
+
109
+ What would you like to do?
110
+ 1. Create missing projects
111
+ 2. Select existing projects
112
+ 3. Fix project names manually
113
+ 4. Cancel
114
+
115
+ Your choice [1]:
116
+ ```
117
+
118
+ **Option 1: Create Missing Projects**:
119
+ ```
120
+ 📦 Creating Azure DevOps projects...
121
+
122
+ Creating project: MobileApp...
123
+ ✅ Project created: MobileApp (ID: mnop3456)
124
+
125
+ Creating project: Platform...
126
+ ✅ Project created: Platform (ID: qrst7890)
127
+
128
+ ✅ All projects now exist!
129
+ ```
130
+
131
+ **Option 2: Select Existing Projects**:
132
+ ```
133
+ Available projects in organization:
134
+ 1. WebApp
135
+ 2. ApiGateway
136
+ 3. AuthService
137
+ 4. NotificationService
138
+ 5. DataPipeline
139
+
140
+ Select projects (comma-separated numbers) [2,3]:
141
+
142
+ ✅ Updated .env: AZURE_DEVOPS_PROJECTS=WebApp,ApiGateway,AuthService
143
+ ```
144
+
145
+ ### Step 3: Area Path Validation (Area-path-based)
146
+
147
+ **Scenario**: One project with area paths
148
+ ```bash
149
+ AZURE_DEVOPS_STRATEGY=area-path-based
150
+ AZURE_DEVOPS_PROJECT=MainProduct
151
+ AZURE_DEVOPS_AREA_PATHS=Frontend,Backend,Mobile,QA
152
+ ```
153
+
154
+ **Validation**:
155
+ ```
156
+ Checking project: MainProduct...
157
+ ✅ Project "MainProduct" exists
158
+
159
+ Checking area paths...
160
+ ✅ MainProduct\Frontend (exists)
161
+ ✅ MainProduct\Backend (exists)
162
+ ⚠️ MainProduct\Mobile (not found)
163
+ ⚠️ MainProduct\QA (not found)
164
+
165
+ 📦 Creating missing area paths...
166
+ ✅ Created: MainProduct\Mobile
167
+ ✅ Created: MainProduct\QA
168
+
169
+ ✅ All area paths validated/created successfully
170
+ ```
171
+
172
+ ### Step 4: Team Validation (Team-based)
173
+
174
+ **Scenario**: One project with multiple teams
175
+ ```bash
176
+ AZURE_DEVOPS_STRATEGY=team-based
177
+ AZURE_DEVOPS_PROJECT=MainProduct
178
+ AZURE_DEVOPS_TEAMS=Alpha Team,Beta Team,Gamma Team
179
+ ```
180
+
181
+ **Validation**:
182
+ ```
183
+ Checking project: MainProduct...
184
+ ✅ Project "MainProduct" exists
185
+
186
+ Checking teams...
187
+ ✅ Alpha Team (exists)
188
+ ⚠️ Beta Team (not found)
189
+ ⚠️ Gamma Team (not found)
190
+
191
+ 📦 Creating missing teams...
192
+ ✅ Created: Beta Team
193
+ ✅ Created: Gamma Team
194
+
195
+ ✅ All teams validated/created successfully
196
+ ```
197
+
198
+ ## Usage Examples
199
+
200
+ ### Example 1: Fresh Azure DevOps Setup (Project-per-team)
201
+
202
+ **Scenario**: New setup with multiple projects for different teams
203
+
204
+ **Action**: Run `/specweave-ado:sync`
205
+
206
+ **What Happens**:
207
+ ```bash
208
+ 🔍 Validating Azure DevOps configuration...
209
+
210
+ Strategy: Project-per-team
211
+ Checking projects: WebApp, MobileApp, Platform...
212
+
213
+ ⚠️ Projects not found:
214
+ • WebApp
215
+ • MobileApp
216
+ • Platform
217
+
218
+ What would you like to do?
219
+ 1. Create new projects
220
+ 2. Select existing projects
221
+ 3. Cancel
222
+
223
+ Your choice [1]: 1
224
+
225
+ 📦 Creating Azure DevOps projects...
226
+
227
+ Creating project: WebApp
228
+ Description: Web application frontend
229
+ Process template: Agile
230
+ ✅ Created: WebApp (ID: proj-001)
231
+
232
+ Creating project: MobileApp
233
+ Description: Mobile application
234
+ Process template: Agile
235
+ ✅ Created: MobileApp (ID: proj-002)
236
+
237
+ Creating project: Platform
238
+ Description: Backend platform services
239
+ Process template: Agile
240
+ ✅ Created: Platform (ID: proj-003)
241
+
242
+ 🎉 Azure DevOps configuration complete! All resources ready.
243
+ ```
244
+
245
+ ### Example 2: Migrate from Single to Multi-Project
246
+
247
+ **Scenario**: Currently using single project, want to split into multiple
248
+
249
+ **Current .env**:
250
+ ```bash
251
+ AZURE_DEVOPS_PROJECT=MainProduct
252
+ ```
253
+
254
+ **New .env**:
255
+ ```bash
256
+ AZURE_DEVOPS_STRATEGY=project-per-team
257
+ AZURE_DEVOPS_PROJECTS=MainProduct-Frontend,MainProduct-Backend,MainProduct-Mobile
258
+ ```
259
+
260
+ **What Happens**:
261
+ ```bash
262
+ 🔍 Detected strategy change: team-based → project-per-team
263
+
264
+ Validating new projects...
265
+ ✅ MainProduct-Frontend (exists from previous split)
266
+ ⚠️ MainProduct-Backend (not found)
267
+ ⚠️ MainProduct-Mobile (not found)
268
+
269
+ Would you like to:
270
+ 1. Create missing projects
271
+ 2. Keep single project with area paths instead
272
+ 3. Cancel
273
+
274
+ Your choice [1]: 1
275
+
276
+ 📦 Creating projects...
277
+ ✅ Created: MainProduct-Backend
278
+ ✅ Created: MainProduct-Mobile
279
+
280
+ 💡 Tip: You can now organize specs by project:
281
+ .specweave/docs/internal/specs/MainProduct-Frontend/
282
+ .specweave/docs/internal/specs/MainProduct-Backend/
283
+ .specweave/docs/internal/specs/MainProduct-Mobile/
284
+ ```
285
+
286
+ ### Example 3: Area Path Setup
287
+
288
+ **Scenario**: Large monolithic project with area-based organization
289
+
290
+ **Action**: Setup area paths for team organization
291
+
292
+ **What Happens**:
293
+ ```bash
294
+ 🔍 Validating Azure DevOps configuration...
295
+
296
+ Strategy: Area-path-based
297
+ Project: EnterpriseApp
298
+ Area Paths: Core, UserManagement, Billing, Reports, Analytics
299
+
300
+ Checking project: EnterpriseApp...
301
+ ✅ Project exists
302
+
303
+ Checking area paths...
304
+ ✅ EnterpriseApp\Core
305
+ ✅ EnterpriseApp\UserManagement
306
+ ⚠️ EnterpriseApp\Billing (not found)
307
+ ⚠️ EnterpriseApp\Reports (not found)
308
+ ⚠️ EnterpriseApp\Analytics (not found)
309
+
310
+ 📦 Creating area paths...
311
+
312
+ Creating: EnterpriseApp\Billing
313
+ ✅ Area path created with default team
314
+
315
+ Creating: EnterpriseApp\Reports
316
+ ✅ Area path created with default team
317
+
318
+ Creating: EnterpriseApp\Analytics
319
+ ✅ Area path created with default team
320
+
321
+ ✅ All area paths ready!
322
+
323
+ Work items will be organized by area:
324
+ • Billing features → EnterpriseApp\Billing
325
+ • Report features → EnterpriseApp\Reports
326
+ • Analytics features → EnterpriseApp\Analytics
327
+ ```
328
+
329
+ ## CLI Command
330
+
331
+ **Manual validation**:
332
+ ```bash
333
+ # From TypeScript
334
+ npx tsx src/utils/external-resource-validator.ts --provider=ado
335
+
336
+ # Or via skill activation
337
+ "Can you validate my Azure DevOps configuration?"
338
+ ```
339
+
340
+ **Validation output**:
341
+ ```typescript
342
+ {
343
+ valid: true,
344
+ strategy: 'project-per-team',
345
+ projects: [
346
+ { name: 'WebApp', id: 'proj-001', exists: true },
347
+ { name: 'MobileApp', id: 'proj-002', exists: true },
348
+ { name: 'Platform', id: 'proj-003', exists: true }
349
+ ],
350
+ created: [],
351
+ envUpdated: false
352
+ }
353
+ ```
354
+
355
+ ## Smart Project Detection
356
+
357
+ ### Auto-detect Based on Work Item Patterns
358
+
359
+ The skill can intelligently suggest project organization based on your existing work items:
360
+
361
+ ```typescript
362
+ // Analyze existing work items
363
+ const workItems = await analyzeWorkItems(org, project);
364
+
365
+ // Detect patterns
366
+ const patterns = {
367
+ byArea: workItems.groupBy('areaPath'), // Area-based organization
368
+ byTeam: workItems.groupBy('assignedTeam'), // Team-based organization
369
+ byType: workItems.groupBy('workItemType') // Type-based organization
370
+ };
371
+
372
+ // Suggest strategy
373
+ if (patterns.byArea.length > 3) {
374
+ console.log('💡 Detected area-based organization');
375
+ console.log(' Suggested strategy: area-path-based');
376
+ } else if (patterns.byTeam.length > 2) {
377
+ console.log('💡 Detected team-based organization');
378
+ console.log(' Suggested strategy: team-based or project-per-team');
379
+ }
380
+ ```
381
+
382
+ ## Project Creation API
383
+
384
+ **Azure DevOps REST API** (v7.0):
385
+
386
+ ### Create Project
387
+ ```bash
388
+ POST https://dev.azure.com/{org}/_apis/projects?api-version=7.0
389
+ Content-Type: application/json
390
+ Authorization: Basic {base64(":PAT")}
391
+
392
+ {
393
+ "name": "MobileApp",
394
+ "description": "Mobile application project",
395
+ "capabilities": {
396
+ "versioncontrol": {
397
+ "sourceControlType": "Git"
398
+ },
399
+ "processTemplate": {
400
+ "templateTypeId": "adcc42ab-9882-485e-a3ed-7678f01f66bc" # Agile
401
+ }
402
+ }
403
+ }
404
+
405
+ Response:
406
+ {
407
+ "id": "proj-002",
408
+ "name": "MobileApp",
409
+ "state": "wellFormed"
410
+ }
411
+ ```
412
+
413
+ ### Create Area Path
414
+ ```bash
415
+ POST https://dev.azure.com/{org}/{project}/_apis/wit/classificationnodes/areas?api-version=7.0
416
+ Content-Type: application/json
417
+
418
+ {
419
+ "name": "Frontend",
420
+ "attributes": {
421
+ "startDate": null,
422
+ "finishDate": null
423
+ }
424
+ }
425
+
426
+ Response:
427
+ {
428
+ "id": 123,
429
+ "name": "Frontend",
430
+ "path": "\\MainProduct\\Area\\Frontend"
431
+ }
432
+ ```
433
+
434
+ ### Create Team
435
+ ```bash
436
+ POST https://dev.azure.com/{org}/_apis/projects/{projectId}/teams?api-version=7.0
437
+ Content-Type: application/json
438
+
439
+ {
440
+ "name": "Alpha Team",
441
+ "description": "Alpha development team"
442
+ }
443
+
444
+ Response:
445
+ {
446
+ "id": "team-001",
447
+ "name": "Alpha Team",
448
+ "projectName": "MainProduct"
449
+ }
450
+ ```
451
+
452
+ ## Configuration Examples
453
+
454
+ ### Example 1: Microservices Architecture (Project-per-team)
455
+
456
+ **Before** (`.env`):
457
+ ```bash
458
+ AZURE_DEVOPS_ORG=mycompany
459
+ AZURE_DEVOPS_PAT=xxx
460
+ ```
461
+
462
+ **After validation**:
463
+ ```bash
464
+ AZURE_DEVOPS_ORG=mycompany
465
+ AZURE_DEVOPS_PAT=xxx
466
+ AZURE_DEVOPS_STRATEGY=project-per-team
467
+ AZURE_DEVOPS_PROJECTS=AuthService,UserService,PaymentService,NotificationService
468
+ ```
469
+
470
+ **Folder structure created**:
471
+ ```
472
+ .specweave/docs/internal/specs/
473
+ ├── AuthService/
474
+ │ └── spec-001-oauth-implementation.md
475
+ ├── UserService/
476
+ │ └── spec-001-user-management.md
477
+ ├── PaymentService/
478
+ │ └── spec-001-stripe-integration.md
479
+ └── NotificationService/
480
+ └── spec-001-email-notifications.md
481
+ ```
482
+
483
+ ### Example 2: Monolithic Application (Area-path-based)
484
+
485
+ **Before** (`.env`):
486
+ ```bash
487
+ AZURE_DEVOPS_PROJECT=ERP
488
+ ```
489
+
490
+ **After validation**:
491
+ ```bash
492
+ AZURE_DEVOPS_ORG=enterprise
493
+ AZURE_DEVOPS_PAT=xxx
494
+ AZURE_DEVOPS_STRATEGY=area-path-based
495
+ AZURE_DEVOPS_PROJECT=ERP
496
+ AZURE_DEVOPS_AREA_PATHS=Finance,HR,Inventory,Sales,Reports
497
+ ```
498
+
499
+ **Work item organization**:
500
+ ```
501
+ ERP
502
+ ├── Finance/ → Finance module features
503
+ ├── HR/ → HR module features
504
+ ├── Inventory/ → Inventory management
505
+ ├── Sales/ → Sales module features
506
+ └── Reports/ → Reporting features
507
+ ```
508
+
509
+ ### Example 3: Platform Teams (Team-based)
510
+
511
+ **Before** (`.env`):
512
+ ```bash
513
+ AZURE_DEVOPS_PROJECT=Platform
514
+ ```
515
+
516
+ **After validation**:
517
+ ```bash
518
+ AZURE_DEVOPS_ORG=techcorp
519
+ AZURE_DEVOPS_PAT=xxx
520
+ AZURE_DEVOPS_STRATEGY=team-based
521
+ AZURE_DEVOPS_PROJECT=Platform
522
+ AZURE_DEVOPS_TEAMS=Infrastructure,Security,Data,DevOps
523
+ ```
524
+
525
+ **Team assignments**:
526
+ - Infrastructure Team → Cloud resources, networking
527
+ - Security Team → Auth, compliance, auditing
528
+ - Data Team → Databases, analytics, ML
529
+ - DevOps Team → CI/CD, monitoring, tooling
530
+
531
+ ## Error Handling
532
+
533
+ ### Error 1: Invalid Credentials
534
+
535
+ **Symptom**: API calls fail with 401 Unauthorized
536
+
537
+ **Solution**:
538
+ ```
539
+ ❌ Azure DevOps API authentication failed
540
+
541
+ Please check:
542
+ 1. AZURE_DEVOPS_PAT is correct
543
+ 2. Token has not expired
544
+ 3. AZURE_DEVOPS_ORG is correct
545
+
546
+ Generate new token at:
547
+ https://dev.azure.com/{org}/_usersSettings/tokens
548
+ ```
549
+
550
+ ### Error 2: Insufficient Permissions
551
+
552
+ **Symptom**: Cannot create projects (403 Forbidden)
553
+
554
+ **Solution**:
555
+ ```
556
+ ❌ Insufficient permissions to create projects
557
+
558
+ You need:
559
+ - Project Collection Administrator role (for creating projects)
560
+ - Project Administrator role (for area paths and teams)
561
+
562
+ Contact your Azure DevOps administrator to request permissions.
563
+ ```
564
+
565
+ ### Error 3: Project Name Conflicts
566
+
567
+ **Symptom**: Project creation fails (name exists)
568
+
569
+ **Solution**:
570
+ ```
571
+ ❌ Project name "WebApp" already exists
572
+
573
+ Options:
574
+ 1. Use a different project name
575
+ 2. Select the existing project
576
+ 3. Add a suffix (e.g., WebApp-v2)
577
+
578
+ Your choice [2]:
579
+ ```
580
+
581
+ ### Error 4: Organization Limits
582
+
583
+ **Symptom**: Cannot create more projects
584
+
585
+ **Solution**:
586
+ ```
587
+ ❌ Organization project limit reached (250 projects)
588
+
589
+ Consider:
590
+ 1. Using area-path-based strategy (one project)
591
+ 2. Archiving old projects
592
+ 3. Upgrading organization plan
593
+
594
+ Contact Azure DevOps support for limit increases.
595
+ ```
596
+
597
+ ## Integration with SpecWeave Workflow
598
+
599
+ ### Automatic Validation
600
+
601
+ When using `/specweave-ado:sync`, validation runs automatically:
602
+
603
+ ```bash
604
+ /specweave-ado:sync 0014
605
+
606
+ # Internally calls:
607
+ 1. validateAzureDevOpsResources()
608
+ 2. Fix missing projects/area paths/teams
609
+ 3. Create folder structure for specs
610
+ 4. Proceed with sync
611
+ ```
612
+
613
+ ### Manual Validation
614
+
615
+ Run validation independently:
616
+
617
+ ```bash
618
+ # Via skill
619
+ "Validate my Azure DevOps configuration"
620
+
621
+ # Via TypeScript
622
+ npx tsx src/utils/external-resource-validator.ts --provider=ado
623
+
624
+ # Via CLI (future)
625
+ specweave validate-ado
626
+ ```
627
+
628
+ ## Best Practices
629
+
630
+ ✅ **Choose the right strategy**:
631
+ - **Project-per-team**: Best for autonomous teams, microservices
632
+ - **Area-path-based**: Best for monolithic apps, shared codebase
633
+ - **Team-based**: Best for small organizations, simple structure
634
+
635
+ ✅ **Use descriptive names**:
636
+ ```bash
637
+ # Good
638
+ AZURE_DEVOPS_PROJECTS=UserManagement,PaymentProcessing,NotificationEngine
639
+
640
+ # Bad
641
+ AZURE_DEVOPS_PROJECTS=Proj1,Proj2,Proj3
642
+ ```
643
+
644
+ ✅ **Document project mapping** (in README):
645
+ ```markdown
646
+ ## Azure DevOps Projects
647
+
648
+ - UserManagement: User authentication and profile management
649
+ - PaymentProcessing: Payment gateway integrations
650
+ - NotificationEngine: Email, SMS, and push notifications
651
+ ```
652
+
653
+ ✅ **Keep .env in version control** (gitignored tokens):
654
+ ```bash
655
+ # Commit project structure
656
+ AZURE_DEVOPS_STRATEGY=project-per-team
657
+ AZURE_DEVOPS_PROJECTS=WebApp,MobileApp,Platform
658
+
659
+ # Don't commit sensitive data
660
+ AZURE_DEVOPS_PAT=<redacted>
661
+ ```
662
+
663
+ ## Folder Organization
664
+
665
+ Based on strategy, the skill creates appropriate folder structure:
666
+
667
+ ### Project-per-team Structure
668
+ ```
669
+ .specweave/docs/internal/specs/
670
+ ├── WebApp/
671
+ │ ├── spec-001-user-interface.md
672
+ │ └── spec-002-responsive-design.md
673
+ ├── MobileApp/
674
+ │ ├── spec-001-ios-features.md
675
+ │ └── spec-002-android-features.md
676
+ └── Platform/
677
+ ├── spec-001-api-design.md
678
+ └── spec-002-database-schema.md
679
+ ```
680
+
681
+ ### Area-path-based Structure
682
+ ```
683
+ .specweave/docs/internal/specs/MainProduct/
684
+ ├── Frontend/
685
+ │ └── spec-001-ui-components.md
686
+ ├── Backend/
687
+ │ └── spec-001-api-endpoints.md
688
+ └── Mobile/
689
+ └── spec-001-mobile-sync.md
690
+ ```
691
+
692
+ ### Team-based Structure
693
+ ```
694
+ .specweave/docs/internal/specs/MainProduct/
695
+ ├── AlphaTeam/
696
+ │ └── spec-001-feature-a.md
697
+ ├── BetaTeam/
698
+ │ └── spec-001-feature-b.md
699
+ └── GammaTeam/
700
+ └── spec-001-feature-c.md
701
+ ```
702
+
703
+ ## Summary
704
+
705
+ This skill ensures your Azure DevOps configuration is **always valid** by:
706
+
707
+ 1. ✅ **Validating projects** - Check if projects exist, prompt to select or create
708
+ 2. ✅ **Supporting multiple strategies** - Project-per-team, area-path-based, team-based
709
+ 3. ✅ **Auto-creating resources** - Projects, area paths, teams
710
+ 4. ✅ **Organizing specs** - Create folder structure based on projects
711
+ 5. ✅ **Clear error messages** - Actionable guidance for all failures
712
+
713
+ **Result**: Zero manual Azure DevOps setup - system handles everything!
714
+
715
+ ---
716
+
717
+ **Skill Version**: 1.0.0
718
+ **Introduced**: SpecWeave v0.17.0
719
+ **Last Updated**: 2025-11-11