specweave 0.33.3 → 0.33.4
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.md +77 -19
- package/dist/src/cli/cleanup-zombies.js +8 -5
- package/dist/src/cli/cleanup-zombies.js.map +1 -1
- package/dist/src/config/types.d.ts +203 -1208
- package/dist/src/config/types.d.ts.map +1 -1
- package/dist/src/importers/jira-importer.d.ts +10 -0
- package/dist/src/importers/jira-importer.d.ts.map +1 -1
- package/dist/src/importers/jira-importer.js +55 -5
- package/dist/src/importers/jira-importer.js.map +1 -1
- package/dist/src/init/architecture/types.d.ts +33 -140
- package/dist/src/init/architecture/types.d.ts.map +1 -1
- package/dist/src/init/compliance/types.d.ts +30 -27
- package/dist/src/init/compliance/types.d.ts.map +1 -1
- package/dist/src/init/repo/types.d.ts +11 -34
- package/dist/src/init/repo/types.d.ts.map +1 -1
- package/dist/src/init/research/src/config/types.d.ts +15 -82
- package/dist/src/init/research/src/config/types.d.ts.map +1 -1
- package/dist/src/init/research/types.d.ts +38 -93
- package/dist/src/init/research/types.d.ts.map +1 -1
- package/dist/src/init/team/types.d.ts +4 -42
- package/dist/src/init/team/types.d.ts.map +1 -1
- package/dist/src/sync/closure-metrics.d.ts +102 -0
- package/dist/src/sync/closure-metrics.d.ts.map +1 -0
- package/dist/src/sync/closure-metrics.js +267 -0
- package/dist/src/sync/closure-metrics.js.map +1 -0
- package/dist/src/sync/sync-coordinator.d.ts +29 -0
- package/dist/src/sync/sync-coordinator.d.ts.map +1 -1
- package/dist/src/sync/sync-coordinator.js +153 -16
- package/dist/src/sync/sync-coordinator.js.map +1 -1
- package/dist/src/utils/notification-constants.d.ts +85 -0
- package/dist/src/utils/notification-constants.d.ts.map +1 -0
- package/dist/src/utils/notification-constants.js +129 -0
- package/dist/src/utils/notification-constants.js.map +1 -0
- package/dist/src/utils/platform-utils.d.ts +13 -3
- package/dist/src/utils/platform-utils.d.ts.map +1 -1
- package/dist/src/utils/platform-utils.js +17 -6
- package/dist/src/utils/platform-utils.js.map +1 -1
- package/package.json +1 -1
- package/plugins/specweave/commands/specweave-increment.md +46 -0
- package/plugins/specweave/commands/specweave-jobs.md +153 -8
- package/plugins/specweave/hooks/spec-project-validator.sh +24 -2
- package/plugins/specweave/hooks/universal/hook-wrapper.cmd +26 -26
- package/plugins/specweave/hooks/universal/session-start.cmd +16 -16
- package/plugins/specweave/hooks/universal/session-start.ps1 +16 -16
- package/plugins/specweave/scripts/session-watchdog.sh +278 -130
- package/plugins/specweave/skills/increment-planner/SKILL.md +48 -18
- package/plugins/specweave/skills/increment-planner/templates/spec-multi-project.md +27 -14
- package/plugins/specweave/skills/increment-planner/templates/spec-single-project.md +16 -5
- package/plugins/specweave/skills/spec-generator/SKILL.md +74 -15
- package/plugins/specweave-github/hooks/.specweave/logs/hooks-debug.log +0 -738
- package/plugins/specweave-release/hooks/.specweave/logs/dora-tracking.log +0 -1107
|
@@ -8,17 +8,18 @@ created: {{DATE}}
|
|
|
8
8
|
structure: user-stories
|
|
9
9
|
test_mode: {{TEST_MODE}}
|
|
10
10
|
coverage_target: {{COVERAGE_TARGET}}
|
|
11
|
-
# MANDATORY:
|
|
12
|
-
#
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
# MANDATORY: Must be RESOLVED values from "specweave context projects" output
|
|
12
|
+
# ⛔ NEVER use {{PROJECT_ID}} or {{BOARD_ID}} placeholders!
|
|
13
|
+
# For 2-level structures: BOTH project AND board are REQUIRED per US
|
|
14
|
+
project: {{RESOLVED_PROJECT}}
|
|
15
|
+
board: {{RESOLVED_BOARD}}
|
|
15
16
|
multi_project: true
|
|
16
17
|
projects:
|
|
17
|
-
- id: {{
|
|
18
|
+
- id: {{RESOLVED_PROJECT_FE}}
|
|
18
19
|
prefix: FE
|
|
19
|
-
- id: {{
|
|
20
|
+
- id: {{RESOLVED_PROJECT_BE}}
|
|
20
21
|
prefix: BE
|
|
21
|
-
- id: {{
|
|
22
|
+
- id: {{RESOLVED_PROJECT_SHARED}}
|
|
22
23
|
prefix: SHARED
|
|
23
24
|
---
|
|
24
25
|
|
|
@@ -30,13 +31,25 @@ projects:
|
|
|
30
31
|
|
|
31
32
|
## User Stories
|
|
32
33
|
|
|
33
|
-
<!--
|
|
34
|
+
<!--
|
|
35
|
+
⚠️ MANDATORY RESOLUTION (v0.34.0+):
|
|
36
|
+
1. Run: specweave context projects
|
|
37
|
+
2. Parse JSON output:
|
|
38
|
+
- level 1: projects[].id gives valid project IDs
|
|
39
|
+
- level 2: projects[].id + boardsByProject[project][].id gives project AND board IDs
|
|
40
|
+
3. Replace ALL placeholders with actual IDs from step 2
|
|
41
|
+
4. Each US MUST have **Project**: (and **Board**: for 2-level) with RESOLVED values
|
|
42
|
+
|
|
43
|
+
❌ FORBIDDEN: Using {{PROJECT_ID}}, {{BOARD_ID}} placeholders
|
|
44
|
+
❌ FORBIDDEN: Inventing project/board names
|
|
45
|
+
✅ REQUIRED: Use ONLY IDs from "specweave context projects" output
|
|
46
|
+
-->
|
|
34
47
|
|
|
35
48
|
### Frontend Stories
|
|
36
49
|
|
|
37
50
|
#### US-FE-001: [Story Title] (P1)
|
|
38
|
-
**Project**: {{
|
|
39
|
-
**Board**: {{
|
|
51
|
+
**Project**: {{RESOLVED_PROJECT}}
|
|
52
|
+
**Board**: {{RESOLVED_BOARD_FE}}
|
|
40
53
|
|
|
41
54
|
**As a** [user type]
|
|
42
55
|
**I want** [goal]
|
|
@@ -51,8 +64,8 @@ projects:
|
|
|
51
64
|
### Backend Stories
|
|
52
65
|
|
|
53
66
|
#### US-BE-001: [Story Title] (P1)
|
|
54
|
-
**Project**: {{
|
|
55
|
-
**Board**: {{
|
|
67
|
+
**Project**: {{RESOLVED_PROJECT}}
|
|
68
|
+
**Board**: {{RESOLVED_BOARD_BE}}
|
|
56
69
|
|
|
57
70
|
**As a** [system/frontend application]
|
|
58
71
|
**I want** [API endpoint/service goal]
|
|
@@ -67,8 +80,8 @@ projects:
|
|
|
67
80
|
### Shared Library Stories
|
|
68
81
|
|
|
69
82
|
#### US-SHARED-001: [Story Title] (P1)
|
|
70
|
-
**Project**: {{
|
|
71
|
-
**Board**: {{
|
|
83
|
+
**Project**: {{RESOLVED_PROJECT}}
|
|
84
|
+
**Board**: {{RESOLVED_BOARD_SHARED}}
|
|
72
85
|
|
|
73
86
|
**As a** developer in FE or BE repos
|
|
74
87
|
**I want** [shared types/utilities/validators]
|
|
@@ -8,8 +8,9 @@ created: {{DATE}}
|
|
|
8
8
|
structure: user-stories
|
|
9
9
|
test_mode: {{TEST_MODE}}
|
|
10
10
|
coverage_target: {{COVERAGE_TARGET}}
|
|
11
|
-
# MANDATORY:
|
|
12
|
-
|
|
11
|
+
# MANDATORY: Must be a RESOLVED value from "specweave context projects" output
|
|
12
|
+
# ⛔ NEVER use {{PROJECT_ID}} placeholder - always resolve BEFORE creating spec.md!
|
|
13
|
+
project: {{RESOLVED_PROJECT}}
|
|
13
14
|
---
|
|
14
15
|
|
|
15
16
|
# Feature: {{FEATURE_TITLE}}
|
|
@@ -20,10 +21,20 @@ project: {{PROJECT_ID}}
|
|
|
20
21
|
|
|
21
22
|
## User Stories
|
|
22
23
|
|
|
23
|
-
<!--
|
|
24
|
+
<!--
|
|
25
|
+
⚠️ MANDATORY RESOLUTION (v0.34.0+):
|
|
26
|
+
1. Run: specweave context projects
|
|
27
|
+
2. Parse JSON: projects[].id gives valid project IDs
|
|
28
|
+
3. Replace {{RESOLVED_PROJECT}} with actual ID from step 2
|
|
29
|
+
4. Each US MUST have **Project**: field with RESOLVED value
|
|
30
|
+
|
|
31
|
+
❌ FORBIDDEN: Using {{PROJECT_ID}} placeholder
|
|
32
|
+
❌ FORBIDDEN: Inventing project names
|
|
33
|
+
✅ REQUIRED: Use ONLY IDs from "specweave context projects" output
|
|
34
|
+
-->
|
|
24
35
|
|
|
25
36
|
### US-001: [Story Title] (P1)
|
|
26
|
-
**Project**: {{
|
|
37
|
+
**Project**: {{RESOLVED_PROJECT}}
|
|
27
38
|
|
|
28
39
|
**As a** [user type]
|
|
29
40
|
**I want** [goal]
|
|
@@ -34,7 +45,7 @@ project: {{PROJECT_ID}}
|
|
|
34
45
|
- [ ] **AC-US1-02**: [Another criterion]
|
|
35
46
|
|
|
36
47
|
### US-002: [Story Title] (P2)
|
|
37
|
-
**Project**: {{
|
|
48
|
+
**Project**: {{RESOLVED_PROJECT}}
|
|
38
49
|
|
|
39
50
|
[Repeat structure - change Project per US if spanning multiple projects]
|
|
40
51
|
|
|
@@ -85,34 +85,93 @@ The LLM MUST resolve these from context - see RULE 0 in increment-planner.
|
|
|
85
85
|
|
|
86
86
|
---
|
|
87
87
|
|
|
88
|
+
### MANDATORY STEP 0: Get Project Context FIRST (v0.34.0+ BLOCKING!)
|
|
89
|
+
|
|
90
|
+
**⛔ YOU CANNOT GENERATE spec.md UNTIL YOU COMPLETE THIS STEP!**
|
|
91
|
+
|
|
92
|
+
**This step is BLOCKING - do not proceed until you have actual project/board IDs.**
|
|
93
|
+
|
|
94
|
+
**1. Run the context API command:**
|
|
95
|
+
```bash
|
|
96
|
+
specweave context projects
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**2. Parse the JSON output:**
|
|
100
|
+
```json
|
|
101
|
+
{
|
|
102
|
+
"level": 1,
|
|
103
|
+
"projects": [{"id": "frontend-app", "name": "Frontend App"}],
|
|
104
|
+
"detectionReason": "multiProject configuration"
|
|
105
|
+
}
|
|
106
|
+
```
|
|
107
|
+
For 2-level:
|
|
108
|
+
```json
|
|
109
|
+
{
|
|
110
|
+
"level": 2,
|
|
111
|
+
"projects": [{"id": "acme-corp", "name": "ACME Corp"}],
|
|
112
|
+
"boardsByProject": {
|
|
113
|
+
"acme-corp": [
|
|
114
|
+
{"id": "digital-ops", "name": "Digital Operations"},
|
|
115
|
+
{"id": "mobile-team", "name": "Mobile Team"}
|
|
116
|
+
]
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
**3. STORE the actual IDs for use in spec.md:**
|
|
122
|
+
```
|
|
123
|
+
RESOLVED_PROJECT = "frontend-app" // from projects[].id
|
|
124
|
+
RESOLVED_BOARD = "digital-ops" // from boardsByProject (2-level only)
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**4. Now generate spec.md using RESOLVED values (NEVER placeholders!)**
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
88
131
|
### Per-US Project Resolution (v0.33.0+ MANDATORY)
|
|
89
132
|
|
|
90
|
-
**🧠 USE
|
|
133
|
+
**🧠 USE CONTEXT API OUTPUT + LIVING DOCS TO RESOLVE PROJECT/BOARD:**
|
|
91
134
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
135
|
+
After running `specweave context projects`, you have the valid project/board IDs.
|
|
136
|
+
Now map each user story to the correct project:
|
|
137
|
+
|
|
138
|
+
**Resolution Flow:**
|
|
139
|
+
```
|
|
140
|
+
1. Get valid projects from context API: ["frontend-app", "backend-api", "shared"]
|
|
141
|
+
2. Analyze feature description for keywords
|
|
142
|
+
3. Map keywords to ACTUAL project IDs (from step 1, NOT generic terms!)
|
|
143
|
+
4. Assign each US to its project
|
|
144
|
+
```
|
|
97
145
|
|
|
98
146
|
**Resolution Example:**
|
|
99
147
|
```
|
|
148
|
+
Context API returned: projects = ["frontend-app", "backend-api", "shared"]
|
|
149
|
+
|
|
100
150
|
Feature: "Add OAuth login to React frontend"
|
|
101
|
-
Detected: "React", "frontend", "login"
|
|
151
|
+
Detected keywords: "React", "frontend", "login"
|
|
102
152
|
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
153
|
+
Mapping:
|
|
154
|
+
- "frontend" keyword → matches "frontend-app" (from context API)
|
|
155
|
+
- "login" spans frontend + backend
|
|
106
156
|
|
|
107
|
-
|
|
157
|
+
Result:
|
|
108
158
|
US-001 (Login UI) → **Project**: frontend-app
|
|
109
159
|
US-002 (Auth API) → **Project**: backend-api
|
|
110
160
|
```
|
|
111
161
|
|
|
112
|
-
**
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
162
|
+
**VALIDATION RULES:**
|
|
163
|
+
|
|
164
|
+
```
|
|
165
|
+
✅ REQUIRED: Run "specweave context projects" BEFORE generating spec.md
|
|
166
|
+
✅ REQUIRED: Use ONLY project IDs from the API response
|
|
167
|
+
✅ REQUIRED: Each US has explicit **Project**: field with resolved value
|
|
168
|
+
✅ REQUIRED: For 2-level, each US has explicit **Board**: field with resolved value
|
|
169
|
+
|
|
170
|
+
❌ FORBIDDEN: Generating spec.md without running context API first
|
|
171
|
+
❌ FORBIDDEN: Using {{PROJECT_ID}} or {{BOARD_ID}} placeholders
|
|
172
|
+
❌ FORBIDDEN: Using generic keywords as project names ("frontend" vs "frontend-app")
|
|
173
|
+
❌ FORBIDDEN: Inventing project names not in the API response
|
|
174
|
+
```
|
|
116
175
|
|
|
117
176
|
## Success Metrics
|
|
118
177
|
[How we'll measure success]
|