specweave 1.0.36 → 1.0.37

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.
@@ -1 +1 @@
1
- {"version":3,"file":"structure-level-detector.d.ts","sourceRoot":"","sources":["../../../src/utils/structure-level-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mDAAmD;IACnD,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IAEb,6EAA6E;IAC7E,QAAQ,EAAE,WAAW,EAAE,CAAC;IAExB,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAE9C,qCAAqC;IACrC,eAAe,EAAE,MAAM,CAAC;IAExB,8BAA8B;IAC9B,MAAM,EAAE,eAAe,GAAG,YAAY,GAAG,gBAAgB,GAAG,eAAe,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;CACrH;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,+BAA+B;IAC/B,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC;IACtB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAiDD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,GAAE,MAAsB,GAAG,oBAAoB,CAwR9F;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,MAAsB,GAClC,wBAAwB,CAgH1B;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,GAAE,MAAsB,GAAG;IAC1E,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IACb,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;CAC/C,CAmBA;AAED;;GAEG;AACH,iBAAS,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOzC;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
1
+ {"version":3,"file":"structure-level-detector.d.ts","sourceRoot":"","sources":["../../../src/utils/structure-level-detector.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,mDAAmD;IACnD,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IAEb,6EAA6E;IAC7E,QAAQ,EAAE,WAAW,EAAE,CAAC;IAExB,iEAAiE;IACjE,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;IAE9C,qCAAqC;IACrC,eAAe,EAAE,MAAM,CAAC;IAExB,8BAA8B;IAC9B,MAAM,EAAE,eAAe,GAAG,YAAY,GAAG,gBAAgB,GAAG,eAAe,GAAG,gBAAgB,GAAG,kBAAkB,CAAC;CACrH;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,wBAAwB;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,4BAA4B;IAC5B,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,oBAAoB;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,oBAAoB;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,+BAA+B;IAC/B,cAAc,EAAE,CAAC,GAAG,CAAC,CAAC;IACtB,+BAA+B;IAC/B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,2CAA2C;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iDAAiD;IACjD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAoDD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,GAAE,MAAsB,GAAG,oBAAoB,CA8T9F;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CACpC,WAAW,EAAE,MAAM,EACnB,WAAW,GAAE,MAAsB,GAClC,wBAAwB,CAgH1B;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,GAAE,MAAsB,GAAG;IAC1E,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC;IACb,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;CAC/C,CAmBA;AAED;;GAEG;AACH,iBAAS,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAOzC;AAED,OAAO,EAAE,WAAW,EAAE,CAAC"}
@@ -150,7 +150,29 @@ export function detectStructureLevel(projectRoot = process.cwd()) {
150
150
  }
151
151
  }
152
152
  }
153
- // Check 3: Umbrella with teams (2-level structure)
153
+ // Check 3: GitHub sync profiles (1-level structure)
154
+ // For GitHub-based umbrellas, each sync profile = a project (no boards)
155
+ // This takes precedence over umbrella team detection for GitHub
156
+ if (config.sync?.profiles) {
157
+ const githubProfiles = Object.entries(config.sync.profiles)
158
+ .filter(([, profile]) => profile.provider === 'github');
159
+ if (githubProfiles.length > 0) {
160
+ // GitHub profiles = 1-level structure (each repo is a project)
161
+ const projects = githubProfiles.map(([id, profile]) => ({
162
+ id: normalizeId(id),
163
+ name: profile.displayName || profile.config?.repo || id,
164
+ externalId: profile.config?.repo
165
+ }));
166
+ return {
167
+ level: 1,
168
+ projects,
169
+ detectionReason: 'GitHub sync profiles configured',
170
+ source: 'multi-project'
171
+ };
172
+ }
173
+ }
174
+ // Check 4: Umbrella with teams (2-level structure)
175
+ // Only triggers for NON-GitHub setups (ADO/JIRA with team hierarchy)
154
176
  if (config.umbrella?.enabled && config.umbrella?.childRepos?.length) {
155
177
  const repos = config.umbrella.childRepos;
156
178
  const teams = new Set(repos.filter(r => r.team).map(r => r.team));
@@ -179,6 +201,17 @@ export function detectStructureLevel(projectRoot = process.cwd()) {
179
201
  source: 'umbrella-teams'
180
202
  };
181
203
  }
204
+ // Umbrella with single team or no teams = 1-level (each repo is a project)
205
+ const projects = repos.map(r => ({
206
+ id: normalizeId(r.id),
207
+ name: r.name || r.id
208
+ }));
209
+ return {
210
+ level: 1,
211
+ projects,
212
+ detectionReason: 'Umbrella repos (single team)',
213
+ source: 'multi-project'
214
+ };
182
215
  }
183
216
  // Check 4: multiProject.projects (1-level structure)
184
217
  if (config.multiProject?.enabled && config.multiProject?.projects) {
@@ -1 +1 @@
1
- {"version":3,"file":"structure-level-detector.js","sourceRoot":"","sources":["../../../src/utils/structure-level-detector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"structure-level-detector.js","sourceRoot":"","sources":["../../../src/utils/structure-level-detector.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specweave",
3
- "version": "1.0.36",
3
+ "version": "1.0.37",
4
4
  "description": "Spec-driven development framework for Claude Code. AI-native workflow with living documentation, intelligent agents, and multilingual support (9 languages). Enterprise-grade traceability with permanent specs and temporary increments.",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -636,36 +636,65 @@ With project-scoped stories:
636
636
 
637
637
  ---
638
638
 
639
- ## 🌐 Multi-Project User Stories (v0.29.0+ - JIRA Boards/ADO Area Paths)
639
+ ## 🌐 Multi-Project User Stories - Structure Level Detection (v0.35.4+)
640
640
 
641
- **⚠️ CRITICAL: User Stories MUST Consider ALL Relevant Projects!**
641
+ **⚠️ CRITICAL: Detect Structure Level BEFORE Generating User Stories!**
642
642
 
643
- When working with enterprise setups where JIRA boards or ADO area paths map to SpecWeave projects, a single user story often spans MULTIPLE projects.
643
+ ### STEP 0C: Detect Structure Level (1-LEVEL vs 2-LEVEL)
644
644
 
645
- ### STEP 0C: Detect Multi-Project Mode (Board/Area Path Mapping)
646
-
647
- **YOU MUST CHECK THIS BEFORE WRITING ANY USER STORIES:**
645
+ **THIS IS MANDATORY - Run before writing ANY user stories:**
648
646
 
649
647
  ```bash
650
- # Check for JIRA board mapping
651
- cat .specweave/config.json | jq '.sync.profiles[].config.boardMapping'
648
+ specweave context projects
649
+ ```
652
650
 
653
- # Check for ADO area path mapping
654
- cat .specweave/config.json | jq '.sync.profiles[].config.areaPathMapping'
651
+ **Interpret the output:**
655
652
 
656
- # Check for 2-level spec structure
657
- ls -la .specweave/docs/internal/specs/JIRA-*/
658
- ls -la .specweave/docs/internal/specs/ADO-*/
653
+ | `level` | Config Type | `**Board**:` Field |
654
+ |---------|-------------|--------------------|
655
+ | **1** | GitHub sync profiles, single project, umbrella (single team) | ❌ **FORBIDDEN** |
656
+ | **2** | ADO areaPathMapping, JIRA boardMapping (2+ boards), umbrella (multi-team) | ✅ **REQUIRED** |
657
+
658
+ **Example 1-level output (GitHub multi-repo):**
659
+ ```json
660
+ {
661
+ "level": 1,
662
+ "projects": [
663
+ {"id": "sw-app-api", "name": "Sw App Api"},
664
+ {"id": "sw-app-web", "name": "Sw App Web"}
665
+ ],
666
+ "detectionReason": "GitHub sync profiles configured"
667
+ }
659
668
  ```
669
+ → **DO NOT add `**Board**:` field!** Each sync profile = 1 project.
660
670
 
661
- **Decision Flow:**
671
+ **Example 2-level output (ADO/JIRA):**
672
+ ```json
673
+ {
674
+ "level": 2,
675
+ "projects": [{"id": "acme-corp", "name": "ACME Corp"}],
676
+ "boardsByProject": {
677
+ "acme-corp": [
678
+ {"id": "frontend-team", "name": "Frontend Team"},
679
+ {"id": "backend-team", "name": "Backend Team"}
680
+ ]
681
+ }
682
+ }
662
683
  ```
663
- Is boardMapping or areaPathMapping configured?
664
- → YES → MUST use multi-project-aware user stories
665
- Each US must list ALL affected projects with scope
666
- → NO → Check for umbrella mode (see Step 0)
667
- Use standard or project-scoped user stories
684
+ **MUST add `**Board**:` field on each US!**
685
+
686
+ ### VALIDATION RULES (ENFORCED BY HOOK!)
687
+
668
688
  ```
689
+ ✅ 1-level: **Project**: required, NO **Board**:
690
+ ✅ 2-level: **Project**: AND **Board**: both required
691
+ ❌ FORBIDDEN: **Board**: on 1-level structure → spec-validation-guard.sh BLOCKS
692
+ ❌ FORBIDDEN: Missing **Board**: on 2-level → sync will fail
693
+ ```
694
+
695
+ ---
696
+
697
+ ## 🏢 Enterprise Multi-Project (2-Level: JIRA Boards/ADO Area Paths)
669
698
 
670
699
  ### Multi-Project User Story Format (v0.29.0+)
671
700
 
@@ -84,6 +84,36 @@ if [[ "$HOOK_FILE_PATH" =~ \.specweave/increments/[0-9]{3,4}E?-[^/]+/spec\.md$ ]
84
84
  exit 2
85
85
  fi
86
86
 
87
+ # Check structure level to validate **Board**: fields
88
+ # For 1-level structures (GitHub), **Board**: should NOT be present
89
+ # For 2-level structures (ADO/JIRA with boards), **Board**: is required
90
+ PROJECT_ROOT="${HOOK_FILE_PATH%%/.specweave/*}"
91
+ BOARD_COUNT=$(echo "$HOOK_CONTENT" | grep -cE '^\*\*Board\*\*:' 2>/dev/null || echo "0")
92
+ BOARD_COUNT="${BOARD_COUNT//[^0-9]/}"
93
+ [[ -z "$BOARD_COUNT" ]] && BOARD_COUNT=0
94
+
95
+ if [[ "$BOARD_COUNT" -gt 0 ]]; then
96
+ # Has **Board**: fields - check if this is a 2-level structure
97
+ CONFIG_FILE="$PROJECT_ROOT/.specweave/config.json"
98
+ IS_2LEVEL="false"
99
+
100
+ if [[ -f "$CONFIG_FILE" ]]; then
101
+ # 2-level indicators: ADO areaPathMapping, JIRA boardMapping with multiple boards
102
+ HAS_AREA_MAPPING=$(jq -r '.sync.profiles | to_entries[] | select(.value.provider == "ado") | .value.config.areaPathMapping.mappings | length > 0' "$CONFIG_FILE" 2>/dev/null | grep -c "true" || echo "0")
103
+ HAS_BOARD_MAPPING=$(jq -r '.sync.profiles | to_entries[] | select(.value.provider == "jira") | .value.config.boardMapping.boards | length > 1' "$CONFIG_FILE" 2>/dev/null | grep -c "true" || echo "0")
104
+ HAS_MULTI_TEAMS=$(jq -r '.umbrella.childRepos | map(.team) | unique | length > 1' "$CONFIG_FILE" 2>/dev/null || echo "false")
105
+
106
+ if [[ "$HAS_AREA_MAPPING" -gt 0 ]] || [[ "$HAS_BOARD_MAPPING" -gt 0 ]] || [[ "$HAS_MULTI_TEAMS" == "true" ]]; then
107
+ IS_2LEVEL="true"
108
+ fi
109
+ fi
110
+
111
+ if [[ "$IS_2LEVEL" != "true" ]]; then
112
+ printf '{"decision":"block","reason":"🚫 **Board**: FIELDS NOT ALLOWED FOR 1-LEVEL STRUCTURE\\n\\nThis project uses GitHub sync (1-level structure).\\nEach sync profile = 1 project (no boards).\\n\\n🔧 FIX: Remove all **Board**: lines from spec.md\\n\\n**Board**: is only valid for:\\n- ADO with area path mapping\\n- JIRA with multiple boards\\n- Umbrella with multiple teams"}\n'
113
+ exit 2
114
+ fi
115
+ fi
116
+
87
117
  echo '{"decision":"allow"}'
88
118
  exit 0
89
119
  fi
@@ -830,47 +830,74 @@ Create `.specweave/increments/0021-feature-name/spec.md`:
830
830
 
831
831
  **⚠️ IMPORTANT: Use the correct template based on STEP 0 detection!**
832
832
 
833
- #### 5A: Single-Project Template (1-level structure)
833
+ #### 5A: 1-Level Structure (GitHub, Single Project, Multi-Repo without ADO/JIRA)
834
834
 
835
- **Template File**: `templates/spec-single-project.md`
835
+ **USE THIS WHEN**: `specweave context projects` returns `level: 1`
836
836
 
837
- Replace placeholders:
838
- - `{{INCREMENT_ID}}`, `{{FEATURE_TITLE}}`, `{{TYPE}}`, `{{PRIORITY}}`, `{{DATE}}`
839
- - `{{TEST_MODE}}`, `{{COVERAGE_TARGET}}`
840
- - **`{{PROJECT_ID}}`** MANDATORY (from STEP 0B)
837
+ **Examples of 1-level**:
838
+ - GitHub sync profiles (each repo = project)
839
+ - Single project mode
840
+ - Umbrella repos WITHOUT multiple teams
841
841
 
842
- #### 5B: Multi-Project Template (2-level structure) - USE THIS!
842
+ **Template Rules for 1-level:**
843
+ - Each User Story has `**Project**:` field
844
+ - **NO `**Board**:` field** - GitHub doesn't have boards!
845
+ - User story IDs: `US-001`, `US-002` (or `US-API-001`, `US-WEB-001` for multi-repo)
846
+ - AC-IDs: `AC-US1-01` (or `AC-API-US1-01` for multi-repo)
843
847
 
844
- **Template File**: `templates/spec-multi-project.md`
848
+ **Example 1-level spec.md:**
849
+ ```markdown
850
+ ### US-API-001: Create Auth API
851
+ **Project**: sw-content-repurposer-api
852
+
853
+ **As a** frontend, I want auth endpoints...
854
+
855
+ **Acceptance Criteria**:
856
+ - [ ] **AC-API-US1-01**: POST /auth/login returns JWT
857
+ ```
858
+
859
+ **⚠️ CRITICAL: Do NOT add `**Board**:` for 1-level structures!**
860
+
861
+ #### 5B: 2-Level Structure (ADO Area Paths, JIRA Boards, Multi-Team Umbrella)
862
+
863
+ **USE THIS WHEN**: `specweave context projects` returns `level: 2`
864
+
865
+ **Examples of 2-level**:
866
+ - ADO with `areaPathMapping`
867
+ - JIRA with multiple `boardMapping.boards`
868
+ - Umbrella repos with multiple teams
869
+
870
+ **Template Rules for 2-level:**
871
+ - Each User Story has BOTH `**Project**:` AND `**Board**:` fields
872
+ - User story IDs: `US-FE-001`, `US-BE-001` (with project prefix)
873
+ - AC-IDs: `AC-FE-US1-01`, `AC-BE-US1-01` (with project prefix)
845
874
 
846
- Replace placeholders:
847
- - `{{INCREMENT_ID}}`, `{{FEATURE_TITLE}}`, `{{TYPE}}`, `{{PRIORITY}}`, `{{DATE}}`
848
- - **`{{PROJECT_ID}}`** MANDATORY (from STEP 0B)
849
- - **`{{BOARD_ID}}`** ← MANDATORY for 2-level (from STEP 0B)
850
- - `{{PROJECT_FE_ID}}`, `{{PROJECT_BE_ID}}`, `{{PROJECT_SHARED_ID}}` (for multi-repo)
875
+ **Example 2-level spec.md:**
876
+ ```markdown
877
+ ### US-FE-001: Create Login Form
878
+ **Project**: acme-corp
879
+ **Board**: frontend-team
880
+
881
+ **As a** user, I want a login form...
882
+
883
+ **Acceptance Criteria**:
884
+ - [ ] **AC-FE-US1-01**: Login form displays email/password fields
885
+ ```
851
886
 
852
887
  **Key Rules for spec.md (ADR-0140: v0.35.0+):**
853
888
  1. **`project:` field REMOVED from YAML frontmatter** - now resolved from per-US fields
854
889
  2. **`board:` field REMOVED from YAML frontmatter** (2-level) - now in per-US fields
855
890
  3. **Each User Story MUST have `**Project**:` field** - source of truth for project
856
- 4. **Each User Story (2-level) MUST have `**Board**:` field** - source of truth for board
857
- 5. **User story IDs have project prefix**: `US-FE-001`, `US-BE-001` (multi-project)
858
- 6. **AC-IDs have project prefix**: `AC-FE-US1-01`, `AC-BE-US1-01` (multi-project)
891
+ 4. **Each User Story (2-level ONLY) MUST have `**Board**:` field** - source of truth for board
859
892
 
860
- **VALIDATION (per-US fields - v0.35.0+):**
861
- ```markdown
862
- ### US-001: Feature Name
863
- **Project**: digital-operations # REQUIRED (resolved from config)
864
-
865
- ### US-001: Feature Name (2-level)
866
- **Project**: acme-corp # REQUIRED
867
- **Board**: digital-operations # ← REQUIRED for 2-level
893
+ **⚠️ VALIDATION RULES:**
894
+ ```
895
+ 1-level: **Project**: required, NO **Board**:
896
+ ✅ 2-level: **Project**: AND **Board**: both required
897
+ ❌ FORBIDDEN: **Board**: on 1-level structure → hook will BLOCK
898
+ FORBIDDEN: Missing **Board**: on 2-level → sync will fail
899
+ FORBIDDEN: Unresolved placeholders like {{PROJECT_ID}}
868
900
  ```
869
-
870
- **⚠️ FORBIDDEN:**
871
- - User stories without `**Project**:` field
872
- - User stories (2-level) without `**Board**:` field
873
- - Using unresolved placeholders like `{{PROJECT_ID}}`
874
901
 
875
902
  ### STEP 6: Create plan.md Template (OPTIONAL)
876
903
 
@@ -9,15 +9,16 @@ structure: user-stories
9
9
  test_mode: {{TEST_MODE}}
10
10
  coverage_target: {{COVERAGE_TARGET}}
11
11
  # NOTE: project:/board: fields REMOVED per ADR-0140 (v0.35.0+)
12
- # Project and Board are now resolved from per-US **Project**: and **Board**: fields
12
+ # Project resolved from per-US **Project**: fields
13
+ # Board resolved from per-US **Board**: fields (2-LEVEL ONLY!)
13
14
  multi_project: true
14
15
  projects:
15
- - id: {{RESOLVED_PROJECT_FE}}
16
- prefix: FE
17
- - id: {{RESOLVED_PROJECT_BE}}
18
- prefix: BE
19
- - id: {{RESOLVED_PROJECT_SHARED}}
20
- prefix: SHARED
16
+ - id: {{RESOLVED_PROJECT_1}}
17
+ prefix: {{PREFIX_1}}
18
+ - id: {{RESOLVED_PROJECT_2}}
19
+ prefix: {{PREFIX_2}}
20
+ - id: {{RESOLVED_PROJECT_3}}
21
+ prefix: {{PREFIX_3}}
21
22
  ---
22
23
 
23
24
  # Feature: {{FEATURE_TITLE}}
@@ -29,63 +30,65 @@ projects:
29
30
  ## User Stories
30
31
 
31
32
  <!--
32
- MANDATORY: **Project**: and **Board**: fields on EVERY User Story (v0.35.0+)
33
+ STRUCTURE-LEVEL DETECTION IS CRITICAL!
33
34
 
34
- BEFORE creating this file, you MUST:
35
- 1. Run: specweave context projects
36
- 2. Get project IDs and board IDs from output
37
- 3. Replace {{RESOLVED_PROJECT}} and {{RESOLVED_BOARD_*}} with actual values
35
+ BEFORE using this template, run: specweave context projects
36
+
37
+ IF level: 1 (GitHub, multi-repo):
38
+ Use **Project**: field on each US
39
+ ❌ Do NOT add **Board**: field!
40
+
41
+ IF level: 2 (ADO area paths, JIRA boards, multi-team umbrella):
42
+ ✅ Use **Project**: AND **Board**: fields on each US
43
+
44
+ Replace {{RESOLVED_PROJECT_*}} with actual project IDs from context output.
45
+ For 2-level ONLY: also replace {{RESOLVED_BOARD_*}} placeholders.
38
46
 
39
47
  DO NOT leave {{...}} placeholders in the final file!
40
- DO NOT create User Stories without **Project**: field!
41
- DO NOT create 2-level User Stories without **Board**: field!
42
48
  -->
43
49
 
44
- ### Frontend Stories
50
+ ### {{PREFIX_1}} Service Stories
45
51
 
46
- #### US-FE-001: [Story Title] (P1)
47
- **Project**: {{RESOLVED_PROJECT}}
48
- **Board**: {{RESOLVED_BOARD_FE}}
52
+ #### US-{{PREFIX_1}}-001: [Story Title] (P1)
53
+ **Project**: {{RESOLVED_PROJECT_1}}
49
54
 
50
55
  **As a** [user type]
51
56
  **I want** [goal]
52
57
  **So that** [benefit]
53
58
 
54
59
  **Acceptance Criteria**:
55
- - [ ] **AC-FE-US1-01**: [Specific, testable criterion]
56
- - [ ] **AC-FE-US1-02**: [Another criterion]
60
+ - [ ] **AC-{{PREFIX_1}}-US1-01**: [Specific, testable criterion]
61
+ - [ ] **AC-{{PREFIX_1}}-US1-02**: [Another criterion]
57
62
 
58
63
  ---
59
64
 
60
- ### Backend Stories
65
+ ### {{PREFIX_2}} Service Stories
61
66
 
62
- #### US-BE-001: [Story Title] (P1)
63
- **Project**: {{RESOLVED_PROJECT}}
64
- **Board**: {{RESOLVED_BOARD_BE}}
67
+ #### US-{{PREFIX_2}}-001: [Story Title] (P1)
68
+ **Project**: {{RESOLVED_PROJECT_2}}
65
69
 
66
70
  **As a** [system/frontend application]
67
71
  **I want** [API endpoint/service goal]
68
72
  **So that** [benefit]
69
73
 
70
74
  **Acceptance Criteria**:
71
- - [ ] **AC-BE-US1-01**: [API endpoint specification]
72
- - [ ] **AC-BE-US1-02**: [Data validation rule]
75
+ - [ ] **AC-{{PREFIX_2}}-US1-01**: [API endpoint specification]
76
+ - [ ] **AC-{{PREFIX_2}}-US1-02**: [Data validation rule]
73
77
 
74
78
  ---
75
79
 
76
- ### Shared Library Stories
80
+ ### {{PREFIX_3}} Service Stories
77
81
 
78
- #### US-SHARED-001: [Story Title] (P1)
79
- **Project**: {{RESOLVED_PROJECT}}
80
- **Board**: {{RESOLVED_BOARD_SHARED}}
82
+ #### US-{{PREFIX_3}}-001: [Story Title] (P1)
83
+ **Project**: {{RESOLVED_PROJECT_3}}
81
84
 
82
- **As a** developer in FE or BE repos
85
+ **As a** developer
83
86
  **I want** [shared types/utilities/validators]
84
- **So that** [consistency across projects]
87
+ **So that** [consistency across services]
85
88
 
86
89
  **Acceptance Criteria**:
87
- - [ ] **AC-SHARED-US1-01**: [Type definition]
88
- - [ ] **AC-SHARED-US1-02**: [Validator/utility function]
90
+ - [ ] **AC-{{PREFIX_3}}-US1-01**: [Type definition]
91
+ - [ ] **AC-{{PREFIX_3}}-US1-02**: [Validator/utility function]
89
92
 
90
93
  ---
91
94