wogiflow 1.0.21 → 1.0.22
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/commands/wogi-bug.md +43 -0
- package/.claude/commands/wogi-bulk.md +144 -0
- package/.claude/commands/wogi-changelog.md +36 -0
- package/.claude/commands/wogi-compact.md +99 -0
- package/.claude/commands/wogi-config.md +50 -0
- package/.claude/commands/wogi-context.md +68 -0
- package/.claude/commands/wogi-correction.md +73 -0
- package/.claude/commands/wogi-debt.md +128 -0
- package/.claude/commands/wogi-deps.md +32 -0
- package/.claude/commands/wogi-epics.md +145 -0
- package/.claude/commands/wogi-export.md +100 -0
- package/.claude/commands/wogi-feature.md +149 -0
- package/.claude/commands/wogi-guided-edit.md +83 -0
- package/.claude/commands/wogi-health.md +43 -0
- package/.claude/commands/wogi-help.md +96 -0
- package/.claude/commands/wogi-hybrid-edit.md +36 -0
- package/.claude/commands/wogi-hybrid-off.md +24 -0
- package/.claude/commands/wogi-hybrid-setup.md +79 -0
- package/.claude/commands/wogi-hybrid-status.md +45 -0
- package/.claude/commands/wogi-hybrid.md +54 -0
- package/.claude/commands/wogi-import.md +44 -0
- package/.claude/commands/wogi-init.md +618 -0
- package/.claude/commands/wogi-log.md +38 -0
- package/.claude/commands/wogi-map-add.md +29 -0
- package/.claude/commands/wogi-map-check.md +35 -0
- package/.claude/commands/wogi-map-index.md +98 -0
- package/.claude/commands/wogi-map-scan.md +38 -0
- package/.claude/commands/wogi-map-sync.md +91 -0
- package/.claude/commands/wogi-map.md +33 -0
- package/.claude/commands/wogi-morning.md +65 -0
- package/.claude/commands/wogi-onboard.md +99 -0
- package/.claude/commands/wogi-plan.md +173 -0
- package/.claude/commands/wogi-ready.md +84 -0
- package/.claude/commands/wogi-resume.md +95 -0
- package/.claude/commands/wogi-review.md +636 -0
- package/.claude/commands/wogi-roadmap.md +241 -0
- package/.claude/commands/wogi-rules.md +104 -0
- package/.claude/commands/wogi-search.md +33 -0
- package/.claude/commands/wogi-session-end.md +49 -0
- package/.claude/commands/wogi-setup-stack.md +151 -0
- package/.claude/commands/wogi-skill-learn.md +66 -0
- package/.claude/commands/wogi-skills.md +87 -0
- package/.claude/commands/wogi-standup.md +28 -0
- package/.claude/commands/wogi-start.md +465 -0
- package/.claude/commands/wogi-status.md +41 -0
- package/.claude/commands/wogi-statusline-setup/skill.md +109 -0
- package/.claude/commands/wogi-story.md +98 -0
- package/.claude/commands/wogi-suspend.md +87 -0
- package/.claude/commands/wogi-test-browser.md +43 -0
- package/.claude/commands/wogi-trace.md +198 -0
- package/.claude/docs/architecture.md +37 -0
- package/.claude/docs/commands.md +343 -0
- package/.claude/docs/knowledge-base/01-setup-onboarding/README.md +177 -0
- package/.claude/docs/knowledge-base/01-setup-onboarding/component-indexing.md +341 -0
- package/.claude/docs/knowledge-base/01-setup-onboarding/framework-detection.md +269 -0
- package/.claude/docs/knowledge-base/01-setup-onboarding/installation.md +146 -0
- package/.claude/docs/knowledge-base/01-setup-onboarding/onboarding-existing.md +317 -0
- package/.claude/docs/knowledge-base/01-setup-onboarding/team-setup.md +346 -0
- package/.claude/docs/knowledge-base/02-task-execution/01-task-planning.md +259 -0
- package/.claude/docs/knowledge-base/02-task-execution/02-execution-loop.md +443 -0
- package/.claude/docs/knowledge-base/02-task-execution/03-verification.md +417 -0
- package/.claude/docs/knowledge-base/02-task-execution/04-completion.md +374 -0
- package/.claude/docs/knowledge-base/02-task-execution/05-session-review.md +170 -0
- package/.claude/docs/knowledge-base/02-task-execution/README.md +173 -0
- package/.claude/docs/knowledge-base/02-task-execution/external-integrations.md +133 -0
- package/.claude/docs/knowledge-base/02-task-execution/model-management.md +202 -0
- package/.claude/docs/knowledge-base/02-task-execution/specification-mode.md +292 -0
- package/.claude/docs/knowledge-base/02-task-execution/sync-daemon.md +96 -0
- package/.claude/docs/knowledge-base/02-task-execution/trade-offs.md +345 -0
- package/.claude/docs/knowledge-base/02-task-execution/workflow-steps.md +357 -0
- package/.claude/docs/knowledge-base/03-self-improvement/README.md +199 -0
- package/.claude/docs/knowledge-base/03-self-improvement/long-input-processing.md +160 -0
- package/.claude/docs/knowledge-base/03-self-improvement/model-learning.md +334 -0
- package/.claude/docs/knowledge-base/03-self-improvement/project-learning.md +301 -0
- package/.claude/docs/knowledge-base/03-self-improvement/skill-learning.md +372 -0
- package/.claude/docs/knowledge-base/03-self-improvement/skill-matching.md +304 -0
- package/.claude/docs/knowledge-base/03-self-improvement/team-learning.md +342 -0
- package/.claude/docs/knowledge-base/04-memory-context/README.md +189 -0
- package/.claude/docs/knowledge-base/04-memory-context/context-management.md +308 -0
- package/.claude/docs/knowledge-base/04-memory-context/memory-commands.md +176 -0
- package/.claude/docs/knowledge-base/04-memory-context/memory-systems.md +359 -0
- package/.claude/docs/knowledge-base/04-memory-context/prd-management.md +115 -0
- package/.claude/docs/knowledge-base/04-memory-context/session-persistence.md +359 -0
- package/.claude/docs/knowledge-base/04-memory-context/team-history.md +317 -0
- package/.claude/docs/knowledge-base/05-development-tools/README.md +84 -0
- package/.claude/docs/knowledge-base/05-development-tools/code-traces.md +278 -0
- package/.claude/docs/knowledge-base/05-development-tools/figma-analyzer.md +253 -0
- package/.claude/docs/knowledge-base/05-development-tools/guided-edit.md +173 -0
- package/.claude/docs/knowledge-base/05-development-tools/mcp-integrations.md +286 -0
- package/.claude/docs/knowledge-base/06-safety-guardrails/README.md +153 -0
- package/.claude/docs/knowledge-base/06-safety-guardrails/checkpoint-rollback.md +302 -0
- package/.claude/docs/knowledge-base/06-safety-guardrails/commit-gates.md +309 -0
- package/.claude/docs/knowledge-base/06-safety-guardrails/damage-control.md +292 -0
- package/.claude/docs/knowledge-base/06-safety-guardrails/security-scanning.md +291 -0
- package/.claude/docs/knowledge-base/README.md +92 -0
- package/.claude/docs/knowledge-base/configuration/README.md +228 -0
- package/.claude/docs/knowledge-base/configuration/all-options.md +1632 -0
- package/.claude/docs/knowledge-base/future-features.md +277 -0
- package/.claude/docs/stack.md +25 -0
- package/.claude/docs/testing.md +71 -0
- package/.claude/rules/README.md +60 -0
- package/.claude/rules/architecture/component-reuse.md +38 -0
- package/.claude/rules/architecture/document-structure.md +76 -0
- package/.claude/rules/architecture/feature-refactoring-cleanup.md +87 -0
- package/.claude/rules/architecture/model-management.md +35 -0
- package/.claude/rules/code-style/naming-conventions.md +55 -0
- package/.claude/rules/security/security-patterns.md +116 -0
- package/.claude/skills/.gitkeep +0 -0
- package/.claude/skills/README.md +131 -0
- package/.claude/skills/_template/commands/.gitkeep +0 -0
- package/.claude/skills/_template/knowledge/anti-patterns.md +49 -0
- package/.claude/skills/_template/knowledge/learnings.md +60 -0
- package/.claude/skills/_template/knowledge/patterns.md +45 -0
- package/.claude/skills/_template/rules/.gitkeep +0 -0
- package/.claude/skills/_template/skill.md +99 -0
- package/.claude/skills/_template/templates/.gitkeep +0 -0
- package/.claude/skills/figma-analyzer/knowledge/anti-patterns.md +216 -0
- package/.claude/skills/figma-analyzer/knowledge/patterns.md +144 -0
- package/.claude/skills/figma-analyzer/skill.md +236 -0
- package/lib/installer.js +59 -19
- package/package.json +5 -1
|
@@ -0,0 +1,618 @@
|
|
|
1
|
+
# /wogi-init - AI-Driven Project Setup
|
|
2
|
+
|
|
3
|
+
Initialize WogiFlow for a new project through conversational setup.
|
|
4
|
+
|
|
5
|
+
## When This Runs
|
|
6
|
+
|
|
7
|
+
This command activates when:
|
|
8
|
+
1. User runs `/wogi-init` explicitly
|
|
9
|
+
2. User says "setup wogiflow" or similar
|
|
10
|
+
3. AI detects `.workflow/state/pending-setup.json` exists (fresh install)
|
|
11
|
+
4. AI detects `.workflow/config.json` is missing
|
|
12
|
+
|
|
13
|
+
## Pre-Flight Check
|
|
14
|
+
|
|
15
|
+
Before starting, verify setup is needed:
|
|
16
|
+
|
|
17
|
+
```javascript
|
|
18
|
+
// Check if already configured
|
|
19
|
+
const configPath = '.workflow/config.json';
|
|
20
|
+
const pendingPath = '.workflow/state/pending-setup.json';
|
|
21
|
+
|
|
22
|
+
if (fs.existsSync(configPath)) {
|
|
23
|
+
// Already configured - offer to reconfigure
|
|
24
|
+
return "WogiFlow is already configured. Would you like to reconfigure? (This will overwrite existing settings)";
|
|
25
|
+
}
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
---
|
|
29
|
+
|
|
30
|
+
## Setup Flow
|
|
31
|
+
|
|
32
|
+
### Step 1: Project Name Confirmation
|
|
33
|
+
|
|
34
|
+
1. Read `package.json` to detect project name
|
|
35
|
+
2. Ask for confirmation using AskUserQuestion:
|
|
36
|
+
|
|
37
|
+
```javascript
|
|
38
|
+
AskUserQuestion({
|
|
39
|
+
questions: [{
|
|
40
|
+
question: `I detected your project name as "${detectedName}". Is this correct?`,
|
|
41
|
+
header: "Project",
|
|
42
|
+
options: [
|
|
43
|
+
{ label: "Yes, that's correct", description: `Use "${detectedName}" as the project name` },
|
|
44
|
+
{ label: "No, let me specify", description: "Enter a different project name" }
|
|
45
|
+
],
|
|
46
|
+
multiSelect: false
|
|
47
|
+
}]
|
|
48
|
+
});
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
If user selects "No", ask them to provide the name in their next message.
|
|
52
|
+
|
|
53
|
+
### Step 2: Import Sources
|
|
54
|
+
|
|
55
|
+
Ask about existing resources that can help configure the project:
|
|
56
|
+
|
|
57
|
+
```javascript
|
|
58
|
+
AskUserQuestion({
|
|
59
|
+
questions: [{
|
|
60
|
+
question: "Do you have any of these to help me understand your project?",
|
|
61
|
+
header: "Import",
|
|
62
|
+
options: [
|
|
63
|
+
{ label: "Other project folder", description: "A folder with patterns to learn from (I'll scan package.json, configs, and code)" },
|
|
64
|
+
{ label: "Exported WogiFlow profile", description: "A .zip file exported from another WogiFlow project" },
|
|
65
|
+
{ label: "PRD or project description", description: "Paste text or provide a file path to a project description" },
|
|
66
|
+
{ label: "None - start fresh", description: "Set up from scratch with tech stack selection" }
|
|
67
|
+
],
|
|
68
|
+
multiSelect: true
|
|
69
|
+
}]
|
|
70
|
+
});
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
#### If "Other project folder" selected:
|
|
74
|
+
1. Ask user to provide the folder path
|
|
75
|
+
2. Scan the folder:
|
|
76
|
+
- Read `package.json` for dependencies
|
|
77
|
+
- Read `.workflow/` if exists for patterns
|
|
78
|
+
- Read `.eslintrc`, `tsconfig.json`, `.prettierrc` for conventions
|
|
79
|
+
- Read `src/` structure for file organization patterns
|
|
80
|
+
3. Use `scripts/flow-pattern-extractor.js` to extract and analyze patterns
|
|
81
|
+
4. Detect conflicts (different approaches in same codebase)
|
|
82
|
+
5. Present findings with conflict resolution:
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
I found the following patterns in [project-name]:
|
|
86
|
+
|
|
87
|
+
## Tech Stack (Detected)
|
|
88
|
+
- Framework: Next.js 14
|
|
89
|
+
- Styling: Tailwind CSS
|
|
90
|
+
- State: Zustand
|
|
91
|
+
- Testing: Vitest
|
|
92
|
+
|
|
93
|
+
## Coding Patterns (5 found)
|
|
94
|
+
1. Use functional components with hooks
|
|
95
|
+
2. API routes follow /api/[resource]/[action] pattern
|
|
96
|
+
3. Use zod for validation
|
|
97
|
+
4. Components in src/components/[feature]/
|
|
98
|
+
5. Server actions for mutations
|
|
99
|
+
|
|
100
|
+
## Conflicts Detected (2)
|
|
101
|
+
These need your decision:
|
|
102
|
+
|
|
103
|
+
### 1. Error Handling
|
|
104
|
+
- Pattern A (8 files): try/catch with console.error
|
|
105
|
+
- Pattern B (12 files): try/catch with error boundary (Recommended)
|
|
106
|
+
|
|
107
|
+
### 2. API Response Format
|
|
108
|
+
- Pattern A (3 files): { data, error, status }
|
|
109
|
+
- Pattern B (5 files): { success, data, message } (Recommended)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Then ask:
|
|
113
|
+
```javascript
|
|
114
|
+
AskUserQuestion({
|
|
115
|
+
questions: [{
|
|
116
|
+
question: "How would you like to handle the detected patterns?",
|
|
117
|
+
header: "Patterns",
|
|
118
|
+
options: [
|
|
119
|
+
{ label: "Accept All with Recommended (Recommended)", description: "Use the recommended resolution for conflicts" },
|
|
120
|
+
{ label: "Manual Review 1-by-1", description: "Review each conflict and pattern individually" }
|
|
121
|
+
],
|
|
122
|
+
multiSelect: false
|
|
123
|
+
}]
|
|
124
|
+
});
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
#### If "Exported WogiFlow profile" selected:
|
|
128
|
+
1. Ask for the .zip file path
|
|
129
|
+
2. Extract to temp folder
|
|
130
|
+
3. Read `profile.json` for metadata
|
|
131
|
+
4. Display contents: rules, skills, decisions, tech stack
|
|
132
|
+
5. Same conflict detection as above
|
|
133
|
+
|
|
134
|
+
#### If "PRD or project description" selected:
|
|
135
|
+
1. Ask user to paste or provide file path
|
|
136
|
+
2. Analyze content for:
|
|
137
|
+
- Technology mentions
|
|
138
|
+
- Architecture requirements
|
|
139
|
+
- Feature requirements
|
|
140
|
+
3. Use detected info to pre-select tech stack options
|
|
141
|
+
4. Also use this to populate `product.md` (see Step 2.5)
|
|
142
|
+
|
|
143
|
+
### Step 2.5: Product Description (NEW)
|
|
144
|
+
|
|
145
|
+
After import sources, ask about product documentation:
|
|
146
|
+
|
|
147
|
+
```javascript
|
|
148
|
+
AskUserQuestion({
|
|
149
|
+
questions: [{
|
|
150
|
+
question: "Would you like to describe your product? This helps me generate better stories and features.",
|
|
151
|
+
header: "Product",
|
|
152
|
+
options: [
|
|
153
|
+
{ label: "Describe my product", description: "Paste a PRD or describe what you're building" },
|
|
154
|
+
{ label: "Scan and infer", description: "I'll analyze your project and show you what I found" },
|
|
155
|
+
{ label: "Skip for now", description: "Create a placeholder - you can fill it in later" }
|
|
156
|
+
],
|
|
157
|
+
multiSelect: false
|
|
158
|
+
}]
|
|
159
|
+
});
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
#### If "Describe my product" selected:
|
|
163
|
+
1. Ask user to paste PRD or description in their next message
|
|
164
|
+
2. Parse the content and extract:
|
|
165
|
+
- Product name and tagline
|
|
166
|
+
- Target users
|
|
167
|
+
- Key features
|
|
168
|
+
- Non-goals
|
|
169
|
+
3. Show a summary:
|
|
170
|
+
```
|
|
171
|
+
I understood your product as:
|
|
172
|
+
|
|
173
|
+
**Name**: [extracted name]
|
|
174
|
+
**Tagline**: [one-liner]
|
|
175
|
+
**Target Users**: [list]
|
|
176
|
+
**Key Features**: [list 3-5]
|
|
177
|
+
|
|
178
|
+
Is this correct? [Yes / Let me correct]
|
|
179
|
+
```
|
|
180
|
+
4. Generate `product.md` with PIN markers to `.workflow/specs/product.md`
|
|
181
|
+
|
|
182
|
+
#### If "Scan and infer" selected:
|
|
183
|
+
1. Run `scripts/flow-product-scanner.js` to analyze:
|
|
184
|
+
- `package.json` (name, description, keywords)
|
|
185
|
+
- `README.md` (description, features)
|
|
186
|
+
- Project structure (routes, screens, API)
|
|
187
|
+
2. Show brief summary:
|
|
188
|
+
```
|
|
189
|
+
Based on scanning your project:
|
|
190
|
+
|
|
191
|
+
**Name**: [from package.json]
|
|
192
|
+
**Type**: [web-app | api | cli] (detected [framework])
|
|
193
|
+
**Features**: [top 3 detected]
|
|
194
|
+
|
|
195
|
+
Is this correct? [Yes / Let me correct]
|
|
196
|
+
```
|
|
197
|
+
3. If user says "Let me correct", ask what to change
|
|
198
|
+
4. Generate `product.md` with PIN markers
|
|
199
|
+
|
|
200
|
+
#### If "Skip for now" selected:
|
|
201
|
+
1. Copy `templates/context/product-placeholder.md` to `.workflow/specs/product.md`
|
|
202
|
+
2. Show reminder:
|
|
203
|
+
```
|
|
204
|
+
Created a placeholder product.md. You can fill it in later by:
|
|
205
|
+
- Running `/wogi-init` again and selecting "Describe my product"
|
|
206
|
+
- Editing `.workflow/specs/product.md` directly
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Step 3: Tech Stack Selection (if no import or new project)
|
|
210
|
+
|
|
211
|
+
If user selected "None - start fresh" or to supplement imported patterns, run the step-by-step tech stack wizard.
|
|
212
|
+
|
|
213
|
+
**IMPORTANT**: Ask ONE question at a time. Wait for response before proceeding.
|
|
214
|
+
|
|
215
|
+
#### Step 3a: Project Type
|
|
216
|
+
|
|
217
|
+
```javascript
|
|
218
|
+
AskUserQuestion({
|
|
219
|
+
questions: [{
|
|
220
|
+
question: "What type of project is this?",
|
|
221
|
+
header: "Type",
|
|
222
|
+
options: [
|
|
223
|
+
{ label: "Web Application", description: "Website or web app running in a browser" },
|
|
224
|
+
{ label: "Mobile App", description: "React Native, Flutter, or native iOS/Android" },
|
|
225
|
+
{ label: "Desktop App", description: "Electron, Tauri, or native desktop application" },
|
|
226
|
+
{ label: "Backend/API Only", description: "REST API, GraphQL, or microservice" }
|
|
227
|
+
],
|
|
228
|
+
multiSelect: false
|
|
229
|
+
}]
|
|
230
|
+
});
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
If user needs more options, offer:
|
|
234
|
+
- Full-Stack (Web + API)
|
|
235
|
+
- CLI Tool
|
|
236
|
+
- Library/Package
|
|
237
|
+
|
|
238
|
+
#### Step 3b: Focus Area (if applicable)
|
|
239
|
+
|
|
240
|
+
Skip if Backend/API Only or CLI Tool.
|
|
241
|
+
|
|
242
|
+
```javascript
|
|
243
|
+
AskUserQuestion({
|
|
244
|
+
questions: [{
|
|
245
|
+
question: "What's your focus area?",
|
|
246
|
+
header: "Focus",
|
|
247
|
+
options: [
|
|
248
|
+
{ label: "Frontend only", description: "UI and client-side code" },
|
|
249
|
+
{ label: "Backend only", description: "Server-side and API code" },
|
|
250
|
+
{ label: "Full-stack (Recommended)", description: "Both frontend and backend" }
|
|
251
|
+
],
|
|
252
|
+
multiSelect: false
|
|
253
|
+
}]
|
|
254
|
+
});
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
#### Step 3c: Frontend Framework (if frontend)
|
|
258
|
+
|
|
259
|
+
```javascript
|
|
260
|
+
AskUserQuestion({
|
|
261
|
+
questions: [{
|
|
262
|
+
question: "Which frontend framework would you like to use?",
|
|
263
|
+
header: "Frontend",
|
|
264
|
+
options: [
|
|
265
|
+
{ label: "Next.js (Recommended)", description: "React framework with SSR, routing, and API routes built-in" },
|
|
266
|
+
{ label: "React", description: "UI library - you'll configure routing and bundling separately" },
|
|
267
|
+
{ label: "Vue 3", description: "Progressive framework with gentle learning curve" },
|
|
268
|
+
{ label: "Svelte / SvelteKit", description: "Compiler-based framework with minimal runtime" }
|
|
269
|
+
],
|
|
270
|
+
multiSelect: false
|
|
271
|
+
}]
|
|
272
|
+
});
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
Other options if requested: Nuxt, Angular, Astro, Solid.js, Qwik
|
|
276
|
+
|
|
277
|
+
#### Step 3d: Backend Framework (if backend)
|
|
278
|
+
|
|
279
|
+
```javascript
|
|
280
|
+
AskUserQuestion({
|
|
281
|
+
questions: [{
|
|
282
|
+
question: "Which backend framework would you like to use?",
|
|
283
|
+
header: "Backend",
|
|
284
|
+
options: [
|
|
285
|
+
{ label: "NestJS (Recommended)", description: "TypeScript framework with dependency injection and decorators" },
|
|
286
|
+
{ label: "Express", description: "Minimal, flexible Node.js web framework" },
|
|
287
|
+
{ label: "FastAPI (Python)", description: "Modern Python framework with automatic OpenAPI docs" },
|
|
288
|
+
{ label: "Hono", description: "Lightweight, fast edge-ready framework" }
|
|
289
|
+
],
|
|
290
|
+
multiSelect: false
|
|
291
|
+
}]
|
|
292
|
+
});
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
Other options: Fastify, tRPC, Django, Flask, Go (Gin), Rails, Phoenix
|
|
296
|
+
|
|
297
|
+
#### Step 3e: Database & ORM
|
|
298
|
+
|
|
299
|
+
```javascript
|
|
300
|
+
AskUserQuestion({
|
|
301
|
+
questions: [{
|
|
302
|
+
question: "Which database and ORM combination?",
|
|
303
|
+
header: "Database",
|
|
304
|
+
options: [
|
|
305
|
+
{ label: "PostgreSQL + Prisma (Recommended)", description: "Type-safe ORM with great DX and migrations" },
|
|
306
|
+
{ label: "PostgreSQL + TypeORM", description: "Decorator-based ORM, popular with NestJS" },
|
|
307
|
+
{ label: "MongoDB + Mongoose", description: "Document database with schema validation" },
|
|
308
|
+
{ label: "SQLite + Drizzle", description: "Lightweight DB with type-safe SQL-like queries" }
|
|
309
|
+
],
|
|
310
|
+
multiSelect: false
|
|
311
|
+
}]
|
|
312
|
+
});
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
Other options: MySQL, Redis, DynamoDB, raw SQL
|
|
316
|
+
|
|
317
|
+
#### Step 3f: State Management (if frontend)
|
|
318
|
+
|
|
319
|
+
Skip for Vue (default to Pinia) or if no frontend.
|
|
320
|
+
|
|
321
|
+
```javascript
|
|
322
|
+
AskUserQuestion({
|
|
323
|
+
questions: [{
|
|
324
|
+
question: "Which state management solution?",
|
|
325
|
+
header: "State",
|
|
326
|
+
options: [
|
|
327
|
+
{ label: "Zustand (Recommended)", description: "Simple, minimal boilerplate, works great with React" },
|
|
328
|
+
{ label: "Redux Toolkit", description: "Predictable state container with dev tools" },
|
|
329
|
+
{ label: "TanStack Query", description: "Server state management with caching" },
|
|
330
|
+
{ label: "React Context only", description: "Built-in React state, no extra library" }
|
|
331
|
+
],
|
|
332
|
+
multiSelect: false
|
|
333
|
+
}]
|
|
334
|
+
});
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
For Vue: Pinia (default), Vuex
|
|
338
|
+
|
|
339
|
+
#### Step 3g: Form Handling (if frontend)
|
|
340
|
+
|
|
341
|
+
```javascript
|
|
342
|
+
AskUserQuestion({
|
|
343
|
+
questions: [{
|
|
344
|
+
question: "Which form handling library?",
|
|
345
|
+
header: "Forms",
|
|
346
|
+
options: [
|
|
347
|
+
{ label: "React Hook Form (Recommended)", description: "Performant, flexible, easy validation" },
|
|
348
|
+
{ label: "Formik", description: "Popular form library with comprehensive features" },
|
|
349
|
+
{ label: "Native controlled", description: "No library, just useState for forms" }
|
|
350
|
+
],
|
|
351
|
+
multiSelect: false
|
|
352
|
+
}]
|
|
353
|
+
});
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
For Vue: VeeValidate, FormKit
|
|
357
|
+
|
|
358
|
+
#### Step 3h: Styling
|
|
359
|
+
|
|
360
|
+
```javascript
|
|
361
|
+
AskUserQuestion({
|
|
362
|
+
questions: [{
|
|
363
|
+
question: "Which styling approach?",
|
|
364
|
+
header: "Styling",
|
|
365
|
+
options: [
|
|
366
|
+
{ label: "Tailwind CSS (Recommended)", description: "Utility-first CSS framework" },
|
|
367
|
+
{ label: "shadcn/ui + Tailwind", description: "Copy-paste components with Tailwind" },
|
|
368
|
+
{ label: "CSS Modules", description: "Scoped CSS with component co-location" },
|
|
369
|
+
{ label: "Styled Components", description: "CSS-in-JS with tagged template literals" }
|
|
370
|
+
],
|
|
371
|
+
multiSelect: false
|
|
372
|
+
}]
|
|
373
|
+
});
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
Other options: Emotion, Vanilla Extract, Sass/SCSS, plain CSS
|
|
377
|
+
|
|
378
|
+
#### Step 3i: Testing
|
|
379
|
+
|
|
380
|
+
```javascript
|
|
381
|
+
AskUserQuestion({
|
|
382
|
+
questions: [{
|
|
383
|
+
question: "Which testing setup?",
|
|
384
|
+
header: "Testing",
|
|
385
|
+
options: [
|
|
386
|
+
{ label: "Vitest (Recommended)", description: "Fast unit testing, Vite-native, Jest compatible" },
|
|
387
|
+
{ label: "Jest", description: "Popular testing framework with snapshots" },
|
|
388
|
+
{ label: "Playwright", description: "E2E testing with browser automation" },
|
|
389
|
+
{ label: "Skip for now", description: "Set up testing later" }
|
|
390
|
+
],
|
|
391
|
+
multiSelect: true
|
|
392
|
+
}]
|
|
393
|
+
});
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
### Step 4: Generate Files
|
|
397
|
+
|
|
398
|
+
After collecting all selections, generate the project files:
|
|
399
|
+
|
|
400
|
+
#### 4.1 Create config.json
|
|
401
|
+
|
|
402
|
+
```javascript
|
|
403
|
+
const config = {
|
|
404
|
+
projectName: selectedName,
|
|
405
|
+
version: "1.0",
|
|
406
|
+
stack: {
|
|
407
|
+
platform: selectedPlatform,
|
|
408
|
+
focus: selectedFocus,
|
|
409
|
+
frontend: selectedFrontend,
|
|
410
|
+
backend: selectedBackend,
|
|
411
|
+
database: selectedDatabase,
|
|
412
|
+
orm: selectedOrm,
|
|
413
|
+
stateManagement: selectedState,
|
|
414
|
+
forms: selectedForms,
|
|
415
|
+
styling: selectedStyling,
|
|
416
|
+
testing: selectedTesting
|
|
417
|
+
},
|
|
418
|
+
createdAt: new Date().toISOString()
|
|
419
|
+
};
|
|
420
|
+
```
|
|
421
|
+
|
|
422
|
+
Save to `.workflow/config.json`.
|
|
423
|
+
|
|
424
|
+
#### 4.2 Generate Skills Using Context7
|
|
425
|
+
|
|
426
|
+
For each selected technology that has a Context7 ID:
|
|
427
|
+
|
|
428
|
+
1. Call `mcp__MCP_DOCKER__resolve-library-id` to verify the library
|
|
429
|
+
2. Call `mcp__MCP_DOCKER__get-library-docs` with topic "patterns" to fetch best practices
|
|
430
|
+
3. Use `scripts/flow-skill-generator.js` to create skill files
|
|
431
|
+
|
|
432
|
+
```javascript
|
|
433
|
+
// For each technology in stack
|
|
434
|
+
const techOptions = require('./scripts/flow-tech-options.js');
|
|
435
|
+
const technologies = techOptions.collectTechnologiesFromSelections(config.stack);
|
|
436
|
+
|
|
437
|
+
for (const tech of technologies) {
|
|
438
|
+
if (tech.context7) {
|
|
439
|
+
// Fetch docs from Context7
|
|
440
|
+
const docs = await getLibraryDocs(tech.context7, { topic: 'patterns', tokens: 8000 });
|
|
441
|
+
|
|
442
|
+
// Generate skill
|
|
443
|
+
await generateSkill({
|
|
444
|
+
name: tech.value,
|
|
445
|
+
label: tech.label,
|
|
446
|
+
context7Id: tech.context7,
|
|
447
|
+
content: docs,
|
|
448
|
+
isFramework: techOptions.getSkillType(tech.value) === 'framework'
|
|
449
|
+
});
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
```
|
|
453
|
+
|
|
454
|
+
#### 4.3 Create State Files
|
|
455
|
+
|
|
456
|
+
Create the following files in `.workflow/state/`:
|
|
457
|
+
|
|
458
|
+
**ready.json** (task queue):
|
|
459
|
+
```json
|
|
460
|
+
{
|
|
461
|
+
"ready": [],
|
|
462
|
+
"inProgress": [],
|
|
463
|
+
"recentlyCompleted": [],
|
|
464
|
+
"lastUpdated": "2026-01-13T..."
|
|
465
|
+
}
|
|
466
|
+
```
|
|
467
|
+
|
|
468
|
+
**decisions.md** (coding patterns):
|
|
469
|
+
```markdown
|
|
470
|
+
# Project Decisions & Patterns
|
|
471
|
+
|
|
472
|
+
## Component Architecture
|
|
473
|
+
<!-- Patterns will be added as we work -->
|
|
474
|
+
|
|
475
|
+
## Coding Standards
|
|
476
|
+
<!-- Standards will be added as we work -->
|
|
477
|
+
|
|
478
|
+
## Architecture Decisions
|
|
479
|
+
<!-- Decisions will be added as we work -->
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
**app-map.md** (component registry):
|
|
483
|
+
```markdown
|
|
484
|
+
# Application Component Map
|
|
485
|
+
|
|
486
|
+
## Overview
|
|
487
|
+
This file tracks all components in the application.
|
|
488
|
+
|
|
489
|
+
## Components
|
|
490
|
+
<!-- Components will be registered as they're created -->
|
|
491
|
+
|
|
492
|
+
## Screens
|
|
493
|
+
<!-- Screens will be registered as they're created -->
|
|
494
|
+
```
|
|
495
|
+
|
|
496
|
+
**request-log.md** (change history):
|
|
497
|
+
```markdown
|
|
498
|
+
# Request Log
|
|
499
|
+
|
|
500
|
+
This file tracks all changes made to the project.
|
|
501
|
+
|
|
502
|
+
---
|
|
503
|
+
|
|
504
|
+
### R-001 | [DATE]
|
|
505
|
+
**Type**: setup
|
|
506
|
+
**Tags**: #system
|
|
507
|
+
**Request**: "Initialize WogiFlow"
|
|
508
|
+
**Result**: Project configured with [stack summary]
|
|
509
|
+
**Files**: .workflow/*, .claude/*
|
|
510
|
+
```
|
|
511
|
+
|
|
512
|
+
**roadmap.md** (future work):
|
|
513
|
+
Copy from `templates/roadmap.md` to `.workflow/roadmap.md`
|
|
514
|
+
|
|
515
|
+
#### 4.4 Create Spec Files
|
|
516
|
+
|
|
517
|
+
**stack.md** in `.workflow/specs/`:
|
|
518
|
+
```markdown
|
|
519
|
+
# Tech Stack
|
|
520
|
+
|
|
521
|
+
## Frontend
|
|
522
|
+
- Framework: [selected]
|
|
523
|
+
- State Management: [selected]
|
|
524
|
+
- Forms: [selected]
|
|
525
|
+
- Styling: [selected]
|
|
526
|
+
|
|
527
|
+
## Backend
|
|
528
|
+
- Framework: [selected]
|
|
529
|
+
- Database: [selected]
|
|
530
|
+
- ORM: [selected]
|
|
531
|
+
|
|
532
|
+
## Testing
|
|
533
|
+
- Unit: [selected]
|
|
534
|
+
- E2E: [selected]
|
|
535
|
+
|
|
536
|
+
## Context7 Documentation
|
|
537
|
+
Skills with documentation have been generated in `.claude/skills/`.
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
#### 4.5 Delete Pending Setup Marker
|
|
541
|
+
|
|
542
|
+
```javascript
|
|
543
|
+
const pendingPath = '.workflow/state/pending-setup.json';
|
|
544
|
+
if (fs.existsSync(pendingPath)) {
|
|
545
|
+
fs.unlinkSync(pendingPath);
|
|
546
|
+
}
|
|
547
|
+
```
|
|
548
|
+
|
|
549
|
+
### Step 5: Summary & Learning Explanation
|
|
550
|
+
|
|
551
|
+
Display the completion summary:
|
|
552
|
+
|
|
553
|
+
```
|
|
554
|
+
Setup Complete!
|
|
555
|
+
|
|
556
|
+
## Generated Files
|
|
557
|
+
|
|
558
|
+
.workflow/
|
|
559
|
+
config.json # Project configuration
|
|
560
|
+
specs/
|
|
561
|
+
stack.md # Your tech stack details
|
|
562
|
+
state/
|
|
563
|
+
ready.json # Task queue
|
|
564
|
+
request-log.md # Change history
|
|
565
|
+
app-map.md # Component registry (grows as you work)
|
|
566
|
+
decisions.md # Coding patterns (grows as you work)
|
|
567
|
+
|
|
568
|
+
.claude/
|
|
569
|
+
skills/
|
|
570
|
+
[framework]/ # Framework patterns from Context7
|
|
571
|
+
[library]/ # Library patterns from Context7
|
|
572
|
+
|
|
573
|
+
## Your Stack
|
|
574
|
+
- Frontend: [selection]
|
|
575
|
+
- Backend: [selection]
|
|
576
|
+
- Database: [selection]
|
|
577
|
+
- Styling: [selection]
|
|
578
|
+
- Testing: [selection]
|
|
579
|
+
|
|
580
|
+
## How to Customize
|
|
581
|
+
|
|
582
|
+
- **Edit directly**: Open any .md or .json file and modify it
|
|
583
|
+
- **Ask me**: Say "update the rules to prefer X" and I'll update the files
|
|
584
|
+
|
|
585
|
+
## WogiFlow Learns With You
|
|
586
|
+
|
|
587
|
+
As we work together, WogiFlow automatically:
|
|
588
|
+
- Records patterns you prefer in decisions.md
|
|
589
|
+
- Learns from corrections you make
|
|
590
|
+
- Updates skills when you change approaches
|
|
591
|
+
- Tracks components in app-map.md
|
|
592
|
+
|
|
593
|
+
Say "show me the rules" or "what patterns are we using?" anytime.
|
|
594
|
+
|
|
595
|
+
## Next Steps
|
|
596
|
+
|
|
597
|
+
1. Run `/wogi-health` to verify everything is set up correctly
|
|
598
|
+
2. Create your first task with `/wogi-story "Your first feature"`
|
|
599
|
+
3. Or just tell me what you'd like to build!
|
|
600
|
+
```
|
|
601
|
+
|
|
602
|
+
---
|
|
603
|
+
|
|
604
|
+
## Error Handling
|
|
605
|
+
|
|
606
|
+
### If Context7 fetch fails
|
|
607
|
+
- Log the error but continue
|
|
608
|
+
- Create a minimal skill file noting that docs couldn't be fetched
|
|
609
|
+
- Inform user they can run `/wogi-skills refresh` later to retry
|
|
610
|
+
|
|
611
|
+
### If file creation fails
|
|
612
|
+
- Report which file failed
|
|
613
|
+
- Attempt to clean up partial state
|
|
614
|
+
- Suggest manual intervention if needed
|
|
615
|
+
|
|
616
|
+
### If user cancels mid-wizard
|
|
617
|
+
- Save progress to `.workflow/state/setup-progress.json`
|
|
618
|
+
- Next run can offer to resume
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
Add an entry to the request log.
|
|
2
|
+
|
|
3
|
+
Usage: `/wogi-log` (interactive) or with parameters
|
|
4
|
+
|
|
5
|
+
Steps:
|
|
6
|
+
1. Get next entry number from request-log.md
|
|
7
|
+
2. Ask for or parse:
|
|
8
|
+
- Type (new/change/fix/refactor/remove)
|
|
9
|
+
- Request description
|
|
10
|
+
- Result summary
|
|
11
|
+
- Files changed
|
|
12
|
+
- Tags (#screen:X, #component:Y, etc.)
|
|
13
|
+
3. Append to `.workflow/state/request-log.md`
|
|
14
|
+
|
|
15
|
+
Interactive:
|
|
16
|
+
```
|
|
17
|
+
📝 New Request Log Entry
|
|
18
|
+
|
|
19
|
+
Type? (new/change/fix/refactor/remove): change
|
|
20
|
+
Request: Added forgot password link to login
|
|
21
|
+
Result: Link added, routes to /forgot-password
|
|
22
|
+
Files changed: LoginScreen.tsx, routes.ts
|
|
23
|
+
Tags: #screen:login #feature:auth
|
|
24
|
+
|
|
25
|
+
✓ Added R-046 to request-log
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Entry format:
|
|
29
|
+
```markdown
|
|
30
|
+
### R-046 | 2024-01-15 14:32
|
|
31
|
+
**Type**: change
|
|
32
|
+
**Tags**: #screen:login #feature:auth
|
|
33
|
+
**Request**: Added forgot password link to login
|
|
34
|
+
**Result**: Link added, routes to /forgot-password
|
|
35
|
+
**Files**: `LoginScreen.tsx`, `routes.ts`
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
```
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
Add a component to the app-map.
|
|
2
|
+
|
|
3
|
+
Usage: `/wogi-map-add [name] [path] [variants]`
|
|
4
|
+
|
|
5
|
+
Example: `/wogi-map-add Button components/ui/Button "primary,secondary,ghost"`
|
|
6
|
+
|
|
7
|
+
Steps:
|
|
8
|
+
1. Add entry to `.workflow/state/app-map.md` in Components table
|
|
9
|
+
2. Create detail file at `.workflow/state/components/[name].md`
|
|
10
|
+
3. Show confirmation
|
|
11
|
+
|
|
12
|
+
Output:
|
|
13
|
+
```
|
|
14
|
+
✓ Added to app-map: Button
|
|
15
|
+
|
|
16
|
+
| Component | Variants | Path |
|
|
17
|
+
|-----------|----------|------|
|
|
18
|
+
| Button | primary, secondary, ghost | `components/ui/Button` |
|
|
19
|
+
|
|
20
|
+
Created: .workflow/state/components/Button.md
|
|
21
|
+
|
|
22
|
+
Don't forget to document:
|
|
23
|
+
- Props and their types
|
|
24
|
+
- Usage examples
|
|
25
|
+
- Which screens use this component
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
For screens: `/wogi-map-add screen Login /login`
|
|
29
|
+
For modals: `/wogi-map-add modal ConfirmDelete "Delete button click"`
|