opencode-agent-kit 1.0.18 → 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.
@@ -0,0 +1,97 @@
1
+ ---
2
+ name: agentmemory
3
+ description: Persistent cross-session memory for AI coding agents. Use when working across multiple sessions, recalling past context, saving decisions, or searching historical observations.
4
+ ---
5
+
6
+ # Agentmemory Skill
7
+
8
+ Provides persistent memory capabilities for coding agents using the agentmemory MCP server.
9
+
10
+ ## When to Activate
11
+
12
+ - Starting a new session that builds on previous work
13
+ - User asks "remember this", "do you recall", "what did we do last time"
14
+ - Before making architectural decisions that past context could inform
15
+ - After discovering a bug, to save the pattern for future prevention
16
+ - After making a design decision, to persist the rationale
17
+ - When the user asks about project history or session timeline
18
+
19
+ ## Core Tools
20
+
21
+ ### memory_save
22
+ Save an insight, decision, or fact to long-term memory.
23
+
24
+ ```
25
+ memory_save(
26
+ content: "We chose jose over jsonwebtoken for Edge Runtime compatibility",
27
+ concepts: ["jwt-auth", "edge-runtime", "jose-library", "auth-middleware"],
28
+ files: ["src/middleware/auth.ts"],
29
+ type: "architecture"
30
+ )
31
+ ```
32
+
33
+ ### memory_recall
34
+ Search past observations by exact keywords.
35
+
36
+ ```
37
+ memory_recall(query: "jwt auth setup", limit: 5)
38
+ ```
39
+
40
+ ### memory_smart_search
41
+ Hybrid semantic+keyword search. Use for fuzzy or conceptual queries.
42
+
43
+ ```
44
+ memory_smart_search(query: "how did we handle database performance", limit: 10)
45
+ ```
46
+
47
+ ### memory_sessions
48
+ List recent sessions with status and observation counts.
49
+
50
+ ```
51
+ memory_sessions(limit: 10)
52
+ ```
53
+
54
+ ### memory_file_history
55
+ Get past observations about specific files across all sessions. Call before editing a file.
56
+
57
+ ```
58
+ memory_file_history(files: ["src/middleware/auth.ts"])
59
+ ```
60
+
61
+ ### memory_lesson_save / memory_lesson_recall
62
+ Save and retrieve lessons learned with confidence scoring.
63
+
64
+ ```
65
+ memory_lesson_save(
66
+ content: "Always validate JWT expiry before decoding payload",
67
+ concepts: ["jwt-validation", "security"],
68
+ domain: "backend"
69
+ )
70
+ memory_lesson_recall(query: "jwt security", limit: 5)
71
+ ```
72
+
73
+ ### memory_governance_delete
74
+ Delete specific memories. Requires explicit user confirmation.
75
+
76
+ ### memory_patterns
77
+ Detect recurring patterns across sessions.
78
+
79
+ ### memory_consolidate
80
+ Run the 4-tier memory consolidation pipeline.
81
+
82
+ ## Behavior Rules
83
+
84
+ 1. **Proactive recall**: Before implementing new features or fixing bugs, check agentmemory for relevant past context.
85
+ 2. **Auto-save**: After discovering a bug, making an architectural decision, or learning a project convention, save it.
86
+ 3. **Session awareness**: Use `memory_sessions` when the user asks about project history or past work.
87
+ 4. **File context**: Use `memory_file_history` before editing files to surface past issues or decisions about that file.
88
+ 5. **Never hallucinate**: Only present what the MCP tools return. Report "no results found" when appropriate.
89
+ 6. **Tool prefix**: All agentmemory tools use the `agentmemory_memory_` prefix in the tool list. Use the exact names as listed.
90
+
91
+ ## Integration Notes
92
+
93
+ - Server runs on `http://localhost:3111` by default
94
+ - Real-time viewer at `http://localhost:3113`
95
+ - Start the server with `npx @agentmemory/agentmemory`
96
+ - 53 MCP tools available when server is running
97
+ - 22 auto-capture hooks via plugin record session lifecycle automatically
@@ -10,7 +10,6 @@
10
10
  "*.env.*": "deny",
11
11
  "*.env.example": "allow"
12
12
  },
13
- "edit": "allow",
14
13
  "webfetch": "allow",
15
14
  "skill": {
16
15
  "*": "allow"
@@ -24,7 +23,7 @@
24
23
  ".opencode/instructions/INSTRUCTIONS.md",
25
24
  ".opencode/skills/coding-standards/SKILL.md",
26
25
  ".opencode/skills/security-review/SKILL.md",
27
- ".opencode/skills/frontend-design/SKILL.md"
26
+ ".opencode/skills/impeccable/SKILL.md"
28
27
  ],
29
28
  "mcp": {
30
29
  "nuxt": {
@@ -74,8 +73,15 @@
74
73
  "Authorization": "Bearer ${SONARQUBE_TOKEN}",
75
74
  "SONARQUBE_TOOLSETS": "analysis,issues,security-hotspots,quality-gates,rules,duplications,measures,dependency-risks,coverage,sources,languages,portfolios,system,webhooks"
76
75
  }
76
+ },
77
+ "agentmemory": {
78
+ "type": "local",
79
+ "command": ["bash", ".opencode/hooks/agentmemory-start.sh"],
80
+ "enabled": true,
81
+ "description": "Persistent cross-session memory with 53 tools (save, recall, smart search, sessions, file history, lessons)"
77
82
  }
78
83
  },
84
+ "plugin": [".opencode/plugins/agentmemory-capture.ts"],
79
85
  "agent": {
80
86
  "leader": {
81
87
  "description": "IT Leader & Technical Project Manager — analyzes requirements, designs architecture, decomposes tasks, delegates to subagents, and unifies outputs",
@@ -101,6 +107,7 @@
101
107
  "figma_*": "ask",
102
108
  "playwright_*": "allow",
103
109
  "postman_*": "allow",
110
+ "agentmemory_*": "allow",
104
111
  "task": { "*": "allow" }
105
112
  }
106
113
  },
@@ -126,7 +133,8 @@
126
133
  "nuxt_*": "allow",
127
134
  "nuxt-ui_*": "allow",
128
135
  "figma_*": "ask",
129
- "playwright_*": "allow"
136
+ "playwright_*": "allow",
137
+ "agentmemory_*": "allow"
130
138
  }
131
139
  },
132
140
  "frontend-react": {
@@ -149,7 +157,8 @@
149
157
  "npx playwright*": "allow"
150
158
  },
151
159
  "figma_*": "ask",
152
- "playwright_*": "allow"
160
+ "playwright_*": "allow",
161
+ "agentmemory_*": "allow"
153
162
  }
154
163
  },
155
164
  "backend": {
@@ -170,7 +179,8 @@
170
179
  "bun *": "allow",
171
180
  "yarn *": "allow"
172
181
  },
173
- "postman_*": "allow"
182
+ "postman_*": "allow",
183
+ "agentmemory_*": "allow"
174
184
  }
175
185
  },
176
186
  "ci3": {
@@ -210,7 +220,8 @@
210
220
  "git diff": "allow",
211
221
  "git log*": "allow"
212
222
  },
213
- "postman_*": "allow"
223
+ "postman_*": "allow",
224
+ "agentmemory_*": "allow"
214
225
  }
215
226
  },
216
227
  "designer": {
@@ -232,7 +243,8 @@
232
243
  },
233
244
  "stitch_*": "allow",
234
245
  "figma_*": "ask",
235
- "nuxt-ui_*": "allow"
246
+ "nuxt-ui_*": "allow",
247
+ "agentmemory_*": "allow"
236
248
  }
237
249
  },
238
250
  "reviewer": {
@@ -254,7 +266,8 @@
254
266
  "yarn *": "allow",
255
267
  "npx playwright*": "allow"
256
268
  },
257
- "playwright_*": "allow"
269
+ "playwright_*": "allow",
270
+ "agentmemory_*": "allow"
258
271
  }
259
272
  },
260
273
  "database": {
@@ -274,28 +287,8 @@
274
287
  "pnpm *": "allow",
275
288
  "bun *": "allow",
276
289
  "yarn *": "allow"
277
- }
278
- }
279
- },
280
- "devops": {
281
- "description": "DevOps Engineer specializing in CI/CD, deployment, Docker, monitoring, and infrastructure (subagent of IT Leader)",
282
- "mode": "subagent",
283
- "prompt": "{file:.opencode/agents/devops-specialist.md}",
284
- "model": "opencode/claude-sonnet-4.5",
285
- "temperature": 0.4,
286
- "color": "#6366f1",
287
- "permission": {
288
- "edit": "allow",
289
- "webfetch": "allow",
290
- "skill": { "*": "allow" },
291
- "bash": {
292
- "*": "ask",
293
- "npm *": "allow",
294
- "pnpm *": "allow",
295
- "bun *": "allow",
296
- "yarn *": "allow",
297
- "docker *": "allow"
298
- }
290
+ },
291
+ "agentmemory_*": "allow"
299
292
  }
300
293
  },
301
294
  "seo": {
@@ -315,7 +308,8 @@
315
308
  "git diff": "allow",
316
309
  "git log*": "allow"
317
310
  },
318
- "nuxt_*": "allow"
311
+ "nuxt_*": "allow",
312
+ "agentmemory_*": "allow"
319
313
  }
320
314
  },
321
315
  "android": {
@@ -335,7 +329,8 @@
335
329
  "gradle *": "allow"
336
330
  },
337
331
  "figma_*": "ask",
338
- "playwright_*": "allow"
332
+ "playwright_*": "allow",
333
+ "agentmemory_*": "allow"
339
334
  }
340
335
  },
341
336
  "flutter": {
@@ -355,7 +350,8 @@
355
350
  "dart *": "allow"
356
351
  },
357
352
  "figma_*": "ask",
358
- "playwright_*": "allow"
353
+ "playwright_*": "allow",
354
+ "agentmemory_*": "allow"
359
355
  }
360
356
  }
361
357
  }
@@ -22,7 +22,7 @@
22
22
  ".opencode/instructions/INSTRUCTIONS.md",
23
23
  ".opencode/skills/coding-standards/SKILL.md",
24
24
  ".opencode/skills/security-review/SKILL.md",
25
- ".opencode/skills/frontend-design/SKILL.md"
25
+ ".opencode/skills/impeccable/SKILL.md"
26
26
  ],
27
27
  "mcp": {
28
28
  "nuxt": {
@@ -72,8 +72,15 @@
72
72
  "Authorization": "Bearer ${SONARQUBE_TOKEN}",
73
73
  "SONARQUBE_TOOLSETS": "analysis,issues,security-hotspots,quality-gates,rules,duplications,measures,dependency-risks,coverage,sources,languages,portfolios,system,webhooks"
74
74
  }
75
+ },
76
+ "agentmemory": {
77
+ "type": "local",
78
+ "command": ["bash", ".opencode/hooks/agentmemory-start.sh"],
79
+ "enabled": true,
80
+ "description": "Persistent cross-session memory with 53 tools (save, recall, smart search, sessions, file history, lessons)"
75
81
  }
76
82
  },
83
+ "plugin": [".opencode/plugins/agentmemory-capture.ts"],
77
84
  "agent": {
78
85
  "leader": {
79
86
  "description": "IT Leader & Technical Project Manager — analyzes requirements, designs architecture, decomposes tasks, delegates to subagents, and unifies outputs",
@@ -86,7 +93,7 @@
86
93
  "webfetch": "allow",
87
94
  "skill": { "*": "allow" },
88
95
  "bash": {
89
- "*": "allow",
96
+ "*": "ask",
90
97
  "npm *": "allow",
91
98
  "pnpm *": "allow",
92
99
  "bun *": "allow",
@@ -98,6 +105,7 @@
98
105
  "figma_*": "ask",
99
106
  "playwright_*": "allow",
100
107
  "postman_*": "allow",
108
+ "agentmemory_*": "allow",
101
109
  "task": { "*": "allow" }
102
110
  }
103
111
  },
@@ -111,7 +119,7 @@
111
119
  "webfetch": "allow",
112
120
  "skill": { "*": "allow" },
113
121
  "bash": {
114
- "*": "allow",
122
+ "*": "ask",
115
123
  "npm *": "allow",
116
124
  "pnpm *": "allow",
117
125
  "bun *": "allow",
@@ -121,7 +129,8 @@
121
129
  "nuxt_*": "allow",
122
130
  "nuxt-ui_*": "allow",
123
131
  "figma_*": "ask",
124
- "playwright_*": "allow"
132
+ "playwright_*": "allow",
133
+ "agentmemory_*": "allow"
125
134
  }
126
135
  },
127
136
  "frontend-react": {
@@ -134,7 +143,7 @@
134
143
  "webfetch": "allow",
135
144
  "skill": { "*": "allow" },
136
145
  "bash": {
137
- "*": "allow",
146
+ "*": "ask",
138
147
  "npm *": "allow",
139
148
  "pnpm *": "allow",
140
149
  "bun *": "allow",
@@ -142,7 +151,8 @@
142
151
  "npx playwright*": "allow"
143
152
  },
144
153
  "figma_*": "ask",
145
- "playwright_*": "allow"
154
+ "playwright_*": "allow",
155
+ "agentmemory_*": "allow"
146
156
  }
147
157
  },
148
158
  "backend": {
@@ -155,13 +165,14 @@
155
165
  "webfetch": "allow",
156
166
  "skill": { "*": "allow" },
157
167
  "bash": {
158
- "*": "allow",
168
+ "*": "ask",
159
169
  "npm *": "allow",
160
170
  "pnpm *": "allow",
161
171
  "bun *": "allow",
162
172
  "yarn *": "allow"
163
173
  },
164
- "postman_*": "allow"
174
+ "postman_*": "allow",
175
+ "agentmemory_*": "allow"
165
176
  }
166
177
  },
167
178
  "ci3": {
@@ -174,12 +185,13 @@
174
185
  "webfetch": "allow",
175
186
  "skill": { "*": "allow" },
176
187
  "bash": {
177
- "*": "allow",
188
+ "*": "ask",
178
189
  "git status": "allow",
179
190
  "git diff": "allow",
180
191
  "git log*": "allow"
181
192
  },
182
- "postman_*": "allow"
193
+ "postman_*": "allow",
194
+ "agentmemory_*": "allow"
183
195
  }
184
196
  },
185
197
  "laravel": {
@@ -192,12 +204,13 @@
192
204
  "webfetch": "allow",
193
205
  "skill": { "*": "allow" },
194
206
  "bash": {
195
- "*": "allow",
207
+ "*": "ask",
196
208
  "git status": "allow",
197
209
  "git diff": "allow",
198
210
  "git log*": "allow"
199
211
  },
200
- "postman_*": "allow"
212
+ "postman_*": "allow",
213
+ "agentmemory_*": "allow"
201
214
  }
202
215
  },
203
216
  "designer": {
@@ -210,14 +223,15 @@
210
223
  "webfetch": "allow",
211
224
  "skill": { "*": "allow" },
212
225
  "bash": {
213
- "*": "allow",
226
+ "*": "ask",
214
227
  "git status": "allow",
215
228
  "git diff": "allow",
216
229
  "git log*": "allow"
217
230
  },
218
231
  "stitch_*": "allow",
219
232
  "figma_*": "ask",
220
- "nuxt-ui_*": "allow"
233
+ "nuxt-ui_*": "allow",
234
+ "agentmemory_*": "allow"
221
235
  }
222
236
  },
223
237
  "reviewer": {
@@ -230,14 +244,15 @@
230
244
  "webfetch": "allow",
231
245
  "skill": { "*": "allow" },
232
246
  "bash": {
233
- "*": "allow",
247
+ "*": "ask",
234
248
  "npm *": "allow",
235
249
  "pnpm *": "allow",
236
250
  "bun *": "allow",
237
251
  "yarn *": "allow",
238
252
  "npx playwright*": "allow"
239
253
  },
240
- "playwright_*": "allow"
254
+ "playwright_*": "allow",
255
+ "agentmemory_*": "allow"
241
256
  }
242
257
  },
243
258
  "database": {
@@ -250,12 +265,13 @@
250
265
  "webfetch": "allow",
251
266
  "skill": { "*": "allow" },
252
267
  "bash": {
253
- "*": "allow",
268
+ "*": "ask",
254
269
  "npm *": "allow",
255
270
  "pnpm *": "allow",
256
271
  "bun *": "allow",
257
272
  "yarn *": "allow"
258
- }
273
+ },
274
+ "agentmemory_*": "allow"
259
275
  }
260
276
  },
261
277
  "devops": {
@@ -268,13 +284,14 @@
268
284
  "webfetch": "allow",
269
285
  "skill": { "*": "allow" },
270
286
  "bash": {
271
- "*": "allow",
287
+ "*": "ask",
272
288
  "npm *": "allow",
273
289
  "pnpm *": "allow",
274
290
  "bun *": "allow",
275
291
  "yarn *": "allow",
276
292
  "docker *": "allow"
277
- }
293
+ },
294
+ "agentmemory_*": "allow"
278
295
  }
279
296
  },
280
297
  "seo": {
@@ -287,12 +304,13 @@
287
304
  "webfetch": "allow",
288
305
  "skill": { "*": "allow" },
289
306
  "bash": {
290
- "*": "allow",
307
+ "*": "ask",
291
308
  "git status": "allow",
292
309
  "git diff": "allow",
293
310
  "git log*": "allow"
294
311
  },
295
- "nuxt_*": "allow"
312
+ "nuxt_*": "allow",
313
+ "agentmemory_*": "allow"
296
314
  }
297
315
  },
298
316
  "android": {
@@ -305,12 +323,13 @@
305
323
  "webfetch": "allow",
306
324
  "skill": { "*": "allow" },
307
325
  "bash": {
308
- "*": "allow",
326
+ "*": "ask",
309
327
  "./gradlew *": "allow",
310
328
  "gradle *": "allow"
311
329
  },
312
330
  "figma_*": "ask",
313
- "playwright_*": "allow"
331
+ "playwright_*": "allow",
332
+ "agentmemory_*": "allow"
314
333
  }
315
334
  },
316
335
  "flutter": {
@@ -323,12 +342,13 @@
323
342
  "webfetch": "allow",
324
343
  "skill": { "*": "allow" },
325
344
  "bash": {
326
- "*": "allow",
345
+ "*": "ask",
327
346
  "flutter *": "allow",
328
347
  "dart *": "allow"
329
348
  },
330
349
  "figma_*": "ask",
331
- "playwright_*": "allow"
350
+ "playwright_*": "allow",
351
+ "agentmemory_*": "allow"
332
352
  }
333
353
  }
334
354
  }