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,304 @@
|
|
|
1
|
+
# Skill Matching
|
|
2
|
+
|
|
3
|
+
<!-- PINS: overview, matching-flow, trigger-types, scoring, configuration, auto-invoke, debugging -->
|
|
4
|
+
|
|
5
|
+
How skills are automatically matched to task context based on keywords, file patterns, and task types.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Overview
|
|
10
|
+
<!-- PIN: overview -->
|
|
11
|
+
|
|
12
|
+
Skill matching enables model-invoked skills - automatically loading relevant framework knowledge based on what you're working on. No manual activation required.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## How Matching Works
|
|
17
|
+
<!-- PIN: matching-flow -->
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
┌─────────────────────────────────────────────────────────────────────┐
|
|
21
|
+
│ SKILL MATCHING FLOW │
|
|
22
|
+
├─────────────────────────────────────────────────────────────────────┤
|
|
23
|
+
│ │
|
|
24
|
+
│ Task Context Matching Engine │
|
|
25
|
+
│ ──────────── ─────────────── │
|
|
26
|
+
│ │
|
|
27
|
+
│ Description: │
|
|
28
|
+
│ "Create user service" ──────▶ Keywords: service, user │
|
|
29
|
+
│ ↓ │
|
|
30
|
+
│ Files modified: ↓ │
|
|
31
|
+
│ users.service.ts ──────▶ File patterns: *.service.ts │
|
|
32
|
+
│ ↓ │
|
|
33
|
+
│ Task type: ↓ │
|
|
34
|
+
│ feature ──────▶ Task types: feature │
|
|
35
|
+
│ ↓ │
|
|
36
|
+
│ ┌─────────────┐ │
|
|
37
|
+
│ │ MATCHED: │ │
|
|
38
|
+
│ │ nestjs ●●●●○ │
|
|
39
|
+
│ │ react ●○○○○ │
|
|
40
|
+
│ └─────────────┘ │
|
|
41
|
+
│ │
|
|
42
|
+
└─────────────────────────────────────────────────────────────────────┘
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
## Trigger Types
|
|
48
|
+
<!-- PIN: trigger-types -->
|
|
49
|
+
|
|
50
|
+
### 1. Keywords
|
|
51
|
+
|
|
52
|
+
Words in task description that trigger a skill:
|
|
53
|
+
|
|
54
|
+
```json
|
|
55
|
+
{
|
|
56
|
+
"nestjs": {
|
|
57
|
+
"keywords": ["nestjs", "module", "controller", "service", "entity", "dto"]
|
|
58
|
+
},
|
|
59
|
+
"react": {
|
|
60
|
+
"keywords": ["react", "component", "hook", "usestate", "jsx", "tsx"]
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 2. File Patterns
|
|
66
|
+
|
|
67
|
+
File extensions and naming patterns:
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"nestjs": {
|
|
72
|
+
"filePatterns": ["*.module.ts", "*.controller.ts", "*.service.ts"]
|
|
73
|
+
},
|
|
74
|
+
"react": {
|
|
75
|
+
"filePatterns": ["*.tsx", "*.jsx", "use*.ts"]
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
### 3. Task Types
|
|
81
|
+
|
|
82
|
+
The type of task being worked on:
|
|
83
|
+
|
|
84
|
+
```json
|
|
85
|
+
{
|
|
86
|
+
"nestjs": {
|
|
87
|
+
"taskTypes": ["feature", "bugfix", "refactor"]
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
### 4. Categories
|
|
93
|
+
|
|
94
|
+
Broader categorization:
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"nestjs": {
|
|
99
|
+
"categories": ["backend", "api", "database"]
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Scoring System
|
|
107
|
+
<!-- PIN: scoring -->
|
|
108
|
+
|
|
109
|
+
Each trigger type contributes to the match score:
|
|
110
|
+
|
|
111
|
+
| Trigger Type | Weight | Example |
|
|
112
|
+
|--------------|--------|---------|
|
|
113
|
+
| Exact keyword | +3 | "nestjs" in description |
|
|
114
|
+
| Partial keyword | +1 | "service" (common word) |
|
|
115
|
+
| File pattern | +2 | Editing `*.controller.ts` |
|
|
116
|
+
| Task type | +1 | feature task |
|
|
117
|
+
| Category | +1 | backend category |
|
|
118
|
+
|
|
119
|
+
Score display: `●●●●○` = 4/5 score
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Configuration
|
|
124
|
+
<!-- PIN: configuration -->
|
|
125
|
+
|
|
126
|
+
### Installed Skills
|
|
127
|
+
|
|
128
|
+
```json
|
|
129
|
+
{
|
|
130
|
+
"skills": {
|
|
131
|
+
"installed": ["nestjs", "react", "figma-analyzer", "python"],
|
|
132
|
+
"autoInvoke": true, // Auto-load matched skills
|
|
133
|
+
"autoDiscoverNested": true, // Auto-discover nested skills
|
|
134
|
+
"minScore": 2 // Minimum score to invoke
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
### Nested Skills (v1.0.3+)
|
|
140
|
+
|
|
141
|
+
Skills can be organized in nested directories for better categorization:
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
.claude/skills/
|
|
145
|
+
├── nestjs/ # Flat skill (traditional)
|
|
146
|
+
├── frontend/ # Category directory
|
|
147
|
+
│ ├── react/ # Nested skill: "frontend/react"
|
|
148
|
+
│ └── vue/ # Nested skill: "frontend/vue"
|
|
149
|
+
└── backend/ # Category directory
|
|
150
|
+
└── express/ # Nested skill: "backend/express"
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
**Nested skills are auto-discovered** when `autoDiscoverNested: true` (default).
|
|
154
|
+
|
|
155
|
+
Create nested skills:
|
|
156
|
+
```bash
|
|
157
|
+
flow skill-create frontend/react
|
|
158
|
+
flow skill-create backend/express
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Reference in config:
|
|
162
|
+
```json
|
|
163
|
+
{
|
|
164
|
+
"skills": {
|
|
165
|
+
"installed": ["nestjs", "frontend/react", "backend/express"]
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
**Max nesting depth**: 3 levels (e.g., `domain/category/framework`)
|
|
171
|
+
|
|
172
|
+
### Custom Triggers
|
|
173
|
+
|
|
174
|
+
Override default triggers in skill.md:
|
|
175
|
+
|
|
176
|
+
```markdown
|
|
177
|
+
---
|
|
178
|
+
name: my-skill
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## Triggers
|
|
182
|
+
|
|
183
|
+
- keywords: ["custom", "keywords"]
|
|
184
|
+
- filePatterns: ["*.custom.ts"]
|
|
185
|
+
- taskTypes: ["feature"]
|
|
186
|
+
- categories: ["backend"]
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Skill Priority
|
|
192
|
+
|
|
193
|
+
When multiple skills match:
|
|
194
|
+
|
|
195
|
+
1. **Exclusive skills** (if marked) prevent others from loading
|
|
196
|
+
2. **Higher score** wins for conflicting patterns
|
|
197
|
+
3. **Explicit install** takes priority over auto-detected
|
|
198
|
+
|
|
199
|
+
---
|
|
200
|
+
|
|
201
|
+
## Auto-Invoke Behavior
|
|
202
|
+
<!-- PIN: auto-invoke -->
|
|
203
|
+
|
|
204
|
+
When `autoInvoke: true`:
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
/wogi-start wf-012
|
|
208
|
+
↓
|
|
209
|
+
Load task context
|
|
210
|
+
↓
|
|
211
|
+
Run skill matcher
|
|
212
|
+
↓
|
|
213
|
+
┌─────────────────────────────────────────┐
|
|
214
|
+
│ 🔧 Matched Skills: │
|
|
215
|
+
│ nestjs [●●●●○] │
|
|
216
|
+
│ keyword: "service", file: *.service.ts│
|
|
217
|
+
└─────────────────────────────────────────┘
|
|
218
|
+
↓
|
|
219
|
+
Load: .claude/skills/nestjs/knowledge/patterns.md
|
|
220
|
+
Load: .claude/skills/nestjs/knowledge/anti-patterns.md
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## Default Triggers
|
|
226
|
+
|
|
227
|
+
Built-in triggers for common frameworks:
|
|
228
|
+
|
|
229
|
+
| Skill | Key Triggers |
|
|
230
|
+
|-------|--------------|
|
|
231
|
+
| `nestjs` | module, controller, service, entity, dto, *.module.ts |
|
|
232
|
+
| `react` | component, hook, useState, *.tsx, *.jsx |
|
|
233
|
+
| `python` | pip, django, flask, fastapi, *.py |
|
|
234
|
+
| `figma-analyzer` | figma, design, design-system, tokens |
|
|
235
|
+
|
|
236
|
+
> **Note**: Long input processing (transcripts, specs, requirements) is now handled automatically by the `long-input-gate` hook, not as a skill.
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
## Disabling Auto-Invoke
|
|
241
|
+
|
|
242
|
+
Per-task:
|
|
243
|
+
```bash
|
|
244
|
+
/wogi-start wf-012 --no-skills
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
Globally:
|
|
248
|
+
```json
|
|
249
|
+
{
|
|
250
|
+
"skills": {
|
|
251
|
+
"autoInvoke": false
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Skill Loading Sequence
|
|
259
|
+
|
|
260
|
+
1. **Match skills** against task context
|
|
261
|
+
2. **Filter** by minimum score
|
|
262
|
+
3. **Sort** by score (highest first)
|
|
263
|
+
4. **Load** skill.md for each matched skill
|
|
264
|
+
5. **Load** knowledge files (patterns.md, anti-patterns.md)
|
|
265
|
+
6. **Apply** to current context
|
|
266
|
+
|
|
267
|
+
---
|
|
268
|
+
|
|
269
|
+
## Debugging Matches
|
|
270
|
+
<!-- PIN: debugging -->
|
|
271
|
+
|
|
272
|
+
Check why a skill was/wasn't matched:
|
|
273
|
+
|
|
274
|
+
```bash
|
|
275
|
+
# Show matching details
|
|
276
|
+
node scripts/flow-skill-matcher.js debug "create user service"
|
|
277
|
+
|
|
278
|
+
# Output:
|
|
279
|
+
# Task: "create user service"
|
|
280
|
+
#
|
|
281
|
+
# nestjs: 4/5
|
|
282
|
+
# - keyword "service": +3
|
|
283
|
+
# - category "backend": +1
|
|
284
|
+
#
|
|
285
|
+
# react: 1/5
|
|
286
|
+
# - keyword "user": +1
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## Best Practices
|
|
292
|
+
|
|
293
|
+
1. **Keep keywords specific** - "nestjs" over "backend"
|
|
294
|
+
2. **Use file patterns** - More reliable than keywords
|
|
295
|
+
3. **Set appropriate minScore** - Too low = noise, too high = misses
|
|
296
|
+
4. **Review matches** - Check output on `/wogi-start`
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## Related
|
|
301
|
+
|
|
302
|
+
- [Skill Learning](./skill-learning.md) - How skills are created and updated
|
|
303
|
+
- [Task Execution](../02-task-execution/) - Where skills are applied
|
|
304
|
+
- [Configuration](../configuration/all-options.md) - Full skill settings
|
|
@@ -0,0 +1,342 @@
|
|
|
1
|
+
# Team-Level Learning
|
|
2
|
+
|
|
3
|
+
Knowledge routing, pattern promotion, and shared learning across teams.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
Team learning enables:
|
|
10
|
+
- Sharing valuable patterns across projects
|
|
11
|
+
- Promoting local learnings to team-wide standards
|
|
12
|
+
- Routing new knowledge to appropriate scope
|
|
13
|
+
- Maintaining consistent practices
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Knowledge Routing
|
|
18
|
+
|
|
19
|
+
Decide where new learnings should go:
|
|
20
|
+
|
|
21
|
+
```json
|
|
22
|
+
{
|
|
23
|
+
"knowledgeRouting": {
|
|
24
|
+
"autoDetect": true, // Analyze pattern scope
|
|
25
|
+
"confirmWithUser": true, // Ask before routing
|
|
26
|
+
"defaultScope": "local", // local | team | skill
|
|
27
|
+
"modelSpecificLearning": true
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Routing Flow
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
New Pattern Learned
|
|
36
|
+
↓
|
|
37
|
+
┌─────────────────────────────────────────┐
|
|
38
|
+
│ Analyze Pattern: │
|
|
39
|
+
│ - Project-specific? → Local │
|
|
40
|
+
│ - Framework-related? → Skill │
|
|
41
|
+
│ - General best practice? → Team │
|
|
42
|
+
└─────────────────────────────────────────┘
|
|
43
|
+
↓
|
|
44
|
+
┌─────────────────────────────────────────┐
|
|
45
|
+
│ Confirm with user (if enabled) │
|
|
46
|
+
│ "This pattern could benefit the team. │
|
|
47
|
+
│ Promote to team scope? [y/n]" │
|
|
48
|
+
└─────────────────────────────────────────┘
|
|
49
|
+
↓
|
|
50
|
+
Route to appropriate location
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### Scope Determination
|
|
54
|
+
|
|
55
|
+
| Pattern Type | Example | Scope |
|
|
56
|
+
|--------------|---------|-------|
|
|
57
|
+
| Project path | "Use /lib/api for calls" | Local |
|
|
58
|
+
| Framework pattern | "NestJS services use DI" | Skill |
|
|
59
|
+
| General practice | "Always handle errors" | Team |
|
|
60
|
+
| Company standard | "Use our component lib" | Team |
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Automatic Promotion
|
|
65
|
+
|
|
66
|
+
Valuable patterns can be auto-promoted:
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"automaticPromotion": {
|
|
71
|
+
"enabled": false,
|
|
72
|
+
"threshold": 3, // Uses before promotion
|
|
73
|
+
"minRelevance": 0.8, // Relevance score threshold
|
|
74
|
+
"destinations": ["decisions.md"],
|
|
75
|
+
"requireApproval": true, // Require user approval
|
|
76
|
+
"autoApplyTeamApproved": true
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Promotion Flow
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
Pattern used successfully 3+ times
|
|
85
|
+
↓
|
|
86
|
+
Relevance score > 0.8
|
|
87
|
+
↓
|
|
88
|
+
┌─────────────────────────────────────────┐
|
|
89
|
+
│ Suggest promotion to team: │
|
|
90
|
+
│ │
|
|
91
|
+
│ "Always use ErrorBoundary for pages" │
|
|
92
|
+
│ Used: 5 times, Success: 100% │
|
|
93
|
+
│ │
|
|
94
|
+
│ Promote to team decisions? [y/n] │
|
|
95
|
+
└─────────────────────────────────────────┘
|
|
96
|
+
↓
|
|
97
|
+
(If approved)
|
|
98
|
+
↓
|
|
99
|
+
Sync to team backend or shared profile
|
|
100
|
+
↓
|
|
101
|
+
Available to all team members
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## Team Sync
|
|
107
|
+
|
|
108
|
+
When team features are enabled:
|
|
109
|
+
|
|
110
|
+
```json
|
|
111
|
+
{
|
|
112
|
+
"team": {
|
|
113
|
+
"enabled": true,
|
|
114
|
+
"sync": {
|
|
115
|
+
"decisions": true,
|
|
116
|
+
"skills": true,
|
|
117
|
+
"memory": true
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### What Syncs
|
|
124
|
+
|
|
125
|
+
| Item | Direction | Purpose |
|
|
126
|
+
|------|-----------|---------|
|
|
127
|
+
| decisions.md | Bidirectional | Team patterns |
|
|
128
|
+
| Skills | Download | Framework knowledge |
|
|
129
|
+
| Memory facts | Upload | Discovered patterns |
|
|
130
|
+
|
|
131
|
+
### Sync Process
|
|
132
|
+
|
|
133
|
+
```
|
|
134
|
+
Local Change
|
|
135
|
+
↓
|
|
136
|
+
Check: Is this team-scoped?
|
|
137
|
+
↓
|
|
138
|
+
Yes → Queue for sync
|
|
139
|
+
↓
|
|
140
|
+
Sync interval (5 min) or manual trigger
|
|
141
|
+
↓
|
|
142
|
+
Push to team backend
|
|
143
|
+
↓
|
|
144
|
+
Other team members receive on next sync
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
## Conflict Resolution
|
|
150
|
+
|
|
151
|
+
When local and team patterns conflict:
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"team": {
|
|
156
|
+
"conflictResolution": "newest-wins"
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
### Resolution Strategies
|
|
162
|
+
|
|
163
|
+
| Strategy | Behavior |
|
|
164
|
+
|----------|----------|
|
|
165
|
+
| `newest-wins` | Latest timestamp wins |
|
|
166
|
+
| `local-wins` | Prefer local changes |
|
|
167
|
+
| `remote-wins` | Prefer team changes |
|
|
168
|
+
| `ask` | Prompt for each conflict |
|
|
169
|
+
|
|
170
|
+
### Conflict Example
|
|
171
|
+
|
|
172
|
+
```
|
|
173
|
+
Local: "Use axios for API calls"
|
|
174
|
+
Team: "Use fetch for API calls"
|
|
175
|
+
|
|
176
|
+
With newest-wins:
|
|
177
|
+
- Check timestamps
|
|
178
|
+
- Apply newer pattern
|
|
179
|
+
- Log conflict for review
|
|
180
|
+
|
|
181
|
+
With ask:
|
|
182
|
+
- Prompt user
|
|
183
|
+
- "Team uses fetch, you use axios. Keep which?"
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
---
|
|
187
|
+
|
|
188
|
+
## Shared Skills
|
|
189
|
+
|
|
190
|
+
Skills can be shared team-wide:
|
|
191
|
+
|
|
192
|
+
```json
|
|
193
|
+
{
|
|
194
|
+
"team": {
|
|
195
|
+
"sync": {
|
|
196
|
+
"skills": true
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Skill Sharing Flow
|
|
203
|
+
|
|
204
|
+
1. **Create Local**: Developer creates/updates skill
|
|
205
|
+
2. **Mark for Sharing**: Promote skill to team
|
|
206
|
+
3. **Review**: Team admin approves
|
|
207
|
+
4. **Distribute**: Skill syncs to all members
|
|
208
|
+
5. **Local Override**: Members can extend locally
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Team Memory
|
|
213
|
+
|
|
214
|
+
Share discovered facts:
|
|
215
|
+
|
|
216
|
+
```json
|
|
217
|
+
{
|
|
218
|
+
"team": {
|
|
219
|
+
"sync": {
|
|
220
|
+
"memory": true
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### What's Shared
|
|
227
|
+
|
|
228
|
+
- Architectural patterns
|
|
229
|
+
- Common solutions
|
|
230
|
+
- Performance findings
|
|
231
|
+
- Security patterns
|
|
232
|
+
|
|
233
|
+
### What's NOT Shared
|
|
234
|
+
|
|
235
|
+
- Project-specific paths
|
|
236
|
+
- Personal preferences
|
|
237
|
+
- Temporary workarounds
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## Manual Sharing
|
|
242
|
+
|
|
243
|
+
Without team backend, use profile export:
|
|
244
|
+
|
|
245
|
+
```bash
|
|
246
|
+
# Export learnings
|
|
247
|
+
/wogi-export
|
|
248
|
+
|
|
249
|
+
# Share file with team
|
|
250
|
+
# (via git, Slack, email, etc.)
|
|
251
|
+
|
|
252
|
+
# Import on other machine
|
|
253
|
+
/wogi-import
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### Git-Based Sharing
|
|
257
|
+
|
|
258
|
+
```bash
|
|
259
|
+
# Include shared decisions in repo
|
|
260
|
+
git add .workflow/state/decisions.md
|
|
261
|
+
git commit -m "Update team patterns"
|
|
262
|
+
git push
|
|
263
|
+
|
|
264
|
+
# Team members pull changes
|
|
265
|
+
git pull
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## Cross-Project Learning
|
|
271
|
+
|
|
272
|
+
For teams with multiple projects:
|
|
273
|
+
|
|
274
|
+
```json
|
|
275
|
+
{
|
|
276
|
+
"team": {
|
|
277
|
+
"projectScope": false // Share across projects
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
### Cross-Project Flow
|
|
283
|
+
|
|
284
|
+
```
|
|
285
|
+
Project A learns pattern
|
|
286
|
+
↓
|
|
287
|
+
Pattern promoted to team
|
|
288
|
+
↓
|
|
289
|
+
Project B syncs
|
|
290
|
+
↓
|
|
291
|
+
Pattern available in Project B
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
### Scoped vs Global
|
|
295
|
+
|
|
296
|
+
| Setting | Behavior |
|
|
297
|
+
|---------|----------|
|
|
298
|
+
| `projectScope: true` | Learnings stay in project |
|
|
299
|
+
| `projectScope: false` | Learnings share across projects |
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## Knowledge Hierarchy
|
|
304
|
+
|
|
305
|
+
```
|
|
306
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
307
|
+
│ KNOWLEDGE FLOW │
|
|
308
|
+
├─────────────────────────────────────────────────────────────┤
|
|
309
|
+
│ │
|
|
310
|
+
│ Local Discovery │
|
|
311
|
+
│ ↓ │
|
|
312
|
+
│ Project decisions.md │
|
|
313
|
+
│ ↓ (if valuable) │
|
|
314
|
+
│ Team decisions (promoted) │
|
|
315
|
+
│ ↓ (if framework-specific) │
|
|
316
|
+
│ Shared skill patterns │
|
|
317
|
+
│ │
|
|
318
|
+
│ ──────────────────────────────────────── │
|
|
319
|
+
│ │
|
|
320
|
+
│ Team patterns flow DOWN to new projects │
|
|
321
|
+
│ Local discoveries flow UP to team (with approval) │
|
|
322
|
+
│ │
|
|
323
|
+
└─────────────────────────────────────────────────────────────┘
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
## Best Practices
|
|
329
|
+
|
|
330
|
+
1. **Start Local**: Don't over-share immediately
|
|
331
|
+
2. **Validate First**: Pattern should work consistently
|
|
332
|
+
3. **Get Consensus**: Team should agree before promotion
|
|
333
|
+
4. **Document Why**: Include rationale with patterns
|
|
334
|
+
5. **Review Periodically**: Remove outdated team patterns
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
## Related
|
|
339
|
+
|
|
340
|
+
- [Project Learning](./project-learning.md) - Local patterns
|
|
341
|
+
- [Skill Learning](./skill-learning.md) - Framework patterns
|
|
342
|
+
- [Team Setup](../01-setup-onboarding/team-setup.md) - Team configuration
|