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.
- package/.claude-plugin/marketplace.json +0 -11
- package/CLAUDE.md +1 -1
- package/bin/fix-marketplace-errors.sh +1 -1
- package/dist/src/cli/commands/init.d.ts.map +1 -1
- package/dist/src/cli/commands/init.js +13 -0
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/helpers/ado-area-selector.d.ts.map +1 -1
- package/dist/src/cli/helpers/ado-area-selector.js +13 -0
- package/dist/src/cli/helpers/ado-area-selector.js.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/index.d.ts.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/index.js +7 -2
- package/dist/src/cli/helpers/issue-tracker/index.js.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/sync-config-writer.d.ts +7 -0
- package/dist/src/cli/helpers/issue-tracker/sync-config-writer.d.ts.map +1 -1
- package/dist/src/cli/helpers/issue-tracker/sync-config-writer.js +33 -2
- package/dist/src/cli/helpers/issue-tracker/sync-config-writer.js.map +1 -1
- package/dist/src/cli/workers/clone-worker.js +19 -3
- package/dist/src/cli/workers/clone-worker.js.map +1 -1
- package/dist/src/core/living-docs/board-matcher.d.ts +120 -0
- package/dist/src/core/living-docs/board-matcher.d.ts.map +1 -0
- package/dist/src/core/living-docs/board-matcher.js +466 -0
- package/dist/src/core/living-docs/board-matcher.js.map +1 -0
- package/dist/src/core/living-docs/foundation-builder.js +1 -1
- package/dist/src/core/living-docs/foundation-builder.js.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.d.ts +19 -8
- package/dist/src/core/living-docs/living-docs-sync.d.ts.map +1 -1
- package/dist/src/core/living-docs/living-docs-sync.js +148 -52
- package/dist/src/core/living-docs/living-docs-sync.js.map +1 -1
- package/dist/src/core/living-docs/suggestions-generator.js +1 -1
- package/dist/src/core/living-docs/suggestions-generator.js.map +1 -1
- package/dist/src/core/living-docs/umbrella-detector.d.ts +4 -0
- package/dist/src/core/living-docs/umbrella-detector.d.ts.map +1 -1
- package/dist/src/core/living-docs/umbrella-detector.js +20 -1
- package/dist/src/core/living-docs/umbrella-detector.js.map +1 -1
- package/dist/src/core/living-docs/workitem-matcher.js +5 -5
- package/dist/src/core/living-docs/workitem-matcher.js.map +1 -1
- package/dist/src/importers/item-converter.d.ts +4 -0
- package/dist/src/importers/item-converter.d.ts.map +1 -1
- package/dist/src/importers/item-converter.js +4 -0
- package/dist/src/importers/item-converter.js.map +1 -1
- package/dist/src/init/repo/types.d.ts +1 -1
- package/dist/src/living-docs/enterprise-analyzer.d.ts.map +1 -1
- package/dist/src/living-docs/enterprise-analyzer.js +70 -19
- package/dist/src/living-docs/enterprise-analyzer.js.map +1 -1
- package/dist/src/living-docs/epic-id-allocator.d.ts +4 -0
- package/dist/src/living-docs/epic-id-allocator.d.ts.map +1 -1
- package/dist/src/living-docs/epic-id-allocator.js +4 -0
- package/dist/src/living-docs/epic-id-allocator.js.map +1 -1
- package/dist/src/living-docs/fs-id-allocator.d.ts +4 -0
- package/dist/src/living-docs/fs-id-allocator.d.ts.map +1 -1
- package/dist/src/living-docs/fs-id-allocator.js +4 -0
- package/dist/src/living-docs/fs-id-allocator.js.map +1 -1
- package/dist/src/living-docs/smart-doc-organizer.d.ts +114 -0
- package/dist/src/living-docs/smart-doc-organizer.d.ts.map +1 -0
- package/dist/src/living-docs/smart-doc-organizer.js +535 -0
- package/dist/src/living-docs/smart-doc-organizer.js.map +1 -0
- package/package.json +13 -13
- package/plugins/PLUGINS-INDEX.md +2 -3
- package/plugins/specweave/commands/specweave-judge.md +265 -0
- package/plugins/specweave/commands/specweave-organize-docs.md +185 -0
- package/plugins/specweave/hooks/hooks.json +3 -3
- package/plugins/specweave/hooks/universal/hook-wrapper.cmd +26 -0
- package/plugins/specweave/hooks/universal/hook-wrapper.sh +67 -0
- package/plugins/specweave-ado/commands/{specweave-ado-close-workitem.md → close.md} +9 -5
- package/plugins/specweave-ado/commands/{specweave-ado-create-workitem.md → create.md} +9 -5
- package/plugins/specweave-ado/commands/pull.md +459 -0
- package/plugins/specweave-ado/commands/push.md +361 -0
- package/plugins/specweave-ado/commands/{specweave-ado-status.md → status.md} +12 -0
- package/plugins/specweave-ado/commands/{specweave-ado-sync.md → sync.md} +64 -3
- package/plugins/specweave-ado/hooks/README.md +1 -1
- package/plugins/specweave-docs/commands/build.md +158 -0
- package/plugins/specweave-docs/commands/{docs-generate.md → generate.md} +10 -5
- package/plugins/specweave-docs/commands/health.md +268 -0
- package/plugins/specweave-docs/commands/{docs-init.md → init.md} +11 -6
- package/plugins/specweave-docs/commands/organize.md +184 -0
- package/plugins/specweave-docs/commands/preview.md +138 -0
- package/plugins/specweave-docs/skills/preview/SKILL.md +105 -0
- package/plugins/specweave-github/agents/user-story-updater/AGENT.md +1 -1
- package/plugins/specweave-github/commands/{specweave-github-close-issue.md → close.md} +2 -2
- package/plugins/specweave-github/commands/{specweave-github-create-issue.md → create.md} +2 -2
- package/plugins/specweave-github/commands/pull.md +142 -0
- package/plugins/specweave-github/commands/push.md +154 -0
- package/plugins/specweave-github/commands/{specweave-github-sync.md → sync.md} +19 -5
- package/plugins/specweave-github/commands/{specweave-github-update-user-story.md → update-user-story.md} +1 -1
- package/plugins/specweave-github/hooks/README.md +1 -1
- package/plugins/specweave-jira/commands/pull.md +164 -0
- package/plugins/specweave-jira/commands/push.md +170 -0
- package/plugins/specweave-jira/commands/{specweave-jira-sync.md → sync.md} +18 -3
- package/plugins/specweave-jira/hooks/README.md +1 -1
- package/plugins/specweave-kafka/README.md +20 -0
- package/plugins/specweave-kafka/benchmarks/kafka-throughput.benchmark.ts +551 -0
- package/plugins/specweave-kafka/examples/README.md +191 -0
- package/plugins/specweave-kafka/examples/avro-schema-registry/.env.example +8 -0
- package/plugins/specweave-kafka/examples/avro-schema-registry/README.md +69 -0
- package/plugins/specweave-kafka/examples/avro-schema-registry/consumer.js +37 -0
- package/plugins/specweave-kafka/examples/avro-schema-registry/package.json +14 -0
- package/plugins/specweave-kafka/examples/avro-schema-registry/producer.js +57 -0
- package/plugins/specweave-kafka/examples/exactly-once-semantics/.env.example +5 -0
- package/plugins/specweave-kafka/examples/exactly-once-semantics/README.md +30 -0
- package/plugins/specweave-kafka/examples/exactly-once-semantics/eos-pipeline.js +79 -0
- package/plugins/specweave-kafka/examples/exactly-once-semantics/package.json +11 -0
- package/plugins/specweave-kafka/examples/kafka-streams-app/.env.example +4 -0
- package/plugins/specweave-kafka/examples/kafka-streams-app/README.md +30 -0
- package/plugins/specweave-kafka/examples/kafka-streams-app/package.json +11 -0
- package/plugins/specweave-kafka/examples/kafka-streams-app/windowed-aggregation.js +66 -0
- package/plugins/specweave-kafka/examples/n8n-workflow/README.md +54 -0
- package/plugins/specweave-kafka/examples/n8n-workflow/docker-compose.yml +19 -0
- package/plugins/specweave-kafka/examples/n8n-workflow/kafka-to-slack.json +50 -0
- package/plugins/specweave-kafka/examples/simple-producer-consumer/.env.example +15 -0
- package/plugins/specweave-kafka/examples/simple-producer-consumer/README.md +183 -0
- package/plugins/specweave-kafka/examples/simple-producer-consumer/consumer.js +60 -0
- package/plugins/specweave-kafka/examples/simple-producer-consumer/docker-compose.yml +30 -0
- package/plugins/specweave-kafka/examples/simple-producer-consumer/package.json +18 -0
- package/plugins/specweave-kafka/examples/simple-producer-consumer/producer.js +52 -0
- package/plugins/specweave-release/commands/specweave-release-npm.md +26 -239
- package/plugins/specweave-docs-preview/.claude-plugin/plugin.json +0 -21
- package/plugins/specweave-docs-preview/commands/build.md +0 -489
- package/plugins/specweave-docs-preview/commands/preview.md +0 -355
- package/plugins/specweave-docs-preview/skills/docs-preview/SKILL.md +0 -386
- /package/plugins/specweave-ado/commands/{specweave-ado-clone-repos.md → clone.md} +0 -0
- /package/plugins/specweave-ado/commands/{specweave-ado-import-areas.md → import-areas.md} +0 -0
- /package/plugins/specweave-ado/commands/{specweave-ado-import-projects.md → import-projects.md} +0 -0
- /package/plugins/specweave-github/commands/{specweave-github-cleanup-duplicates.md → cleanup-duplicates.md} +0 -0
- /package/plugins/specweave-github/commands/{specweave-github-reconcile.md → reconcile.md} +0 -0
- /package/plugins/specweave-github/commands/{specweave-github-status.md → status.md} +0 -0
- /package/plugins/specweave-jira/commands/{specweave-jira-import-boards.md → import-boards.md} +0 -0
- /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
|
|
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
|
|
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
|
-
|
|
236
|
-
|
|
237
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
176
|
-
|
|
177
|
-
|
|
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 |
|