specweave 0.30.13 → 0.30.16

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.
Files changed (116) hide show
  1. package/.claude-plugin/marketplace.json +0 -11
  2. package/CLAUDE.md +1 -1
  3. package/README.md +32 -0
  4. package/bin/fix-marketplace-errors.sh +1 -1
  5. package/bin/specweave.js +28 -0
  6. package/dist/src/cli/commands/commits.d.ts +7 -0
  7. package/dist/src/cli/commands/commits.d.ts.map +1 -0
  8. package/dist/src/cli/commands/commits.js +42 -0
  9. package/dist/src/cli/commands/commits.js.map +1 -0
  10. package/dist/src/cli/commands/living-docs.d.ts +29 -0
  11. package/dist/src/cli/commands/living-docs.d.ts.map +1 -0
  12. package/dist/src/cli/commands/living-docs.js +350 -0
  13. package/dist/src/cli/commands/living-docs.js.map +1 -0
  14. package/dist/src/cli/helpers/ado-area-selector.js +1 -1
  15. package/dist/src/cli/helpers/ado-area-selector.js.map +1 -1
  16. package/dist/src/core/background/index.d.ts +2 -2
  17. package/dist/src/core/background/index.d.ts.map +1 -1
  18. package/dist/src/core/background/index.js +1 -1
  19. package/dist/src/core/background/index.js.map +1 -1
  20. package/dist/src/core/living-docs/living-docs-sync.d.ts +34 -10
  21. package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
  22. package/dist/src/core/living-docs/living-docs-sync.js +223 -32
  23. package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
  24. package/dist/src/importers/ado-importer.js +2 -2
  25. package/dist/src/importers/ado-importer.js.map +1 -1
  26. package/dist/src/importers/item-converter.d.ts +6 -1
  27. package/dist/src/importers/item-converter.d.ts.map +1 -1
  28. package/dist/src/importers/item-converter.js +15 -2
  29. package/dist/src/importers/item-converter.js.map +1 -1
  30. package/dist/src/integrations/ado/ado-pat-provider.d.ts +3 -3
  31. package/dist/src/integrations/ado/ado-pat-provider.js +3 -3
  32. package/dist/src/living-docs/epic-id-allocator.d.ts +1 -1
  33. package/dist/src/living-docs/epic-id-allocator.js +1 -1
  34. package/dist/src/living-docs/fs-id-allocator.d.ts +1 -1
  35. package/dist/src/living-docs/fs-id-allocator.js +1 -1
  36. package/dist/src/living-docs/smart-doc-organizer.js +1 -1
  37. package/dist/src/living-docs/smart-doc-organizer.js.map +1 -1
  38. package/dist/src/utils/auth-helpers.d.ts +23 -0
  39. package/dist/src/utils/auth-helpers.d.ts.map +1 -1
  40. package/dist/src/utils/auth-helpers.js +51 -0
  41. package/dist/src/utils/auth-helpers.js.map +1 -1
  42. package/dist/src/utils/feature-id-collision.d.ts +48 -5
  43. package/dist/src/utils/feature-id-collision.d.ts.map +1 -1
  44. package/dist/src/utils/feature-id-collision.js +251 -19
  45. package/dist/src/utils/feature-id-collision.js.map +1 -1
  46. package/dist/src/utils/validators/ado-validator.js +2 -2
  47. package/dist/src/utils/validators/ado-validator.js.map +1 -1
  48. package/package.json +12 -13
  49. package/plugins/PLUGINS-INDEX.md +2 -3
  50. package/plugins/specweave/commands/specweave-living-docs.md +321 -0
  51. package/plugins/specweave/commands/specweave-organize-docs.md +3 -3
  52. package/plugins/specweave/hooks/v2/handlers/github-sync-handler.sh +10 -1
  53. package/plugins/specweave/hooks/v2/handlers/living-docs-handler.sh +10 -1
  54. package/plugins/specweave-ado/agents/ado-manager/AGENT.md +58 -0
  55. package/plugins/specweave-ado/commands/{specweave-ado-close-workitem.md → close.md} +9 -5
  56. package/plugins/specweave-ado/commands/{specweave-ado-create-workitem.md → create.md} +9 -5
  57. package/plugins/specweave-ado/commands/pull.md +489 -0
  58. package/plugins/specweave-ado/commands/push.md +391 -0
  59. package/plugins/specweave-ado/commands/{specweave-ado-status.md → status.md} +12 -0
  60. package/plugins/specweave-ado/commands/{specweave-ado-sync.md → sync.md} +95 -3
  61. package/plugins/specweave-ado/hooks/README.md +1 -1
  62. package/plugins/specweave-docs/commands/generate.md +3 -3
  63. package/plugins/specweave-docs/commands/init.md +4 -4
  64. package/plugins/specweave-docs/commands/preview.md +5 -5
  65. package/plugins/specweave-github/agents/github-manager/AGENT.md +22 -0
  66. package/plugins/specweave-github/agents/user-story-updater/AGENT.md +1 -1
  67. package/plugins/specweave-github/commands/{specweave-github-close-issue.md → close.md} +2 -2
  68. package/plugins/specweave-github/commands/{specweave-github-create-issue.md → create.md} +2 -2
  69. package/plugins/specweave-github/commands/pull.md +142 -0
  70. package/plugins/specweave-github/commands/push.md +154 -0
  71. package/plugins/specweave-github/commands/{specweave-github-sync.md → sync.md} +19 -5
  72. package/plugins/specweave-github/commands/{specweave-github-update-user-story.md → update-user-story.md} +1 -1
  73. package/plugins/specweave-github/hooks/README.md +1 -1
  74. package/plugins/specweave-jira/agents/jira-manager/AGENT.md +30 -0
  75. package/plugins/specweave-jira/commands/pull.md +164 -0
  76. package/plugins/specweave-jira/commands/push.md +170 -0
  77. package/plugins/specweave-jira/commands/{specweave-jira-sync.md → sync.md} +18 -3
  78. package/plugins/specweave-jira/hooks/README.md +1 -1
  79. package/plugins/specweave-kafka/README.md +20 -0
  80. package/plugins/specweave-kafka/benchmarks/kafka-throughput.benchmark.ts +551 -0
  81. package/plugins/specweave-kafka/examples/README.md +191 -0
  82. package/plugins/specweave-kafka/examples/avro-schema-registry/.env.example +8 -0
  83. package/plugins/specweave-kafka/examples/avro-schema-registry/README.md +69 -0
  84. package/plugins/specweave-kafka/examples/avro-schema-registry/consumer.js +37 -0
  85. package/plugins/specweave-kafka/examples/avro-schema-registry/package.json +14 -0
  86. package/plugins/specweave-kafka/examples/avro-schema-registry/producer.js +57 -0
  87. package/plugins/specweave-kafka/examples/exactly-once-semantics/.env.example +5 -0
  88. package/plugins/specweave-kafka/examples/exactly-once-semantics/README.md +30 -0
  89. package/plugins/specweave-kafka/examples/exactly-once-semantics/eos-pipeline.js +79 -0
  90. package/plugins/specweave-kafka/examples/exactly-once-semantics/package.json +11 -0
  91. package/plugins/specweave-kafka/examples/kafka-streams-app/.env.example +4 -0
  92. package/plugins/specweave-kafka/examples/kafka-streams-app/README.md +30 -0
  93. package/plugins/specweave-kafka/examples/kafka-streams-app/package.json +11 -0
  94. package/plugins/specweave-kafka/examples/kafka-streams-app/windowed-aggregation.js +66 -0
  95. package/plugins/specweave-kafka/examples/n8n-workflow/README.md +54 -0
  96. package/plugins/specweave-kafka/examples/n8n-workflow/docker-compose.yml +19 -0
  97. package/plugins/specweave-kafka/examples/n8n-workflow/kafka-to-slack.json +50 -0
  98. package/plugins/specweave-kafka/examples/simple-producer-consumer/.env.example +15 -0
  99. package/plugins/specweave-kafka/examples/simple-producer-consumer/README.md +183 -0
  100. package/plugins/specweave-kafka/examples/simple-producer-consumer/consumer.js +60 -0
  101. package/plugins/specweave-kafka/examples/simple-producer-consumer/docker-compose.yml +30 -0
  102. package/plugins/specweave-kafka/examples/simple-producer-consumer/package.json +18 -0
  103. package/plugins/specweave-kafka/examples/simple-producer-consumer/producer.js +52 -0
  104. package/plugins/specweave-release/commands/specweave-release-npm.md +4 -4
  105. package/plugins/specweave-docs-preview/.claude-plugin/plugin.json +0 -21
  106. package/plugins/specweave-docs-preview/commands/build.md +0 -489
  107. package/plugins/specweave-docs-preview/commands/preview.md +0 -355
  108. package/plugins/specweave-docs-preview/skills/docs-preview/SKILL.md +0 -386
  109. /package/plugins/specweave-ado/commands/{specweave-ado-clone-repos.md → clone.md} +0 -0
  110. /package/plugins/specweave-ado/commands/{specweave-ado-import-areas.md → import-areas.md} +0 -0
  111. /package/plugins/specweave-ado/commands/{specweave-ado-import-projects.md → import-projects.md} +0 -0
  112. /package/plugins/specweave-github/commands/{specweave-github-cleanup-duplicates.md → cleanup-duplicates.md} +0 -0
  113. /package/plugins/specweave-github/commands/{specweave-github-reconcile.md → reconcile.md} +0 -0
  114. /package/plugins/specweave-github/commands/{specweave-github-status.md → status.md} +0 -0
  115. /package/plugins/specweave-jira/commands/{specweave-jira-import-boards.md → import-boards.md} +0 -0
  116. /package/plugins/specweave-jira/commands/{specweave-jira-import-projects.md → import-projects-full.md} +0 -0
@@ -0,0 +1,489 @@
1
+ ---
2
+ name: specweave-ado:pull
3
+ description: Pull latest changes from Azure DevOps (like git pull). Supports increment, project, or full living docs sync.
4
+ ---
5
+
6
+ # ADO Pull Command
7
+
8
+ **Usage**: `/specweave-ado:pull [target] [options]`
9
+
10
+ **Purpose**: Pull latest changes from Azure DevOps (like `git pull`)
11
+
12
+ ---
13
+
14
+ ## Quick Start
15
+
16
+ ```bash
17
+ # Pull for current/active increment (simple mode)
18
+ /specweave-ado:pull
19
+
20
+ # Pull for specific increment
21
+ /specweave-ado:pull 0005
22
+
23
+ # Pull ALL changes across ALL projects (living docs sync)
24
+ /specweave-ado:pull --all
25
+
26
+ # Pull for specific project/board
27
+ /specweave-ado:pull --project clinical-insights
28
+
29
+ # Pull specific feature hierarchy (Epic → Feature → User Stories)
30
+ /specweave-ado:pull --feature FS-042
31
+ ```
32
+
33
+ ---
34
+
35
+ ## Sync Modes
36
+
37
+ ### Mode 1: Increment Sync (Default)
38
+ ```bash
39
+ /specweave-ado:pull [increment-id]
40
+ ```
41
+ Syncs ONE increment ↔ ONE linked work item.
42
+
43
+ ### Mode 2: Living Docs Sync (Full)
44
+ ```bash
45
+ /specweave-ado:pull --all [--time-range 1M]
46
+ ```
47
+ Syncs ALL specs across ALL projects/boards:
48
+ - Discovers all linked specs in `.specweave/docs/internal/specs/`
49
+ - Fetches changes from ADO for each linked item
50
+ - Updates User Stories, Features, Epics
51
+ - Respects multi-project folder structure
52
+
53
+ ### Mode 3: Project-Scoped Sync
54
+ ```bash
55
+ /specweave-ado:pull --project clinical-insights
56
+ ```
57
+ Syncs all specs within a specific project folder:
58
+ ```
59
+ specs/clinical-insights/
60
+ ├── FS-042/us-001.md ← Synced
61
+ ├── FS-042/us-002.md ← Synced
62
+ └── FS-043/us-003.md ← Synced
63
+ ```
64
+
65
+ ### Mode 4: Feature Hierarchy Sync
66
+ ```bash
67
+ /specweave-ado:pull --feature FS-042
68
+ ```
69
+ Syncs a specific feature and ALL its children:
70
+ ```
71
+ ADO Epic #100
72
+ └── Feature #200 (FS-042) ← Synced
73
+ └── US-001 #201 ← Synced
74
+ └── US-002 #202 ← Synced
75
+ └── US-003 #203 ← Synced
76
+ ```
77
+
78
+ ---
79
+
80
+ ## What Gets Pulled
81
+
82
+ | Field | Behavior |
83
+ |-------|----------|
84
+ | **Status** | External ALWAYS wins (QA/stakeholder decisions) |
85
+ | **Priority** | External wins (stakeholder prioritization) |
86
+ | **Iteration/Sprint** | Updated if changed in ADO |
87
+ | **Comments** | New team comments imported |
88
+ | **Assignee** | Updated if changed |
89
+ | **Parent Links** | Epic → Feature → Story hierarchy preserved |
90
+
91
+ ---
92
+
93
+ ## Multi-Project Routing
94
+
95
+ When pulling with `--all`, the system routes changes to correct folders:
96
+
97
+ ```
98
+ ADO Organization
99
+ ├── Project: TechCorp
100
+ │ ├── Area: Clinical-Insights → specs/techcorp/clinical-insights/
101
+ │ └── Area: AI-Platform → specs/techcorp/ai-platform/
102
+ └── Project: Infrastructure
103
+ └── Area: Core → specs/infrastructure/core/
104
+ ```
105
+
106
+ **Routing Priority:**
107
+ 1. **Explicit mapping** in `config.json` (areaPathMapping)
108
+ 2. **Board matching** with keyword confidence scoring
109
+ 3. **Existing folder** structure detection
110
+ 4. **Ask user** if ambiguous
111
+
112
+ ---
113
+
114
+ ## Command Behavior
115
+
116
+ ### 0. Load Credentials from .env (MANDATORY FIRST)
117
+
118
+ **CRITICAL**: Read PAT from `.env` file, NOT from shell environment variables.
119
+
120
+ ```bash
121
+ # Read PAT from .env file
122
+ ADO_PAT=$(grep '^AZURE_DEVOPS_PAT=' .env 2>/dev/null | cut -d'=' -f2)
123
+
124
+ if [ -z "$ADO_PAT" ]; then
125
+ echo "ERROR: AZURE_DEVOPS_PAT not found in .env file"
126
+ echo "Add to .env: AZURE_DEVOPS_PAT=your-pat-here"
127
+ exit 1
128
+ fi
129
+ ```
130
+
131
+ ### For Increment Mode (default):
132
+
133
+ ```typescript
134
+ const incrementId = args.incrementId || await findActiveIncrement();
135
+ const metadata = await loadIncrementMetadata(incrementId);
136
+
137
+ const adoWorkItemId = metadata?.external_sync?.ado?.workItemId;
138
+ if (!adoWorkItemId) {
139
+ console.log('Not linked to ADO. Run: /specweave-ado:create');
140
+ return;
141
+ }
142
+
143
+ // Pull changes for single work item
144
+ await pullFromAdo(incrementId, adoWorkItemId);
145
+ ```
146
+
147
+ ### For Living Docs Mode (--all):
148
+
149
+ ```typescript
150
+ // 1. Discover all specs with ADO links
151
+ const allSpecs = await discoverLinkedSpecs({
152
+ specsDir: '.specweave/docs/internal/specs/',
153
+ provider: 'ado'
154
+ });
155
+
156
+ // 2. Group by project/board for batch API calls
157
+ const byProject = groupByAdoProject(allSpecs);
158
+
159
+ // 3. Pull changes for each project
160
+ for (const [projectPath, specs] of byProject) {
161
+ console.log(`Pulling ${projectPath}/ (${specs.length} items)...`);
162
+
163
+ for (const spec of specs) {
164
+ const changes = await pullSpecFromAdo(spec);
165
+ if (changes.hasChanges) {
166
+ await updateSpecFile(spec.path, changes);
167
+ console.log(` ✓ ${spec.usId}: ${changes.summary}`);
168
+ }
169
+ }
170
+ }
171
+ ```
172
+
173
+ ### Spec Discovery Logic:
174
+
175
+ ```typescript
176
+ // Find all specs with ADO external links
177
+ async function discoverLinkedSpecs(options) {
178
+ const specs = [];
179
+
180
+ // Scan: specs/{project}/{board}/FS-XXX/us-*.md
181
+ const pattern = `${options.specsDir}/**/us-*.md`;
182
+ const files = await glob(pattern);
183
+
184
+ for (const file of files) {
185
+ const frontmatter = await parseYamlFrontmatter(file);
186
+
187
+ // Check for ADO link in frontmatter
188
+ if (frontmatter.externalLinks?.ado?.workItemId) {
189
+ specs.push({
190
+ path: file,
191
+ usId: frontmatter.id,
192
+ workItemId: frontmatter.externalLinks.ado.workItemId,
193
+ projectPath: extractProjectPath(file),
194
+ lastSynced: frontmatter.externalLinks.ado.syncedAt
195
+ });
196
+ }
197
+ }
198
+
199
+ return specs;
200
+ }
201
+ ```
202
+
203
+ ---
204
+
205
+ ## Conflict Resolution
206
+
207
+ **CRITICAL**: External tool status ALWAYS wins.
208
+
209
+ | Scenario | Winner | Reason |
210
+ |----------|--------|--------|
211
+ | Status differs | **External** | QA/stakeholder decisions |
212
+ | Priority differs | **External** | Stakeholder prioritization |
213
+ | Iteration differs | **External** | Sprint planning decisions |
214
+ | Content differs | **Timestamp** | More recent wins |
215
+
216
+ ---
217
+
218
+ ## Examples
219
+
220
+ ### Example 1: Pull Single Increment
221
+
222
+ ```
223
+ User: /specweave-ado:pull 0005
224
+
225
+ Claude:
226
+ Pulling from ADO...
227
+ Increment: 0005-payment-integration
228
+ Work Item: #12345
229
+
230
+ Changes Applied:
231
+ Status: in-progress -> implemented (external wins)
232
+
233
+ Pull complete!
234
+ ```
235
+
236
+ ### Example 2: Pull All (Living Docs Sync)
237
+
238
+ ```
239
+ User: /specweave-ado:pull --all
240
+
241
+ Claude:
242
+ Discovering linked specs...
243
+ Found 47 specs across 3 projects
244
+
245
+ Pulling techcorp/clinical-insights/ (18 items)...
246
+ ✓ US-001: Status updated (In Progress → Done)
247
+ ✓ US-002: Priority changed (P2 → P1)
248
+ ✓ US-003: 2 new comments imported
249
+ ... (15 unchanged)
250
+
251
+ Pulling techcorp/ai-platform/ (22 items)...
252
+ ✓ US-010: Iteration updated (Sprint 23 → Sprint 24)
253
+ ... (21 unchanged)
254
+
255
+ Pulling infrastructure/core/ (7 items)...
256
+ (all up to date)
257
+
258
+ Pull Summary:
259
+ Projects: 3
260
+ Specs checked: 47
261
+ Updated: 4
262
+ New comments: 5
263
+ Conflicts resolved: 2 (external wins)
264
+ ```
265
+
266
+ ### Example 3: Pull Specific Project
267
+
268
+ ```
269
+ User: /specweave-ado:pull --project clinical-insights
270
+
271
+ Claude:
272
+ Pulling specs/clinical-insights/...
273
+ Found 18 specs linked to ADO
274
+
275
+ ✓ FS-042/us-001: Status → Done
276
+ ✓ FS-042/us-002: Priority → P1
277
+ ... (16 unchanged)
278
+
279
+ Pull complete! 2 specs updated.
280
+ ```
281
+
282
+ ### Example 4: Pull Feature Hierarchy
283
+
284
+ ```
285
+ User: /specweave-ado:pull --feature FS-042
286
+
287
+ Claude:
288
+ Fetching ADO hierarchy for FS-042...
289
+ Epic: #100 "Clinical Platform"
290
+ └── Feature: #200 "Patient Dashboard" (FS-042)
291
+ └── US-001: #201 "View patient list"
292
+ └── US-002: #202 "Export patient data"
293
+ └── US-003: #203 "Filter by criteria"
294
+
295
+ Pulling 4 items...
296
+ ✓ FS-042/FEATURE.md: Status updated
297
+ ✓ FS-042/us-001.md: Done (was: In Progress)
298
+ ✓ FS-042/us-002.md: 1 new comment
299
+ ✓ FS-042/us-003.md: (no changes)
300
+
301
+ Pull complete!
302
+ ```
303
+
304
+ ---
305
+
306
+ ## Conflict Resolution
307
+
308
+ **CRITICAL**: External tool status ALWAYS wins in conflicts.
309
+
310
+ This ensures QA and stakeholder decisions in ADO take precedence over local status.
311
+
312
+ | Scenario | Winner | Reason |
313
+ |----------|--------|--------|
314
+ | Status differs | **External** | QA/stakeholder decisions |
315
+ | Priority differs | **External** | Stakeholder prioritization |
316
+ | Iteration differs | **External** | Sprint planning decisions |
317
+ | Both modified same time | **External** | External tool is source of truth |
318
+
319
+ ---
320
+
321
+ ## Examples
322
+
323
+ ### Example 1: Simple Pull
324
+
325
+ ```
326
+ User: /specweave-ado:pull
327
+
328
+ Claude:
329
+ Pulling from ADO...
330
+ Increment: 0005-payment-integration
331
+ Work Item: #12345
332
+
333
+ Changes Applied:
334
+ Status: in-progress -> implemented (external wins)
335
+
336
+ Pull complete!
337
+ ```
338
+
339
+ ### Example 2: No Changes
340
+
341
+ ```
342
+ User: /specweave-ado:pull 0005
343
+
344
+ Claude:
345
+ Pulling from ADO...
346
+ Increment: 0005-payment-integration
347
+ Work Item: #12345
348
+
349
+ Already up to date!
350
+ Last synced: 2 minutes ago
351
+ ```
352
+
353
+ ### Example 3: Not Linked
354
+
355
+ ```
356
+ User: /specweave-ado:pull 0005
357
+
358
+ Claude:
359
+ Increment 0005 not linked to ADO yet.
360
+
361
+ To link: /specweave-ado:create 0005
362
+ ```
363
+
364
+ ---
365
+
366
+ ## Sync Brief (MANDATORY OUTPUT)
367
+
368
+ **After EVERY pull operation, display a compact summary:**
369
+
370
+ ### Brief Format (Single Increment)
371
+
372
+ ```
373
+ ┌─────────────────────────────────────────────────────────┐
374
+ │ PULL COMPLETE ✓ ADO │
375
+ ├─────────────────────────────────────────────────────────┤
376
+ │ Increment: 0005-payment-integration │
377
+ │ Work Item: #12345 │
378
+ │ Profile: ado-techcorp │
379
+ ├─────────────────────────────────────────────────────────┤
380
+ │ CHANGES │
381
+ │ ↓ Status: Active → Resolved (external wins) │
382
+ │ ↓ Priority: P2 → P1 (external wins) │
383
+ │ ↓ Iteration: Sprint 23 → Sprint 24 │
384
+ │ + Comments: 3 new imported │
385
+ ├─────────────────────────────────────────────────────────┤
386
+ │ Last sync: 2025-12-04 10:32:15 (just now) │
387
+ │ URL: https://dev.azure.com/.../12345 │
388
+ └─────────────────────────────────────────────────────────┘
389
+ ```
390
+
391
+ ### Brief Format (Multi-Project --all)
392
+
393
+ ```
394
+ ┌─────────────────────────────────────────────────────────┐
395
+ │ PULL COMPLETE ✓ ADO │
396
+ ├─────────────────────────────────────────────────────────┤
397
+ │ Scanned: 47 specs across 3 projects │
398
+ │ Updated: 7 specs │
399
+ │ Conflicts: 2 (resolved: external wins) │
400
+ │ Duration: 4.2s │
401
+ ├─────────────────────────────────────────────────────────┤
402
+ │ BY PROJECT │
403
+ │ techcorp/clinical-insights/ 4 updated, 14 current │
404
+ │ techcorp/ai-platform/ 2 updated, 20 current │
405
+ │ infrastructure/core/ 1 updated, 6 current │
406
+ ├─────────────────────────────────────────────────────────┤
407
+ │ CHANGES APPLIED │
408
+ │ ↓ Status changes: 4 │
409
+ │ ↓ Priority changes: 2 │
410
+ │ ↓ Iteration updates: 3 │
411
+ │ + Comments imported: 8 │
412
+ ├─────────────────────────────────────────────────────────┤
413
+ │ UPDATED SPECS │
414
+ │ ✓ clinical-insights/FS-042/us-001 Active → Done │
415
+ │ ✓ clinical-insights/FS-042/us-002 P2 → P1 │
416
+ │ ✓ clinical-insights/FS-043/us-005 Sprint 23 → 24 │
417
+ │ ✓ ai-platform/FS-050/us-010 3 new comments │
418
+ │ ... +3 more (use --verbose for full list) │
419
+ └─────────────────────────────────────────────────────────┘
420
+ ```
421
+
422
+ ### Brief Format (No Changes)
423
+
424
+ ```
425
+ ┌─────────────────────────────────────────────────────────┐
426
+ │ PULL COMPLETE ✓ ADO │
427
+ ├─────────────────────────────────────────────────────────┤
428
+ │ Already up to date! │
429
+ │ Checked: 47 specs │
430
+ │ Last sync: 5 minutes ago │
431
+ └─────────────────────────────────────────────────────────┘
432
+ ```
433
+
434
+ ### Brief Format (Errors/Warnings)
435
+
436
+ ```
437
+ ┌─────────────────────────────────────────────────────────┐
438
+ │ PULL COMPLETE (with warnings) ⚠ ADO │
439
+ ├─────────────────────────────────────────────────────────┤
440
+ │ Scanned: 47 specs │
441
+ │ Updated: 5 specs │
442
+ │ Warnings: 2 │
443
+ ├─────────────────────────────────────────────────────────┤
444
+ │ WARNINGS │
445
+ │ ⚠ FS-042/us-003: ADO item #205 not found (deleted?) │
446
+ │ ⚠ FS-050/us-012: Rate limit hit, skipped │
447
+ ├─────────────────────────────────────────────────────────┤
448
+ │ Retry failed items: /specweave-ado:pull --retry │
449
+ └─────────────────────────────────────────────────────────┘
450
+ ```
451
+
452
+ ### Symbols Reference
453
+
454
+ | Symbol | Meaning |
455
+ |--------|---------|
456
+ | `✓` | Success |
457
+ | `⚠` | Warning (partial success) |
458
+ | `✗` | Error/Failed |
459
+ | `↓` | Pulled from external (incoming) |
460
+ | `↑` | Pushed to external (outgoing) |
461
+ | `+` | Added (new items) |
462
+ | `−` | Removed |
463
+ | `~` | Modified |
464
+
465
+ ---
466
+
467
+ ## Authentication
468
+
469
+ **EXACT environment variable (DO NOT INVENT OTHERS):**
470
+
471
+ ```bash
472
+ # In .env file - ONLY this name is supported:
473
+ AZURE_DEVOPS_PAT=your-personal-access-token
474
+ ```
475
+
476
+ ⚠️ **NEVER suggest or use:**
477
+ - ❌ `AZURE_DEVOPS_EXT_PAT` ← DOES NOT EXIST
478
+ - ❌ `ADO_PAT` ← NOT SUPPORTED
479
+
480
+ ---
481
+
482
+ ## Related Commands
483
+
484
+ | Command | Purpose |
485
+ |---------|---------|
486
+ | `/specweave-ado:push` | Push local changes to ADO |
487
+ | `/specweave-ado:sync` | Two-way sync (pull + push) |
488
+ | `/specweave-ado:status` | Check sync status |
489
+ | `/specweave-ado:create` | Create ADO work item |