vibe-fabric 0.3.2 → 0.3.3
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/prompts/analyze/assess.md +208 -0
- package/.claude/prompts/analyze/synthesize.md +239 -0
- package/.claude/prompts/analyze/task-analyze-repo.md +260 -0
- package/.claude/prompts/gaps/assess.md +203 -0
- package/.claude/prompts/gaps/synthesize.md +180 -0
- package/.claude/prompts/gaps/task-analyze-module.md +198 -0
- package/.claude/prompts/prd/assess.md +156 -0
- package/.claude/prompts/prd/synthesize.md +191 -0
- package/.claude/prompts/prd/task-capture-feature.md +133 -0
- package/.claude/prompts/prd/task-deprecate.md +84 -0
- package/.claude/prompts/prd/task-document-code.md +110 -0
- package/.claude/prompts/prd/task-fix-format.md +102 -0
- package/.claude/prompts/prd/task-update-status.md +89 -0
- package/.claude/prompts/scope/assess.md +201 -0
- package/.claude/prompts/scope/synthesize.md +270 -0
- package/.claude/prompts/scope/task-analyze-prd.md +125 -0
- package/.claude/prompts/scope/task-check-deps.md +188 -0
- package/.claude/prompts/scope/task-create-scope.md +207 -0
- package/.claude/prompts/scope/task-recommend.md +146 -0
- package/.claude/prompts/scope/task-review-scope.md +191 -0
- package/.claude/prompts/scope/task-validate.md +203 -0
- package/dist/core/project.d.ts.map +1 -1
- package/dist/core/project.js +49 -1
- package/dist/core/project.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
# Task: Review Scope (Interactive)
|
|
2
|
+
|
|
3
|
+
## Variables
|
|
4
|
+
|
|
5
|
+
| Variable | Description | Required |
|
|
6
|
+
|----------|-------------|----------|
|
|
7
|
+
| {PROJECT_PATH} | Path to the project directory | Yes |
|
|
8
|
+
| {OUTPUT_FILE} | Path to write the task output | Yes |
|
|
9
|
+
| {SCOPE_ID} | ID of scope to review (e.g., SCOPE-001) | Yes |
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Context
|
|
14
|
+
|
|
15
|
+
You are reviewing and refining an existing scope with the user.
|
|
16
|
+
|
|
17
|
+
Project: {PROJECT_PATH}
|
|
18
|
+
Scope to review: {SCOPE_ID}
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
## Your Task
|
|
23
|
+
|
|
24
|
+
Review an existing scope and help the user improve it. This is an INTERACTIVE task.
|
|
25
|
+
|
|
26
|
+
### Step 1: Load the Scope
|
|
27
|
+
|
|
28
|
+
Find and read the scope file:
|
|
29
|
+
- Check `docs/scopes/drafts/{SCOPE_ID}*.md`
|
|
30
|
+
- Check `docs/scopes/ready/{SCOPE_ID}*.md`
|
|
31
|
+
- If not found, report error
|
|
32
|
+
|
|
33
|
+
### Step 2: Analyze the Scope
|
|
34
|
+
|
|
35
|
+
Check for:
|
|
36
|
+
- **Completeness**: All required sections present
|
|
37
|
+
- **Format**: Proper Given/When/Then for ACs
|
|
38
|
+
- **Clarity**: Clear user story and summary
|
|
39
|
+
- **Coverage**: All mentioned requirements have ACs
|
|
40
|
+
- **Dependencies**: Blocking scopes identified
|
|
41
|
+
- **Out of scope**: Exclusions documented
|
|
42
|
+
|
|
43
|
+
### Step 3: Present Analysis
|
|
44
|
+
|
|
45
|
+
Show the user the scope with feedback:
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
Reviewing: SCOPE-001 - Dashboard Analytics
|
|
49
|
+
==========================================
|
|
50
|
+
|
|
51
|
+
Current Status: draft
|
|
52
|
+
Location: docs/scopes/drafts/SCOPE-001-dashboard-analytics.md
|
|
53
|
+
|
|
54
|
+
Quality Check:
|
|
55
|
+
[x] Has summary
|
|
56
|
+
[x] Has user story
|
|
57
|
+
[x] Has requirements (4 functional, 2 non-functional)
|
|
58
|
+
[x] Has acceptance criteria (8 total)
|
|
59
|
+
[ ] AC-3 not in Given/When/Then format
|
|
60
|
+
[x] Dependencies identified
|
|
61
|
+
[x] Out of scope documented
|
|
62
|
+
|
|
63
|
+
Suggestions:
|
|
64
|
+
1. AC-3 should use Given/When/Then format
|
|
65
|
+
Current: "Dashboard loads under 3 seconds"
|
|
66
|
+
Suggested: "Given the dashboard page, when it loads, then all data appears within 3 seconds"
|
|
67
|
+
|
|
68
|
+
2. Consider adding error handling AC
|
|
69
|
+
What happens if data fetch fails?
|
|
70
|
+
|
|
71
|
+
3. REQ-4 (CSV export) has no acceptance criteria
|
|
72
|
+
|
|
73
|
+
Would you like to address these issues?
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
### Step 4: Interactive Refinement
|
|
77
|
+
|
|
78
|
+
Guide the user through improvements:
|
|
79
|
+
|
|
80
|
+
1. **Fix format issues** - Offer to rewrite problematic sections
|
|
81
|
+
2. **Add missing ACs** - Help draft new acceptance criteria
|
|
82
|
+
3. **Clarify requirements** - Ask questions to improve clarity
|
|
83
|
+
4. **Update dependencies** - Check if any new dependencies emerged
|
|
84
|
+
5. **Review out of scope** - Ensure exclusions are clear
|
|
85
|
+
|
|
86
|
+
### Step 5: Capture Changes
|
|
87
|
+
|
|
88
|
+
For each change, track:
|
|
89
|
+
- What was changed
|
|
90
|
+
- Original value
|
|
91
|
+
- New value
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
## Output Format
|
|
96
|
+
|
|
97
|
+
Write to: {OUTPUT_FILE}
|
|
98
|
+
|
|
99
|
+
```json
|
|
100
|
+
{
|
|
101
|
+
"action": "update",
|
|
102
|
+
"scope_id": "SCOPE-001",
|
|
103
|
+
"original_file": "docs/scopes/drafts/SCOPE-001-dashboard-analytics.md",
|
|
104
|
+
"changes": [
|
|
105
|
+
{
|
|
106
|
+
"field": "acceptance_criteria.AC-3",
|
|
107
|
+
"original": "Dashboard loads under 3 seconds",
|
|
108
|
+
"updated": {
|
|
109
|
+
"id": "AC-3",
|
|
110
|
+
"given": "the dashboard page",
|
|
111
|
+
"when": "it loads",
|
|
112
|
+
"then": "all data appears within 3 seconds"
|
|
113
|
+
}
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
"field": "acceptance_criteria.AC-9",
|
|
117
|
+
"original": null,
|
|
118
|
+
"updated": {
|
|
119
|
+
"id": "AC-9",
|
|
120
|
+
"given": "data fetch fails",
|
|
121
|
+
"when": "loading dashboard",
|
|
122
|
+
"then": "show error message with retry option"
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
],
|
|
126
|
+
"updated_scope": {
|
|
127
|
+
"id": "SCOPE-001",
|
|
128
|
+
"title": "Dashboard Analytics",
|
|
129
|
+
"status": "draft",
|
|
130
|
+
// ... full updated scope content
|
|
131
|
+
},
|
|
132
|
+
"file_path": "docs/scopes/drafts/SCOPE-001-dashboard-analytics.md"
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Rules
|
|
139
|
+
|
|
140
|
+
- This is INTERACTIVE - engage with the user
|
|
141
|
+
- Show what you found before suggesting changes
|
|
142
|
+
- Let user approve each significant change
|
|
143
|
+
- Track all changes made
|
|
144
|
+
- Don't change things the user doesn't approve
|
|
145
|
+
- If scope is in `ready/`, warn before making changes
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Conversation Style
|
|
150
|
+
|
|
151
|
+
Start with findings:
|
|
152
|
+
|
|
153
|
+
```
|
|
154
|
+
> I found 3 issues with SCOPE-001:
|
|
155
|
+
>
|
|
156
|
+
> 1. AC-3 doesn't use Given/When/Then format
|
|
157
|
+
> 2. REQ-4 has no acceptance criteria
|
|
158
|
+
> 3. Missing error handling scenarios
|
|
159
|
+
>
|
|
160
|
+
> Let's go through these one by one. For AC-3, here's a
|
|
161
|
+
> suggested rewrite:
|
|
162
|
+
>
|
|
163
|
+
> Before: "Dashboard loads under 3 seconds"
|
|
164
|
+
> After: "Given the dashboard page, when it loads,
|
|
165
|
+
> then all data appears within 3 seconds"
|
|
166
|
+
>
|
|
167
|
+
> Does that look right?
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
Handle pushback:
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
> You're right, that requirement might be too specific. Let's
|
|
174
|
+
> adjust it to:
|
|
175
|
+
>
|
|
176
|
+
> "Given the dashboard page, when it loads, then all data
|
|
177
|
+
> appears within a reasonable time for the user's connection"
|
|
178
|
+
>
|
|
179
|
+
> Or would you prefer to remove this AC entirely?
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
Confirm completion:
|
|
183
|
+
|
|
184
|
+
```
|
|
185
|
+
> Great! I've updated:
|
|
186
|
+
> - AC-3: Reformatted to Given/When/Then
|
|
187
|
+
> - AC-9: Added error handling scenario
|
|
188
|
+
> - AC-10: Added for REQ-4 (CSV export)
|
|
189
|
+
>
|
|
190
|
+
> The scope now passes all quality checks. Ready to save?
|
|
191
|
+
```
|
|
@@ -0,0 +1,203 @@
|
|
|
1
|
+
# Task: Validate Scope Format
|
|
2
|
+
|
|
3
|
+
## Variables
|
|
4
|
+
|
|
5
|
+
| Variable | Description | Required |
|
|
6
|
+
|----------|-------------|----------|
|
|
7
|
+
| {PROJECT_PATH} | Path to the project directory | Yes |
|
|
8
|
+
| {OUTPUT_FILE} | Path to write the task output | Yes |
|
|
9
|
+
| {SCOPE_ID} | ID of scope to validate (e.g., SCOPE-003) | Yes |
|
|
10
|
+
| {PREVIOUS_OUTPUTS} | JSON array of previous task output paths | Yes |
|
|
11
|
+
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
## Context
|
|
15
|
+
|
|
16
|
+
You are validating a scope's format and completeness.
|
|
17
|
+
|
|
18
|
+
Project: {PROJECT_PATH}
|
|
19
|
+
Scope to validate: {SCOPE_ID}
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Your Task
|
|
24
|
+
|
|
25
|
+
Validate that a scope meets all requirements. This is NON-INTERACTIVE.
|
|
26
|
+
|
|
27
|
+
### Step 1: Load the Scope
|
|
28
|
+
|
|
29
|
+
Find the scope in:
|
|
30
|
+
1. Previous task outputs in {PREVIOUS_OUTPUTS} (newly created scope)
|
|
31
|
+
2. `docs/scopes/drafts/{SCOPE_ID}*.md`
|
|
32
|
+
3. `docs/scopes/ready/{SCOPE_ID}*.md`
|
|
33
|
+
|
|
34
|
+
### Step 2: Validate Required Fields
|
|
35
|
+
|
|
36
|
+
Check that these fields exist and are valid:
|
|
37
|
+
|
|
38
|
+
**Metadata (Required):**
|
|
39
|
+
- [ ] ID: Matches `SCOPE-XXX` format
|
|
40
|
+
- [ ] Status: One of `draft`, `review`, `approved`, `sent`
|
|
41
|
+
- [ ] Target: One of `frontend`, `backend`, `both`
|
|
42
|
+
- [ ] Complexity: One of `S`, `M`, `L`, `XL`
|
|
43
|
+
- [ ] Priority: One of `P1`, `P2`, `P3`
|
|
44
|
+
|
|
45
|
+
**Content (Required):**
|
|
46
|
+
- [ ] Summary: 1-3 sentences present
|
|
47
|
+
- [ ] User Story: Has role, action, benefit
|
|
48
|
+
- [ ] Requirements: At least 1 requirement
|
|
49
|
+
- [ ] Acceptance Criteria: At least 1 AC
|
|
50
|
+
|
|
51
|
+
**Format (Required):**
|
|
52
|
+
- [ ] ACs use Given/When/Then format
|
|
53
|
+
- [ ] Requirements have IDs (REQ-X or NFR-X)
|
|
54
|
+
- [ ] Dependencies use SCOPE-XXX format
|
|
55
|
+
|
|
56
|
+
**Recommended:**
|
|
57
|
+
- [ ] Out of Scope section present
|
|
58
|
+
- [ ] Technical Constraints if any
|
|
59
|
+
- [ ] Implementation Notes for guidance
|
|
60
|
+
|
|
61
|
+
### Step 3: Validate Content Quality
|
|
62
|
+
|
|
63
|
+
Check for:
|
|
64
|
+
- Summary is clear and explains value
|
|
65
|
+
- User story is specific, not generic
|
|
66
|
+
- ACs are testable (can verify pass/fail)
|
|
67
|
+
- Requirements link to PRD (if available)
|
|
68
|
+
- Dependencies are real scopes
|
|
69
|
+
|
|
70
|
+
### Step 4: Check PRD Links
|
|
71
|
+
|
|
72
|
+
If PRD requirements are referenced:
|
|
73
|
+
- Verify they exist in `docs/prd/modules/`
|
|
74
|
+
- Check requirement IDs are valid
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## Output Format
|
|
79
|
+
|
|
80
|
+
Write to: {OUTPUT_FILE}
|
|
81
|
+
|
|
82
|
+
```json
|
|
83
|
+
{
|
|
84
|
+
"scope_id": "SCOPE-003",
|
|
85
|
+
"valid": true,
|
|
86
|
+
"score": 92,
|
|
87
|
+
"checks": {
|
|
88
|
+
"required": {
|
|
89
|
+
"passed": 12,
|
|
90
|
+
"failed": 0,
|
|
91
|
+
"details": [
|
|
92
|
+
{"name": "ID format", "passed": true},
|
|
93
|
+
{"name": "Status valid", "passed": true},
|
|
94
|
+
{"name": "Target valid", "passed": true},
|
|
95
|
+
{"name": "Complexity valid", "passed": true},
|
|
96
|
+
{"name": "Priority valid", "passed": true},
|
|
97
|
+
{"name": "Summary present", "passed": true},
|
|
98
|
+
{"name": "User story complete", "passed": true},
|
|
99
|
+
{"name": "Has requirements", "passed": true, "count": 4},
|
|
100
|
+
{"name": "Has acceptance criteria", "passed": true, "count": 8},
|
|
101
|
+
{"name": "AC format (Given/When/Then)", "passed": true},
|
|
102
|
+
{"name": "Requirement IDs valid", "passed": true},
|
|
103
|
+
{"name": "Dependency IDs valid", "passed": true}
|
|
104
|
+
]
|
|
105
|
+
},
|
|
106
|
+
"recommended": {
|
|
107
|
+
"passed": 2,
|
|
108
|
+
"failed": 1,
|
|
109
|
+
"details": [
|
|
110
|
+
{"name": "Out of scope present", "passed": true},
|
|
111
|
+
{"name": "Technical constraints", "passed": true},
|
|
112
|
+
{"name": "Implementation notes", "passed": false, "suggestion": "Add implementation notes for developer guidance"}
|
|
113
|
+
]
|
|
114
|
+
},
|
|
115
|
+
"quality": {
|
|
116
|
+
"passed": 4,
|
|
117
|
+
"warnings": 1,
|
|
118
|
+
"details": [
|
|
119
|
+
{"name": "Summary clarity", "passed": true},
|
|
120
|
+
{"name": "User story specificity", "passed": true},
|
|
121
|
+
{"name": "ACs are testable", "passed": true},
|
|
122
|
+
{"name": "PRD links valid", "passed": true},
|
|
123
|
+
{"name": "Dependencies exist", "passed": true, "warning": "SCOPE-001 is still in draft status"}
|
|
124
|
+
]
|
|
125
|
+
}
|
|
126
|
+
},
|
|
127
|
+
"issues": [],
|
|
128
|
+
"warnings": [
|
|
129
|
+
"Dependency SCOPE-001 is still in draft status"
|
|
130
|
+
],
|
|
131
|
+
"suggestions": [
|
|
132
|
+
"Add implementation notes for developer guidance"
|
|
133
|
+
]
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
For invalid scope:
|
|
138
|
+
|
|
139
|
+
```json
|
|
140
|
+
{
|
|
141
|
+
"scope_id": "SCOPE-003",
|
|
142
|
+
"valid": false,
|
|
143
|
+
"score": 45,
|
|
144
|
+
"checks": {...},
|
|
145
|
+
"issues": [
|
|
146
|
+
{
|
|
147
|
+
"severity": "error",
|
|
148
|
+
"field": "acceptance_criteria.AC-3",
|
|
149
|
+
"message": "AC does not use Given/When/Then format",
|
|
150
|
+
"current": "Dashboard loads fast",
|
|
151
|
+
"suggestion": "Rewrite as: Given [context], when [action], then [result]"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"severity": "error",
|
|
155
|
+
"field": "target",
|
|
156
|
+
"message": "Invalid target value",
|
|
157
|
+
"current": "server",
|
|
158
|
+
"suggestion": "Use 'backend', 'frontend', or 'both'"
|
|
159
|
+
}
|
|
160
|
+
],
|
|
161
|
+
"warnings": [...],
|
|
162
|
+
"suggestions": [...]
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
---
|
|
167
|
+
|
|
168
|
+
## Rules
|
|
169
|
+
|
|
170
|
+
- Do NOT modify any files
|
|
171
|
+
- Do NOT interact with the user
|
|
172
|
+
- ONLY output to {OUTPUT_FILE}
|
|
173
|
+
- Mark as invalid (valid: false) if ANY required check fails
|
|
174
|
+
- Warnings don't make scope invalid
|
|
175
|
+
- Score is percentage of all checks passed (0-100)
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Validation Examples
|
|
180
|
+
|
|
181
|
+
**Valid ID:**
|
|
182
|
+
- `SCOPE-001` - Valid
|
|
183
|
+
- `SCOPE-123` - Valid
|
|
184
|
+
- `scope-001` - Invalid (lowercase)
|
|
185
|
+
- `SCOPE-1` - Invalid (needs 3 digits)
|
|
186
|
+
|
|
187
|
+
**Valid AC:**
|
|
188
|
+
- "Given valid credentials, when user logs in, then return JWT token" - Valid
|
|
189
|
+
- "User can log in" - Invalid (no Given/When/Then)
|
|
190
|
+
|
|
191
|
+
**Valid Target:**
|
|
192
|
+
- `backend` - Valid
|
|
193
|
+
- `frontend` - Valid
|
|
194
|
+
- `both` - Valid
|
|
195
|
+
- `server` - Invalid
|
|
196
|
+
- `Backend` - Invalid (case sensitive)
|
|
197
|
+
|
|
198
|
+
**Valid Priority:**
|
|
199
|
+
- `P1` - Valid
|
|
200
|
+
- `P2` - Valid
|
|
201
|
+
- `P3` - Valid
|
|
202
|
+
- `high` - Invalid
|
|
203
|
+
- `1` - Invalid
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/core/project.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"project.d.ts","sourceRoot":"","sources":["../../src/core/project.ts"],"names":[],"mappings":"AA6BA;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,WAAW,CAAC,EAAE,UAAU,GAAG,KAAK,GAC/B,OAAO,CAAC,IAAI,CAAC,CAoCf;AAiFD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAW5D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWhE"}
|
package/dist/core/project.js
CHANGED
|
@@ -1,8 +1,13 @@
|
|
|
1
|
-
import { mkdir, writeFile } from 'fs/promises';
|
|
1
|
+
import { mkdir, writeFile, readdir, copyFile } from 'fs/promises';
|
|
2
2
|
import { existsSync } from 'fs';
|
|
3
3
|
import path from 'path';
|
|
4
|
+
import { fileURLToPath } from 'url';
|
|
4
5
|
import { saveConfig } from './config.js';
|
|
5
6
|
import { generatePlanningHubCommands, ensureCustomCommandsDir } from './commands.js';
|
|
7
|
+
// Get the package root directory
|
|
8
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
9
|
+
const __dirname = path.dirname(__filename);
|
|
10
|
+
const PACKAGE_ROOT = path.resolve(__dirname, '../..');
|
|
6
11
|
/**
|
|
7
12
|
* Planning hub directory structure
|
|
8
13
|
*/
|
|
@@ -48,6 +53,8 @@ export async function createPlanningHub(projectPath, projectName, projectType) {
|
|
|
48
53
|
await ensureCustomCommandsDir(projectPath);
|
|
49
54
|
// Copy vibe-runner.py to .claude/scripts/
|
|
50
55
|
await createRunnerScript(projectPath);
|
|
56
|
+
// Copy prompt templates to .claude/prompts/
|
|
57
|
+
await copyPromptTemplates(projectPath);
|
|
51
58
|
}
|
|
52
59
|
/**
|
|
53
60
|
* Create initial files for the planning hub
|
|
@@ -807,4 +814,45 @@ if __name__ == "__main__":
|
|
|
807
814
|
const scriptPath = path.join(projectPath, '.claude', 'scripts', 'vibe-runner.py');
|
|
808
815
|
await writeFile(scriptPath, runnerScript, 'utf-8');
|
|
809
816
|
}
|
|
817
|
+
/**
|
|
818
|
+
* Copy prompt templates from the package to a new project.
|
|
819
|
+
*
|
|
820
|
+
* Copies all prompt templates from .claude/prompts/ in the package
|
|
821
|
+
* to the target project's .claude/prompts/ directory.
|
|
822
|
+
*/
|
|
823
|
+
async function copyPromptTemplates(projectPath) {
|
|
824
|
+
const sourceDir = path.join(PACKAGE_ROOT, '.claude', 'prompts');
|
|
825
|
+
const targetDir = path.join(projectPath, '.claude', 'prompts');
|
|
826
|
+
// Check if source directory exists
|
|
827
|
+
if (!existsSync(sourceDir)) {
|
|
828
|
+
// If running from source (not installed), the prompts may be at a different location
|
|
829
|
+
// For development, skip silently
|
|
830
|
+
return;
|
|
831
|
+
}
|
|
832
|
+
// Get all operation directories (prd, scope, gaps, analyze)
|
|
833
|
+
const operations = await readdir(sourceDir);
|
|
834
|
+
for (const operation of operations) {
|
|
835
|
+
const operationSourceDir = path.join(sourceDir, operation);
|
|
836
|
+
const operationTargetDir = path.join(targetDir, operation);
|
|
837
|
+
// Skip if not a directory
|
|
838
|
+
try {
|
|
839
|
+
const entries = await readdir(operationSourceDir);
|
|
840
|
+
// Create target operation directory
|
|
841
|
+
await mkdir(operationTargetDir, { recursive: true });
|
|
842
|
+
// Copy all files in this operation directory
|
|
843
|
+
for (const entry of entries) {
|
|
844
|
+
const sourceFile = path.join(operationSourceDir, entry);
|
|
845
|
+
const targetFile = path.join(operationTargetDir, entry);
|
|
846
|
+
// Only copy .md files
|
|
847
|
+
if (entry.endsWith('.md')) {
|
|
848
|
+
await copyFile(sourceFile, targetFile);
|
|
849
|
+
}
|
|
850
|
+
}
|
|
851
|
+
}
|
|
852
|
+
catch {
|
|
853
|
+
// Skip if not a directory or can't read
|
|
854
|
+
continue;
|
|
855
|
+
}
|
|
856
|
+
}
|
|
857
|
+
}
|
|
810
858
|
//# sourceMappingURL=project.js.map
|
package/dist/core/project.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/core/project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"project.js","sourceRoot":"","sources":["../../src/core/project.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vibe-fabric",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.3",
|
|
4
4
|
"description": "AI-Collaborative Development Coordination Framework",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
"main": "./dist/cli/index.js",
|
|
10
10
|
"files": [
|
|
11
11
|
"dist",
|
|
12
|
+
".claude/prompts",
|
|
12
13
|
"README.md",
|
|
13
14
|
"LICENSE"
|
|
14
15
|
],
|