@wipal/agent-team 1.0.3 → 1.1.0
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/skills/discover.md +127 -0
- package/.claude/commands/skills/install.md +225 -0
- package/.claude/commands/skills/review.md +234 -0
- package/.claude/commands/utils/learn.md +142 -0
- package/.claude/commands/utils/retrospect.md +62 -0
- package/.claude/commands/utils/switch.md +113 -0
- package/.claude/commands/utils/sync.md +183 -0
- package/.claude/rules/common/general-rules.md +6 -0
- package/.claude/rules/role-rules/dev-be-rules.md +241 -0
- package/.claude/rules/role-rules/dev-fe-rules.md +76 -0
- package/.claude/skills/SKILL-INDEX.md +24 -5
- package/.claude/skills/core/knowledge-graph/SKILL.md +214 -0
- package/.claude/skills/core/sequential-thinking/SKILL.md +112 -0
- package/.claude/skills/core/sequential-thinking/references/advanced.md +122 -0
- package/.claude/skills/core/sequential-thinking/references/examples.md +274 -0
- package/.claude/skills/domain/architecture/c4-architecture/SKILL.md +314 -0
- package/.claude/skills/domain/architecture/c4-architecture/references/advanced-patterns.md +552 -0
- package/.claude/skills/domain/architecture/c4-architecture/references/c4-syntax.md +492 -0
- package/.claude/skills/domain/architecture/c4-architecture/references/common-mistakes.md +437 -0
- package/.claude/skills/domain/architecture/mermaid-diagrams/SKILL.md +238 -0
- package/.claude/skills/domain/architecture/mermaid-diagrams/references/advanced-features.md +556 -0
- package/.claude/skills/domain/architecture/mermaid-diagrams/references/architecture-diagrams.md +192 -0
- package/.claude/skills/domain/architecture/mermaid-diagrams/references/c4-diagrams.md +410 -0
- package/.claude/skills/domain/architecture/mermaid-diagrams/references/class-diagrams.md +361 -0
- package/.claude/skills/domain/architecture/mermaid-diagrams/references/erd-diagrams.md +510 -0
- package/.claude/skills/domain/architecture/mermaid-diagrams/references/flowcharts.md +450 -0
- package/.claude/skills/domain/architecture/mermaid-diagrams/references/sequence-diagrams.md +394 -0
- package/.claude/skills/domain/backend/testing-be/SKILL.md +121 -17
- package/.claude/skills/domain/design/design-system/SKILL.md +169 -0
- package/.claude/skills/domain/design/html-css-output/SKILL.md +253 -0
- package/.claude/skills/domain/design/mockup-creation/SKILL.md +230 -0
- package/.claude/skills/domain/design/responsive-design/SKILL.md +207 -0
- package/.claude/skills/domain/design/ui-design/SKILL.md +124 -0
- package/.claude/skills/domain/frontend/testing-fe/SKILL.md +143 -38
- package/.claude/skills/domain/frontend/ui-ux-pro-max/README.md +45 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/SKILL.md +404 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/charts.csv +26 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/colors.csv +97 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/icons.csv +101 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/landing.csv +31 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/products.csv +97 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/react-performance.csv +45 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/astro.csv +54 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/react.csv +54 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/stacks/vue.csv +50 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/styles.csv +68 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/typography.csv +58 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/data/web-interface.csv +31 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/scripts/core.py +253 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/scripts/design_system.py +1067 -0
- package/.claude/skills/domain/frontend/ui-ux-pro-max/scripts/search.py +114 -0
- package/.claude/skills/domain/product/requirements-clarity/SKILL.md +340 -0
- package/.claude/skills/skills-registry.yaml +103 -8
- package/README.md +107 -33
- package/README.npm.md +252 -0
- package/TUTORIAL.md +256 -0
- package/bin/agent-team.js +26 -7
- package/config/roles.yaml +107 -0
- package/docs/01-architecture.md +699 -0
- package/docs/02-setup-guide.md +634 -0
- package/docs/03-skills-guide.md +628 -0
- package/docs/04-workflows.md +792 -0
- package/docs/05-model-strategy.md +550 -0
- package/docs/06-extend-guide.md +1226 -0
- package/docs/07-quick-reference.md +578 -0
- package/docs/08-skills-discovery.md +342 -0
- package/docs/README.md +134 -0
- package/docs/rqm.md +560 -0
- package/package.json +10 -4
- package/scripts/postinstall.js +46 -0
- package/src/commands/add.js +131 -67
- package/src/commands/init.js +419 -9
- package/src/commands/list.js +20 -16
- package/src/commands/projects.js +127 -0
- package/src/commands/setup-hooks.js +261 -0
- package/src/index.js +0 -1
- package/src/utils/file-utils.js +147 -50
- package/src/utils/global-registry.js +224 -0
- package/templates/CLAUDE.md.tmpl +128 -20
- package/templates/MEMORY.md.tmpl +119 -0
- package/templates/agent.md.tmpl +205 -0
- package/templates/code/nestjs-controller.ts.tmpl +49 -0
- package/templates/code/nestjs-dto.ts.tmpl +63 -0
- package/templates/code/nestjs-service.ts.tmpl +45 -0
- package/templates/code/react-component.tsx.tmpl +24 -0
- package/templates/code/react-hook.ts.tmpl +54 -0
- package/templates/code/test.spec.ts.tmpl +50 -0
- package/templates/code/vue-component.vue.tmpl +49 -0
- package/templates/code/vue-composable.ts.tmpl +54 -0
- package/templates/knowledge.md.tmpl +152 -17
- package/templates/meeting-notes.md.tmpl +110 -0
- package/templates/memory/hooks.memory.json +50 -0
- package/templates/memory/settings.memory.json +16 -0
- package/templates/reports/bug-report.md.tmpl +164 -0
- package/templates/reports/code-review.md.tmpl +201 -0
- package/templates/reports/sprint-report.md.tmpl +218 -0
- package/templates/roles/ba.md +53 -0
- package/templates/roles/designer.md +82 -0
- package/templates/roles/dev-be.md +49 -0
- package/templates/roles/dev-fe.md +49 -0
- package/templates/roles/devops.md +53 -0
- package/templates/roles/pm.md +49 -0
- package/templates/roles/qa.md +53 -0
- package/templates/roles/sa.md +49 -0
- package/templates/roles/tech-lead.md +132 -0
- package/templates/skills/memory/memory-status.md +78 -0
- package/templates/skills/memory/recall.md +160 -0
- package/templates/skills/memory/reflect.md +168 -0
- package/templates/skills/memory/remember.md +105 -0
- package/templates/tasks/lessons.md.tmpl +77 -0
- package/templates/tasks/todo.md.tmpl +53 -0
- package/src/commands/switch.js +0 -53
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: recall
|
|
3
|
+
description: Search and retrieve memories from long-term storage using semantic search
|
|
4
|
+
invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Recall Skill
|
|
8
|
+
|
|
9
|
+
Search and retrieve memories from SimpleMem long-term memory system.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
Use this skill when:
|
|
14
|
+
- Starting a new task - check relevant history first
|
|
15
|
+
- Encountering a bug - check similar past issues
|
|
16
|
+
- Making a decision - review past decisions
|
|
17
|
+
- Implementing a feature - look for existing patterns
|
|
18
|
+
- User asks about project history or decisions
|
|
19
|
+
- You need context on why something was done a certain way
|
|
20
|
+
|
|
21
|
+
## How to Use
|
|
22
|
+
|
|
23
|
+
### Option 1: Basic Search
|
|
24
|
+
|
|
25
|
+
Call the `memory_search` MCP tool:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
memory_search(
|
|
29
|
+
tenant_id="<agent-name>",
|
|
30
|
+
query="<what to search for>",
|
|
31
|
+
k=10
|
|
32
|
+
)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### Option 2: Get Context by Intent
|
|
36
|
+
|
|
37
|
+
Call the `memory_get_context` MCP tool:
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
memory_get_context(
|
|
41
|
+
tenant_id="<agent-name>",
|
|
42
|
+
intent="<current task or intent>",
|
|
43
|
+
limit=20
|
|
44
|
+
)
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Parameters
|
|
48
|
+
|
|
49
|
+
| Parameter | Required | Description |
|
|
50
|
+
|-----------|----------|-------------|
|
|
51
|
+
| `tenant_id` | Yes | Your agent name (for memory isolation) |
|
|
52
|
+
| `query` | Yes (search) | Natural language search query |
|
|
53
|
+
| `intent` | Yes (context) | Current task intent for relevant context |
|
|
54
|
+
| `k` / `limit` | No | Number of results (default: 10) |
|
|
55
|
+
|
|
56
|
+
## Examples
|
|
57
|
+
|
|
58
|
+
### Searching for Decisions
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
memory_search(
|
|
62
|
+
tenant_id="dev-fe",
|
|
63
|
+
query="why did we choose react query over swr",
|
|
64
|
+
k=5
|
|
65
|
+
)
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### Searching for Bug Fixes
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
memory_search(
|
|
72
|
+
tenant_id="dev-be",
|
|
73
|
+
query="websocket memory leak fix",
|
|
74
|
+
k=5
|
|
75
|
+
)
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Getting Context for a Task
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
memory_get_context(
|
|
82
|
+
tenant_id="dev-fe",
|
|
83
|
+
intent="implementing user authentication with JWT",
|
|
84
|
+
limit=10
|
|
85
|
+
)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### Searching for Patterns
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
memory_search(
|
|
92
|
+
tenant_id="dev-fe",
|
|
93
|
+
query="form validation pattern",
|
|
94
|
+
k=5
|
|
95
|
+
)
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Search Tips
|
|
99
|
+
|
|
100
|
+
1. **Use Natural Language**: The search is semantic, so describe what you're looking for naturally
|
|
101
|
+
2. **Include Context**: "why did we..." or "how to..." works well
|
|
102
|
+
3. **Use Multiple Terms**: "authentication JWT token refresh" finds more specific results
|
|
103
|
+
4. **Try Different Phrasings**: If no results, rephrase the query
|
|
104
|
+
|
|
105
|
+
## Interpreting Results
|
|
106
|
+
|
|
107
|
+
Results are returned as JSON:
|
|
108
|
+
|
|
109
|
+
```json
|
|
110
|
+
{
|
|
111
|
+
"success": true,
|
|
112
|
+
"results": [
|
|
113
|
+
{
|
|
114
|
+
"entry_id": "uuid",
|
|
115
|
+
"content": "The stored memory content...",
|
|
116
|
+
"metadata": {
|
|
117
|
+
"type": "decision",
|
|
118
|
+
"importance": 8,
|
|
119
|
+
"tags": ["react", "data-fetching"]
|
|
120
|
+
},
|
|
121
|
+
"timestamp": "2025-01-15T10:30:00",
|
|
122
|
+
"score": 0.85 // Similarity score (higher = better match)
|
|
123
|
+
}
|
|
124
|
+
]
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
- **score**: Similarity score (0-1, higher = better match)
|
|
129
|
+
- **content**: The stored information
|
|
130
|
+
- **metadata**: Type, importance, tags
|
|
131
|
+
- **timestamp**: When it was stored
|
|
132
|
+
|
|
133
|
+
## Workflow Integration
|
|
134
|
+
|
|
135
|
+
### Before Starting a Task
|
|
136
|
+
|
|
137
|
+
```
|
|
138
|
+
1. Call memory_get_context with your task intent
|
|
139
|
+
2. Review relevant past decisions and patterns
|
|
140
|
+
3. Check for any related bug fixes or learnings
|
|
141
|
+
4. Proceed with context-aware implementation
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### When Encountering an Issue
|
|
145
|
+
|
|
146
|
+
```
|
|
147
|
+
1. Call memory_search with the error or issue description
|
|
148
|
+
2. Look for similar past problems and solutions
|
|
149
|
+
3. Apply learnings or escalate if new issue
|
|
150
|
+
4. Store the new fix with /remember
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
### When Making Decisions
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
1. Search for related past decisions
|
|
157
|
+
2. Review rationale and trade-offs
|
|
158
|
+
3. Make new decision with historical context
|
|
159
|
+
4. Store new decision with /remember
|
|
160
|
+
```
|
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: reflect
|
|
3
|
+
description: Consolidate memories, detect patterns, and synthesize learnings from recent work
|
|
4
|
+
invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Reflect Skill
|
|
8
|
+
|
|
9
|
+
Consolidate memories, detect patterns, and synthesize learnings from your recent work.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
Use this skill when:
|
|
14
|
+
- End of a significant work session
|
|
15
|
+
- After completing a feature or task
|
|
16
|
+
- Weekly/monthly reflection
|
|
17
|
+
- Before starting a major new phase
|
|
18
|
+
- When you feel you've accumulated learnings to consolidate
|
|
19
|
+
- User asks for a summary of recent work
|
|
20
|
+
|
|
21
|
+
## How to Use
|
|
22
|
+
|
|
23
|
+
### Option 1: Full Consolidation
|
|
24
|
+
|
|
25
|
+
Call the `memory_consolidate` MCP tool:
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
memory_consolidate(
|
|
29
|
+
tenant_id="<agent-name>"
|
|
30
|
+
)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
This will:
|
|
34
|
+
1. Analyze recent memories
|
|
35
|
+
2. Detect patterns and themes
|
|
36
|
+
3. Create synthesized summary entries
|
|
37
|
+
4. Link related memories
|
|
38
|
+
5. Archive redundant entries
|
|
39
|
+
|
|
40
|
+
### Option 2: Get Summary
|
|
41
|
+
|
|
42
|
+
Call `memory_get_context` with reflection intent:
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
memory_get_context(
|
|
46
|
+
tenant_id="<agent-name>",
|
|
47
|
+
intent="reflection summary patterns recent work",
|
|
48
|
+
limit=30
|
|
49
|
+
)
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## What Consolidation Does
|
|
53
|
+
|
|
54
|
+
### Pattern Detection
|
|
55
|
+
|
|
56
|
+
Identifies recurring themes across memories:
|
|
57
|
+
- Frequently used patterns
|
|
58
|
+
- Repeated decisions or choices
|
|
59
|
+
- Common bug types or issues
|
|
60
|
+
- Emerging conventions
|
|
61
|
+
|
|
62
|
+
### Theme Synthesis
|
|
63
|
+
|
|
64
|
+
Creates high-level summaries:
|
|
65
|
+
- "Authentication patterns used: JWT with refresh tokens, stored in httpOnly cookies"
|
|
66
|
+
- "Testing approach: Vitest for unit, Playwright for E2E, MSW for API mocking"
|
|
67
|
+
- "State management preference: Zustand for global, React Query for server state"
|
|
68
|
+
|
|
69
|
+
### Memory Linking
|
|
70
|
+
|
|
71
|
+
Connects related entries:
|
|
72
|
+
- Bug fix → Root cause entry
|
|
73
|
+
- Decision → Implementation entry
|
|
74
|
+
- Pattern → Usage examples
|
|
75
|
+
|
|
76
|
+
### Cleanup
|
|
77
|
+
|
|
78
|
+
Archives redundant or obsolete entries:
|
|
79
|
+
- Superseded decisions
|
|
80
|
+
- Duplicate entries
|
|
81
|
+
- Temporary notes that are no longer relevant
|
|
82
|
+
|
|
83
|
+
## Example Workflow
|
|
84
|
+
|
|
85
|
+
### End of Session Reflection
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
1. Store any final memories with /remember
|
|
89
|
+
2. Call memory_consolidate to synthesize
|
|
90
|
+
3. Review the consolidated patterns
|
|
91
|
+
4. Update knowledge.md if significant new patterns
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### Weekly Review
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
1. Recall recent work: /recall "past week work summary"
|
|
98
|
+
2. Reflect and consolidate: /reflect
|
|
99
|
+
3. Identify patterns and learnings
|
|
100
|
+
4. Update project documentation
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Output Format
|
|
104
|
+
|
|
105
|
+
Consolidation returns:
|
|
106
|
+
|
|
107
|
+
```json
|
|
108
|
+
{
|
|
109
|
+
"success": true,
|
|
110
|
+
"summary": {
|
|
111
|
+
"memories_analyzed": 45,
|
|
112
|
+
"patterns_detected": [
|
|
113
|
+
{
|
|
114
|
+
"pattern": "Prefer composition over inheritance for React components",
|
|
115
|
+
"frequency": 8,
|
|
116
|
+
"examples": ["Button variants", "Form fields", "Card layouts"]
|
|
117
|
+
}
|
|
118
|
+
],
|
|
119
|
+
"themes": [
|
|
120
|
+
"Performance optimization focus",
|
|
121
|
+
"Accessibility improvements",
|
|
122
|
+
"Test coverage expansion"
|
|
123
|
+
],
|
|
124
|
+
"recommendations": [
|
|
125
|
+
"Consider extracting common component patterns to shared library",
|
|
126
|
+
"Document performance optimization checklist"
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Best Practices
|
|
133
|
+
|
|
134
|
+
1. **Regular Reflection**: Consolidate at end of each work session
|
|
135
|
+
2. **Review Before Big Changes**: Check patterns before major refactors
|
|
136
|
+
3. **Update Documentation**: Move consolidated patterns to knowledge.md
|
|
137
|
+
4. **Share with Team**: Important patterns should be shared with other agents
|
|
138
|
+
|
|
139
|
+
## Integration with knowledge.md
|
|
140
|
+
|
|
141
|
+
After consolidation:
|
|
142
|
+
|
|
143
|
+
1. **High-Value Patterns** → Add to knowledge.md
|
|
144
|
+
2. **Conventions** → Update project rules
|
|
145
|
+
3. **Decisions** → Update ADR (Architecture Decision Records)
|
|
146
|
+
4. **Learnings** → Add to lessons.md
|
|
147
|
+
|
|
148
|
+
## Example Consolidation Session
|
|
149
|
+
|
|
150
|
+
```
|
|
151
|
+
# End of session
|
|
152
|
+
|
|
153
|
+
/remember "Implemented lazy loading for images using IntersectionObserver"
|
|
154
|
+
|
|
155
|
+
/remember "Added error boundary wrapper for all route components"
|
|
156
|
+
|
|
157
|
+
/remember "Fixed layout shift issue by reserving space with aspect-ratio"
|
|
158
|
+
|
|
159
|
+
# Now consolidate
|
|
160
|
+
/reflect
|
|
161
|
+
|
|
162
|
+
# Output:
|
|
163
|
+
# - Pattern detected: Performance optimization focus
|
|
164
|
+
# - Theme: Core Web Vitals improvements
|
|
165
|
+
# - Recommendation: Create performance checklist
|
|
166
|
+
|
|
167
|
+
# Update knowledge.md with new patterns
|
|
168
|
+
```
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: remember
|
|
3
|
+
description: Store important information to long-term memory for later retrieval
|
|
4
|
+
invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Remember Skill
|
|
8
|
+
|
|
9
|
+
Store important information to SimpleMem long-term memory system.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
Use this skill when:
|
|
14
|
+
- User makes an important decision
|
|
15
|
+
- You complete a significant task or feature
|
|
16
|
+
- You learn a new pattern or best practice
|
|
17
|
+
- You fix a bug and want to remember the solution
|
|
18
|
+
- User shares project-specific knowledge
|
|
19
|
+
- You establish conventions or architecture decisions
|
|
20
|
+
|
|
21
|
+
## How to Use
|
|
22
|
+
|
|
23
|
+
Call the `memory_add` MCP tool:
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
memory_add(
|
|
27
|
+
tenant_id="<agent-name>",
|
|
28
|
+
content="<what to remember>",
|
|
29
|
+
metadata={
|
|
30
|
+
"type": "decision|pattern|bugfix|learning|convention|architecture",
|
|
31
|
+
"importance": 1-10,
|
|
32
|
+
"tags": ["relevant", "tags"]
|
|
33
|
+
}
|
|
34
|
+
)
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Parameters
|
|
38
|
+
|
|
39
|
+
| Parameter | Required | Description |
|
|
40
|
+
|-----------|----------|-------------|
|
|
41
|
+
| `tenant_id` | Yes | Your agent name (for memory isolation) |
|
|
42
|
+
| `content` | Yes | The information to remember (be specific and detailed) |
|
|
43
|
+
| `metadata.type` | No | Category: decision, pattern, bugfix, learning, convention, architecture |
|
|
44
|
+
| `metadata.importance` | No | Priority 1-10 (default: 5) |
|
|
45
|
+
| `metadata.tags` | No | Array of relevant tags for filtering |
|
|
46
|
+
|
|
47
|
+
## Examples
|
|
48
|
+
|
|
49
|
+
### Storing a Decision
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
memory_add(
|
|
53
|
+
tenant_id="dev-fe",
|
|
54
|
+
content="Decided to use React Query instead of SWR for data fetching. Rationale: Better caching control, more comprehensive documentation, wider community support. Date: 2025-01-15. Discussed with: tech-lead",
|
|
55
|
+
metadata={
|
|
56
|
+
"type": "decision",
|
|
57
|
+
"importance": 8,
|
|
58
|
+
"tags": ["react", "data-fetching", "architecture"]
|
|
59
|
+
}
|
|
60
|
+
)
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Storing a Bug Fix
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
memory_add(
|
|
67
|
+
tenant_id="dev-be",
|
|
68
|
+
content="Fixed memory leak in WebSocket connection handler. Root cause: Event listeners not cleaned up on disconnect. Solution: Added cleanup in useEffect return and component unmount. File: src/services/websocket.ts",
|
|
69
|
+
metadata={
|
|
70
|
+
"type": "bugfix",
|
|
71
|
+
"importance": 7,
|
|
72
|
+
"tags": ["websocket", "memory-leak", "bugfix"]
|
|
73
|
+
}
|
|
74
|
+
)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Storing a Pattern
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
memory_add(
|
|
81
|
+
tenant_id="dev-fe",
|
|
82
|
+
content="Pattern: For form handling, use react-hook-form with Zod schema validation. Structure: Define schema → infer type → use useForm with zodResolver. Example: schemas/user.ts has UserSchema, components/UserForm.tsx uses it.",
|
|
83
|
+
metadata={
|
|
84
|
+
"type": "pattern",
|
|
85
|
+
"importance": 6,
|
|
86
|
+
"tags": ["forms", "react-hook-form", "zod", "validation"]
|
|
87
|
+
}
|
|
88
|
+
)
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
## Best Practices
|
|
92
|
+
|
|
93
|
+
1. **Be Specific**: Include file paths, function names, dates, and rationale
|
|
94
|
+
2. **Use Tags**: Add relevant tags for easier retrieval
|
|
95
|
+
3. **Rate Importance**: Higher importance (8-10) for critical decisions
|
|
96
|
+
4. **Include Context**: Why was this decision made? Who was involved?
|
|
97
|
+
5. **Link to Code**: Mention specific files or functions when relevant
|
|
98
|
+
|
|
99
|
+
## Tips for Good Memory Entries
|
|
100
|
+
|
|
101
|
+
- Start with WHAT, then WHY, then HOW
|
|
102
|
+
- Include the date or reference to when it happened
|
|
103
|
+
- Name the people/agents involved in decisions
|
|
104
|
+
- Reference related decisions or patterns
|
|
105
|
+
- Note any trade-offs considered
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Lessons Learned
|
|
2
|
+
|
|
3
|
+
> Self-improvement log based on Boris Cherny's approach
|
|
4
|
+
> Updated after EVERY correction to prevent repeat mistakes
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Format
|
|
9
|
+
|
|
10
|
+
### YYYY-MM-DD: [Lesson Title]
|
|
11
|
+
**What happened:** [Description of the situation]
|
|
12
|
+
**Context:** [When/where this occurred]
|
|
13
|
+
**Lesson:** [What we learned]
|
|
14
|
+
**Rule added:** [Rule to prevent same mistake]
|
|
15
|
+
**Code example:** (if applicable)
|
|
16
|
+
|
|
17
|
+
```typescript
|
|
18
|
+
// ✅ Good
|
|
19
|
+
good_code_here();
|
|
20
|
+
|
|
21
|
+
// ❌ Bad
|
|
22
|
+
bad_code_here();
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Pattern Promotion
|
|
28
|
+
|
|
29
|
+
| Stage | Condition | Location |
|
|
30
|
+
|-------|-----------|----------|
|
|
31
|
+
| **Lesson** | New finding | lessons.md |
|
|
32
|
+
| **Pattern** | Used 3+ times successfully | knowledge.md |
|
|
33
|
+
| **Skill** | High confidence, reusable | SKILL.md |
|
|
34
|
+
| **Rule** | Proven reliable | rules/ |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Recent Lessons
|
|
39
|
+
|
|
40
|
+
### {{DATE}}: [First Lesson Title]
|
|
41
|
+
**What happened:**
|
|
42
|
+
**Context:**
|
|
43
|
+
**Lesson:**
|
|
44
|
+
**Rule added:**
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Common Pitfalls to Avoid
|
|
49
|
+
|
|
50
|
+
### General
|
|
51
|
+
- ❌ Committing without verification
|
|
52
|
+
- ❌ Over-engineering simple solutions
|
|
53
|
+
- ❌ Not handling edge cases
|
|
54
|
+
- ❌ Ignoring user corrections
|
|
55
|
+
|
|
56
|
+
### {{ROLE_NAME}} Specific
|
|
57
|
+
- ❌ [Role-specific pitfall 1]
|
|
58
|
+
- ❌ [Role-specific pitfall 2]
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Corrections Received
|
|
63
|
+
|
|
64
|
+
### [Date]: [Correction Description]
|
|
65
|
+
**From:** User/Reviewer
|
|
66
|
+
**What was wrong:**
|
|
67
|
+
**What I did:**
|
|
68
|
+
**Pattern identified:**
|
|
69
|
+
|
|
70
|
+
---
|
|
71
|
+
|
|
72
|
+
## Statistics
|
|
73
|
+
|
|
74
|
+
- Total lessons: 0
|
|
75
|
+
- This week: 0
|
|
76
|
+
- This month: 0
|
|
77
|
+
- Most common category: N/A
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
# Task: {{TASK_NAME}}
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
**Description:** {{TASK_DESCRIPTION}}
|
|
5
|
+
**Created:** {{CREATED_AT}}
|
|
6
|
+
**Status:** In Progress
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Plan
|
|
11
|
+
|
|
12
|
+
### Steps
|
|
13
|
+
- [ ] Step 1: [Description]
|
|
14
|
+
- [ ] Step 2: [Description]
|
|
15
|
+
- [ ] Step 3: [Description]
|
|
16
|
+
|
|
17
|
+
### Files to Modify
|
|
18
|
+
- [ ] `path/to/file1` - [Change description]
|
|
19
|
+
- [ ] `path/to/file2` - [Change description]
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Progress
|
|
24
|
+
|
|
25
|
+
### Completed
|
|
26
|
+
- [x] [Completed item]
|
|
27
|
+
|
|
28
|
+
### In Progress
|
|
29
|
+
- [ ] [Current item]
|
|
30
|
+
|
|
31
|
+
### Blocked
|
|
32
|
+
- [ ] [Blocked item] - **Reason:** [Why blocked]
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## Review
|
|
37
|
+
|
|
38
|
+
### Summary
|
|
39
|
+
[High-level summary of changes made]
|
|
40
|
+
|
|
41
|
+
### Verification
|
|
42
|
+
- [ ] Code runs without errors
|
|
43
|
+
- [ ] Tests pass
|
|
44
|
+
- [ ] Changes verified manually
|
|
45
|
+
- [ ] No unintended side effects
|
|
46
|
+
|
|
47
|
+
### Lessons Learned
|
|
48
|
+
[Add lessons for tasks/lessons.md]
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Notes
|
|
53
|
+
[Any additional notes]
|
package/src/commands/switch.js
DELETED
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Switch command - Show instructions to switch to an agent
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
import chalk from 'chalk';
|
|
6
|
-
import { isInitialized, agentExists, getAgentDir } from '../utils/file-utils.js';
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* Switch to an agent
|
|
10
|
-
*/
|
|
11
|
-
export async function switchCommand(name) {
|
|
12
|
-
const projectRoot = process.cwd();
|
|
13
|
-
|
|
14
|
-
// Check if initialized
|
|
15
|
-
if (!(await isInitialized(projectRoot))) {
|
|
16
|
-
console.log(chalk.red('❌ Project not initialized'));
|
|
17
|
-
console.log(chalk.gray(' Run `npx @wipal/agent-team init` first'));
|
|
18
|
-
return;
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
// Check if agent exists
|
|
22
|
-
if (!(await agentExists(name, projectRoot))) {
|
|
23
|
-
console.log(chalk.red(`❌ Agent '${name}' not found`));
|
|
24
|
-
console.log('');
|
|
25
|
-
console.log(chalk.gray('List available agents:'));
|
|
26
|
-
console.log(chalk.cyan(' npx @wipal/agent-team list'));
|
|
27
|
-
return;
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
const agentDir = getAgentDir(name, projectRoot);
|
|
31
|
-
const claudeMdPath = `${agentDir}/CLAUDE.md`;
|
|
32
|
-
|
|
33
|
-
console.log(chalk.green(`✓ Switching to agent: ${name}`));
|
|
34
|
-
console.log('');
|
|
35
|
-
console.log(chalk.blue('Agent configuration:'));
|
|
36
|
-
console.log(chalk.gray(` ${claudeMdPath}`));
|
|
37
|
-
console.log('');
|
|
38
|
-
console.log(chalk.blue('How to use in Claude Code:'));
|
|
39
|
-
console.log('');
|
|
40
|
-
console.log(chalk.white('Option 1: Use the agent\'s CLAUDE.md directly'));
|
|
41
|
-
console.log(chalk.gray(' Claude Code will read instructions from:'));
|
|
42
|
-
console.log(chalk.cyan(` ${claudeMdPath}`));
|
|
43
|
-
console.log('');
|
|
44
|
-
console.log(chalk.white('Option 2: Copy content to project root CLAUDE.md'));
|
|
45
|
-
console.log(chalk.gray(' If you want this agent to be the default:'));
|
|
46
|
-
console.log(chalk.cyan(` cp ${claudeMdPath} .claude/CLAUDE.md`));
|
|
47
|
-
console.log('');
|
|
48
|
-
console.log(chalk.white('Option 3: Use /switch command (if available)'));
|
|
49
|
-
console.log(chalk.cyan(` /switch ${name}`));
|
|
50
|
-
console.log('');
|
|
51
|
-
console.log(chalk.gray('The agent has the following skills available:'));
|
|
52
|
-
console.log(chalk.gray(` ${agentDir}/skills/`));
|
|
53
|
-
}
|