@codihaus/claude-skills 1.6.24 → 1.6.26
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 +1 -1
- package/skills/debrief/SKILL.md +49 -43
- package/skills/debrief/references/codes.md +1 -102
- package/skills/debrief/references/research.md +32 -14
- package/skills/debrief/references/templates/brd-references.md +0 -16
- package/skills/debrief/references/templates/feature-references.md +0 -10
- package/skills/debrief/references/workflow.md +95 -151
- package/skills/debrief/scripts/generate_questionnaire.py +26 -0
- package/src/commands/update.js +57 -2
- package/src/utils/skills.js +24 -0
package/package.json
CHANGED
package/skills/debrief/SKILL.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: debrief
|
|
3
|
-
description: Customer requirements →
|
|
4
|
-
version:
|
|
3
|
+
description: Customer requirements → questionnaire (default) or BRD (with --answers flag)
|
|
4
|
+
version: 5.2.0
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
# /debrief - Business Requirements Document
|
|
@@ -24,43 +24,42 @@ version: 4.2.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 --generate-brd questionnaire.xlsx # Generate BRD from
|
|
31
|
-
/debrief --questionnaire-only # Questions only
|
|
27
|
+
/debrief "Customer wants..." # New project → questionnaire output
|
|
28
|
+
/debrief "Add {feature}" # Add feature → questionnaire output
|
|
29
|
+
/debrief --answers questionnaire.xlsx # Process answers → CREATE BRD
|
|
30
|
+
/debrief --generate-brd questionnaire.xlsx # Generate BRD from research
|
|
32
31
|
```
|
|
33
32
|
|
|
33
|
+
**Key principle**:
|
|
34
|
+
- **Without flags**: ONLY outputs questionnaire (no BRD)
|
|
35
|
+
- **With --answers or --generate-brd**: Creates BRD files
|
|
36
|
+
|
|
34
37
|
---
|
|
35
38
|
|
|
36
|
-
## Output
|
|
39
|
+
## Output
|
|
37
40
|
|
|
38
|
-
**
|
|
39
|
-
- README.md (all features index)
|
|
40
|
-
- context.md (stakeholders, users, constraints)
|
|
41
|
-
- references.md (industry, compliance, competitor overview)
|
|
42
|
-
- use-cases/{feature}/ (all use cases, grouped)
|
|
43
|
-
- changelog.md
|
|
41
|
+
**Default (no flags)**: `questionnaire-{date}.xlsx` only (3 sheets: Summary, Questions, References)
|
|
44
42
|
|
|
45
|
-
**
|
|
46
|
-
-
|
|
47
|
-
-
|
|
48
|
-
-
|
|
43
|
+
**With --answers or --generate-brd**:
|
|
44
|
+
- `plans/brd/` - Project-wide BRD files
|
|
45
|
+
- `plans/brd/use-cases/` - Use cases by feature
|
|
46
|
+
- `plans/features/{feature}/` - Feature-specific files
|
|
49
47
|
|
|
50
48
|
---
|
|
51
49
|
|
|
52
50
|
## Key Principles
|
|
53
51
|
|
|
54
|
-
### 1.
|
|
52
|
+
### 1. Questionnaire First (Default)
|
|
55
53
|
|
|
56
|
-
**
|
|
57
|
-
|
|
54
|
+
**Default behavior (no flags)**:
|
|
55
|
+
- ALWAYS output: Summary + Questionnaire (3 sheets Excel)
|
|
56
|
+
- NEVER auto-create: BRD files, use cases, feature folders
|
|
58
57
|
|
|
59
|
-
**BRD creation
|
|
60
|
-
- `--answers questionnaire.xlsx`
|
|
61
|
-
- `--generate-brd questionnaire.xlsx`
|
|
58
|
+
**BRD creation (explicit flags)**:
|
|
59
|
+
- `--answers questionnaire.xlsx` → Creates BRD after customer fills it
|
|
60
|
+
- `--generate-brd questionnaire.xlsx` → Creates BRD from existing research
|
|
62
61
|
|
|
63
|
-
**Why**: User reviews research first, validates with customer,
|
|
62
|
+
**Why**: User reviews research first, validates with customer, THEN creates BRD.
|
|
64
63
|
|
|
65
64
|
### 2. Business Focus ONLY
|
|
66
65
|
|
|
@@ -78,22 +77,28 @@ version: 4.2.0
|
|
|
78
77
|
|
|
79
78
|
**If you mention files, code, APIs, or tech → YOU ARE DOING IT WRONG.**
|
|
80
79
|
|
|
81
|
-
### 3.
|
|
80
|
+
### 3. Deep Research + Revalidation (ALWAYS)
|
|
82
81
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
-
|
|
82
|
+
**Always thorough** (regardless of scope tier):
|
|
83
|
+
1. Comparison pages (feature matrix)
|
|
84
|
+
2. **Multi-source revalidation** (MANDATORY):
|
|
85
|
+
- Ecosystems (Chrome, WordPress, GitHub, NPM)
|
|
86
|
+
- User signals (Reddit, reviews, forums)
|
|
87
|
+
- Competitor direct (pricing, features)
|
|
88
|
+
3. Full evidence per feature (3+ source types)
|
|
86
89
|
|
|
87
|
-
|
|
90
|
+
**No shortcuts**: MVP/Standard/Full all get same deep research + revalidation.
|
|
88
91
|
|
|
89
|
-
### 4. Questionnaire =
|
|
92
|
+
### 4. Questionnaire = Decision Tool
|
|
90
93
|
|
|
91
|
-
**3 sheets**:
|
|
92
|
-
- Summary (
|
|
94
|
+
**3 sheets with evidence**:
|
|
95
|
+
- Summary (features count, tier breakdown, research stats)
|
|
93
96
|
- Questions (validation + open)
|
|
94
|
-
- References (URLs)
|
|
97
|
+
- References (URLs, evidence per feature)
|
|
98
|
+
|
|
99
|
+
**Purpose**: User reviews evidence, makes decisions, validates with customer.
|
|
95
100
|
|
|
96
|
-
|
|
101
|
+
Then create BRD via `--answers` or `--generate-brd`.
|
|
97
102
|
|
|
98
103
|
---
|
|
99
104
|
|
|
@@ -102,19 +107,20 @@ Customer reviews, answers, returns file. Then create BRD via `--answers`.
|
|
|
102
107
|
**See** `references/workflow.md` for detailed steps.
|
|
103
108
|
|
|
104
109
|
**Modes**:
|
|
105
|
-
-
|
|
106
|
-
-
|
|
107
|
-
- `--answers
|
|
108
|
-
- `--generate-brd
|
|
109
|
-
|
|
110
|
+
- New Project: Research + questionnaire (no BRD)
|
|
111
|
+
- Add Feature: Research + questionnaire (no BRD)
|
|
112
|
+
- Process Answers (`--answers`): Create BRD from filled questionnaire
|
|
113
|
+
- Generate BRD (`--generate-brd`): Create BRD from research
|
|
114
|
+
|
|
115
|
+
**Default**: Questionnaire only. BRD requires explicit flag.
|
|
110
116
|
|
|
111
117
|
---
|
|
112
118
|
|
|
113
|
-
## Market Research
|
|
119
|
+
## Market Research (Always Deep)
|
|
114
120
|
|
|
115
|
-
**See** `references/
|
|
121
|
+
**See** `references/research.md`.
|
|
116
122
|
|
|
117
|
-
**
|
|
123
|
+
**Always deep**: Comparison + ecosystems + user signals + full evidence.
|
|
118
124
|
|
|
119
125
|
**Tiers**:
|
|
120
126
|
- **MVP**: 80%+ competitors, free tier, high demand
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Reference Codes
|
|
2
2
|
|
|
3
|
-
Quick reference for use case naming
|
|
3
|
+
Quick reference for use case naming.
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -32,104 +32,3 @@ Standard codes for `UC-{GROUP}-{NNN}-{slug}.md` naming.
|
|
|
32
32
|
**Custom codes**: Define project-specific codes in BRD README (3-5 chars, obvious meaning).
|
|
33
33
|
|
|
34
34
|
**Principle**: Group by user intent, not implementation (PAY not STRIPE, USER not DATABASE).
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## Codebase Discovery Patterns
|
|
39
|
-
|
|
40
|
-
For existing codebase scanning (detect features and tech stack).
|
|
41
|
-
|
|
42
|
-
### Frontend File Patterns
|
|
43
|
-
|
|
44
|
-
**Include**:
|
|
45
|
-
```
|
|
46
|
-
**/*.vue # Vue.js
|
|
47
|
-
**/*.tsx, **/*.jsx # React / Next.js
|
|
48
|
-
**/pages/**/* # Routes
|
|
49
|
-
**/app/**/page.tsx # Next.js App Router
|
|
50
|
-
**/*.svelte # Svelte
|
|
51
|
-
**/*.component.ts # Angular
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
**Exclude**:
|
|
55
|
-
```
|
|
56
|
-
node_modules/**, dist/**, build/**, .next/**, .nuxt/**
|
|
57
|
-
*.min.js, *.bundle.js, *.chunk.js
|
|
58
|
-
**/*.test.*, **/*.spec.*, __tests__/**
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
---
|
|
62
|
-
|
|
63
|
-
### Feature Inference from Files
|
|
64
|
-
|
|
65
|
-
Map file/folder names to features:
|
|
66
|
-
|
|
67
|
-
| Pattern | Feature |
|
|
68
|
-
|---------|---------|
|
|
69
|
-
| `auth/`, `login.*`, `signin.*` | Authentication |
|
|
70
|
-
| `user/`, `profile.*`, `account.*` | User Management |
|
|
71
|
-
| `dashboard.*` | Dashboard |
|
|
72
|
-
| `payment/`, `checkout.*`, `billing.*` | Payments |
|
|
73
|
-
| `subscription/`, `plans.*` | Subscriptions |
|
|
74
|
-
| `admin/` | Admin Panel |
|
|
75
|
-
| `notification/`, `alerts/` | Notifications |
|
|
76
|
-
| `search.*` | Search |
|
|
77
|
-
| `cart.*`, `basket.*` | Shopping Cart |
|
|
78
|
-
| `order/`, `orders/` | Orders |
|
|
79
|
-
| `product/`, `catalog/` | Products |
|
|
80
|
-
| `message/`, `chat/`, `inbox/` | Messaging |
|
|
81
|
-
| `report/`, `analytics/` | Reporting |
|
|
82
|
-
| `upload/`, `files/`, `media/` | File Management |
|
|
83
|
-
| `team/`, `organization/` | Team Management |
|
|
84
|
-
| `onboarding/`, `wizard/`, `setup/` | Onboarding |
|
|
85
|
-
| `help/`, `support/`, `faq/` | Help/Support |
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
### Tech Stack Detection
|
|
90
|
-
|
|
91
|
-
**Package files**:
|
|
92
|
-
```
|
|
93
|
-
package.json → Node.js / JavaScript
|
|
94
|
-
requirements.txt → Python
|
|
95
|
-
Gemfile → Ruby
|
|
96
|
-
go.mod → Go
|
|
97
|
-
Cargo.toml → Rust
|
|
98
|
-
composer.json → PHP
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
**Framework detection** (from package.json dependencies):
|
|
102
|
-
- `next` → Next.js
|
|
103
|
-
- `nuxt` → Nuxt.js
|
|
104
|
-
- `vue` → Vue.js
|
|
105
|
-
- `react` → React
|
|
106
|
-
- `@angular/core` → Angular
|
|
107
|
-
- `svelte` → Svelte
|
|
108
|
-
- `express` → Express.js
|
|
109
|
-
- `nestjs` → NestJS
|
|
110
|
-
|
|
111
|
-
---
|
|
112
|
-
|
|
113
|
-
### Documentation Patterns
|
|
114
|
-
|
|
115
|
-
Look for existing docs:
|
|
116
|
-
```
|
|
117
|
-
README.md, CLAUDE.md, CONTRIBUTING.md
|
|
118
|
-
docs/**/*.md
|
|
119
|
-
plans/**/*.md
|
|
120
|
-
specifications/**/*.md
|
|
121
|
-
.github/**/*.md
|
|
122
|
-
```
|
|
123
|
-
|
|
124
|
-
---
|
|
125
|
-
|
|
126
|
-
## Discovery Strategy
|
|
127
|
-
|
|
128
|
-
**For existing codebase**:
|
|
129
|
-
1. Find package.json → Detect framework
|
|
130
|
-
2. Glob frontend files → List pages/components
|
|
131
|
-
3. Match patterns → Infer features
|
|
132
|
-
4. Read docs (README, CLAUDE.md)
|
|
133
|
-
5. Summarize in context.md
|
|
134
|
-
|
|
135
|
-
**Output**: Features table with status (exists/missing), tech stack summary
|
|
@@ -2,15 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
**Mindset**: Evidence-based validation. Features classified by market standards, not personal judgment.
|
|
4
4
|
|
|
5
|
-
**Methodology**: Comparison-first →
|
|
5
|
+
**Methodology**: Comparison-first → Multi-source revalidation (ALWAYS) → Tier classification
|
|
6
6
|
|
|
7
|
-
**Expected Outcome**: Features with tier (MVP/Standard/Advanced) backed by evidence
|
|
7
|
+
**Expected Outcome**: Features with tier (MVP/Standard/Advanced) backed by evidence from multiple sources.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
|
-
##
|
|
11
|
+
## Research Flow (ALWAYS Deep)
|
|
12
12
|
|
|
13
|
-
|
|
13
|
+
**No quick mode.** Always do full research with multi-source revalidation, regardless of scope tier.
|
|
14
|
+
|
|
15
|
+
### Step 1: Comparison-First Approach
|
|
14
16
|
|
|
15
17
|
**Start here** - one comparison page = 10 competitors analyzed:
|
|
16
18
|
|
|
@@ -30,7 +32,19 @@
|
|
|
30
32
|
|
|
31
33
|
---
|
|
32
34
|
|
|
33
|
-
###
|
|
35
|
+
### Step 2: Multi-Source Revalidation (MANDATORY)
|
|
36
|
+
|
|
37
|
+
**Always revalidate** across multiple source types for every feature:
|
|
38
|
+
- Comparison pages (initial)
|
|
39
|
+
- Ecosystems (Chrome, WordPress, GitHub, NPM)
|
|
40
|
+
- User signals (Reddit, G2 reviews, forums)
|
|
41
|
+
- Competitor direct (pricing pages, feature pages)
|
|
42
|
+
|
|
43
|
+
**No shortcuts.** All tiers (MVP/Standard/Full) require full revalidation.
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
### Step 3: Tier Classification
|
|
34
48
|
|
|
35
49
|
**MVP** (80%+ competitors, high demand):
|
|
36
50
|
- Present in 8+ out of 10 competitors
|
|
@@ -67,7 +81,7 @@ Per feature, collect:
|
|
|
67
81
|
|
|
68
82
|
---
|
|
69
83
|
|
|
70
|
-
##
|
|
84
|
+
## Revalidation Sources (ALWAYS Use Multiple)
|
|
71
85
|
|
|
72
86
|
### Comparison & Alternatives (Primary)
|
|
73
87
|
|
|
@@ -135,9 +149,11 @@ Per feature, collect:
|
|
|
135
149
|
|
|
136
150
|
---
|
|
137
151
|
|
|
138
|
-
## Methodology
|
|
152
|
+
## Methodology (ALWAYS Deep)
|
|
139
153
|
|
|
140
|
-
|
|
154
|
+
**Process**: Always execute both phases regardless of scope tier (MVP/Standard/Full).
|
|
155
|
+
|
|
156
|
+
### Phase 1: Comparison Scan
|
|
141
157
|
|
|
142
158
|
**Goal**: Extract feature matrix from comparison pages.
|
|
143
159
|
|
|
@@ -151,17 +167,19 @@ Per feature, collect:
|
|
|
151
167
|
|
|
152
168
|
---
|
|
153
169
|
|
|
154
|
-
### Phase 2:
|
|
170
|
+
### Phase 2: Multi-Source Revalidation (MANDATORY)
|
|
155
171
|
|
|
156
|
-
**Goal**: Validate tier with evidence from
|
|
172
|
+
**Goal**: Validate tier with evidence from MULTIPLE source types.
|
|
157
173
|
|
|
158
|
-
**
|
|
174
|
+
**ALWAYS cross-validate** across source categories:
|
|
159
175
|
- Comparison pages (initial)
|
|
160
|
-
-
|
|
161
|
-
- User signals (Reddit, reviews)
|
|
176
|
+
- Ecosystems (Chrome, WordPress, GitHub, NPM)
|
|
177
|
+
- User signals (Reddit, reviews, forums)
|
|
162
178
|
- Competitor direct (pricing, features)
|
|
163
179
|
|
|
164
|
-
**
|
|
180
|
+
**No shortcuts**: Every feature needs multi-source validation, even for MVP scope.
|
|
181
|
+
|
|
182
|
+
**Output**: Tier classification with evidence from 3+ source types
|
|
165
183
|
|
|
166
184
|
---
|
|
167
185
|
|
|
@@ -52,22 +52,6 @@
|
|
|
52
52
|
|
|
53
53
|
---
|
|
54
54
|
|
|
55
|
-
## Implementation Resources
|
|
56
|
-
|
|
57
|
-
> **For Engineers**: General documentation (feature-specific docs in feature folders)
|
|
58
|
-
|
|
59
|
-
### Platform Documentation
|
|
60
|
-
| Technology | Link | Purpose |
|
|
61
|
-
|------------|------|---------|
|
|
62
|
-
| {Platform/Service} | [Docs](url) | {General purpose} |
|
|
63
|
-
|
|
64
|
-
### Industry Examples
|
|
65
|
-
| Company | Link | What to Learn |
|
|
66
|
-
|---------|------|---------------|
|
|
67
|
-
| {Company} | [Example](url) | {General pattern} |
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
55
|
## Notes
|
|
72
56
|
|
|
73
57
|
**Project Goals**:
|
|
@@ -80,16 +80,6 @@
|
|
|
80
80
|
|
|
81
81
|
---
|
|
82
82
|
|
|
83
|
-
## Implementation Resources
|
|
84
|
-
|
|
85
|
-
> **For Engineers**: Links specific to this feature
|
|
86
|
-
|
|
87
|
-
| Topic | Link | Purpose |
|
|
88
|
-
|-------|------|---------|
|
|
89
|
-
| {Service} {Feature} API | [Docs](url) | {Implementation} |
|
|
90
|
-
|
|
91
|
-
---
|
|
92
|
-
|
|
93
83
|
## Open Questions
|
|
94
84
|
|
|
95
85
|
- {Question requiring customer input}
|
|
@@ -2,23 +2,21 @@
|
|
|
2
2
|
|
|
3
3
|
**Mindset**: Business analyst. Focus on WHAT and WHY, defer HOW to /dev-specs.
|
|
4
4
|
|
|
5
|
-
**Methodology**: Mode detection → Context gathering → Research
|
|
5
|
+
**Methodology**: Mode detection → Context gathering → Research (deep) → Questionnaire
|
|
6
6
|
|
|
7
|
-
**Expected Outcome**:
|
|
7
|
+
**Expected Outcome**: Questionnaire with deep research evidence (Summary + Questions + References).
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
## Mode Detection
|
|
12
12
|
|
|
13
|
-
**Principle**:
|
|
13
|
+
**Principle**: Default outputs questionnaire only. BRD creation requires explicit flag.
|
|
14
14
|
|
|
15
15
|
**Detection**:
|
|
16
|
-
- `--answers {file}` → Process Answers mode
|
|
17
|
-
- `--generate-brd {file}` → Generate BRD mode
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
- `plans/brd/` exists → Add Feature mode
|
|
21
|
-
- Modifying confirmed UC → Change Request mode
|
|
16
|
+
- `--answers {file}` → Process Answers mode (CREATE BRD)
|
|
17
|
+
- `--generate-brd {file}` → Generate BRD mode (CREATE BRD)
|
|
18
|
+
- New customer request → New Project mode (questionnaire only)
|
|
19
|
+
- Adding to existing research → Add Feature mode (questionnaire only)
|
|
22
20
|
|
|
23
21
|
**Action**: Execute appropriate workflow for detected mode.
|
|
24
22
|
|
|
@@ -37,90 +35,33 @@
|
|
|
37
35
|
- Reuse → Switch to Generate BRD mode
|
|
38
36
|
- Fresh → Continue with new research
|
|
39
37
|
|
|
40
|
-
**Ask
|
|
41
|
-
1.
|
|
42
|
-
2.
|
|
43
|
-
3.
|
|
44
|
-
4.
|
|
45
|
-
5. Scope tier (Core/Standard/Full)
|
|
46
|
-
6. Research depth (Quick 5min / Deep 15-20min)
|
|
47
|
-
|
|
48
|
-
**If existing codebase**: Scan for docs + features (Glob, Read)
|
|
38
|
+
**Ask 4 questions** (AskUserQuestion):
|
|
39
|
+
1. Industry (SaaS/E-commerce/Marketplace/etc.)
|
|
40
|
+
2. Target users (B2B/B2C/Internal)
|
|
41
|
+
3. Constraints (timeline/budget/compliance/integrations)
|
|
42
|
+
4. **Scope tier** (Core/Standard/Full) - determines WHICH features to include
|
|
49
43
|
|
|
50
44
|
**Output**: Context understanding, scope alignment
|
|
51
45
|
|
|
52
46
|
---
|
|
53
47
|
|
|
54
|
-
### Market Research
|
|
55
|
-
|
|
56
|
-
**Methodology**: See `research.md` for full process.
|
|
57
|
-
|
|
58
|
-
**Quick** (5 min):
|
|
59
|
-
- Find 2-3 comparison/alternative pages
|
|
60
|
-
- Extract feature matrix
|
|
61
|
-
- Initial tier hypothesis
|
|
62
|
-
|
|
63
|
-
**Deep** (15-20 min):
|
|
64
|
-
- Comparison pages (initial)
|
|
65
|
-
- Cross-validate with ecosystem + user signals
|
|
66
|
-
- Full tier classification with evidence
|
|
67
|
-
|
|
68
|
-
**Output**: Features with tier classification and evidence
|
|
69
|
-
|
|
70
|
-
---
|
|
71
|
-
|
|
72
|
-
### Feature Sequencing
|
|
73
|
-
|
|
74
|
-
**Principle**: Order by dependencies within each tier.
|
|
75
|
-
|
|
76
|
-
**Common patterns**:
|
|
77
|
-
- Create before operate (signup before login)
|
|
78
|
-
- Auth before features (login before projects)
|
|
79
|
-
- Basic before advanced (CRUD before bulk operations)
|
|
80
|
-
- Data before analytics (tracking before dashboards)
|
|
81
|
-
- Core before extensions (email before templates)
|
|
82
|
-
|
|
83
|
-
**Validation**: No forward dependencies (UC-001 doesn't depend on UC-002)
|
|
84
|
-
|
|
85
|
-
**Output**: Sequenced feature list (UC-001, UC-002, UC-003...)
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
### Use Case Generation
|
|
90
|
-
|
|
91
|
-
**Principle**: Lean 80/20 format (~30 lines).
|
|
92
|
-
|
|
93
|
-
**Include (20%)**:
|
|
94
|
-
- Story (1 line)
|
|
95
|
-
- Critical acceptance criteria (3-5 bullets)
|
|
96
|
-
- Key business rules (constraints, limits)
|
|
97
|
-
- Open questions (blockers)
|
|
98
|
-
|
|
99
|
-
**Defer to /dev-specs (80%)**:
|
|
100
|
-
- Detailed flows, integrations, edge cases, UI/UX
|
|
48
|
+
### Market Research (ALWAYS Deep + Revalidation)
|
|
101
49
|
|
|
102
|
-
**
|
|
103
|
-
|
|
104
|
-
**Output**: Lean use cases in `brd/use-cases/{feature}/UC-{GROUP}-{NNN}-{slug}.md`
|
|
50
|
+
**CRITICAL**: After scope tier chosen, ALWAYS do deep research + multi-source revalidation.
|
|
105
51
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
### BRD Structure
|
|
109
|
-
|
|
110
|
-
**Project-wide** (`brd/`):
|
|
111
|
-
- README.md (all features index)
|
|
112
|
-
- context.md (stakeholders, users, constraints)
|
|
113
|
-
- references.md (industry, compliance, competitor overview)
|
|
114
|
-
- changelog.md
|
|
52
|
+
**Methodology**: See `research.md` for full process.
|
|
115
53
|
|
|
116
|
-
**
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
-
|
|
54
|
+
**Always execute** (same process for ALL scope tiers):
|
|
55
|
+
1. **Phase 1**: Comparison pages (feature matrix extraction)
|
|
56
|
+
2. **Phase 2**: Multi-source revalidation (MANDATORY)
|
|
57
|
+
- Ecosystems (Chrome, WordPress, GitHub, NPM)
|
|
58
|
+
- User signals (Reddit, reviews, forums)
|
|
59
|
+
- Competitor direct (pricing, features)
|
|
60
|
+
3. Full tier classification with evidence from 3+ source types
|
|
120
61
|
|
|
121
|
-
**
|
|
62
|
+
**No shortcuts**: Core/Standard/Full scope all get identical deep research + revalidation process.
|
|
122
63
|
|
|
123
|
-
**Output**:
|
|
64
|
+
**Output**: Features with tier classification and multi-source evidence
|
|
124
65
|
|
|
125
66
|
---
|
|
126
67
|
|
|
@@ -150,8 +91,7 @@
|
|
|
150
91
|
**Next steps**:
|
|
151
92
|
1. Review questionnaire
|
|
152
93
|
2. Send to customer for answers
|
|
153
|
-
3. After answers: `/debrief --answers questionnaire-{date}.xlsx`
|
|
154
|
-
4. BRD will be created from answers
|
|
94
|
+
3. After answers: `/debrief --answers questionnaire-{date}.xlsx` to create BRD
|
|
155
95
|
|
|
156
96
|
---
|
|
157
97
|
|
|
@@ -163,10 +103,9 @@
|
|
|
163
103
|
|
|
164
104
|
### Context Gathering
|
|
165
105
|
|
|
166
|
-
**Ask
|
|
106
|
+
**Ask 2 questions**:
|
|
167
107
|
1. Feature name
|
|
168
108
|
2. Scope tier (Core/Standard/Full)
|
|
169
|
-
3. Research depth (Quick / Deep)
|
|
170
109
|
|
|
171
110
|
**Duplicate check**: Read `docs-graph.json` if exists, warn if similar feature found
|
|
172
111
|
|
|
@@ -188,97 +127,102 @@
|
|
|
188
127
|
|
|
189
128
|
## Process Answers Mode
|
|
190
129
|
|
|
130
|
+
**Trigger**: `/debrief --answers questionnaire.xlsx`
|
|
131
|
+
|
|
191
132
|
**Goal**: Create BRD from customer-answered questionnaire.
|
|
192
133
|
|
|
193
134
|
**Mindset**: BRD creation mode. Customer validated research, now create structure.
|
|
194
135
|
|
|
195
|
-
###
|
|
136
|
+
### Read Questionnaire
|
|
196
137
|
|
|
197
138
|
**Read questionnaire** (Excel file):
|
|
198
139
|
- Summary sheet (features, tiers, research)
|
|
199
140
|
- Questions sheet (customer answers)
|
|
200
141
|
- References sheet (source URLs)
|
|
201
142
|
|
|
202
|
-
|
|
203
|
-
- `brd/` files (README, context, references, changelog)
|
|
204
|
-
- `features/{feature}/` folders
|
|
205
|
-
- Use cases (lean format, sequenced)
|
|
206
|
-
|
|
207
|
-
**Incorporate answers**:
|
|
208
|
-
- Update use cases with customer answers
|
|
209
|
-
- Remove questions that were answered
|
|
210
|
-
- Keep unanswered questions in "Open Questions"
|
|
143
|
+
---
|
|
211
144
|
|
|
212
|
-
|
|
213
|
-
- If gaps remain → note in use cases
|
|
214
|
-
- If complete → mark UC status "Confirmed"
|
|
145
|
+
### Feature Sequencing
|
|
215
146
|
|
|
216
|
-
**
|
|
147
|
+
**Principle**: Order by dependencies within each tier.
|
|
217
148
|
|
|
218
|
-
|
|
149
|
+
**Common patterns**:
|
|
150
|
+
- Create before operate (signup before login)
|
|
151
|
+
- Auth before features (login before projects)
|
|
152
|
+
- Basic before advanced (CRUD before bulk operations)
|
|
153
|
+
- Data before analytics (tracking before dashboards)
|
|
154
|
+
- Core before extensions (email before templates)
|
|
219
155
|
|
|
220
|
-
|
|
156
|
+
**Validation**: No forward dependencies (UC-001 doesn't depend on UC-002)
|
|
221
157
|
|
|
222
|
-
**
|
|
158
|
+
**Output**: Sequenced feature list (UC-001, UC-002, UC-003...)
|
|
223
159
|
|
|
224
|
-
|
|
160
|
+
---
|
|
225
161
|
|
|
226
|
-
###
|
|
162
|
+
### Use Case Generation
|
|
227
163
|
|
|
228
|
-
**
|
|
229
|
-
- Change description
|
|
230
|
-
- Reason for change
|
|
231
|
-
- Impact analysis (affected UCs)
|
|
164
|
+
**Principle**: Lean 80/20 format (~30 lines).
|
|
232
165
|
|
|
233
|
-
**
|
|
166
|
+
**Include (20%)**:
|
|
167
|
+
- Story (1 line)
|
|
168
|
+
- Critical acceptance criteria (3-5 bullets)
|
|
169
|
+
- Key business rules (constraints, limits)
|
|
170
|
+
- Open questions (blockers)
|
|
234
171
|
|
|
235
|
-
**
|
|
172
|
+
**Defer to /dev-specs (80%)**:
|
|
173
|
+
- Detailed flows, integrations, edge cases, UI/UX
|
|
236
174
|
|
|
237
|
-
**
|
|
175
|
+
**Template**: `templates/use-case.md`
|
|
238
176
|
|
|
239
|
-
|
|
177
|
+
**Incorporate customer answers**:
|
|
178
|
+
- Update use cases with answers from questionnaire
|
|
179
|
+
- Remove answered questions from "Open Questions"
|
|
180
|
+
- Keep unanswered questions
|
|
240
181
|
|
|
241
|
-
|
|
182
|
+
**Output**: Lean use cases in `brd/use-cases/{feature}/UC-{GROUP}-{NNN}-{slug}.md`
|
|
242
183
|
|
|
243
|
-
|
|
184
|
+
---
|
|
244
185
|
|
|
245
|
-
|
|
186
|
+
### BRD Structure Creation
|
|
246
187
|
|
|
247
|
-
|
|
188
|
+
**Create project-wide** (`brd/`):
|
|
189
|
+
- README.md (all features index)
|
|
190
|
+
- context.md (stakeholders, users, constraints)
|
|
191
|
+
- references.md (industry, compliance, competitor overview)
|
|
192
|
+
- changelog.md
|
|
248
193
|
|
|
249
|
-
**
|
|
250
|
-
-
|
|
251
|
-
|
|
252
|
-
|
|
194
|
+
**Create feature-specific** (`features/{feature}/`):
|
|
195
|
+
- README.md (feature overview)
|
|
196
|
+
- references.md (market research, tier evidence from questionnaire)
|
|
197
|
+
- Move questionnaire here if not already
|
|
253
198
|
|
|
254
|
-
**
|
|
255
|
-
- Read Summary sheet (features, tiers, research stats)
|
|
256
|
-
- Read References sheet (source URLs)
|
|
257
|
-
- Generate BRD structure (no re-research)
|
|
199
|
+
**Templates**: `templates/brd-references.md`, `templates/feature-references.md`
|
|
258
200
|
|
|
259
|
-
**
|
|
260
|
-
-
|
|
261
|
-
-
|
|
201
|
+
**Check completeness**:
|
|
202
|
+
- If gaps remain → note in use cases
|
|
203
|
+
- If complete → mark UC status "Confirmed"
|
|
262
204
|
|
|
263
|
-
**Output**: BRD
|
|
205
|
+
**Output**: Full BRD structure + use cases
|
|
264
206
|
|
|
265
207
|
---
|
|
266
208
|
|
|
267
|
-
##
|
|
209
|
+
## Generate BRD Mode
|
|
268
210
|
|
|
269
|
-
**
|
|
211
|
+
**Trigger**: `/debrief --generate-brd questionnaire.xlsx`
|
|
270
212
|
|
|
271
|
-
**
|
|
213
|
+
**Goal**: Generate full BRD from existing questionnaire research.
|
|
272
214
|
|
|
273
|
-
|
|
215
|
+
**Mindset**: Resumption mode. User reviewed Summary + Questionnaire, ready for full BRD.
|
|
274
216
|
|
|
275
|
-
|
|
276
|
-
- Topic/feature name
|
|
277
|
-
- Custom questions (user provides)
|
|
217
|
+
### Process
|
|
278
218
|
|
|
279
|
-
**
|
|
219
|
+
**Execute same process as Process Answers mode**:
|
|
220
|
+
- Read questionnaire sheets
|
|
221
|
+
- Sequence features
|
|
222
|
+
- Generate use cases
|
|
223
|
+
- Create BRD structure
|
|
280
224
|
|
|
281
|
-
**Output**:
|
|
225
|
+
**Output**: BRD files + feature folders
|
|
282
226
|
|
|
283
227
|
---
|
|
284
228
|
|
|
@@ -331,17 +275,17 @@
|
|
|
331
275
|
|
|
332
276
|
## Summary
|
|
333
277
|
|
|
334
|
-
**Workflow
|
|
335
|
-
- New Project: Full discovery and research
|
|
336
|
-
- Add Feature: Focused research, duplicate check
|
|
337
|
-
-
|
|
338
|
-
-
|
|
339
|
-
|
|
340
|
-
|
|
278
|
+
**Workflow modes**:
|
|
279
|
+
- New Project: Full discovery and research → questionnaire (no BRD)
|
|
280
|
+
- Add Feature: Focused research, duplicate check → questionnaire (no BRD)
|
|
281
|
+
- Process Answers (`--answers`): Read filled questionnaire → CREATE BRD
|
|
282
|
+
- Generate BRD (`--generate-brd`): Read research questionnaire → CREATE BRD
|
|
283
|
+
|
|
284
|
+
**Default**: Questionnaire only. BRD creation requires explicit flag.
|
|
341
285
|
|
|
342
286
|
**Consistent principles**:
|
|
343
|
-
- Business focus (WHAT and WHY)
|
|
344
|
-
- Evidence-based validation
|
|
345
|
-
-
|
|
346
|
-
-
|
|
347
|
-
-
|
|
287
|
+
- Business focus (WHAT and WHY, never HOW)
|
|
288
|
+
- Evidence-based validation (multi-source)
|
|
289
|
+
- Always deep research + revalidation
|
|
290
|
+
- Customer validation via questionnaire
|
|
291
|
+
- BRD creation ONLY when user provides filled questionnaire
|
|
@@ -36,6 +36,32 @@ questions.json format:
|
|
|
36
36
|
|
|
37
37
|
import sys
|
|
38
38
|
import json
|
|
39
|
+
import subprocess
|
|
40
|
+
import os
|
|
41
|
+
|
|
42
|
+
# Check and install openpyxl if missing
|
|
43
|
+
def check_dependencies():
|
|
44
|
+
"""Check if openpyxl is installed, install if missing."""
|
|
45
|
+
try:
|
|
46
|
+
import openpyxl
|
|
47
|
+
except ImportError:
|
|
48
|
+
print("Installing required dependency: openpyxl")
|
|
49
|
+
|
|
50
|
+
# Detect pip command (pip3 or pip)
|
|
51
|
+
pip_cmd = 'pip3' if os.system('which pip3 > /dev/null 2>&1') == 0 else 'pip'
|
|
52
|
+
|
|
53
|
+
try:
|
|
54
|
+
subprocess.check_call([pip_cmd, 'install', 'openpyxl'],
|
|
55
|
+
stdout=subprocess.DEVNULL,
|
|
56
|
+
stderr=subprocess.DEVNULL)
|
|
57
|
+
print("✓ openpyxl installed successfully")
|
|
58
|
+
except subprocess.CalledProcessError:
|
|
59
|
+
print("✗ Failed to install openpyxl")
|
|
60
|
+
print(f"Please run: {pip_cmd} install openpyxl")
|
|
61
|
+
sys.exit(1)
|
|
62
|
+
|
|
63
|
+
check_dependencies()
|
|
64
|
+
|
|
39
65
|
from openpyxl import Workbook
|
|
40
66
|
from openpyxl.styles import Font, PatternFill, Alignment, Border, Side
|
|
41
67
|
from openpyxl.utils import get_column_letter
|
package/src/commands/update.js
CHANGED
|
@@ -6,14 +6,35 @@
|
|
|
6
6
|
|
|
7
7
|
import chalk from 'chalk';
|
|
8
8
|
import ora from 'ora';
|
|
9
|
+
import { execSync } from 'child_process';
|
|
10
|
+
import fs from 'fs-extra';
|
|
11
|
+
import path from 'path';
|
|
9
12
|
|
|
10
|
-
import { checkForUpdates, copySkillsToProject, getInstalledSkills } from '../utils/skills.js';
|
|
13
|
+
import { checkForUpdates, copySkillsToProject, getInstalledSkills, cleanupOldSkills } from '../utils/skills.js';
|
|
11
14
|
|
|
12
15
|
export async function update(options) {
|
|
13
16
|
const projectPath = process.cwd();
|
|
14
17
|
|
|
15
18
|
console.log(chalk.bold('\n📦 Claude Skills Update\n'));
|
|
16
19
|
|
|
20
|
+
// Check for npm package updates
|
|
21
|
+
const packageSpinner = ora('Checking npm for latest version...').start();
|
|
22
|
+
try {
|
|
23
|
+
const currentVersion = await getCurrentPackageVersion();
|
|
24
|
+
const latestVersion = await getLatestNpmVersion();
|
|
25
|
+
|
|
26
|
+
if (currentVersion !== latestVersion) {
|
|
27
|
+
packageSpinner.info(`Package update available: ${currentVersion} → ${latestVersion}`);
|
|
28
|
+
console.log(chalk.yellow(`\nTo update the CLI package, run:\n npm install -g @codihaus/claude-skills@latest\n`));
|
|
29
|
+
} else {
|
|
30
|
+
packageSpinner.succeed(`CLI package is up to date (${currentVersion})`);
|
|
31
|
+
}
|
|
32
|
+
} catch (e) {
|
|
33
|
+
packageSpinner.warn('Could not check for CLI updates');
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
console.log('');
|
|
37
|
+
|
|
17
38
|
// Check for installed skills
|
|
18
39
|
const installed = await getInstalledSkills(projectPath);
|
|
19
40
|
|
|
@@ -25,7 +46,7 @@ export async function update(options) {
|
|
|
25
46
|
console.log(chalk.gray(`Found ${installed.length} installed skills\n`));
|
|
26
47
|
|
|
27
48
|
// Check for updates
|
|
28
|
-
const spinner = ora('Checking for updates...').start();
|
|
49
|
+
const spinner = ora('Checking for skill updates...').start();
|
|
29
50
|
const updates = await checkForUpdates(projectPath);
|
|
30
51
|
spinner.stop();
|
|
31
52
|
|
|
@@ -52,6 +73,13 @@ export async function update(options) {
|
|
|
52
73
|
|
|
53
74
|
try {
|
|
54
75
|
const skillNames = updates.map(u => u.name);
|
|
76
|
+
|
|
77
|
+
// Clean up old files first
|
|
78
|
+
updateSpinner.text = 'Cleaning up old skill files...';
|
|
79
|
+
await cleanupOldSkills(projectPath, skillNames);
|
|
80
|
+
|
|
81
|
+
// Copy new versions
|
|
82
|
+
updateSpinner.text = 'Installing updated skills...';
|
|
55
83
|
const { copied, errors } = await copySkillsToProject(projectPath, skillNames);
|
|
56
84
|
|
|
57
85
|
if (errors.length > 0) {
|
|
@@ -70,3 +98,30 @@ export async function update(options) {
|
|
|
70
98
|
|
|
71
99
|
console.log(chalk.green('\n✅ Update complete!\n'));
|
|
72
100
|
}
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Get current package version
|
|
104
|
+
*/
|
|
105
|
+
async function getCurrentPackageVersion() {
|
|
106
|
+
try {
|
|
107
|
+
const packageJson = await fs.readJson(path.join(import.meta.dirname, '../../package.json'));
|
|
108
|
+
return packageJson.version;
|
|
109
|
+
} catch (e) {
|
|
110
|
+
return 'unknown';
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/**
|
|
115
|
+
* Get latest version from npm
|
|
116
|
+
*/
|
|
117
|
+
async function getLatestNpmVersion() {
|
|
118
|
+
try {
|
|
119
|
+
const result = execSync('npm view @codihaus/claude-skills version', {
|
|
120
|
+
encoding: 'utf8',
|
|
121
|
+
stdio: ['pipe', 'pipe', 'ignore']
|
|
122
|
+
});
|
|
123
|
+
return result.trim();
|
|
124
|
+
} catch (e) {
|
|
125
|
+
throw new Error('Could not fetch latest version from npm');
|
|
126
|
+
}
|
|
127
|
+
}
|
package/src/utils/skills.js
CHANGED
|
@@ -243,6 +243,30 @@ export async function removeSkillFromProject(projectPath, skillName) {
|
|
|
243
243
|
}
|
|
244
244
|
}
|
|
245
245
|
|
|
246
|
+
/**
|
|
247
|
+
* Clean up old skill files before updating
|
|
248
|
+
* Removes entire skill directory to ensure deleted files are removed
|
|
249
|
+
*/
|
|
250
|
+
export async function cleanupOldSkills(projectPath, skillNames) {
|
|
251
|
+
const skillsPath = path.join(projectPath, '.claude', 'skills');
|
|
252
|
+
|
|
253
|
+
if (!await fs.pathExists(skillsPath)) {
|
|
254
|
+
return;
|
|
255
|
+
}
|
|
256
|
+
|
|
257
|
+
for (const skillName of skillNames) {
|
|
258
|
+
const skillPath = path.join(skillsPath, skillName);
|
|
259
|
+
|
|
260
|
+
if (await fs.pathExists(skillPath)) {
|
|
261
|
+
try {
|
|
262
|
+
await fs.remove(skillPath);
|
|
263
|
+
} catch (e) {
|
|
264
|
+
// Ignore errors, will be logged during copy
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
|
|
246
270
|
/**
|
|
247
271
|
* Check if skills need updating
|
|
248
272
|
*/
|