specweave 0.28.9 → 0.28.13
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/dist/src/cli/commands/init.d.ts.map +1 -1
- package/dist/src/cli/commands/init.js +35 -8
- package/dist/src/cli/commands/init.js.map +1 -1
- package/dist/src/cli/helpers/init/index.d.ts +2 -0
- package/dist/src/cli/helpers/init/index.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/index.js +4 -0
- package/dist/src/cli/helpers/init/index.js.map +1 -1
- package/dist/src/cli/helpers/init/language-selection.d.ts +40 -0
- package/dist/src/cli/helpers/init/language-selection.d.ts.map +1 -0
- package/dist/src/cli/helpers/init/language-selection.js +281 -0
- package/dist/src/cli/helpers/init/language-selection.js.map +1 -0
- package/dist/src/cli/helpers/init/repository-setup.d.ts +2 -0
- package/dist/src/cli/helpers/init/repository-setup.d.ts.map +1 -1
- package/dist/src/cli/helpers/init/repository-setup.js +156 -12
- package/dist/src/cli/helpers/init/repository-setup.js.map +1 -1
- package/dist/src/cli/helpers/init/translation-config.d.ts +61 -0
- package/dist/src/cli/helpers/init/translation-config.d.ts.map +1 -0
- package/dist/src/cli/helpers/init/translation-config.js +437 -0
- package/dist/src/cli/helpers/init/translation-config.js.map +1 -0
- package/dist/src/cli/helpers/init/types.d.ts +33 -0
- package/dist/src/cli/helpers/init/types.d.ts.map +1 -1
- package/dist/src/core/config/types.d.ts +143 -0
- package/dist/src/core/config/types.d.ts.map +1 -1
- package/dist/src/core/config/types.js.map +1 -1
- package/dist/src/core/repo-structure/repo-id-generator.d.ts +24 -95
- package/dist/src/core/repo-structure/repo-id-generator.d.ts.map +1 -1
- package/dist/src/core/repo-structure/repo-id-generator.js +31 -223
- package/dist/src/core/repo-structure/repo-id-generator.js.map +1 -1
- package/dist/src/core/repo-structure/repo-structure-manager.d.ts.map +1 -1
- package/dist/src/core/repo-structure/repo-structure-manager.js +12 -46
- package/dist/src/core/repo-structure/repo-structure-manager.js.map +1 -1
- package/dist/src/sync/sync-coordinator.d.ts +5 -0
- package/dist/src/sync/sync-coordinator.d.ts.map +1 -1
- package/dist/src/sync/sync-coordinator.js +104 -6
- package/dist/src/sync/sync-coordinator.js.map +1 -1
- package/dist/src/utils/multi-repo-detector.d.ts +85 -0
- package/dist/src/utils/multi-repo-detector.d.ts.map +1 -0
- package/dist/src/utils/multi-repo-detector.js +264 -0
- package/dist/src/utils/multi-repo-detector.js.map +1 -0
- package/package.json +1 -1
- package/plugins/specweave/agents/pm/AGENT.md +178 -0
- package/plugins/specweave/agents/test-aware-planner/AGENT.md +54 -0
- package/plugins/specweave/commands/specweave-increment.md +30 -0
- package/plugins/specweave/commands/specweave-save.md +838 -0
- package/plugins/specweave/hooks/hooks.json +12 -0
- package/plugins/specweave/hooks/lib/update-status-line.sh +9 -1
- package/plugins/specweave/hooks/post-increment-completion.sh +4 -3
- package/plugins/specweave/hooks/post-increment-planning.sh +95 -51
- package/plugins/specweave/hooks/post-metadata-change.sh +18 -4
- package/plugins/specweave/hooks/pre-task-completion-edit.sh +355 -0
- package/plugins/specweave/lib/hooks/sync-living-docs.js +43 -0
- package/plugins/specweave/skills/increment-planner/SKILL.md +252 -2
- package/plugins/specweave/skills/spec-generator/SKILL.md +163 -0
- package/plugins/specweave/skills/umbrella-repo-detector/SKILL.md +286 -0
- package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +18 -0
- package/plugins/specweave-infrastructure/skills/hetzner-provisioner/README.md +1 -1
- package/plugins/specweave-release/commands/specweave-release-npm.md +14 -22
- package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +27 -0
|
@@ -46,6 +46,12 @@ description: Generates comprehensive specifications (spec.md, plan.md, tasks.md
|
|
|
46
46
|
### Target Audience
|
|
47
47
|
|
|
48
48
|
## User Stories & Acceptance Criteria
|
|
49
|
+
|
|
50
|
+
<!--
|
|
51
|
+
⚠️ MULTI-PROJECT MODE: If umbrella.enabled=true in config.json,
|
|
52
|
+
user stories MUST be project-scoped! See section below.
|
|
53
|
+
-->
|
|
54
|
+
|
|
49
55
|
### US-001: [Title]
|
|
50
56
|
**As a** [user type]
|
|
51
57
|
**I want** [goal]
|
|
@@ -348,15 +354,172 @@ spec_generator:
|
|
|
348
354
|
|
|
349
355
|
---
|
|
350
356
|
|
|
357
|
+
## 🔀 Multi-Project User Story Generation (v0.29.0+)
|
|
358
|
+
|
|
359
|
+
**CRITICAL**: When umbrella/multi-project mode is detected, user stories MUST be generated per-project!
|
|
360
|
+
|
|
361
|
+
### Detection (MANDATORY FIRST STEP)
|
|
362
|
+
|
|
363
|
+
**Before generating spec.md, ALWAYS check for multi-project mode:**
|
|
364
|
+
|
|
365
|
+
```bash
|
|
366
|
+
# 1. Check config.json for umbrella mode
|
|
367
|
+
cat .specweave/config.json | jq '.umbrella.enabled'
|
|
368
|
+
|
|
369
|
+
# 2. Check for childRepos configuration
|
|
370
|
+
cat .specweave/config.json | jq '.umbrella.childRepos[]'
|
|
371
|
+
|
|
372
|
+
# 3. Check for project folders in specs/
|
|
373
|
+
ls -la .specweave/docs/internal/specs/
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
**If ANY of these conditions are TRUE → Multi-project mode ACTIVE:**
|
|
377
|
+
- `umbrella.enabled: true` in config.json
|
|
378
|
+
- `umbrella.childRepos` has entries
|
|
379
|
+
- Multiple project folders exist in `specs/` (e.g., `sw-app-fe/`, `sw-app-be/`, `sw-app-shared/`)
|
|
380
|
+
- User prompt mentions: "3 repos", "frontend repo", "backend API", "shared library"
|
|
381
|
+
|
|
382
|
+
### Project-Scoped User Story Format (MANDATORY in Multi-Project Mode)
|
|
383
|
+
|
|
384
|
+
**❌ WRONG (Single-Project Format - DO NOT USE in multi-project!):**
|
|
385
|
+
```markdown
|
|
386
|
+
## User Stories
|
|
387
|
+
|
|
388
|
+
### US-001: Thumbnail Upload
|
|
389
|
+
As a content creator, I want to upload thumbnails...
|
|
390
|
+
|
|
391
|
+
### US-002: CTR Prediction API
|
|
392
|
+
As a system, I want to predict click-through rates...
|
|
393
|
+
```
|
|
394
|
+
|
|
395
|
+
**✅ CORRECT (Multi-Project Format - ALWAYS USE when umbrella detected!):**
|
|
396
|
+
```markdown
|
|
397
|
+
## User Stories by Project
|
|
398
|
+
|
|
399
|
+
### Frontend (sw-thumbnail-ab-fe)
|
|
400
|
+
|
|
401
|
+
#### US-FE-001: Thumbnail Upload & Comparison (P1)
|
|
402
|
+
**Related Repo**: sw-thumbnail-ab-fe
|
|
403
|
+
**As a** content creator
|
|
404
|
+
**I want** to upload multiple thumbnail variants and compare them side-by-side
|
|
405
|
+
**So that** I can visually evaluate my options before testing
|
|
406
|
+
|
|
407
|
+
**Acceptance Criteria**:
|
|
408
|
+
- [ ] **AC-FE-US1-01**: User can drag-and-drop up to 5 thumbnail images (JPG, PNG, WebP)
|
|
409
|
+
- [ ] **AC-FE-US1-02**: Images are validated for YouTube specs (1280x720 min, <2MB)
|
|
410
|
+
- [ ] **AC-FE-US1-03**: Side-by-side comparison view displays all variants
|
|
411
|
+
|
|
412
|
+
---
|
|
413
|
+
|
|
414
|
+
### Backend (sw-thumbnail-ab-be)
|
|
415
|
+
|
|
416
|
+
#### US-BE-001: Thumbnail Analysis API (P1)
|
|
417
|
+
**Related Repo**: sw-thumbnail-ab-be
|
|
418
|
+
**As a** frontend application
|
|
419
|
+
**I want** to call POST /predict-ctr endpoint
|
|
420
|
+
**So that** I can get AI-powered click-through rate predictions
|
|
421
|
+
|
|
422
|
+
**Acceptance Criteria**:
|
|
423
|
+
- [ ] **AC-BE-US1-01**: POST /predict-ctr endpoint accepts thumbnail image
|
|
424
|
+
- [ ] **AC-BE-US1-02**: ML model analyzes: face detection, text readability, color psychology
|
|
425
|
+
|
|
426
|
+
---
|
|
427
|
+
|
|
428
|
+
### Shared Library (sw-thumbnail-ab-shared)
|
|
429
|
+
|
|
430
|
+
#### US-SHARED-001: Common Types & Validators (P1)
|
|
431
|
+
**Related Repo**: sw-thumbnail-ab-shared
|
|
432
|
+
**As a** developer in FE or BE repos
|
|
433
|
+
**I want** shared TypeScript types and validators
|
|
434
|
+
**So that** API contracts are consistent across projects
|
|
435
|
+
|
|
436
|
+
**Acceptance Criteria**:
|
|
437
|
+
- [ ] **AC-SHARED-US1-01**: ThumbnailMetadata type exported
|
|
438
|
+
- [ ] **AC-SHARED-US1-02**: Validation schemas for image specs
|
|
439
|
+
```
|
|
440
|
+
|
|
441
|
+
### Project Classification Rules
|
|
442
|
+
|
|
443
|
+
When analyzing user descriptions, classify each user story by keywords:
|
|
444
|
+
|
|
445
|
+
| Keywords | Project | Prefix |
|
|
446
|
+
|----------|---------|--------|
|
|
447
|
+
| UI, component, page, form, view, drag-drop, theme, builder, menu display | Frontend | FE |
|
|
448
|
+
| API, endpoint, CRUD, webhook, analytics, database, service, ML model | Backend | BE |
|
|
449
|
+
| types, schemas, validators, utilities, localization, common | Shared | SHARED |
|
|
450
|
+
| iOS, Android, mobile app, push notification | Mobile | MOBILE |
|
|
451
|
+
| Terraform, K8s, Docker, CI/CD, deployment | Infrastructure | INFRA |
|
|
452
|
+
|
|
453
|
+
### AC-ID Format by Project
|
|
454
|
+
|
|
455
|
+
```
|
|
456
|
+
AC-{PROJECT}-US{story}-{number}
|
|
457
|
+
|
|
458
|
+
Examples:
|
|
459
|
+
- AC-FE-US1-01 (Frontend, User Story 1, AC #1)
|
|
460
|
+
- AC-BE-US1-01 (Backend, User Story 1, AC #1)
|
|
461
|
+
- AC-SHARED-US1-01 (Shared, User Story 1, AC #1)
|
|
462
|
+
- AC-MOBILE-US1-01 (Mobile, User Story 1, AC #1)
|
|
463
|
+
```
|
|
464
|
+
|
|
465
|
+
### tasks.md Must Reference Project-Scoped User Stories
|
|
466
|
+
|
|
467
|
+
```markdown
|
|
468
|
+
### T-001: Create Thumbnail Upload Component
|
|
469
|
+
**User Story**: US-FE-001 ← MUST reference project-scoped ID!
|
|
470
|
+
**Satisfies ACs**: AC-FE-US1-01, AC-FE-US1-02
|
|
471
|
+
**Status**: [ ] Not Started
|
|
472
|
+
|
|
473
|
+
### T-004: Database Schema & Migrations
|
|
474
|
+
**User Story**: US-BE-001, US-BE-002 ← Backend stories only!
|
|
475
|
+
**Satisfies ACs**: AC-BE-US1-01, AC-BE-US2-01
|
|
476
|
+
**Status**: [ ] Not Started
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
### Workflow Summary
|
|
480
|
+
|
|
481
|
+
```
|
|
482
|
+
1. DETECT multi-project mode (check config.json, folder structure)
|
|
483
|
+
↓
|
|
484
|
+
2. If multi-project → Group user stories by project (FE/BE/SHARED/MOBILE/INFRA)
|
|
485
|
+
↓
|
|
486
|
+
3. Generate prefixed user stories: US-FE-001, US-BE-001, US-SHARED-001
|
|
487
|
+
↓
|
|
488
|
+
4. Generate prefixed ACs: AC-FE-US1-01, AC-BE-US1-01
|
|
489
|
+
↓
|
|
490
|
+
5. Generate tasks referencing correct project user stories
|
|
491
|
+
↓
|
|
492
|
+
6. Each project folder gets its own filtered spec
|
|
493
|
+
```
|
|
494
|
+
|
|
495
|
+
### Why This Matters
|
|
496
|
+
|
|
497
|
+
Without project-scoped stories:
|
|
498
|
+
- ❌ All issues created in ONE repo (wrong!)
|
|
499
|
+
- ❌ No clarity which team owns what
|
|
500
|
+
- ❌ Tasks reference wrong user stories
|
|
501
|
+
- ❌ GitHub sync broken across repos
|
|
502
|
+
|
|
503
|
+
With project-scoped stories:
|
|
504
|
+
- ✅ Each repo gets only its user stories
|
|
505
|
+
- ✅ Clear ownership per team/repo
|
|
506
|
+
- ✅ GitHub issues in correct repo
|
|
507
|
+
- ✅ Clean separation of concerns
|
|
508
|
+
|
|
509
|
+
---
|
|
510
|
+
|
|
351
511
|
## Related Skills
|
|
352
512
|
|
|
353
513
|
- **Planning workflow**: Guides increment planning (uses Spec Generator internally)
|
|
354
514
|
- **Context loading**: Loads relevant context for specification generation
|
|
355
515
|
- **Quality validation**: Validates generated specifications for completeness
|
|
516
|
+
- **multi-project-spec-mapper**: Splits specs into project-specific files
|
|
517
|
+
- **umbrella-repo-detector**: Detects multi-repo architecture
|
|
356
518
|
|
|
357
519
|
---
|
|
358
520
|
|
|
359
521
|
## Version History
|
|
360
522
|
|
|
523
|
+
- **v2.0.0** (0.29.0): Added multi-project user story generation support
|
|
361
524
|
- **v1.0.0** (0.8.0): Initial release with flexible template system
|
|
362
525
|
- Based on: Flexible Spec Generator (V2) - context-aware, non-rigid templates
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: umbrella-repo-detector
|
|
3
|
+
description: Detects multi-repo architecture from user prompts and guides setup. Activates for: multiple repos, 3 repos, frontend repo, backend repo, shared library repo, monorepo services, microservices, separate repos, FE/BE/Shared, multi-repo architecture, independent repos.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Umbrella Multi-Repo Architecture Detector
|
|
7
|
+
|
|
8
|
+
## When This Skill Activates
|
|
9
|
+
|
|
10
|
+
Activates when user describes:
|
|
11
|
+
- Multiple repos: "3 repos", "frontend repo", "backend repo", "shared library"
|
|
12
|
+
- Architecture patterns: "monorepo with services", "microservices", "multi-repo"
|
|
13
|
+
- Explicit splits: "FE/BE/Shared", "frontend/backend/common"
|
|
14
|
+
- GitHub URLs for multiple repositories
|
|
15
|
+
|
|
16
|
+
## My Role
|
|
17
|
+
|
|
18
|
+
When I detect a multi-repo architecture in the user's prompt:
|
|
19
|
+
|
|
20
|
+
1. **Acknowledge the architecture** with detected repos
|
|
21
|
+
2. **Explain project-scoped user stories** (US-FE-*, US-BE-*, US-SHARED-*)
|
|
22
|
+
3. **Guide the init flow** for proper setup
|
|
23
|
+
4. **Route to PM agent** with multi-repo context
|
|
24
|
+
|
|
25
|
+
## Detection Patterns
|
|
26
|
+
|
|
27
|
+
| Pattern | Example | Detected As |
|
|
28
|
+
|---------|---------|-------------|
|
|
29
|
+
| Repo count | "3 repos", "multiple repos" | Multi-repo intent |
|
|
30
|
+
| Frontend repo | "Frontend repo", "UI repo", "web app" | Type: frontend, Prefix: FE |
|
|
31
|
+
| Backend repo | "Backend API repo", "server", "API" | Type: backend, Prefix: BE |
|
|
32
|
+
| Shared repo | "Shared library", "common types" | Type: shared, Prefix: SHARED |
|
|
33
|
+
| Mobile repo | "Mobile app", "iOS/Android" | Type: mobile, Prefix: MOBILE |
|
|
34
|
+
| Infra repo | "Infrastructure", "Terraform" | Type: infrastructure, Prefix: INFRA |
|
|
35
|
+
|
|
36
|
+
## Project-Scoped User Stories
|
|
37
|
+
|
|
38
|
+
When user describes multi-repo, user stories MUST be prefixed:
|
|
39
|
+
|
|
40
|
+
```markdown
|
|
41
|
+
## Instead of (generic):
|
|
42
|
+
US-001: User Registration
|
|
43
|
+
US-002: Registration API
|
|
44
|
+
US-003: Validation Schema
|
|
45
|
+
|
|
46
|
+
## Generate (project-scoped):
|
|
47
|
+
US-FE-001: User Registration Form
|
|
48
|
+
- Related repo: frontend
|
|
49
|
+
- Keywords: form, UI, validation display
|
|
50
|
+
|
|
51
|
+
US-BE-001: Registration API Endpoint
|
|
52
|
+
- Related repo: backend
|
|
53
|
+
- Keywords: API, endpoint, database
|
|
54
|
+
|
|
55
|
+
US-SHARED-001: Registration Validation Schema
|
|
56
|
+
- Related repo: shared
|
|
57
|
+
- Keywords: validator, schema, types
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## Cross-Cutting User Stories
|
|
61
|
+
|
|
62
|
+
For features that span multiple repos, use cross-project tagging:
|
|
63
|
+
|
|
64
|
+
```markdown
|
|
65
|
+
US-AUTH-001: OAuth Integration
|
|
66
|
+
- Tags: ["cross-project", "frontend", "backend"]
|
|
67
|
+
- Creates linked issues in: FE repo, BE repo
|
|
68
|
+
- Child stories:
|
|
69
|
+
- US-FE-002: OAuth Login Button (frontend)
|
|
70
|
+
- US-BE-002: OAuth Token Validation (backend)
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## Setup Flow Guidance
|
|
74
|
+
|
|
75
|
+
When multi-repo detected, guide user through options:
|
|
76
|
+
|
|
77
|
+
### Option 1: Clone from GitHub (Recommended)
|
|
78
|
+
```
|
|
79
|
+
You have existing repos? Let's clone them:
|
|
80
|
+
1. Provide GitHub URLs (comma-separated or one per line)
|
|
81
|
+
2. Each repo gets its own .specweave/ configuration
|
|
82
|
+
3. Each repo syncs to its own GitHub issues
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Option 2: Create New Repos
|
|
86
|
+
```
|
|
87
|
+
Creating fresh repos:
|
|
88
|
+
1. I'll create repos on GitHub for you
|
|
89
|
+
2. Each gets initialized with .specweave/
|
|
90
|
+
3. External tool sync configured per repo
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### Option 3: Initialize Local Folders
|
|
94
|
+
```
|
|
95
|
+
Have local folders already?
|
|
96
|
+
1. Point me to each folder
|
|
97
|
+
2. I'll initialize .specweave/ in each
|
|
98
|
+
3. Configure external tools per repo
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
## Umbrella Repo Structure
|
|
102
|
+
|
|
103
|
+
```
|
|
104
|
+
umbrella-project/ # Optional parent repo
|
|
105
|
+
├── .specweave/
|
|
106
|
+
│ ├── config.json # umbrella config with childRepos[]
|
|
107
|
+
│ └── docs/ # High-level PRD, roadmap only
|
|
108
|
+
│
|
|
109
|
+
├── my-app-fe/ # Frontend repo (cloned/created)
|
|
110
|
+
│ └── .specweave/
|
|
111
|
+
│ ├── config.json # sync → my-app-fe GitHub issues
|
|
112
|
+
│ └── increments/
|
|
113
|
+
│ └── 0001-feature/
|
|
114
|
+
│ └── spec.md # Only US-FE-* stories
|
|
115
|
+
│
|
|
116
|
+
├── my-app-be/ # Backend repo (cloned/created)
|
|
117
|
+
│ └── .specweave/
|
|
118
|
+
│ └── ... # sync → my-app-be GitHub issues
|
|
119
|
+
│
|
|
120
|
+
└── my-app-shared/ # Shared repo (cloned/created)
|
|
121
|
+
└── .specweave/
|
|
122
|
+
└── ... # sync → my-app-shared GitHub issues
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Project ID Strategy
|
|
126
|
+
|
|
127
|
+
**CRITICAL**: The `id` field MUST match your canonical source name - no arbitrary abbreviations!
|
|
128
|
+
|
|
129
|
+
| Scenario | ID Source | Example |
|
|
130
|
+
|----------|-----------|---------|
|
|
131
|
+
| **1:1 Repo Mapping** | Exact repo name | `sw-qr-menu-fe` |
|
|
132
|
+
| **JIRA Project** | Project key (lowercase) | `WEBAPP` → `webapp` |
|
|
133
|
+
| **ADO Project** | Project name (kebab-case) | `Frontend Team` → `frontend-team` |
|
|
134
|
+
| **Area Path** | Last segment (kebab-case) | `Product\Web` → `web` |
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
✅ CORRECT: id matches repo name
|
|
138
|
+
id: "sw-qr-menu-fe"
|
|
139
|
+
path: "./sw-qr-menu-fe"
|
|
140
|
+
githubUrl: "https://github.com/user/sw-qr-menu-fe"
|
|
141
|
+
|
|
142
|
+
❌ WRONG: arbitrary abbreviation
|
|
143
|
+
id: "fe" ← What if you have 2 frontend repos?
|
|
144
|
+
path: "./sw-qr-menu-fe"
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
**Note**: The `prefix` (for user stories like `US-FE-001`) can be short even if `id` is long:
|
|
148
|
+
- `id: "sw-qr-menu-fe"` (full repo name)
|
|
149
|
+
- `prefix: "FE"` (short, for user story IDs)
|
|
150
|
+
|
|
151
|
+
## Config Example
|
|
152
|
+
|
|
153
|
+
**Parent umbrella config** (`.specweave/config.json`):
|
|
154
|
+
```json
|
|
155
|
+
{
|
|
156
|
+
"umbrella": {
|
|
157
|
+
"enabled": true,
|
|
158
|
+
"childRepos": [
|
|
159
|
+
{
|
|
160
|
+
"id": "sw-qr-menu-fe",
|
|
161
|
+
"path": "./sw-qr-menu-fe",
|
|
162
|
+
"prefix": "FE",
|
|
163
|
+
"githubUrl": "https://github.com/myorg/sw-qr-menu-fe"
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
"id": "sw-qr-menu-be",
|
|
167
|
+
"path": "./sw-qr-menu-be",
|
|
168
|
+
"prefix": "BE",
|
|
169
|
+
"githubUrl": "https://github.com/myorg/sw-qr-menu-be"
|
|
170
|
+
},
|
|
171
|
+
{
|
|
172
|
+
"id": "sw-qr-menu-shared",
|
|
173
|
+
"path": "./sw-qr-menu-shared",
|
|
174
|
+
"prefix": "SHARED",
|
|
175
|
+
"githubUrl": "https://github.com/myorg/sw-qr-menu-shared"
|
|
176
|
+
}
|
|
177
|
+
]
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
**JIRA-based project** (when JIRA is source of truth):
|
|
183
|
+
```json
|
|
184
|
+
{
|
|
185
|
+
"umbrella": {
|
|
186
|
+
"enabled": true,
|
|
187
|
+
"childRepos": [
|
|
188
|
+
{
|
|
189
|
+
"id": "webapp",
|
|
190
|
+
"path": "./frontend",
|
|
191
|
+
"prefix": "WEBAPP",
|
|
192
|
+
"jiraProject": "WEBAPP",
|
|
193
|
+
"githubUrl": "https://github.com/myorg/frontend"
|
|
194
|
+
}
|
|
195
|
+
]
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Child repo config** (`sw-qr-menu-fe/.specweave/config.json`):
|
|
201
|
+
```json
|
|
202
|
+
{
|
|
203
|
+
"project": {
|
|
204
|
+
"name": "QR Menu Frontend",
|
|
205
|
+
"prefix": "FE"
|
|
206
|
+
},
|
|
207
|
+
"sync": {
|
|
208
|
+
"activeProfile": "github",
|
|
209
|
+
"profiles": {
|
|
210
|
+
"github": {
|
|
211
|
+
"provider": "github",
|
|
212
|
+
"config": {
|
|
213
|
+
"owner": "myorg",
|
|
214
|
+
"repo": "sw-qr-menu-fe"
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
## Response Template
|
|
223
|
+
|
|
224
|
+
When I detect multi-repo intent, respond:
|
|
225
|
+
|
|
226
|
+
```
|
|
227
|
+
I detected a **multi-repo architecture** in your description:
|
|
228
|
+
|
|
229
|
+
**Detected Repos:**
|
|
230
|
+
- Frontend (prefix: FE) - [matched keywords]
|
|
231
|
+
- Backend (prefix: BE) - [matched keywords]
|
|
232
|
+
- Shared (prefix: SHARED) - [matched keywords]
|
|
233
|
+
|
|
234
|
+
**User Story Format:**
|
|
235
|
+
User stories will be project-scoped:
|
|
236
|
+
- `US-FE-001`: Frontend stories
|
|
237
|
+
- `US-BE-001`: Backend stories
|
|
238
|
+
- `US-SHARED-001`: Shared library stories
|
|
239
|
+
|
|
240
|
+
**Setup Options:**
|
|
241
|
+
1. **Clone from GitHub** - Provide URLs, I'll clone and initialize each
|
|
242
|
+
2. **Create new repos** - I'll create on GitHub and initialize
|
|
243
|
+
3. **Initialize local folders** - Point to existing folders
|
|
244
|
+
|
|
245
|
+
Which would you like to do?
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
## Keywords for Story Routing
|
|
249
|
+
|
|
250
|
+
| Keywords | Routes To | Prefix |
|
|
251
|
+
|----------|-----------|--------|
|
|
252
|
+
| UI, component, page, form, view, theme, drag-drop, builder | Frontend | FE |
|
|
253
|
+
| API, endpoint, CRUD, webhook, notification, analytics | Backend | BE |
|
|
254
|
+
| schema, validator, types, utilities, localization | Shared | SHARED |
|
|
255
|
+
| iOS, Android, mobile, push notification | Mobile | MOBILE |
|
|
256
|
+
| Terraform, K8s, Docker, CI/CD | Infrastructure | INFRA |
|
|
257
|
+
|
|
258
|
+
## Saving Changes Across Repos
|
|
259
|
+
|
|
260
|
+
Use `/specweave:save` to commit and push changes across all repos at once:
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
# Save all repos with same commit message
|
|
264
|
+
/specweave:save "feat: Add user authentication"
|
|
265
|
+
|
|
266
|
+
# Preview what would happen
|
|
267
|
+
/specweave:save --dry-run
|
|
268
|
+
|
|
269
|
+
# Save specific repos only
|
|
270
|
+
/specweave:save "fix: Bug fixes" --repos frontend,backend
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
**Features:**
|
|
274
|
+
- Auto-detects repos with changes
|
|
275
|
+
- Sets up remotes if missing (prompts for URL or uses umbrella config)
|
|
276
|
+
- Commits with same message to all repos
|
|
277
|
+
- Pushes to origin
|
|
278
|
+
- Skips repos with no changes
|
|
279
|
+
|
|
280
|
+
## Important Notes
|
|
281
|
+
|
|
282
|
+
1. **Each repo is independent** - Own `.specweave/`, own increments, own external tool sync
|
|
283
|
+
2. **Parent repo is optional** - Can have umbrella config or just independent repos
|
|
284
|
+
3. **User stories MUST have project prefix** - Never generate generic `US-001` in multi-repo mode
|
|
285
|
+
4. **Cross-project stories get special handling** - Tagged and linked across repos
|
|
286
|
+
5. **Use `/specweave:save`** - Single command to save changes across all repos
|
|
@@ -1114,3 +1114,21 @@
|
|
|
1114
1114
|
[Tue Nov 25 02:03:38 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
|
|
1115
1115
|
[Tue Nov 25 02:03:39 EST 2025] [GitHub] 🔗 GitHub sync hook fired
|
|
1116
1116
|
[Tue Nov 25 02:03:39 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
|
|
1117
|
+
[Tue Nov 25 03:33:47 EST 2025] [GitHub] 🔗 GitHub sync hook fired
|
|
1118
|
+
[Tue Nov 25 03:33:47 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
|
|
1119
|
+
[Tue Nov 25 03:33:47 EST 2025] [GitHub] 🔗 GitHub sync hook fired
|
|
1120
|
+
[Tue Nov 25 03:33:47 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
|
|
1121
|
+
[Tue Nov 25 03:33:47 EST 2025] [GitHub] 🔗 GitHub sync hook fired
|
|
1122
|
+
[Tue Nov 25 03:33:47 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
|
|
1123
|
+
[Tue Nov 25 03:36:17 EST 2025] [GitHub] 🔗 GitHub sync hook fired
|
|
1124
|
+
[Tue Nov 25 03:36:17 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
|
|
1125
|
+
[Tue Nov 25 03:36:17 EST 2025] [GitHub] 🔗 GitHub sync hook fired
|
|
1126
|
+
[Tue Nov 25 03:36:17 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
|
|
1127
|
+
[Tue Nov 25 03:36:18 EST 2025] [GitHub] 🔗 GitHub sync hook fired
|
|
1128
|
+
[Tue Nov 25 03:36:18 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
|
|
1129
|
+
[Tue Nov 25 04:01:54 EST 2025] [GitHub] 🔗 GitHub sync hook fired
|
|
1130
|
+
[Tue Nov 25 04:01:54 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
|
|
1131
|
+
[Tue Nov 25 04:01:54 EST 2025] [GitHub] 🔗 GitHub sync hook fired
|
|
1132
|
+
[Tue Nov 25 04:01:54 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
|
|
1133
|
+
[Tue Nov 25 04:01:54 EST 2025] [GitHub] 🔗 GitHub sync hook fired
|
|
1134
|
+
[Tue Nov 25 04:01:54 EST 2025] [GitHub] ⚠️ sync-spec-content CLI not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-github/hooks/dist/src/cli/commands/sync-spec-content.js, skipping sync
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: specweave-release:npm
|
|
3
|
-
description: Bump patch version, create git tag, and trigger npm publish via GitHub Actions. Automates the complete release workflow with pre-flight checks, version bumping, tag creation, and GitHub Actions triggering. Use --only flag for
|
|
3
|
+
description: Bump patch version, create git tag, and trigger npm publish via GitHub Actions. Automates the complete release workflow with pre-flight checks, version bumping, tag creation, and GitHub Actions triggering. Use --only flag for quick local release (bumps version, builds, publishes to npm directly - NO git push, NO pipeline).
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# /specweave-release:npm - NPM Release Automation
|
|
@@ -9,8 +9,8 @@ You are the NPM Release Assistant. Your job is to automate the patch version rel
|
|
|
9
9
|
|
|
10
10
|
## Command Modes
|
|
11
11
|
|
|
12
|
-
**Default mode** (no flags): Push to GitHub → GitHub Actions publishes to npm
|
|
13
|
-
**Direct mode** (`--only`): Publish
|
|
12
|
+
**Default mode** (no flags): Bump → Push to GitHub → GitHub Actions publishes to npm
|
|
13
|
+
**Direct mode** (`--only`): Bump → Build → Publish to npm directly (NO git push, NO pipeline)
|
|
14
14
|
|
|
15
15
|
## Detecting Mode
|
|
16
16
|
|
|
@@ -186,16 +186,7 @@ npm publish
|
|
|
186
186
|
- Publishes to npm registry immediately
|
|
187
187
|
- No GitHub Actions involvement
|
|
188
188
|
|
|
189
|
-
### 6.
|
|
190
|
-
|
|
191
|
-
```bash
|
|
192
|
-
# Push the version bump commit and tag to GitHub
|
|
193
|
-
git push origin develop --follow-tags
|
|
194
|
-
```
|
|
195
|
-
|
|
196
|
-
**Note**: This syncs GitHub with npm but does NOT trigger publish workflow (already published).
|
|
197
|
-
|
|
198
|
-
### 7. Report Results (Direct Mode)
|
|
189
|
+
### 6. Report Results (Direct Mode)
|
|
199
190
|
|
|
200
191
|
Show the user:
|
|
201
192
|
```markdown
|
|
@@ -203,36 +194,37 @@ Show the user:
|
|
|
203
194
|
|
|
204
195
|
📦 **Version**: vX.Y.Z
|
|
205
196
|
🔗 **NPM**: https://www.npmjs.com/package/specweave
|
|
206
|
-
🏷️ **Git Tag**: vX.Y.Z (
|
|
197
|
+
🏷️ **Git Tag**: vX.Y.Z (local only)
|
|
207
198
|
|
|
208
199
|
**What happened**:
|
|
209
|
-
- ✅ Version bumped and committed
|
|
200
|
+
- ✅ Version bumped and committed locally
|
|
210
201
|
- ✅ Git tag created locally
|
|
211
202
|
- ✅ Package built (npm run rebuild)
|
|
212
203
|
- ✅ Published to npm directly
|
|
213
|
-
-
|
|
204
|
+
- ⏸️ Git NOT pushed (use `git push origin develop --follow-tags` later if needed)
|
|
214
205
|
|
|
215
206
|
**Verify**:
|
|
216
207
|
- Check npm: https://www.npmjs.com/package/specweave
|
|
217
208
|
- Verify version: `npm view specweave version`
|
|
218
209
|
- Install globally: `npm install -g specweave@X.Y.Z`
|
|
219
210
|
|
|
220
|
-
**Note**:
|
|
211
|
+
**Note**: Local release only. Push to GitHub manually when ready:
|
|
212
|
+
`git push origin develop --follow-tags`
|
|
221
213
|
```
|
|
222
214
|
|
|
223
215
|
## Direct Mode Safety Rules
|
|
224
216
|
|
|
225
217
|
- ✅ ALWAYS rebuild before publishing (`npm run rebuild`)
|
|
226
|
-
- ✅
|
|
227
|
-
- ✅ Use `--only` for emergency releases or local testing
|
|
218
|
+
- ✅ Use `--only` for emergency/quick releases or local testing
|
|
228
219
|
- ✅ Default mode (GitHub Actions) is preferred for regular releases
|
|
229
220
|
- ✅ Direct mode gives immediate feedback (no CI wait time)
|
|
221
|
+
- ⚠️ Remember to push git changes later to sync GitHub
|
|
230
222
|
|
|
231
223
|
## Success Criteria (Direct Mode)
|
|
232
224
|
|
|
233
225
|
✅ Version bumped in package.json
|
|
234
|
-
✅ Git commit created
|
|
235
|
-
✅ Git tag created
|
|
226
|
+
✅ Git commit created locally
|
|
227
|
+
✅ Git tag created locally
|
|
236
228
|
✅ Package rebuilt
|
|
237
229
|
✅ Published to npm directly
|
|
238
|
-
|
|
230
|
+
⏸️ Git NOT pushed (manual sync later)
|
|
@@ -1033,3 +1033,30 @@
|
|
|
1033
1033
|
[2025-11-25 02:03:39] 🎯 Post-Increment-Completion Hook Triggered
|
|
1034
1034
|
[2025-11-25 02:03:39] ⚠️ DORA calculator not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-release/hooks/dist/src/metrics/dora-calculator.js
|
|
1035
1035
|
[2025-11-25 02:03:39] Run: npm run build
|
|
1036
|
+
[2025-11-25 03:33:47] 🎯 Post-Increment-Completion Hook Triggered
|
|
1037
|
+
[2025-11-25 03:33:47] ⚠️ DORA calculator not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-release/hooks/dist/src/metrics/dora-calculator.js
|
|
1038
|
+
[2025-11-25 03:33:47] Run: npm run build
|
|
1039
|
+
[2025-11-25 03:33:47] 🎯 Post-Increment-Completion Hook Triggered
|
|
1040
|
+
[2025-11-25 03:33:47] ⚠️ DORA calculator not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-release/hooks/dist/src/metrics/dora-calculator.js
|
|
1041
|
+
[2025-11-25 03:33:47] Run: npm run build
|
|
1042
|
+
[2025-11-25 03:33:47] 🎯 Post-Increment-Completion Hook Triggered
|
|
1043
|
+
[2025-11-25 03:33:47] ⚠️ DORA calculator not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-release/hooks/dist/src/metrics/dora-calculator.js
|
|
1044
|
+
[2025-11-25 03:33:47] Run: npm run build
|
|
1045
|
+
[2025-11-25 03:36:17] 🎯 Post-Increment-Completion Hook Triggered
|
|
1046
|
+
[2025-11-25 03:36:17] ⚠️ DORA calculator not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-release/hooks/dist/src/metrics/dora-calculator.js
|
|
1047
|
+
[2025-11-25 03:36:17] Run: npm run build
|
|
1048
|
+
[2025-11-25 03:36:18] 🎯 Post-Increment-Completion Hook Triggered
|
|
1049
|
+
[2025-11-25 03:36:18] ⚠️ DORA calculator not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-release/hooks/dist/src/metrics/dora-calculator.js
|
|
1050
|
+
[2025-11-25 03:36:18] Run: npm run build
|
|
1051
|
+
[2025-11-25 03:36:18] 🎯 Post-Increment-Completion Hook Triggered
|
|
1052
|
+
[2025-11-25 03:36:18] ⚠️ DORA calculator not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-release/hooks/dist/src/metrics/dora-calculator.js
|
|
1053
|
+
[2025-11-25 03:36:18] Run: npm run build
|
|
1054
|
+
[2025-11-25 04:01:54] 🎯 Post-Increment-Completion Hook Triggered
|
|
1055
|
+
[2025-11-25 04:01:54] ⚠️ DORA calculator not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-release/hooks/dist/src/metrics/dora-calculator.js
|
|
1056
|
+
[2025-11-25 04:01:54] Run: npm run build
|
|
1057
|
+
[2025-11-25 04:01:54] 🎯 Post-Increment-Completion Hook Triggered
|
|
1058
|
+
[2025-11-25 04:01:54] ⚠️ DORA calculator not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-release/hooks/dist/src/metrics/dora-calculator.js
|
|
1059
|
+
[2025-11-25 04:01:54] Run: npm run build
|
|
1060
|
+
[2025-11-25 04:01:54] 🎯 Post-Increment-Completion Hook Triggered
|
|
1061
|
+
[2025-11-25 04:01:54] ⚠️ DORA calculator not found at /Users/antonabyzov/Projects/github/specweave/plugins/specweave-release/hooks/dist/src/metrics/dora-calculator.js
|
|
1062
|
+
[2025-11-25 04:01:54] Run: npm run build
|