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,341 @@
|
|
|
1
|
+
# Component Indexing
|
|
2
|
+
|
|
3
|
+
Auto-scan and register components from your codebase.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Purpose
|
|
8
|
+
|
|
9
|
+
Component indexing solves:
|
|
10
|
+
- **Duplication**: Know what exists before creating new
|
|
11
|
+
- **Discovery**: Find existing utilities and helpers
|
|
12
|
+
- **Consistency**: Ensure new code uses existing patterns
|
|
13
|
+
- **Hybrid Mode**: Provide context to local LLMs
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Quick Start
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
# Show index summary
|
|
21
|
+
/wogi-map-index
|
|
22
|
+
|
|
23
|
+
# Rescan codebase
|
|
24
|
+
/wogi-map-index scan
|
|
25
|
+
|
|
26
|
+
# Show full details
|
|
27
|
+
/wogi-map-index full
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## What Gets Indexed
|
|
33
|
+
|
|
34
|
+
| Category | What's Included |
|
|
35
|
+
|----------|-----------------|
|
|
36
|
+
| `components` | React/Vue components |
|
|
37
|
+
| `pages` | Routes and page components |
|
|
38
|
+
| `hooks` | Custom React hooks |
|
|
39
|
+
| `services` | Business logic services |
|
|
40
|
+
| `modules` | NestJS/Angular modules |
|
|
41
|
+
| `utils` | Utility functions |
|
|
42
|
+
| `api` | API route handlers |
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Configuration
|
|
47
|
+
|
|
48
|
+
```json
|
|
49
|
+
{
|
|
50
|
+
"componentIndex": {
|
|
51
|
+
"autoScan": true, // Enable auto-scanning
|
|
52
|
+
"scanOn": [ // When to scan
|
|
53
|
+
"sessionStart", // On new Claude session
|
|
54
|
+
"afterTask", // After task completion
|
|
55
|
+
"preCommit" // Before git commits (requires hooks)
|
|
56
|
+
],
|
|
57
|
+
"staleAfterMinutes": 60, // Refresh if older than this
|
|
58
|
+
"directories": [ // Where to look
|
|
59
|
+
"src/components",
|
|
60
|
+
"src/hooks",
|
|
61
|
+
"src/services",
|
|
62
|
+
"src/pages",
|
|
63
|
+
"src/modules",
|
|
64
|
+
"app"
|
|
65
|
+
],
|
|
66
|
+
"ignore": [ // What to skip
|
|
67
|
+
"*.test.*",
|
|
68
|
+
"*.spec.*",
|
|
69
|
+
"*.stories.*",
|
|
70
|
+
"index.ts",
|
|
71
|
+
"index.js",
|
|
72
|
+
"__tests__",
|
|
73
|
+
"__mocks__"
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## Index File Structure
|
|
82
|
+
|
|
83
|
+
The index is stored in `.workflow/state/component-index.json`:
|
|
84
|
+
|
|
85
|
+
```json
|
|
86
|
+
{
|
|
87
|
+
"lastScan": "2024-01-15T10:30:00.000Z",
|
|
88
|
+
"scanConfig": {
|
|
89
|
+
"directories": ["src/components", "src/hooks"],
|
|
90
|
+
"ignore": ["*.test.*"]
|
|
91
|
+
},
|
|
92
|
+
"components": [
|
|
93
|
+
{
|
|
94
|
+
"name": "Button",
|
|
95
|
+
"path": "src/components/Button.tsx",
|
|
96
|
+
"exports": ["Button", "ButtonProps"]
|
|
97
|
+
}
|
|
98
|
+
],
|
|
99
|
+
"hooks": [
|
|
100
|
+
{
|
|
101
|
+
"name": "useAuth",
|
|
102
|
+
"path": "src/hooks/useAuth.ts",
|
|
103
|
+
"exports": ["useAuth", "AuthContext"]
|
|
104
|
+
}
|
|
105
|
+
],
|
|
106
|
+
"services": [...],
|
|
107
|
+
"pages": [...],
|
|
108
|
+
"utils": [...]
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Categorization Logic
|
|
115
|
+
|
|
116
|
+
Components are categorized by path and naming:
|
|
117
|
+
|
|
118
|
+
| Pattern | Category |
|
|
119
|
+
|---------|----------|
|
|
120
|
+
| `/components/` in path | `components` |
|
|
121
|
+
| `/pages/` or `/app/` in path | `pages` |
|
|
122
|
+
| `use` prefix or `/hooks/` | `hooks` |
|
|
123
|
+
| `.service` suffix or `/services/` | `services` |
|
|
124
|
+
| `.module` suffix or `/modules/` | `modules` |
|
|
125
|
+
| `/utils/` or `/lib/` or `/helpers/` | `utils` |
|
|
126
|
+
| `/api/` in path | `api` |
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## Export Detection
|
|
131
|
+
|
|
132
|
+
The indexer extracts export names from files:
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
// Button.tsx
|
|
136
|
+
export const Button = () => {...}
|
|
137
|
+
export type ButtonProps = {...}
|
|
138
|
+
export default Button;
|
|
139
|
+
|
|
140
|
+
// Index entry:
|
|
141
|
+
{
|
|
142
|
+
"name": "Button",
|
|
143
|
+
"path": "src/components/Button.tsx",
|
|
144
|
+
"exports": ["Button", "ButtonProps"]
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Detected patterns:
|
|
149
|
+
- `export const/let/var X`
|
|
150
|
+
- `export function X`
|
|
151
|
+
- `export class X`
|
|
152
|
+
- `export default X`
|
|
153
|
+
- `export { A, B, C }`
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
## When Scanning Occurs
|
|
158
|
+
|
|
159
|
+
Based on `scanOn` configuration:
|
|
160
|
+
|
|
161
|
+
| Trigger | When |
|
|
162
|
+
|---------|------|
|
|
163
|
+
| `sessionStart` | Beginning of each Claude session (also checks stale) |
|
|
164
|
+
| `afterTask` | After completing any task via `flow done` |
|
|
165
|
+
| `preCommit` | Before git commits (requires git hooks installed) |
|
|
166
|
+
| `manual` | Only when explicitly requested |
|
|
167
|
+
|
|
168
|
+
```json
|
|
169
|
+
{
|
|
170
|
+
"componentIndex": {
|
|
171
|
+
"scanOn": ["sessionStart", "afterTask", "preCommit"],
|
|
172
|
+
"staleAfterMinutes": 60
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
### Stale Index Refresh
|
|
178
|
+
|
|
179
|
+
When `sessionStart` is enabled, the index is automatically refreshed if older than `staleAfterMinutes` (default: 60 minutes).
|
|
180
|
+
|
|
181
|
+
### Git Hooks Setup
|
|
182
|
+
|
|
183
|
+
To enable `preCommit` scanning, install git hooks:
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
node scripts/flow-setup-hooks.js # Install hooks
|
|
187
|
+
node scripts/flow-setup-hooks.js --status # Check status
|
|
188
|
+
node scripts/flow-setup-hooks.js --remove # Remove hooks
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
The pre-commit hook will:
|
|
192
|
+
1. Scan component index if `preCommit` is in `scanOn`
|
|
193
|
+
2. Sync rules from `decisions.md` if it was modified
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## Commands
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
# Summary view
|
|
201
|
+
/wogi-map-index
|
|
202
|
+
# Output:
|
|
203
|
+
# 📦 Component Index
|
|
204
|
+
# Last scan: 2024-01-15 10:30
|
|
205
|
+
#
|
|
206
|
+
# | Category | Count |
|
|
207
|
+
# |------------|-------|
|
|
208
|
+
# | Components | 45 |
|
|
209
|
+
# | Pages | 12 |
|
|
210
|
+
# | Hooks | 8 |
|
|
211
|
+
# | Services | 15 |
|
|
212
|
+
#
|
|
213
|
+
# Total: 80 items
|
|
214
|
+
|
|
215
|
+
# Full details
|
|
216
|
+
/wogi-map-index full
|
|
217
|
+
# Shows table with name, path, exports for each item
|
|
218
|
+
|
|
219
|
+
# Rescan
|
|
220
|
+
/wogi-map-index scan
|
|
221
|
+
# Scanned 4 directories
|
|
222
|
+
# Found 80 items
|
|
223
|
+
# ✓ Index updated
|
|
224
|
+
|
|
225
|
+
# Raw JSON
|
|
226
|
+
/wogi-map-index json
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## App-Map vs Component Index
|
|
232
|
+
|
|
233
|
+
| Feature | Component Index | App-Map |
|
|
234
|
+
|---------|-----------------|---------|
|
|
235
|
+
| **Source** | Auto-scanned | Human-curated |
|
|
236
|
+
| **Format** | JSON | Markdown |
|
|
237
|
+
| **Content** | File paths, exports | Descriptions, variants, usage |
|
|
238
|
+
| **Updates** | Automatic | Manual |
|
|
239
|
+
| **Purpose** | Discovery | Documentation |
|
|
240
|
+
|
|
241
|
+
Use together:
|
|
242
|
+
1. **Component Index**: Find what exists
|
|
243
|
+
2. **App-Map**: Understand how to use it
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## Hybrid Mode Integration
|
|
248
|
+
|
|
249
|
+
The component index feeds into hybrid mode:
|
|
250
|
+
|
|
251
|
+
```json
|
|
252
|
+
{
|
|
253
|
+
"hybrid": {
|
|
254
|
+
"projectContext": {
|
|
255
|
+
"availableComponents": {
|
|
256
|
+
"Button": "src/components/Button.tsx",
|
|
257
|
+
"Modal": "src/components/Modal.tsx"
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
This helps local LLMs:
|
|
265
|
+
- Know what imports are available
|
|
266
|
+
- Use existing components instead of creating new
|
|
267
|
+
- Follow established patterns
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## Comparing with App-Map
|
|
272
|
+
|
|
273
|
+
Use `/wogi-map-sync` to compare:
|
|
274
|
+
|
|
275
|
+
```bash
|
|
276
|
+
/wogi-map-sync
|
|
277
|
+
|
|
278
|
+
# Output:
|
|
279
|
+
# 📊 Index vs App-Map Comparison
|
|
280
|
+
#
|
|
281
|
+
# In index but not in app-map:
|
|
282
|
+
# - NewButton (src/components/NewButton.tsx)
|
|
283
|
+
# - useLocalStorage (src/hooks/useLocalStorage.ts)
|
|
284
|
+
#
|
|
285
|
+
# In app-map but not in index:
|
|
286
|
+
# - LegacyDropdown (may have been deleted)
|
|
287
|
+
#
|
|
288
|
+
# Suggest updates? [y/n]
|
|
289
|
+
```
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## Troubleshooting
|
|
294
|
+
|
|
295
|
+
### Components Not Found
|
|
296
|
+
|
|
297
|
+
Check directories are correct:
|
|
298
|
+
```bash
|
|
299
|
+
# Verify directories exist
|
|
300
|
+
ls -la src/components/
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
Update config if needed:
|
|
304
|
+
```json
|
|
305
|
+
{
|
|
306
|
+
"componentIndex": {
|
|
307
|
+
"directories": ["components", "lib"] // Adjust paths
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
### Too Many Results
|
|
313
|
+
|
|
314
|
+
Add ignore patterns:
|
|
315
|
+
```json
|
|
316
|
+
{
|
|
317
|
+
"componentIndex": {
|
|
318
|
+
"ignore": [
|
|
319
|
+
"*.test.*",
|
|
320
|
+
"*.stories.*",
|
|
321
|
+
"*.d.ts",
|
|
322
|
+
"internal/*"
|
|
323
|
+
]
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
### Exports Not Detected
|
|
329
|
+
|
|
330
|
+
The indexer has limits:
|
|
331
|
+
- Only processes `.ts`, `.tsx`, `.js`, `.jsx`, `.vue`
|
|
332
|
+
- Limits to 5 exports per file
|
|
333
|
+
- May miss complex re-exports
|
|
334
|
+
|
|
335
|
+
---
|
|
336
|
+
|
|
337
|
+
## Related
|
|
338
|
+
|
|
339
|
+
- [Onboarding](./onboarding-existing.md) - Initial scanning
|
|
340
|
+
- [App-Map Updates](../02-task-execution/04-completion.md) - Keeping registry current
|
|
341
|
+
- [Configuration Reference](../configuration/all-options.md) - All options
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
# Framework Detection
|
|
2
|
+
|
|
3
|
+
Auto-detect tech stack and suggest relevant skills.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Purpose
|
|
8
|
+
|
|
9
|
+
Framework detection enables:
|
|
10
|
+
- **Skill Suggestions**: Recommend framework-specific skills
|
|
11
|
+
- **Pattern Recognition**: Apply framework best practices
|
|
12
|
+
- **Documentation Fetching**: Retrieve official docs for reference
|
|
13
|
+
- **Hybrid Mode Optimization**: Configure for specific frameworks
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Detected Frameworks
|
|
18
|
+
|
|
19
|
+
### JavaScript/TypeScript
|
|
20
|
+
|
|
21
|
+
| Framework | Detection Method |
|
|
22
|
+
|-----------|-----------------|
|
|
23
|
+
| Next.js | `next` in package.json, `next.config.js` |
|
|
24
|
+
| React | `react` in package.json |
|
|
25
|
+
| React Native | `react-native` in package.json |
|
|
26
|
+
| Vue | `vue` in package.json |
|
|
27
|
+
| Nuxt | `nuxt.config.js` or `nuxt.config.ts` |
|
|
28
|
+
| Angular | `@angular/core`, `angular.json` |
|
|
29
|
+
| NestJS | `@nestjs/core`, `nest-cli.json` |
|
|
30
|
+
| Express | `express` in package.json |
|
|
31
|
+
| Fastify | `fastify` in package.json |
|
|
32
|
+
|
|
33
|
+
### Python
|
|
34
|
+
|
|
35
|
+
| Framework | Detection Method |
|
|
36
|
+
|-----------|-----------------|
|
|
37
|
+
| FastAPI | `fastapi` in requirements.txt |
|
|
38
|
+
| Django | `django` in requirements.txt |
|
|
39
|
+
| Flask | `flask` in requirements.txt |
|
|
40
|
+
|
|
41
|
+
### Other Languages
|
|
42
|
+
|
|
43
|
+
| Language | Detection Method |
|
|
44
|
+
|----------|-----------------|
|
|
45
|
+
| Go | `go.mod` file |
|
|
46
|
+
| Rust | `Cargo.toml` file |
|
|
47
|
+
| Java | `pom.xml` or `build.gradle` |
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Configuration
|
|
52
|
+
|
|
53
|
+
```json
|
|
54
|
+
{
|
|
55
|
+
"skillLearning": {
|
|
56
|
+
"enabled": true,
|
|
57
|
+
"autoDetectFrameworks": true,
|
|
58
|
+
"fetchOfficialDocs": true,
|
|
59
|
+
"frameworkDetectionPatterns": {
|
|
60
|
+
"nestjs": ["*.module.ts", "*.controller.ts", "*.service.ts", "@nestjs/*"],
|
|
61
|
+
"react": ["*.tsx", "*.jsx", "use*.ts", "react", "react-dom"],
|
|
62
|
+
"vue": ["*.vue", "vue", "@vue/*"],
|
|
63
|
+
"angular": ["*.component.ts", "*.module.ts", "@angular/*"],
|
|
64
|
+
"fastapi": ["main.py", "fastapi", "pydantic"],
|
|
65
|
+
"django": ["manage.py", "django", "settings.py"],
|
|
66
|
+
"express": ["app.js", "express", "router.js"]
|
|
67
|
+
},
|
|
68
|
+
"officialDocsUrls": {
|
|
69
|
+
"nestjs": "https://docs.nestjs.com",
|
|
70
|
+
"react": "https://react.dev",
|
|
71
|
+
"vue": "https://vuejs.org/guide",
|
|
72
|
+
"angular": "https://angular.io/docs",
|
|
73
|
+
"fastapi": "https://fastapi.tiangolo.com",
|
|
74
|
+
"django": "https://docs.djangoproject.com",
|
|
75
|
+
"express": "https://expressjs.com/en/guide"
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## Detection Process
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
87
|
+
│ FRAMEWORK DETECTION │
|
|
88
|
+
├─────────────────────────────────────────────────────────────┤
|
|
89
|
+
│ │
|
|
90
|
+
│ 1. Check Package Files │
|
|
91
|
+
│ ├─ package.json → JS/TS frameworks │
|
|
92
|
+
│ ├─ requirements.txt → Python frameworks │
|
|
93
|
+
│ ├─ go.mod → Go │
|
|
94
|
+
│ └─ Cargo.toml → Rust │
|
|
95
|
+
│ │
|
|
96
|
+
│ 2. Check Config Files │
|
|
97
|
+
│ ├─ next.config.js → Next.js │
|
|
98
|
+
│ ├─ nest-cli.json → NestJS │
|
|
99
|
+
│ ├─ angular.json → Angular │
|
|
100
|
+
│ └─ nuxt.config.ts → Nuxt │
|
|
101
|
+
│ │
|
|
102
|
+
│ 3. Scan File Patterns │
|
|
103
|
+
│ ├─ *.module.ts → NestJS │
|
|
104
|
+
│ ├─ *.tsx → React │
|
|
105
|
+
│ └─ *.vue → Vue │
|
|
106
|
+
│ │
|
|
107
|
+
│ 4. Suggest Skills │
|
|
108
|
+
│ └─ Map framework → skill package │
|
|
109
|
+
│ │
|
|
110
|
+
└─────────────────────────────────────────────────────────────┘
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Skill Suggestions
|
|
116
|
+
|
|
117
|
+
When a framework is detected:
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
./scripts/flow onboard
|
|
121
|
+
|
|
122
|
+
# Output:
|
|
123
|
+
# Detected:
|
|
124
|
+
# Language: TypeScript
|
|
125
|
+
# Framework: NestJS
|
|
126
|
+
#
|
|
127
|
+
# ✓ Recommended skill: nestjs
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
Skills are auto-added to config:
|
|
131
|
+
```json
|
|
132
|
+
{
|
|
133
|
+
"skills": {
|
|
134
|
+
"installed": ["nestjs"]
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Framework → Skill Mapping
|
|
140
|
+
|
|
141
|
+
| Framework | Skill |
|
|
142
|
+
|-----------|-------|
|
|
143
|
+
| NestJS | `nestjs` |
|
|
144
|
+
| React, Next.js, React Native | `react` |
|
|
145
|
+
| FastAPI, Django, Flask | `python` |
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Official Documentation
|
|
150
|
+
|
|
151
|
+
When `fetchOfficialDocs` is enabled, WogiFlow can reference official documentation:
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"skillLearning": {
|
|
156
|
+
"fetchOfficialDocs": true,
|
|
157
|
+
"officialDocsUrls": {
|
|
158
|
+
"nestjs": "https://docs.nestjs.com",
|
|
159
|
+
"react": "https://react.dev"
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
This enables:
|
|
166
|
+
- Citing official patterns
|
|
167
|
+
- Referencing best practices
|
|
168
|
+
- Staying up-to-date with conventions
|
|
169
|
+
|
|
170
|
+
---
|
|
171
|
+
|
|
172
|
+
## Customizing Detection
|
|
173
|
+
|
|
174
|
+
### Add Custom Patterns
|
|
175
|
+
|
|
176
|
+
```json
|
|
177
|
+
{
|
|
178
|
+
"skillLearning": {
|
|
179
|
+
"frameworkDetectionPatterns": {
|
|
180
|
+
"my-framework": ["*.mf.ts", "my-framework-config.json"]
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Add Custom Docs URL
|
|
187
|
+
|
|
188
|
+
```json
|
|
189
|
+
{
|
|
190
|
+
"skillLearning": {
|
|
191
|
+
"officialDocsUrls": {
|
|
192
|
+
"my-framework": "https://docs.my-framework.io"
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## Database Detection
|
|
201
|
+
|
|
202
|
+
Also detects databases:
|
|
203
|
+
|
|
204
|
+
| Database | Detection Method |
|
|
205
|
+
|----------|-----------------|
|
|
206
|
+
| TypeORM | `typeorm` in package.json |
|
|
207
|
+
| Prisma | `prisma` in package.json |
|
|
208
|
+
| MongoDB | `mongoose` in package.json |
|
|
209
|
+
| Sequelize | `sequelize` in package.json |
|
|
210
|
+
| PostgreSQL | In docker-compose.yml |
|
|
211
|
+
| MySQL | In docker-compose.yml |
|
|
212
|
+
| Redis | In docker-compose.yml |
|
|
213
|
+
|
|
214
|
+
Output stored in `decisions.md`:
|
|
215
|
+
```markdown
|
|
216
|
+
## Tech Stack
|
|
217
|
+
- **Database**: PostgreSQL (Prisma)
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Language Detection
|
|
223
|
+
|
|
224
|
+
Priority order:
|
|
225
|
+
1. `tsconfig.json` → TypeScript
|
|
226
|
+
2. `package.json` → JavaScript
|
|
227
|
+
3. `requirements.txt`, `setup.py`, `pyproject.toml` → Python
|
|
228
|
+
4. `go.mod` → Go
|
|
229
|
+
5. `Cargo.toml` → Rust
|
|
230
|
+
6. `pom.xml`, `build.gradle` → Java
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Multi-Framework Projects
|
|
235
|
+
|
|
236
|
+
For monorepos or multi-framework projects:
|
|
237
|
+
|
|
238
|
+
```
|
|
239
|
+
project/
|
|
240
|
+
├── frontend/ # Next.js
|
|
241
|
+
│ └── package.json
|
|
242
|
+
├── backend/ # NestJS
|
|
243
|
+
│ └── package.json
|
|
244
|
+
└── mobile/ # React Native
|
|
245
|
+
└── package.json
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Run onboarding from root:
|
|
249
|
+
```bash
|
|
250
|
+
./scripts/flow onboard
|
|
251
|
+
# Detects: Next.js, NestJS, React Native
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
Multiple skills suggested:
|
|
255
|
+
```json
|
|
256
|
+
{
|
|
257
|
+
"skills": {
|
|
258
|
+
"installed": ["react", "nestjs"]
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## Related
|
|
266
|
+
|
|
267
|
+
- [Onboarding](./onboarding-existing.md) - Full onboarding process
|
|
268
|
+
- [Skills System](../03-self-improvement/skill-learning.md) - How skills work
|
|
269
|
+
- [Configuration Reference](../configuration/all-options.md) - All options
|