specweave 1.0.35 → 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.
- package/dist/src/utils/structure-level-detector.d.ts.map +1 -1
- package/dist/src/utils/structure-level-detector.js +34 -1
- package/dist/src/utils/structure-level-detector.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/agents/pm/AGENT.md +48 -19
- package/plugins/specweave/hooks/v2/guards/spec-validation-guard.sh +30 -0
- package/plugins/specweave/skills/increment-planner/SKILL.md +56 -29
- package/plugins/specweave/skills/increment-planner/templates/spec-multi-project.md +37 -34
|
@@ -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;
|
|
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:
|
|
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.
|
|
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.
|
|
639
|
+
## 🌐 Multi-Project User Stories - Structure Level Detection (v0.35.4+)
|
|
640
640
|
|
|
641
|
-
**⚠️ CRITICAL:
|
|
641
|
+
**⚠️ CRITICAL: Detect Structure Level BEFORE Generating User Stories!**
|
|
642
642
|
|
|
643
|
-
|
|
643
|
+
### STEP 0C: Detect Structure Level (1-LEVEL vs 2-LEVEL)
|
|
644
644
|
|
|
645
|
-
|
|
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
|
-
|
|
651
|
-
|
|
648
|
+
specweave context projects
|
|
649
|
+
```
|
|
652
650
|
|
|
653
|
-
|
|
654
|
-
cat .specweave/config.json | jq '.sync.profiles[].config.areaPathMapping'
|
|
651
|
+
**Interpret the output:**
|
|
655
652
|
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
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
|
-
**
|
|
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
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
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:
|
|
833
|
+
#### 5A: 1-Level Structure (GitHub, Single Project, Multi-Repo without ADO/JIRA)
|
|
834
834
|
|
|
835
|
-
**
|
|
835
|
+
**USE THIS WHEN**: `specweave context projects` returns `level: 1`
|
|
836
836
|
|
|
837
|
-
|
|
838
|
-
-
|
|
839
|
-
-
|
|
840
|
-
-
|
|
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
|
-
|
|
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
|
-
**
|
|
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
|
-
|
|
847
|
-
|
|
848
|
-
-
|
|
849
|
-
|
|
850
|
-
|
|
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
|
-
|
|
861
|
-
```
|
|
862
|
-
|
|
863
|
-
**Project**:
|
|
864
|
-
|
|
865
|
-
|
|
866
|
-
|
|
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
|
|
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: {{
|
|
16
|
-
prefix:
|
|
17
|
-
- id: {{
|
|
18
|
-
prefix:
|
|
19
|
-
- id: {{
|
|
20
|
-
prefix:
|
|
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
|
-
⛔
|
|
33
|
+
⛔ STRUCTURE-LEVEL DETECTION IS CRITICAL!
|
|
33
34
|
|
|
34
|
-
BEFORE
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
###
|
|
50
|
+
### {{PREFIX_1}} Service Stories
|
|
45
51
|
|
|
46
|
-
#### US-
|
|
47
|
-
**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-
|
|
56
|
-
- [ ] **AC-
|
|
60
|
+
- [ ] **AC-{{PREFIX_1}}-US1-01**: [Specific, testable criterion]
|
|
61
|
+
- [ ] **AC-{{PREFIX_1}}-US1-02**: [Another criterion]
|
|
57
62
|
|
|
58
63
|
---
|
|
59
64
|
|
|
60
|
-
###
|
|
65
|
+
### {{PREFIX_2}} Service Stories
|
|
61
66
|
|
|
62
|
-
#### US-
|
|
63
|
-
**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-
|
|
72
|
-
- [ ] **AC-
|
|
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
|
-
###
|
|
80
|
+
### {{PREFIX_3}} Service Stories
|
|
77
81
|
|
|
78
|
-
#### US-
|
|
79
|
-
**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
|
|
85
|
+
**As a** developer
|
|
83
86
|
**I want** [shared types/utilities/validators]
|
|
84
|
-
**So that** [consistency across
|
|
87
|
+
**So that** [consistency across services]
|
|
85
88
|
|
|
86
89
|
**Acceptance Criteria**:
|
|
87
|
-
- [ ] **AC-
|
|
88
|
-
- [ ] **AC-
|
|
90
|
+
- [ ] **AC-{{PREFIX_3}}-US1-01**: [Type definition]
|
|
91
|
+
- [ ] **AC-{{PREFIX_3}}-US1-02**: [Validator/utility function]
|
|
89
92
|
|
|
90
93
|
---
|
|
91
94
|
|