specweave 0.30.12 → 0.30.14

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