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
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specweave-ado:push
|
|
3
|
+
description: Push local changes to Azure DevOps (like git push). Supports increment, project, or full living docs sync.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# ADO Push Command
|
|
7
|
+
|
|
8
|
+
**Usage**: `/specweave-ado:push [target] [options]`
|
|
9
|
+
|
|
10
|
+
**Purpose**: Push local changes to Azure DevOps (like `git push`)
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Quick Start
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# Push current/active increment (simple mode)
|
|
18
|
+
/specweave-ado:push
|
|
19
|
+
|
|
20
|
+
# Push specific increment
|
|
21
|
+
/specweave-ado:push 0005
|
|
22
|
+
|
|
23
|
+
# Push ALL local changes to ADO (living docs sync)
|
|
24
|
+
/specweave-ado:push --all
|
|
25
|
+
|
|
26
|
+
# Push specific project/board
|
|
27
|
+
/specweave-ado:push --project clinical-insights
|
|
28
|
+
|
|
29
|
+
# Push specific feature hierarchy
|
|
30
|
+
/specweave-ado:push --feature FS-042
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Sync Modes
|
|
36
|
+
|
|
37
|
+
### Mode 1: Increment Sync (Default)
|
|
38
|
+
Pushes task progress from ONE increment to its linked work item.
|
|
39
|
+
|
|
40
|
+
### Mode 2: Living Docs Sync (--all)
|
|
41
|
+
Pushes ALL local spec changes to corresponding ADO items:
|
|
42
|
+
- Scans `.specweave/docs/internal/specs/` for modified specs
|
|
43
|
+
- Updates status, progress, comments on linked ADO items
|
|
44
|
+
- Respects multi-project folder structure
|
|
45
|
+
|
|
46
|
+
### Mode 3: Project-Scoped Sync (--project)
|
|
47
|
+
Pushes changes only within a specific project folder.
|
|
48
|
+
|
|
49
|
+
### Mode 4: Feature Hierarchy Sync (--feature)
|
|
50
|
+
Pushes a feature and all its child user stories.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## What Gets Pushed
|
|
55
|
+
|
|
56
|
+
| Field | Source |
|
|
57
|
+
|-------|--------|
|
|
58
|
+
| **Progress** | Calculated from tasks.md (X/Y tasks, Z%) |
|
|
59
|
+
| **Comment** | Auto-generated with completed tasks list |
|
|
60
|
+
| **Completion %** | Updated on work item custom field |
|
|
61
|
+
| **State** | Updated if threshold crossed (e.g., 100% -> Resolved) |
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## Command Behavior
|
|
66
|
+
|
|
67
|
+
When user runs this command:
|
|
68
|
+
|
|
69
|
+
### 1. Check Permission Gate (MANDATORY)
|
|
70
|
+
|
|
71
|
+
```typescript
|
|
72
|
+
const config = JSON.parse(await fs.readFile('.specweave/config.json', 'utf-8'));
|
|
73
|
+
const canUpdateExternal = config?.sync?.settings?.canUpdateExternalItems ?? false;
|
|
74
|
+
|
|
75
|
+
if (!canUpdateExternal) {
|
|
76
|
+
console.log(`
|
|
77
|
+
Permission Denied: ADO writes disabled
|
|
78
|
+
|
|
79
|
+
Current: sync.settings.canUpdateExternalItems = false
|
|
80
|
+
|
|
81
|
+
To enable writes, update .specweave/config.json:
|
|
82
|
+
"sync": { "settings": { "canUpdateExternalItems": true } }
|
|
83
|
+
|
|
84
|
+
Or use read-only mode:
|
|
85
|
+
/specweave-ado:pull ${incrementId}
|
|
86
|
+
`);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### 2. Resolve Increment & Profile
|
|
92
|
+
|
|
93
|
+
```typescript
|
|
94
|
+
const incrementId = args.incrementId || await findActiveIncrement();
|
|
95
|
+
|
|
96
|
+
const metadata = JSON.parse(await fs.readFile(
|
|
97
|
+
`.specweave/increments/${incrementId}/metadata.json`, 'utf-8'
|
|
98
|
+
));
|
|
99
|
+
|
|
100
|
+
const adoWorkItemId = metadata?.external_sync?.ado?.workItemId;
|
|
101
|
+
if (!adoWorkItemId) {
|
|
102
|
+
console.log(`Not linked to ADO. Run: /specweave-ado:create ${incrementId}`);
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
const profileName = metadata?.external_sync?.ado?.profile
|
|
107
|
+
|| config?.sync?.defaultProfile;
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### 3. Calculate Progress
|
|
111
|
+
|
|
112
|
+
```typescript
|
|
113
|
+
const tasksContent = await fs.readFile(
|
|
114
|
+
`.specweave/increments/${incrementId}/tasks.md`, 'utf-8'
|
|
115
|
+
);
|
|
116
|
+
|
|
117
|
+
const totalTasks = (tasksContent.match(/### T-\d+/g) || []).length;
|
|
118
|
+
const completedTasks = (tasksContent.match(/\[x\] completed/gi) || []).length;
|
|
119
|
+
const percentage = Math.round((completedTasks / totalTasks) * 100);
|
|
120
|
+
|
|
121
|
+
// Find recently completed tasks (for comment)
|
|
122
|
+
const recentlyCompleted = parseRecentlyCompletedTasks(tasksContent);
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
### 4. Invoke Push Sync
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
Use Task tool with subagent_type: "specweave-ado:ado-manager:ado-manager"
|
|
129
|
+
|
|
130
|
+
Prompt: "Push progress to ADO for increment {increment-id}.
|
|
131
|
+
|
|
132
|
+
DIRECTION: to-ado
|
|
133
|
+
PERMISSION: canUpdateExternalItems = true (verified)
|
|
134
|
+
|
|
135
|
+
Profile: {profileName}
|
|
136
|
+
Work Item: #{workItemId}
|
|
137
|
+
|
|
138
|
+
Progress: {completedTasks}/{totalTasks} ({percentage}%)
|
|
139
|
+
Recently completed: {recentlyCompleted}
|
|
140
|
+
|
|
141
|
+
Steps:
|
|
142
|
+
1. Format progress comment with task list
|
|
143
|
+
2. POST comment to ADO work item
|
|
144
|
+
3. PATCH work item completion field
|
|
145
|
+
4. Update state if threshold crossed:
|
|
146
|
+
- 100% completed -> Resolved (if canUpdateStatus)
|
|
147
|
+
5. Update sync timestamp in metadata
|
|
148
|
+
6. Display push summary"
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### 5. Display Result
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
Pushed to ADO
|
|
155
|
+
|
|
156
|
+
Work Item: #12345
|
|
157
|
+
Profile: ado-my-project
|
|
158
|
+
|
|
159
|
+
Progress: 6/10 tasks (60%)
|
|
160
|
+
|
|
161
|
+
Comment posted:
|
|
162
|
+
"Progress Update: 60% complete
|
|
163
|
+
|
|
164
|
+
Recently completed:
|
|
165
|
+
- T-005: Add payment validation
|
|
166
|
+
- T-006: Implement refund flow"
|
|
167
|
+
|
|
168
|
+
Fields updated:
|
|
169
|
+
Completion: 60%
|
|
170
|
+
|
|
171
|
+
URL: https://dev.azure.com/org/project/_workitems/edit/12345
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
---
|
|
175
|
+
|
|
176
|
+
## Permission Requirements
|
|
177
|
+
|
|
178
|
+
| Permission | Required | Purpose |
|
|
179
|
+
|------------|----------|---------|
|
|
180
|
+
| `canUpdateExternalItems` | **true** | Write to ADO |
|
|
181
|
+
| `canUpdateStatus` | optional | Change work item state |
|
|
182
|
+
|
|
183
|
+
If `canUpdateStatus` is false, progress is posted but state unchanged.
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## Examples
|
|
188
|
+
|
|
189
|
+
### Example 1: Simple Push
|
|
190
|
+
|
|
191
|
+
```
|
|
192
|
+
User: /specweave-ado:push
|
|
193
|
+
|
|
194
|
+
Claude:
|
|
195
|
+
Checking permissions...
|
|
196
|
+
canUpdateExternalItems: true
|
|
197
|
+
|
|
198
|
+
Pushing to ADO...
|
|
199
|
+
Increment: 0005-payment-integration
|
|
200
|
+
Work Item: #12345
|
|
201
|
+
|
|
202
|
+
Pushed to ADO
|
|
203
|
+
|
|
204
|
+
Progress: 8/10 tasks (80%)
|
|
205
|
+
Comment posted with 2 recently completed tasks
|
|
206
|
+
|
|
207
|
+
Push complete!
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### Example 2: Permission Denied
|
|
211
|
+
|
|
212
|
+
```
|
|
213
|
+
User: /specweave-ado:push 0005
|
|
214
|
+
|
|
215
|
+
Claude:
|
|
216
|
+
Checking permissions...
|
|
217
|
+
canUpdateExternalItems: false
|
|
218
|
+
|
|
219
|
+
Permission Denied
|
|
220
|
+
|
|
221
|
+
To enable ADO writes:
|
|
222
|
+
1. Edit .specweave/config.json
|
|
223
|
+
2. Set sync.settings.canUpdateExternalItems = true
|
|
224
|
+
|
|
225
|
+
Or use read-only: /specweave-ado:pull 0005
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
### Example 3: 100% Complete
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
User: /specweave-ado:push 0005
|
|
232
|
+
|
|
233
|
+
Claude:
|
|
234
|
+
Pushing to ADO...
|
|
235
|
+
|
|
236
|
+
Progress: 10/10 tasks (100%)
|
|
237
|
+
|
|
238
|
+
Comment posted:
|
|
239
|
+
"Progress Update: 100% complete - All tasks done!"
|
|
240
|
+
|
|
241
|
+
State updated:
|
|
242
|
+
Active -> Resolved (canUpdateStatus = true)
|
|
243
|
+
|
|
244
|
+
Ready to close: /specweave-ado:close 0005
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
|
|
249
|
+
## Sync Brief (MANDATORY OUTPUT)
|
|
250
|
+
|
|
251
|
+
**After EVERY push operation, display a compact summary:**
|
|
252
|
+
|
|
253
|
+
### Brief Format (Single Increment)
|
|
254
|
+
|
|
255
|
+
```
|
|
256
|
+
┌─────────────────────────────────────────────────────────┐
|
|
257
|
+
│ PUSH COMPLETE ✓ ADO │
|
|
258
|
+
├─────────────────────────────────────────────────────────┤
|
|
259
|
+
│ Increment: 0005-payment-integration │
|
|
260
|
+
│ Work Item: #12345 │
|
|
261
|
+
│ Profile: ado-techcorp │
|
|
262
|
+
├─────────────────────────────────────────────────────────┤
|
|
263
|
+
│ PROGRESS │
|
|
264
|
+
│ Tasks: 8/10 (80%) ████████░░ │
|
|
265
|
+
│ ↑ Comment posted: "Progress: 80% complete" │
|
|
266
|
+
│ ↑ Completion field: 60% → 80% │
|
|
267
|
+
├─────────────────────────────────────────────────────────┤
|
|
268
|
+
│ RECENTLY COMPLETED │
|
|
269
|
+
│ ✓ T-007: Add payment validation │
|
|
270
|
+
│ ✓ T-008: Implement refund flow │
|
|
271
|
+
├─────────────────────────────────────────────────────────┤
|
|
272
|
+
│ Last sync: 2025-12-04 10:32:15 (just now) │
|
|
273
|
+
│ URL: https://dev.azure.com/.../12345 │
|
|
274
|
+
└─────────────────────────────────────────────────────────┘
|
|
275
|
+
```
|
|
276
|
+
|
|
277
|
+
### Brief Format (Multi-Project --all)
|
|
278
|
+
|
|
279
|
+
```
|
|
280
|
+
┌─────────────────────────────────────────────────────────┐
|
|
281
|
+
│ PUSH COMPLETE ✓ ADO │
|
|
282
|
+
├─────────────────────────────────────────────────────────┤
|
|
283
|
+
│ Pushed: 12 specs across 3 projects │
|
|
284
|
+
│ Comments posted: 12 │
|
|
285
|
+
│ Status transitions: 3 │
|
|
286
|
+
│ Duration: 5.1s │
|
|
287
|
+
├─────────────────────────────────────────────────────────┤
|
|
288
|
+
│ BY PROJECT │
|
|
289
|
+
│ techcorp/clinical-insights/ 5 pushed │
|
|
290
|
+
│ techcorp/ai-platform/ 4 pushed │
|
|
291
|
+
│ infrastructure/core/ 3 pushed │
|
|
292
|
+
├─────────────────────────────────────────────────────────┤
|
|
293
|
+
│ CHANGES PUSHED │
|
|
294
|
+
│ ↑ Progress comments: 12 │
|
|
295
|
+
│ ↑ Completion updates: 8 │
|
|
296
|
+
│ ↑ Status transitions: 3 │
|
|
297
|
+
│ • FS-042/us-001: Active → Resolved (100%) │
|
|
298
|
+
│ • FS-043/us-005: Active → Resolved (100%) │
|
|
299
|
+
│ • FS-050/us-010: New → Active (started) │
|
|
300
|
+
└─────────────────────────────────────────────────────────┘
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
### Brief Format (100% Complete - Ready to Close)
|
|
304
|
+
|
|
305
|
+
```
|
|
306
|
+
┌─────────────────────────────────────────────────────────┐
|
|
307
|
+
│ PUSH COMPLETE ✓ ADO │
|
|
308
|
+
├─────────────────────────────────────────────────────────┤
|
|
309
|
+
│ Increment: 0005-payment-integration │
|
|
310
|
+
│ Work Item: #12345 │
|
|
311
|
+
├─────────────────────────────────────────────────────────┤
|
|
312
|
+
│ PROGRESS │
|
|
313
|
+
│ Tasks: 10/10 (100%) ██████████ COMPLETE! │
|
|
314
|
+
│ ↑ Comment: "All tasks complete!" │
|
|
315
|
+
│ ↑ Status: Active → Resolved │
|
|
316
|
+
├─────────────────────────────────────────────────────────┤
|
|
317
|
+
│ 🎉 INCREMENT READY TO CLOSE │
|
|
318
|
+
│ Run: /specweave-ado:close 0005 │
|
|
319
|
+
└─────────────────────────────────────────────────────────┘
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
### Brief Format (Permission Denied)
|
|
323
|
+
|
|
324
|
+
```
|
|
325
|
+
┌─────────────────────────────────────────────────────────┐
|
|
326
|
+
│ PUSH BLOCKED ✗ ADO │
|
|
327
|
+
├─────────────────────────────────────────────────────────┤
|
|
328
|
+
│ Permission: canUpdateExternalItems = false │
|
|
329
|
+
├─────────────────────────────────────────────────────────┤
|
|
330
|
+
│ TO ENABLE: │
|
|
331
|
+
│ Edit .specweave/config.json: │
|
|
332
|
+
│ sync.settings.canUpdateExternalItems = true │
|
|
333
|
+
│ │
|
|
334
|
+
│ OR USE READ-ONLY: │
|
|
335
|
+
│ /specweave-ado:pull 0005 │
|
|
336
|
+
└─────────────────────────────────────────────────────────┘
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
### Symbols Reference
|
|
340
|
+
|
|
341
|
+
| Symbol | Meaning |
|
|
342
|
+
|--------|---------|
|
|
343
|
+
| `✓` | Success |
|
|
344
|
+
| `⚠` | Warning (partial success) |
|
|
345
|
+
| `✗` | Error/Failed |
|
|
346
|
+
| `↓` | Pulled from external (incoming) |
|
|
347
|
+
| `↑` | Pushed to external (outgoing) |
|
|
348
|
+
| `+` | Added (new items) |
|
|
349
|
+
| `−` | Removed |
|
|
350
|
+
| `~` | Modified |
|
|
351
|
+
|
|
352
|
+
---
|
|
353
|
+
|
|
354
|
+
## Related Commands
|
|
355
|
+
|
|
356
|
+
| Command | Purpose |
|
|
357
|
+
|---------|---------|
|
|
358
|
+
| `/specweave-ado:pull` | Pull changes from ADO |
|
|
359
|
+
| `/specweave-ado:sync` | Two-way sync (pull + push) |
|
|
360
|
+
| `/specweave-ado:status` | Check sync status |
|
|
361
|
+
| `/specweave-ado:close` | Close completed work item |
|
|
@@ -51,3 +51,15 @@ Sync Enabled: ✅
|
|
|
51
51
|
|
|
52
52
|
Next Sync: Automatic on task completion
|
|
53
53
|
```
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
## Related
|
|
58
|
+
|
|
59
|
+
| Command | Purpose |
|
|
60
|
+
|---------|---------|
|
|
61
|
+
| `/specweave-ado:pull` | Pull changes from ADO |
|
|
62
|
+
| `/specweave-ado:push` | Push progress to ADO |
|
|
63
|
+
| `/specweave-ado:sync` | Two-way sync |
|
|
64
|
+
| `/specweave-ado:create` | Create ADO work item |
|
|
65
|
+
| `/specweave-ado:close` | Close work item |
|
|
@@ -234,8 +234,69 @@ Options:
|
|
|
234
234
|
|
|
235
235
|
---
|
|
236
236
|
|
|
237
|
+
## Simpler Alternatives
|
|
238
|
+
|
|
239
|
+
For most use cases, use the git-style commands:
|
|
240
|
+
|
|
241
|
+
| Command | Purpose |
|
|
242
|
+
|---------|---------|
|
|
243
|
+
| `/specweave-ado:pull` | Pull changes from ADO (read-only) |
|
|
244
|
+
| `/specweave-ado:push` | Push progress to ADO |
|
|
245
|
+
|
|
246
|
+
Use `/specweave-ado:sync` when you need explicit two-way sync with options.
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## Sync Brief (MANDATORY OUTPUT)
|
|
251
|
+
|
|
252
|
+
**After EVERY sync operation, display a compact two-way summary:**
|
|
253
|
+
|
|
254
|
+
```
|
|
255
|
+
┌─────────────────────────────────────────────────────────┐
|
|
256
|
+
│ SYNC COMPLETE ✓ ADO │
|
|
257
|
+
├─────────────────────────────────────────────────────────┤
|
|
258
|
+
│ Increment: 0005-payment-integration │
|
|
259
|
+
│ Work Item: #12345 │
|
|
260
|
+
│ Profile: ado-techcorp │
|
|
261
|
+
│ Direction: two-way (pull + push) │
|
|
262
|
+
├─────────────────────────────────────────────────────────┤
|
|
263
|
+
│ PULLED (from ADO) ↓ │
|
|
264
|
+
│ ↓ Status: Active → Resolved (external wins) │
|
|
265
|
+
│ ↓ Priority: P2 → P1 │
|
|
266
|
+
│ + Comments: 2 new imported │
|
|
267
|
+
├─────────────────────────────────────────────────────────┤
|
|
268
|
+
│ PUSHED (to ADO) ↑ │
|
|
269
|
+
│ Tasks: 8/10 (80%) ████████░░ │
|
|
270
|
+
│ ↑ Comment posted: "Progress: 80% complete" │
|
|
271
|
+
│ ↑ Completion: 60% → 80% │
|
|
272
|
+
├─────────────────────────────────────────────────────────┤
|
|
273
|
+
│ CONFLICTS RESOLVED: 1 │
|
|
274
|
+
│ Status: local "in-progress" vs ADO "Resolved" │
|
|
275
|
+
│ Winner: ADO (external tool always wins) │
|
|
276
|
+
├─────────────────────────────────────────────────────────┤
|
|
277
|
+
│ Last sync: 2025-12-04 10:32:15 (just now) │
|
|
278
|
+
│ URL: https://dev.azure.com/.../12345 │
|
|
279
|
+
└─────────────────────────────────────────────────────────┘
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
### Symbols Reference
|
|
283
|
+
|
|
284
|
+
| Symbol | Meaning |
|
|
285
|
+
|--------|---------|
|
|
286
|
+
| `✓` | Success |
|
|
287
|
+
| `⚠` | Warning |
|
|
288
|
+
| `✗` | Failed |
|
|
289
|
+
| `↓` | Pulled (incoming) |
|
|
290
|
+
| `↑` | Pushed (outgoing) |
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
237
294
|
## Related
|
|
238
295
|
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
296
|
+
| Command | Purpose |
|
|
297
|
+
|---------|---------|
|
|
298
|
+
| `/specweave-ado:pull` | Pull from ADO (git-style) |
|
|
299
|
+
| `/specweave-ado:push` | Push to ADO (git-style) |
|
|
300
|
+
| `/specweave-ado:create` | Create new ADO work item |
|
|
301
|
+
| `/specweave-ado:status` | Check sync status |
|
|
302
|
+
| `/specweave-ado:close` | Close work item when complete |
|
|
@@ -193,7 +193,7 @@ Core hook (330 lines) ADO plugin hook (150 lines)
|
|
|
193
193
|
|
|
194
194
|
- **Core Plugin Hooks**: `plugins/specweave/hooks/README.md`
|
|
195
195
|
- **Architecture Analysis**: `.specweave/increments/0018-strict-increment-discipline-enforcement/reports/HOOKS-ARCHITECTURE-ANALYSIS.md`
|
|
196
|
-
- **ADO Sync Command**: `plugins/specweave-ado/commands/
|
|
196
|
+
- **ADO Sync Command**: `plugins/specweave-ado/commands/sync.md`
|
|
197
197
|
|
|
198
198
|
---
|
|
199
199
|
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specweave-docs:build
|
|
3
|
+
description: Build static documentation site for deployment. Supports both public and internal docs. Outputs production-ready HTML/CSS/JS.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Documentation Build Command
|
|
7
|
+
|
|
8
|
+
Build production-ready static documentation site for deployment to any static host.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# Build INTERNAL docs (SpecWeave living documentation) - DEFAULT
|
|
14
|
+
/specweave-docs:build
|
|
15
|
+
|
|
16
|
+
# Build PUBLIC docs (end-user documentation)
|
|
17
|
+
/specweave-docs:build --public
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Two Build Targets
|
|
21
|
+
|
|
22
|
+
| Site | Output Directory | NPM Script |
|
|
23
|
+
|------|------------------|------------|
|
|
24
|
+
| **Internal** | `docs-site/build-internal/` | `docs:internal:build` |
|
|
25
|
+
| **Public** | `docs-site/build/` | `docs:build` |
|
|
26
|
+
|
|
27
|
+
## Your Task
|
|
28
|
+
|
|
29
|
+
Execute the appropriate npm script based on user flags:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
# Check if user wants public docs
|
|
33
|
+
PUBLIC_FLAG="${1:-}"
|
|
34
|
+
|
|
35
|
+
cd /path/to/project
|
|
36
|
+
|
|
37
|
+
if [ "$PUBLIC_FLAG" = "--public" ]; then
|
|
38
|
+
echo "Building PUBLIC documentation..."
|
|
39
|
+
echo "Output: docs-site/build/"
|
|
40
|
+
echo ""
|
|
41
|
+
npm run docs:build
|
|
42
|
+
echo ""
|
|
43
|
+
echo "Build complete! Output: docs-site/build/"
|
|
44
|
+
else
|
|
45
|
+
echo "Building INTERNAL documentation..."
|
|
46
|
+
echo "Output: docs-site/build-internal/"
|
|
47
|
+
echo ""
|
|
48
|
+
npm run docs:internal:build
|
|
49
|
+
echo ""
|
|
50
|
+
echo "Build complete! Output: docs-site/build-internal/"
|
|
51
|
+
fi
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## Output Structure
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
docs-site/build-internal/
|
|
58
|
+
├── index.html <- Landing page
|
|
59
|
+
├── strategy/
|
|
60
|
+
├── specs/
|
|
61
|
+
├── architecture/
|
|
62
|
+
│ └── adr/
|
|
63
|
+
├── delivery/
|
|
64
|
+
├── operations/
|
|
65
|
+
├── governance/
|
|
66
|
+
├── assets/
|
|
67
|
+
│ ├── css/styles.[hash].css
|
|
68
|
+
│ └── js/runtime.[hash].js
|
|
69
|
+
└── sitemap.xml
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Deployment Options
|
|
73
|
+
|
|
74
|
+
### 1. Preview Locally
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# Internal docs
|
|
78
|
+
cd docs-site && npm run serve:internal
|
|
79
|
+
|
|
80
|
+
# Public docs
|
|
81
|
+
cd docs-site && npm run serve
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
### 2. Netlify
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
cd docs-site
|
|
88
|
+
npx netlify deploy --dir=build-internal --prod
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### 3. Vercel
|
|
92
|
+
|
|
93
|
+
```bash
|
|
94
|
+
cd docs-site
|
|
95
|
+
npx vercel --prod
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
### 4. GitHub Pages
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
# Copy build to docs folder (GitHub Pages expects /docs)
|
|
102
|
+
cp -r docs-site/build-internal/* docs/
|
|
103
|
+
git add docs/
|
|
104
|
+
git commit -m "docs: update documentation site"
|
|
105
|
+
git push
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
### 5. Static Server
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
npx serve docs-site/build-internal/
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Build vs Preview
|
|
115
|
+
|
|
116
|
+
| Aspect | Preview | Build |
|
|
117
|
+
|--------|---------|-------|
|
|
118
|
+
| **Purpose** | Development | Production |
|
|
119
|
+
| **Speed** | Instant | 10-30 seconds |
|
|
120
|
+
| **Output** | Dev server | Static files |
|
|
121
|
+
| **Hot Reload** | Yes | No |
|
|
122
|
+
| **Optimization** | No | Yes (minified) |
|
|
123
|
+
| **Use Case** | Writing docs | Deployment |
|
|
124
|
+
|
|
125
|
+
## First-Time Setup
|
|
126
|
+
|
|
127
|
+
If dependencies not installed:
|
|
128
|
+
|
|
129
|
+
```bash
|
|
130
|
+
npm run docs:install
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## Troubleshooting
|
|
134
|
+
|
|
135
|
+
### Build fails with broken links
|
|
136
|
+
```bash
|
|
137
|
+
# Preview first to find errors
|
|
138
|
+
npm run docs:internal
|
|
139
|
+
# Fix broken links, then build
|
|
140
|
+
npm run docs:internal:build
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Out of memory
|
|
144
|
+
```bash
|
|
145
|
+
# Increase Node memory
|
|
146
|
+
NODE_OPTIONS="--max-old-space-size=4096" npm run docs:internal:build
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
### Cache issues
|
|
150
|
+
```bash
|
|
151
|
+
cd docs-site && npm run clear && npm run build:internal
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## See Also
|
|
155
|
+
|
|
156
|
+
- `/specweave-docs:preview` - Preview docs locally with hot reload
|
|
157
|
+
- `/specweave-docs:organize` - Organize large folders with themed indexes
|
|
158
|
+
- `/specweave-docs:health` - Documentation health report
|
|
@@ -1,11 +1,16 @@
|
|
|
1
|
-
|
|
1
|
+
---
|
|
2
|
+
name: specweave-docs:generate
|
|
3
|
+
description: Generate documentation from TypeScript/JavaScript code, OpenAPI specs, GraphQL schemas, and SpecWeave specifications.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Generate Documentation from Code
|
|
2
7
|
|
|
3
8
|
Generate documentation automatically from TypeScript/JavaScript code, OpenAPI specs, GraphQL schemas, and SpecWeave specifications. Creates comprehensive API docs, type references, and usage examples.
|
|
4
9
|
|
|
5
10
|
## Usage
|
|
6
11
|
|
|
7
12
|
```
|
|
8
|
-
/specweave-docs:
|
|
13
|
+
/specweave-docs:generate <source-type> <path> [options]
|
|
9
14
|
```
|
|
10
15
|
|
|
11
16
|
## Source Types
|
|
@@ -402,9 +407,9 @@ cat ./docs/api/index.md ./docs/specs/index.md > ./docs/complete-reference.md
|
|
|
402
407
|
|
|
403
408
|
## Related Commands
|
|
404
409
|
|
|
405
|
-
- `/specweave-docs:
|
|
406
|
-
- `/specweave-docs
|
|
407
|
-
- `/specweave-docs
|
|
410
|
+
- `/specweave-docs:init` - Initialize Docusaurus documentation site
|
|
411
|
+
- `/specweave-docs:preview` - Preview generated documentation
|
|
412
|
+
- `/specweave-docs:build` - Build static site from generated docs
|
|
408
413
|
|
|
409
414
|
## Requirements
|
|
410
415
|
|