@codihaus/claude-skills 1.6.22 → 1.6.23

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@codihaus/claude-skills",
3
- "version": "1.6.22",
3
+ "version": "1.6.23",
4
4
  "description": "Claude Code skills for software development workflow",
5
5
  "main": "src/index.js",
6
6
  "bin": {
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: debrief
3
3
  description: Customer requirements → market-validated BRD with tiered features
4
- version: 4.0.0
4
+ version: 4.1.0
5
5
  ---
6
6
 
7
7
  # /debrief - Business Requirements Document
@@ -24,10 +24,11 @@ version: 4.0.0
24
24
  ## Usage
25
25
 
26
26
  ```bash
27
- /debrief "Customer wants..." # New project
28
- /debrief "Add {feature}" # Add feature
29
- /debrief --answers questionnaire.xlsx # Process answers
30
- /debrief --questionnaire-only # Questions only
27
+ /debrief "Customer wants..." # New project
28
+ /debrief "Add {feature}" # Add feature
29
+ /debrief --answers questionnaire.xlsx # Process answers
30
+ /debrief --generate-brd questionnaire.xlsx # Generate BRD from existing research
31
+ /debrief --questionnaire-only # Questions only
31
32
  ```
32
33
 
33
34
  ---
@@ -106,6 +107,7 @@ Keep use cases ~30 lines max. Business stakeholders scan in 30 seconds.
106
107
  - No `plans/brd/` → New Project
107
108
  - `plans/brd/` exists → Add Feature
108
109
  - `--answers {file}` → Process Answers
110
+ - `--generate-brd {file}` → Generate BRD from research
109
111
  - `--questionnaire-only` → Questions Only
110
112
 
111
113
  ---
@@ -14,6 +14,7 @@
14
14
 
15
15
  **Detection**:
16
16
  - `--answers {file}` → Process Answers mode
17
+ - `--generate-brd {file}` → Generate BRD mode
17
18
  - `--questionnaire-only` → Questionnaire Only mode
18
19
  - No `plans/brd/` → New Project mode
19
20
  - `plans/brd/` exists → Add Feature mode
@@ -31,12 +32,13 @@
31
32
 
32
33
  ### Context Gathering
33
34
 
34
- **Ask 5 questions** (AskUserQuestion):
35
+ **Ask 6 questions** (AskUserQuestion):
35
36
  1. Project type (new/existing codebase)
36
37
  2. Industry (SaaS/E-commerce/Marketplace/etc.)
37
38
  3. Target users (B2B/B2C/Internal)
38
39
  4. Constraints (timeline/budget/compliance/integrations)
39
40
  5. Scope tier (Core/Standard/Full)
41
+ 6. Research depth (Quick 5min / Deep 15-20min)
40
42
 
41
43
  **If existing codebase**: Scan for docs + features (Glob, Read)
42
44
 
@@ -48,15 +50,19 @@
48
50
 
49
51
  **Methodology**: See `research.md` for full process.
50
52
 
51
- **Comparison-first**:
53
+ **Quick** (5 min):
52
54
  - Find 2-3 comparison/alternative pages
53
55
  - Extract feature matrix
54
56
  - Initial tier hypothesis
55
57
 
56
- **Deep validation**:
57
- - Per feature: cross-validate with ecosystem + user signals
58
- - Classify tier (MVP/Standard/Advanced)
59
- - Collect evidence
58
+ **Deep** (15-20 min):
59
+ - Comparison pages (initial)
60
+ - Cross-validate with ecosystem + user signals
61
+ - Full tier classification with evidence
62
+
63
+ **After research, ask output preference**:
64
+ - Summary + Questionnaire (review first)
65
+ - Full BRD (write all files now)
60
66
 
61
67
  **Output**: Features with tier classification and evidence
62
68
 
@@ -121,13 +127,12 @@
121
127
 
122
128
  **Principle**: Always generate. Validate assumptions + fill gaps.
123
129
 
124
- **Include**:
125
- - **Validation questions**: "We found 9/10 competitors offer SSO. Confirm?"
126
- - **Open questions**: "What's max team size per account?"
127
-
128
- **Categories**: Validation, Business, Requirements, Constraints, Integration
130
+ **3 sheets**:
131
+ - **Summary**: Feature count, tier distribution, research stats
132
+ - **Questions**: Validation + open questions
133
+ - **References**: URLs by feature (comparison pages, reviews, ecosystems)
129
134
 
130
- **Output**: `features/{feature}/questionnaire-{date}.xlsx`
135
+ **Output**: `features/{feature}/questionnaire-{date}.xlsx` (permanent reference)
131
136
 
132
137
  ---
133
138
 
@@ -156,9 +161,10 @@
156
161
 
157
162
  ### Context Gathering
158
163
 
159
- **Ask 2 questions**:
164
+ **Ask 3 questions**:
160
165
  1. Feature name
161
166
  2. Scope tier (Core/Standard/Full)
167
+ 3. Research depth (Quick / Deep)
162
168
 
163
169
  **Duplicate check**: Read `docs-graph.json` if exists, warn if similar feature found
164
170
 
@@ -233,6 +239,24 @@
233
239
 
234
240
  ---
235
241
 
242
+ ## Generate BRD Mode
243
+
244
+ **Goal**: Generate full BRD from existing questionnaire research.
245
+
246
+ **Mindset**: Resumption mode. User reviewed Summary + Questionnaire, ready for full BRD.
247
+
248
+ ### Process
249
+
250
+ **Read questionnaire**:
251
+ - Summary sheet (features, tiers, research stats)
252
+ - References sheet (source URLs)
253
+
254
+ **Generate**: Full BRD structure from existing research (no re-research)
255
+
256
+ **Output**: BRD files + feature folders
257
+
258
+ ---
259
+
236
260
  ## Questionnaire Only Mode
237
261
 
238
262
  **Goal**: Generate questions without creating BRD.
@@ -303,6 +327,7 @@
303
327
  **Workflow adapts to mode**:
304
328
  - New Project: Full discovery and research
305
329
  - Add Feature: Focused research, duplicate check
330
+ - Generate BRD: Reads existing questionnaire research
306
331
  - Process Answers: Integration and validation
307
332
  - Change Request: Impact tracking
308
333
  - Questionnaire Only: Quick question generation
@@ -10,6 +10,18 @@ questions.json format:
10
10
  {
11
11
  "project_name": "Project Name",
12
12
  "date": "2024-01-20",
13
+ "research": {
14
+ "depth": "Deep",
15
+ "features_count": 12,
16
+ "tiers": {"MVP": 5, "Standard": 4, "Advanced": 3},
17
+ "sources_count": 23
18
+ },
19
+ "references": {
20
+ "Authentication": [
21
+ {"type": "Comparison", "url": "https://..."},
22
+ {"type": "G2 Reviews", "url": "https://..."}
23
+ ]
24
+ },
13
25
  "questions": [
14
26
  {
15
27
  "category": "Requirements",
@@ -119,14 +131,24 @@ def create_questionnaire(output_path: str, questions_data: dict):
119
131
 
120
132
  # Summary sheet
121
133
  ws_summary = wb.create_sheet("Summary", 0)
134
+ research = questions_data.get('research', {})
135
+ tiers = research.get('tiers', {})
136
+
122
137
  summary_data = [
123
138
  ("Project Questionnaire", ""),
124
139
  ("", ""),
125
140
  ("Project:", questions_data.get('project_name', '')),
126
141
  ("Generated:", questions_data.get('date', '')),
127
- ("Total Questions:", len(questions)),
128
142
  ("", ""),
129
- ("Priority Breakdown:", ""),
143
+ ("Research Summary:", ""),
144
+ ("Depth:", research.get('depth', 'N/A')),
145
+ ("Features:", research.get('features_count', 0)),
146
+ (" MVP:", tiers.get('MVP', 0)),
147
+ (" Standard:", tiers.get('Standard', 0)),
148
+ (" Advanced:", tiers.get('Advanced', 0)),
149
+ ("Sources:", research.get('sources_count', 0)),
150
+ ("", ""),
151
+ ("Questions:", len(questions)),
130
152
  ]
131
153
 
132
154
  # Count priorities
@@ -134,28 +156,8 @@ def create_questionnaire(output_path: str, questions_data: dict):
134
156
  optional_count = len(questions) - required_count
135
157
 
136
158
  summary_data.extend([
137
- ("Required:", required_count),
138
- ("Optional:", optional_count),
139
- ("", ""),
140
- ("Categories:", ""),
141
- ])
142
-
143
- # Count categories
144
- categories = {}
145
- for q in questions:
146
- cat = q.get('category', 'General')
147
- categories[cat] = categories.get(cat, 0) + 1
148
-
149
- for cat, count in sorted(categories.items()):
150
- summary_data.append((f" {cat}:", count))
151
-
152
- summary_data.extend([
153
- ("", ""),
154
- ("Instructions:", ""),
155
- ("1.", "Fill in the 'Answer' column for each question"),
156
- ("2.", "Required questions must be answered before proceeding"),
157
- ("3.", "Context/Source shows where this question originated"),
158
- ("4.", "Save and return this file when complete"),
159
+ (" Required:", required_count),
160
+ (" Optional:", optional_count),
159
161
  ])
160
162
 
161
163
  for row, (col1, col2) in enumerate(summary_data, 1):
@@ -169,6 +171,29 @@ def create_questionnaire(output_path: str, questions_data: dict):
169
171
  ws_summary.column_dimensions['A'].width = 25
170
172
  ws_summary.column_dimensions['B'].width = 40
171
173
 
174
+ # References sheet
175
+ references = questions_data.get('references', {})
176
+ if references:
177
+ ws_refs = wb.create_sheet("References")
178
+ ws_refs.cell(1, 1, "Feature").font = header_font
179
+ ws_refs.cell(1, 2, "Source Type").font = header_font
180
+ ws_refs.cell(1, 3, "URL").font = header_font
181
+ ws_refs.cell(1, 1).fill = header_fill
182
+ ws_refs.cell(1, 2).fill = header_fill
183
+ ws_refs.cell(1, 3).fill = header_fill
184
+
185
+ row = 2
186
+ for feature, sources in references.items():
187
+ for source in sources:
188
+ ws_refs.cell(row, 1, feature)
189
+ ws_refs.cell(row, 2, source.get('type', ''))
190
+ ws_refs.cell(row, 3, source.get('url', ''))
191
+ row += 1
192
+
193
+ ws_refs.column_dimensions['A'].width = 20
194
+ ws_refs.column_dimensions['B'].width = 20
195
+ ws_refs.column_dimensions['C'].width = 60
196
+
172
197
  # Save
173
198
  wb.save(output_path)
174
199
  print(f"Created: {output_path}")