claude-memory-agent 2.0.1 → 2.2.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/README.md +206 -206
- package/agent_card.py +186 -0
- package/bin/cli.js +327 -185
- package/bin/lib/banner.js +39 -0
- package/bin/lib/environment.js +166 -0
- package/bin/lib/installer.js +291 -0
- package/bin/lib/models.js +95 -0
- package/bin/lib/steps/advanced.js +101 -0
- package/bin/lib/steps/confirm.js +87 -0
- package/bin/lib/steps/model.js +57 -0
- package/bin/lib/steps/provider.js +65 -0
- package/bin/lib/steps/scope.js +59 -0
- package/bin/lib/steps/server.js +74 -0
- package/bin/lib/ui.js +75 -0
- package/bin/onboarding.js +164 -0
- package/bin/postinstall.js +35 -270
- package/config.py +103 -4
- package/dashboard.html +4902 -2689
- package/hooks/extract_memories.py +439 -0
- package/hooks/grounding-hook.py +422 -348
- package/hooks/pre_compact_hook.py +76 -0
- package/hooks/session_end.py +293 -192
- package/hooks/session_end_hook.py +149 -0
- package/hooks/session_start.py +227 -227
- package/hooks/stop_hook.py +372 -0
- package/install.py +972 -902
- package/main.py +5240 -2859
- package/mcp_server.py +451 -0
- package/package.json +58 -47
- package/requirements.txt +12 -8
- package/services/__init__.py +50 -50
- package/services/adaptive_ranker.py +272 -0
- package/services/agent_catalog.json +153 -0
- package/services/agent_registry.py +245 -730
- package/services/claude_md_sync.py +320 -4
- package/services/consolidation.py +417 -0
- package/services/curator.py +1606 -0
- package/services/database.py +4118 -2485
- package/services/embedding_pipeline.py +262 -0
- package/services/embeddings.py +493 -85
- package/services/memory_decay.py +408 -0
- package/services/native_memory_paths.py +86 -0
- package/services/native_memory_sync.py +496 -0
- package/services/response_manager.py +183 -0
- package/services/terminal_ui.py +199 -0
- package/services/tier_manager.py +235 -0
- package/services/websocket.py +26 -6
- package/skills/__init__.py +21 -1
- package/skills/confidence_tracker.py +441 -0
- package/skills/context.py +675 -0
- package/skills/curator.py +348 -0
- package/skills/search.py +444 -213
- package/skills/session_review.py +605 -0
- package/skills/store.py +484 -179
- package/terminal_dashboard.py +474 -0
- package/update_system.py +829 -817
- package/hooks/__pycache__/auto-detect-response.cpython-312.pyc +0 -0
- package/hooks/__pycache__/auto_capture.cpython-312.pyc +0 -0
- package/hooks/__pycache__/session_end.cpython-312.pyc +0 -0
- package/hooks/__pycache__/session_start.cpython-312.pyc +0 -0
- package/services/__pycache__/__init__.cpython-312.pyc +0 -0
- package/services/__pycache__/agent_registry.cpython-312.pyc +0 -0
- package/services/__pycache__/auth.cpython-312.pyc +0 -0
- package/services/__pycache__/auto_inject.cpython-312.pyc +0 -0
- package/services/__pycache__/claude_md_sync.cpython-312.pyc +0 -0
- package/services/__pycache__/cleanup.cpython-312.pyc +0 -0
- package/services/__pycache__/compaction_flush.cpython-312.pyc +0 -0
- package/services/__pycache__/confidence.cpython-312.pyc +0 -0
- package/services/__pycache__/daily_log.cpython-312.pyc +0 -0
- package/services/__pycache__/database.cpython-312.pyc +0 -0
- package/services/__pycache__/embeddings.cpython-312.pyc +0 -0
- package/services/__pycache__/insights.cpython-312.pyc +0 -0
- package/services/__pycache__/llm_analyzer.cpython-312.pyc +0 -0
- package/services/__pycache__/memory_md_sync.cpython-312.pyc +0 -0
- package/services/__pycache__/retry_queue.cpython-312.pyc +0 -0
- package/services/__pycache__/timeline.cpython-312.pyc +0 -0
- package/services/__pycache__/vector_index.cpython-312.pyc +0 -0
- package/services/__pycache__/websocket.cpython-312.pyc +0 -0
- package/skills/__pycache__/__init__.cpython-312.pyc +0 -0
- package/skills/__pycache__/admin.cpython-312.pyc +0 -0
- package/skills/__pycache__/checkpoint.cpython-312.pyc +0 -0
- package/skills/__pycache__/claude_md.cpython-312.pyc +0 -0
- package/skills/__pycache__/cleanup.cpython-312.pyc +0 -0
- package/skills/__pycache__/grounding.cpython-312.pyc +0 -0
- package/skills/__pycache__/insights.cpython-312.pyc +0 -0
- package/skills/__pycache__/natural_language.cpython-312.pyc +0 -0
- package/skills/__pycache__/retrieve.cpython-312.pyc +0 -0
- package/skills/__pycache__/search.cpython-312.pyc +0 -0
- package/skills/__pycache__/state.cpython-312.pyc +0 -0
- package/skills/__pycache__/store.cpython-312.pyc +0 -0
- package/skills/__pycache__/summarize.cpython-312.pyc +0 -0
- package/skills/__pycache__/timeline.cpython-312.pyc +0 -0
- package/skills/__pycache__/verification.cpython-312.pyc +0 -0
- package/test_automation.py +0 -221
- package/test_complete.py +0 -338
- package/test_full.py +0 -322
- package/verify_db.py +0 -134
|
@@ -0,0 +1,272 @@
|
|
|
1
|
+
"""Adaptive Retrieval Ranking - CLaRa-inspired differentiable top-K.
|
|
2
|
+
|
|
3
|
+
Replaces the static (similarity * 0.7) + (confidence * 0.3) ranking with
|
|
4
|
+
multi-signal scoring and temperature-controlled selection.
|
|
5
|
+
|
|
6
|
+
Features:
|
|
7
|
+
- 6 weighted signals (semantic similarity, confidence, recency, access frequency,
|
|
8
|
+
outcome success, context match)
|
|
9
|
+
- Query-type detection (error lookup, decision recall, general)
|
|
10
|
+
- Temperature control for result diversity
|
|
11
|
+
"""
|
|
12
|
+
import math
|
|
13
|
+
import logging
|
|
14
|
+
from datetime import datetime
|
|
15
|
+
from typing import Dict, Any, List, Optional
|
|
16
|
+
|
|
17
|
+
from config import config
|
|
18
|
+
|
|
19
|
+
logger = logging.getLogger(__name__)
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
# Weight profiles for different query types
|
|
23
|
+
WEIGHT_PROFILES = {
|
|
24
|
+
'default': {
|
|
25
|
+
'semantic_similarity': 0.35,
|
|
26
|
+
'confidence': 0.15,
|
|
27
|
+
'recency': 0.15,
|
|
28
|
+
'access_frequency': 0.10,
|
|
29
|
+
'outcome_success': 0.15,
|
|
30
|
+
'context_match': 0.10,
|
|
31
|
+
},
|
|
32
|
+
'error_lookup': {
|
|
33
|
+
'semantic_similarity': 0.30,
|
|
34
|
+
'confidence': 0.10,
|
|
35
|
+
'recency': 0.20,
|
|
36
|
+
'access_frequency': 0.05,
|
|
37
|
+
'outcome_success': 0.30,
|
|
38
|
+
'context_match': 0.05,
|
|
39
|
+
},
|
|
40
|
+
'decision_recall': {
|
|
41
|
+
'semantic_similarity': 0.40,
|
|
42
|
+
'confidence': 0.25,
|
|
43
|
+
'recency': 0.10,
|
|
44
|
+
'access_frequency': 0.05,
|
|
45
|
+
'outcome_success': 0.05,
|
|
46
|
+
'context_match': 0.15,
|
|
47
|
+
},
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
# Keywords for query type detection
|
|
51
|
+
QUERY_TYPE_KEYWORDS = {
|
|
52
|
+
'error_lookup': [
|
|
53
|
+
'error', 'bug', 'fix', 'crash', 'exception', 'fail', 'broken',
|
|
54
|
+
'issue', 'problem', 'traceback', 'stack trace', 'debug', 'resolve'
|
|
55
|
+
],
|
|
56
|
+
'decision_recall': [
|
|
57
|
+
'decision', 'architecture', 'chose', 'why', 'approach', 'pattern',
|
|
58
|
+
'convention', 'design', 'strategy', 'trade-off', 'tradeoff'
|
|
59
|
+
],
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
class AdaptiveRanker:
|
|
64
|
+
"""Multi-signal ranking with temperature-controlled result selection.
|
|
65
|
+
|
|
66
|
+
Computes a composite score from multiple signals, weighted by query type,
|
|
67
|
+
then applies temperature scaling for diversity control.
|
|
68
|
+
"""
|
|
69
|
+
|
|
70
|
+
def __init__(self, temperature: Optional[float] = None):
|
|
71
|
+
self.temperature = temperature or config.DEFAULT_SEARCH_TEMPERATURE
|
|
72
|
+
|
|
73
|
+
def detect_query_type(self, query_text: str) -> str:
|
|
74
|
+
"""Auto-detect query type from keywords.
|
|
75
|
+
|
|
76
|
+
Args:
|
|
77
|
+
query_text: The search query
|
|
78
|
+
|
|
79
|
+
Returns:
|
|
80
|
+
Query type string: 'error_lookup', 'decision_recall', or 'default'
|
|
81
|
+
"""
|
|
82
|
+
if not query_text:
|
|
83
|
+
return 'default'
|
|
84
|
+
|
|
85
|
+
query_lower = query_text.lower()
|
|
86
|
+
|
|
87
|
+
# Count keyword matches for each type
|
|
88
|
+
scores = {}
|
|
89
|
+
for qtype, keywords in QUERY_TYPE_KEYWORDS.items():
|
|
90
|
+
score = sum(1 for kw in keywords if kw in query_lower)
|
|
91
|
+
if score > 0:
|
|
92
|
+
scores[qtype] = score
|
|
93
|
+
|
|
94
|
+
if not scores:
|
|
95
|
+
return 'default'
|
|
96
|
+
|
|
97
|
+
# Return type with most keyword matches
|
|
98
|
+
return max(scores, key=scores.get)
|
|
99
|
+
|
|
100
|
+
def get_weights(self, query_type: str = 'default') -> Dict[str, float]:
|
|
101
|
+
"""Get weight profile for a query type.
|
|
102
|
+
|
|
103
|
+
Args:
|
|
104
|
+
query_type: One of 'default', 'error_lookup', 'decision_recall'
|
|
105
|
+
|
|
106
|
+
Returns:
|
|
107
|
+
Dict of signal_name -> weight
|
|
108
|
+
"""
|
|
109
|
+
return WEIGHT_PROFILES.get(query_type, WEIGHT_PROFILES['default']).copy()
|
|
110
|
+
|
|
111
|
+
def compute_signal_scores(self, result: dict) -> Dict[str, float]:
|
|
112
|
+
"""Compute individual signal scores for a search result.
|
|
113
|
+
|
|
114
|
+
All signals normalized to 0-1 range.
|
|
115
|
+
|
|
116
|
+
Args:
|
|
117
|
+
result: Search result dict
|
|
118
|
+
|
|
119
|
+
Returns:
|
|
120
|
+
Dict of signal_name -> score (0-1)
|
|
121
|
+
"""
|
|
122
|
+
signals = {}
|
|
123
|
+
|
|
124
|
+
# 1. Semantic similarity (already 0-1 from FAISS/cosine)
|
|
125
|
+
signals['semantic_similarity'] = result.get('similarity', 0.0)
|
|
126
|
+
|
|
127
|
+
# 2. Confidence (already 0-1)
|
|
128
|
+
signals['confidence'] = result.get('confidence', 0.5) or 0.5
|
|
129
|
+
|
|
130
|
+
# 3. Recency (exponential decay, half-life = 30 days)
|
|
131
|
+
created_at = result.get('created_at', '')
|
|
132
|
+
signals['recency'] = self._recency_score(created_at)
|
|
133
|
+
|
|
134
|
+
# 4. Access frequency (log scale, normalized)
|
|
135
|
+
access_count = result.get('access_count', 0) or 0
|
|
136
|
+
signals['access_frequency'] = min(1.0, math.log(1 + access_count) / math.log(51))
|
|
137
|
+
|
|
138
|
+
# 5. Outcome success
|
|
139
|
+
outcome_status = result.get('outcome_status', 'pending')
|
|
140
|
+
success = result.get('success')
|
|
141
|
+
signals['outcome_success'] = self._outcome_score(outcome_status, success)
|
|
142
|
+
|
|
143
|
+
# 6. Context match (pre-computed context_adjustment from search)
|
|
144
|
+
context_adj = result.get('context_adjustment', 0.0)
|
|
145
|
+
# Normalize from [-0.2, 0.2] range to [0, 1]
|
|
146
|
+
signals['context_match'] = min(1.0, max(0.0, (context_adj + 0.2) / 0.4))
|
|
147
|
+
|
|
148
|
+
return signals
|
|
149
|
+
|
|
150
|
+
def _recency_score(self, created_at: str) -> float:
|
|
151
|
+
"""Calculate recency score with exponential decay."""
|
|
152
|
+
if not created_at:
|
|
153
|
+
return 0.5
|
|
154
|
+
|
|
155
|
+
try:
|
|
156
|
+
created_dt = datetime.fromisoformat(
|
|
157
|
+
created_at.replace('Z', '+00:00')
|
|
158
|
+
).replace(tzinfo=None)
|
|
159
|
+
age_days = (datetime.now() - created_dt).total_seconds() / 86400.0
|
|
160
|
+
# Half-life of 30 days
|
|
161
|
+
return math.pow(0.5, age_days / 30.0)
|
|
162
|
+
except (ValueError, TypeError, AttributeError):
|
|
163
|
+
return 0.5
|
|
164
|
+
|
|
165
|
+
def _outcome_score(self, outcome_status: Optional[str], success: Optional[bool]) -> float:
|
|
166
|
+
"""Calculate outcome-based score."""
|
|
167
|
+
if outcome_status == 'success':
|
|
168
|
+
return 1.0
|
|
169
|
+
if success:
|
|
170
|
+
return 0.9
|
|
171
|
+
if outcome_status == 'partial':
|
|
172
|
+
return 0.6
|
|
173
|
+
if outcome_status == 'failed':
|
|
174
|
+
return 0.1
|
|
175
|
+
if outcome_status == 'pending':
|
|
176
|
+
return 0.5
|
|
177
|
+
return 0.5
|
|
178
|
+
|
|
179
|
+
def compute_composite_score(
|
|
180
|
+
self,
|
|
181
|
+
result: dict,
|
|
182
|
+
query_type: str = 'default',
|
|
183
|
+
weights_override: Optional[Dict[str, float]] = None
|
|
184
|
+
) -> float:
|
|
185
|
+
"""Compute weighted composite score for a result.
|
|
186
|
+
|
|
187
|
+
Args:
|
|
188
|
+
result: Search result dict
|
|
189
|
+
query_type: Query type for weight selection
|
|
190
|
+
weights_override: Optional custom weights
|
|
191
|
+
|
|
192
|
+
Returns:
|
|
193
|
+
Composite score (0-1 range before temperature scaling)
|
|
194
|
+
"""
|
|
195
|
+
signals = self.compute_signal_scores(result)
|
|
196
|
+
weights = weights_override or self.get_weights(query_type)
|
|
197
|
+
|
|
198
|
+
score = sum(
|
|
199
|
+
signals.get(signal, 0.0) * weight
|
|
200
|
+
for signal, weight in weights.items()
|
|
201
|
+
)
|
|
202
|
+
|
|
203
|
+
# Apply decay multiplier if present
|
|
204
|
+
decay = result.get('_decay_multiplier', 1.0)
|
|
205
|
+
score *= decay
|
|
206
|
+
|
|
207
|
+
# Apply outcome boost
|
|
208
|
+
outcome_boost = result.get('outcome_boost', 1.0)
|
|
209
|
+
score *= outcome_boost
|
|
210
|
+
|
|
211
|
+
return score
|
|
212
|
+
|
|
213
|
+
def apply_temperature(self, score: float) -> float:
|
|
214
|
+
"""Apply temperature scaling to a score.
|
|
215
|
+
|
|
216
|
+
- temperature=0.3: sharp ranking (best match dominates)
|
|
217
|
+
- temperature=1.0: balanced
|
|
218
|
+
- temperature=2.0: diverse (flatter distribution)
|
|
219
|
+
|
|
220
|
+
Formula: score^(1/temperature)
|
|
221
|
+
|
|
222
|
+
Args:
|
|
223
|
+
score: Raw composite score
|
|
224
|
+
|
|
225
|
+
Returns:
|
|
226
|
+
Temperature-adjusted score
|
|
227
|
+
"""
|
|
228
|
+
if score <= 0:
|
|
229
|
+
return 0.0
|
|
230
|
+
if self.temperature <= 0:
|
|
231
|
+
return score
|
|
232
|
+
|
|
233
|
+
return math.pow(score, 1.0 / self.temperature)
|
|
234
|
+
|
|
235
|
+
def rank_results(
|
|
236
|
+
self,
|
|
237
|
+
results: List[dict],
|
|
238
|
+
query_text: str = '',
|
|
239
|
+
query_type: Optional[str] = None,
|
|
240
|
+
temperature: Optional[float] = None
|
|
241
|
+
) -> List[dict]:
|
|
242
|
+
"""Rank search results using multi-signal adaptive scoring.
|
|
243
|
+
|
|
244
|
+
Args:
|
|
245
|
+
results: List of search result dicts
|
|
246
|
+
query_text: Original query (for type detection)
|
|
247
|
+
query_type: Override query type (skips detection)
|
|
248
|
+
temperature: Override temperature
|
|
249
|
+
|
|
250
|
+
Returns:
|
|
251
|
+
Results sorted by adaptive score (descending), with scores attached
|
|
252
|
+
"""
|
|
253
|
+
if not results:
|
|
254
|
+
return results
|
|
255
|
+
|
|
256
|
+
# Detect or use provided query type
|
|
257
|
+
detected_type = query_type or self.detect_query_type(query_text)
|
|
258
|
+
temp = temperature if temperature is not None else self.temperature
|
|
259
|
+
|
|
260
|
+
# Score and sort
|
|
261
|
+
for result in results:
|
|
262
|
+
raw_score = self.compute_composite_score(result, detected_type)
|
|
263
|
+
result['_adaptive_score'] = raw_score
|
|
264
|
+
result['_adaptive_score_tempered'] = self.apply_temperature(raw_score) if temp != 1.0 else raw_score
|
|
265
|
+
result['_query_type'] = detected_type
|
|
266
|
+
|
|
267
|
+
results.sort(
|
|
268
|
+
key=lambda x: x.get('_adaptive_score_tempered', 0),
|
|
269
|
+
reverse=True
|
|
270
|
+
)
|
|
271
|
+
|
|
272
|
+
return results
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
{
|
|
2
|
+
"categories": {
|
|
3
|
+
"engineering": {
|
|
4
|
+
"name": "Engineering",
|
|
5
|
+
"icon": "code",
|
|
6
|
+
"color": "#58a6ff",
|
|
7
|
+
"description": "Software development and architecture agents"
|
|
8
|
+
},
|
|
9
|
+
"testing": {
|
|
10
|
+
"name": "Testing & QA",
|
|
11
|
+
"icon": "shield-check",
|
|
12
|
+
"color": "#3fb950",
|
|
13
|
+
"description": "Quality assurance and testing specialists"
|
|
14
|
+
},
|
|
15
|
+
"design": {
|
|
16
|
+
"name": "Design & UX",
|
|
17
|
+
"icon": "palette",
|
|
18
|
+
"color": "#a371f7",
|
|
19
|
+
"description": "UI/UX design and visual specialists"
|
|
20
|
+
},
|
|
21
|
+
"product": {
|
|
22
|
+
"name": "Product",
|
|
23
|
+
"icon": "lightbulb",
|
|
24
|
+
"color": "#d29922",
|
|
25
|
+
"description": "Product management and strategy"
|
|
26
|
+
},
|
|
27
|
+
"marketing": {
|
|
28
|
+
"name": "Marketing",
|
|
29
|
+
"icon": "megaphone",
|
|
30
|
+
"color": "#f85149",
|
|
31
|
+
"description": "Marketing and growth specialists"
|
|
32
|
+
},
|
|
33
|
+
"operations": {
|
|
34
|
+
"name": "Operations",
|
|
35
|
+
"icon": "settings",
|
|
36
|
+
"color": "#8b949e",
|
|
37
|
+
"description": "DevOps and operations management"
|
|
38
|
+
},
|
|
39
|
+
"data": {
|
|
40
|
+
"name": "Data & Analytics",
|
|
41
|
+
"icon": "chart-bar",
|
|
42
|
+
"color": "#39d353",
|
|
43
|
+
"description": "Data analysis and reporting"
|
|
44
|
+
},
|
|
45
|
+
"xr": {
|
|
46
|
+
"name": "XR & Spatial",
|
|
47
|
+
"icon": "cube",
|
|
48
|
+
"color": "#bf4b8a",
|
|
49
|
+
"description": "AR/VR/XR and spatial computing"
|
|
50
|
+
},
|
|
51
|
+
"exploration": {
|
|
52
|
+
"name": "Exploration",
|
|
53
|
+
"icon": "search",
|
|
54
|
+
"color": "#79c0ff",
|
|
55
|
+
"description": "Codebase exploration and research"
|
|
56
|
+
}
|
|
57
|
+
},
|
|
58
|
+
"agents": [
|
|
59
|
+
{"id": "Explore", "name": "Explore", "category": "exploration", "description": "Fast codebase exploration specialist. Finds files, searches code, answers questions about architecture.", "tags": ["search", "codebase", "quick"], "default_enabled": true, "priority": 10},
|
|
60
|
+
{"id": "Plan", "name": "Plan", "category": "exploration", "description": "Software architect for designing implementation plans. Creates step-by-step strategies.", "tags": ["planning", "architecture", "strategy"], "default_enabled": true, "priority": 9},
|
|
61
|
+
{"id": "general-purpose", "name": "General Purpose", "category": "engineering", "description": "Multi-step task handler for complex research and code execution.", "tags": ["general", "multi-step", "research"], "default_enabled": true, "priority": 10},
|
|
62
|
+
{"id": "Bash", "name": "Bash Specialist", "category": "engineering", "description": "Command execution specialist for git, terminal operations, and system tasks.", "tags": ["bash", "git", "terminal"], "default_enabled": true, "priority": 9},
|
|
63
|
+
{"id": "engineering-senior-developer", "name": "Senior Developer", "category": "engineering", "description": "Premium implementation specialist. Masters Laravel/Livewire/FluxUI, advanced CSS, Three.js.", "tags": ["laravel", "livewire", "css", "threejs"], "default_enabled": true, "priority": 8},
|
|
64
|
+
{"id": "engineering-ai-engineer", "name": "AI/ML Engineer", "category": "engineering", "description": "Machine learning model development, deployment, and integration into production systems.", "tags": ["ml", "ai", "models", "data-pipelines"], "default_enabled": true, "priority": 7},
|
|
65
|
+
{"id": "Backend Architect", "name": "Backend Architect", "category": "engineering", "description": "Scalable system design, database architecture, API development, cloud infrastructure.", "tags": ["backend", "api", "database", "cloud"], "default_enabled": true, "priority": 8},
|
|
66
|
+
{"id": "Frontend Developer", "name": "Frontend Developer", "category": "engineering", "description": "Modern web technologies, React/Vue/Angular frameworks, UI implementation.", "tags": ["frontend", "react", "vue", "angular", "ui"], "default_enabled": true, "priority": 8},
|
|
67
|
+
{"id": "kotlin-material3-dev", "name": "Kotlin Material3 Dev", "category": "engineering", "description": "Kotlin development with Material3 UI, color schemes, theming, and visual design.", "tags": ["kotlin", "android", "material3", "mobile"], "default_enabled": false, "priority": 6},
|
|
68
|
+
{"id": "Mobile App Builder", "name": "Mobile App Builder", "category": "engineering", "description": "Native iOS/Android development and cross-platform frameworks.", "tags": ["mobile", "ios", "android", "react-native", "flutter"], "default_enabled": false, "priority": 6},
|
|
69
|
+
{"id": "Rapid Prototyper", "name": "Rapid Prototyper", "category": "engineering", "description": "Ultra-fast proof-of-concept and MVP creation.", "tags": ["prototype", "mvp", "fast", "poc"], "default_enabled": true, "priority": 7},
|
|
70
|
+
{"id": "LSP/Index Engineer", "name": "LSP/Index Engineer", "category": "engineering", "description": "Language Server Protocol specialist for code intelligence systems.", "tags": ["lsp", "indexing", "code-intelligence"], "default_enabled": false, "priority": 5},
|
|
71
|
+
{"id": "feature-dev:code-architect", "name": "Code Architect", "category": "engineering", "description": "Designs feature architectures by analyzing codebase patterns and conventions.", "tags": ["architecture", "patterns", "design"], "default_enabled": true, "priority": 8},
|
|
72
|
+
{"id": "feature-dev:code-explorer", "name": "Code Explorer", "category": "engineering", "description": "Deep analysis of existing features, execution paths, and dependencies.", "tags": ["analysis", "tracing", "dependencies"], "default_enabled": true, "priority": 8},
|
|
73
|
+
{"id": "feature-dev:code-reviewer", "name": "Code Reviewer", "category": "engineering", "description": "Reviews code for bugs, security vulnerabilities, and quality issues.", "tags": ["review", "security", "quality"], "default_enabled": true, "priority": 8},
|
|
74
|
+
{"id": "testing-reality-checker", "name": "Reality Checker", "category": "testing", "description": "Evidence-based certification. Requires overwhelming proof for production readiness.", "tags": ["testing", "verification", "strict"], "default_enabled": true, "priority": 8},
|
|
75
|
+
{"id": "EvidenceQA", "name": "Evidence QA", "category": "testing", "description": "Screenshot-obsessed QA specialist. Requires visual proof for everything.", "tags": ["qa", "screenshots", "visual-testing"], "default_enabled": true, "priority": 7},
|
|
76
|
+
{"id": "API Tester", "name": "API Tester", "category": "testing", "description": "Comprehensive API validation, performance testing, and quality assurance.", "tags": ["api", "testing", "performance"], "default_enabled": true, "priority": 7},
|
|
77
|
+
{"id": "Test Results Analyzer", "name": "Test Results Analyzer", "category": "testing", "description": "Test result evaluation, quality metrics analysis, and actionable insights.", "tags": ["analysis", "metrics", "insights"], "default_enabled": true, "priority": 6},
|
|
78
|
+
{"id": "Performance Benchmarker", "name": "Performance Benchmarker", "category": "testing", "description": "Performance testing and optimization across all applications.", "tags": ["performance", "benchmarking", "optimization"], "default_enabled": true, "priority": 7},
|
|
79
|
+
{"id": "DevOps Automator", "name": "DevOps Automator", "category": "operations", "description": "Infrastructure automation, CI/CD pipeline development, and cloud operations.", "tags": ["devops", "ci-cd", "automation", "cloud"], "default_enabled": true, "priority": 8},
|
|
80
|
+
{"id": "Infrastructure Maintainer", "name": "Infrastructure Maintainer", "category": "operations", "description": "System reliability, performance optimization, and technical operations.", "tags": ["infrastructure", "reliability", "maintenance"], "default_enabled": true, "priority": 7},
|
|
81
|
+
{"id": "Workflow Optimizer", "name": "Workflow Optimizer", "category": "operations", "description": "Process improvement specialist for maximum productivity and efficiency.", "tags": ["workflow", "optimization", "automation"], "default_enabled": false, "priority": 5},
|
|
82
|
+
{"id": "Tool Evaluator", "name": "Tool Evaluator", "category": "operations", "description": "Technology assessment specialist for tools, software, and platforms.", "tags": ["evaluation", "tools", "assessment"], "default_enabled": false, "priority": 5},
|
|
83
|
+
{"id": "ArchitectUX", "name": "Architect UX", "category": "design", "description": "Technical architecture and UX specialist with CSS systems expertise.", "tags": ["ux", "architecture", "css"], "default_enabled": true, "priority": 8},
|
|
84
|
+
{"id": "UI Designer", "name": "UI Designer", "category": "design", "description": "Visual design systems, component libraries, and pixel-perfect interfaces.", "tags": ["ui", "design-systems", "components"], "default_enabled": true, "priority": 8},
|
|
85
|
+
{"id": "UX Researcher", "name": "UX Researcher", "category": "design", "description": "User behavior analysis, usability testing, and data-driven design insights.", "tags": ["research", "usability", "user-behavior"], "default_enabled": true, "priority": 7},
|
|
86
|
+
{"id": "Brand Guardian", "name": "Brand Guardian", "category": "design", "description": "Brand identity development, consistency maintenance, and strategic positioning.", "tags": ["brand", "identity", "consistency"], "default_enabled": false, "priority": 5},
|
|
87
|
+
{"id": "design-visual-storyteller", "name": "Visual Storyteller", "category": "design", "description": "Visual narratives, multimedia content, and brand storytelling through design.", "tags": ["storytelling", "multimedia", "visual"], "default_enabled": false, "priority": 5},
|
|
88
|
+
{"id": "Whimsy Injector", "name": "Whimsy Injector", "category": "design", "description": "Adds personality, delight, and playful elements to brand experiences.", "tags": ["whimsy", "delight", "personality"], "default_enabled": false, "priority": 4},
|
|
89
|
+
{"id": "project-manager-senior", "name": "Senior Project Manager", "category": "product", "description": "Converts specs to tasks with realistic scope and exact requirements.", "tags": ["project-management", "specs", "tasks"], "default_enabled": true, "priority": 8},
|
|
90
|
+
{"id": "product-sprint-prioritizer", "name": "Sprint Prioritizer", "category": "product", "description": "Agile sprint planning, feature prioritization, and resource allocation.", "tags": ["agile", "sprint", "prioritization"], "default_enabled": true, "priority": 7},
|
|
91
|
+
{"id": "product-feedback-synthesizer", "name": "Feedback Synthesizer", "category": "product", "description": "Collects and analyzes user feedback to extract actionable product insights.", "tags": ["feedback", "analysis", "insights"], "default_enabled": false, "priority": 5},
|
|
92
|
+
{"id": "product-trend-researcher", "name": "Trend Researcher", "category": "product", "description": "Market intelligence, emerging trends, and competitive analysis.", "tags": ["trends", "market", "competitive"], "default_enabled": false, "priority": 5},
|
|
93
|
+
{"id": "Studio Operations", "name": "Studio Operations", "category": "product", "description": "Day-to-day studio efficiency, process optimization, and resource coordination.", "tags": ["operations", "efficiency", "coordination"], "default_enabled": false, "priority": 4},
|
|
94
|
+
{"id": "Project Shepherd", "name": "Project Shepherd", "category": "product", "description": "Cross-functional project coordination and stakeholder alignment.", "tags": ["coordination", "cross-functional", "stakeholders"], "default_enabled": false, "priority": 5},
|
|
95
|
+
{"id": "Experiment Tracker", "name": "Experiment Tracker", "category": "product", "description": "Experiment design, A/B testing, and hypothesis validation.", "tags": ["experiments", "ab-testing", "validation"], "default_enabled": false, "priority": 5},
|
|
96
|
+
{"id": "Studio Producer", "name": "Studio Producer", "category": "product", "description": "High-level creative and technical project orchestration.", "tags": ["production", "creative", "orchestration"], "default_enabled": false, "priority": 5},
|
|
97
|
+
{"id": "marketing-growth-hacker", "name": "Growth Hacker", "category": "marketing", "description": "Rapid user acquisition through data-driven experimentation and viral loops.", "tags": ["growth", "acquisition", "viral"], "default_enabled": false, "priority": 6},
|
|
98
|
+
{"id": "marketing-content-creator", "name": "Content Creator", "category": "marketing", "description": "Multi-platform campaigns, editorial calendars, and brand storytelling.", "tags": ["content", "campaigns", "storytelling"], "default_enabled": false, "priority": 5},
|
|
99
|
+
{"id": "marketing-social-media-strategist", "name": "Social Media Strategist", "category": "marketing", "description": "Twitter, LinkedIn strategies with viral campaigns and thought leadership.", "tags": ["social-media", "linkedin", "twitter"], "default_enabled": false, "priority": 5},
|
|
100
|
+
{"id": "marketing-instagram-curator", "name": "Instagram Curator", "category": "marketing", "description": "Visual storytelling, community building, and multi-format content for Instagram.", "tags": ["instagram", "visual", "community"], "default_enabled": false, "priority": 4},
|
|
101
|
+
{"id": "marketing-tiktok-strategist", "name": "TikTok Strategist", "category": "marketing", "description": "Viral content creation, algorithm optimization, and TikTok community building.", "tags": ["tiktok", "viral", "algorithm"], "default_enabled": false, "priority": 4},
|
|
102
|
+
{"id": "marketing-twitter-engager", "name": "Twitter Engager", "category": "marketing", "description": "Real-time engagement, thought leadership, and community-driven growth.", "tags": ["twitter", "engagement", "thought-leadership"], "default_enabled": false, "priority": 4},
|
|
103
|
+
{"id": "marketing-reddit-community-builder", "name": "Reddit Community Builder", "category": "marketing", "description": "Authentic Reddit engagement, value-driven content, and community building.", "tags": ["reddit", "community", "authentic"], "default_enabled": false, "priority": 4},
|
|
104
|
+
{"id": "App Store Optimizer", "name": "App Store Optimizer", "category": "marketing", "description": "ASO, conversion rate optimization, and app discoverability.", "tags": ["aso", "app-store", "conversion"], "default_enabled": false, "priority": 4},
|
|
105
|
+
{"id": "data-analytics-reporter", "name": "Analytics Reporter", "category": "data", "description": "Transforms raw data into actionable business insights and dashboards.", "tags": ["analytics", "dashboards", "insights"], "default_enabled": true, "priority": 7},
|
|
106
|
+
{"id": "Analytics Reporter", "name": "Analytics Reporter", "category": "data", "description": "Data analysis, KPI tracking, and strategic decision support.", "tags": ["analytics", "kpi", "reporting"], "default_enabled": true, "priority": 7},
|
|
107
|
+
{"id": "Finance Tracker", "name": "Finance Tracker", "category": "data", "description": "Financial planning, budget management, and performance analysis.", "tags": ["finance", "budget", "planning"], "default_enabled": false, "priority": 5},
|
|
108
|
+
{"id": "Executive Summary Generator", "name": "Executive Summary Generator", "category": "data", "description": "McKinsey-style executive summaries with SCQA and Pyramid Principle frameworks.", "tags": ["executive", "summary", "frameworks"], "default_enabled": false, "priority": 5},
|
|
109
|
+
{"id": "Legal Compliance Checker", "name": "Legal Compliance Checker", "category": "data", "description": "Ensures compliance with laws, regulations, and industry standards.", "tags": ["legal", "compliance", "regulations"], "default_enabled": false, "priority": 4},
|
|
110
|
+
{"id": "Support Responder", "name": "Support Responder", "category": "data", "description": "Customer support, issue resolution, and multi-channel service.", "tags": ["support", "customer-service", "issues"], "default_enabled": false, "priority": 4},
|
|
111
|
+
{"id": "XR Interface Architect", "name": "XR Interface Architect", "category": "xr", "description": "Spatial interaction design for immersive AR/VR/XR environments.", "tags": ["xr", "spatial", "interaction"], "default_enabled": false, "priority": 6},
|
|
112
|
+
{"id": "XR Immersive Developer", "name": "XR Immersive Developer", "category": "xr", "description": "WebXR and browser-based AR/VR/XR applications.", "tags": ["webxr", "browser", "immersive"], "default_enabled": false, "priority": 6},
|
|
113
|
+
{"id": "XR Cockpit Interaction Specialist", "name": "XR Cockpit Specialist", "category": "xr", "description": "Cockpit-based control systems for XR environments.", "tags": ["cockpit", "controls", "xr"], "default_enabled": false, "priority": 5},
|
|
114
|
+
{"id": "visionos-spatial-engineer", "name": "VisionOS Spatial Engineer", "category": "xr", "description": "Native visionOS spatial computing with SwiftUI and Liquid Glass design.", "tags": ["visionos", "swiftui", "spatial"], "default_enabled": false, "priority": 6},
|
|
115
|
+
{"id": "terminal-integration-specialist", "name": "Terminal Integration Specialist", "category": "xr", "description": "Terminal emulation, SwiftTerm integration, and VT100/xterm standards.", "tags": ["terminal", "swiftterm", "integration"], "default_enabled": false, "priority": 5},
|
|
116
|
+
{"id": "macOS Spatial/Metal Engineer", "name": "macOS Metal Engineer", "category": "xr", "description": "Native Swift and Metal for high-performance 3D rendering on macOS and Vision Pro.", "tags": ["metal", "swift", "3d", "macos"], "default_enabled": false, "priority": 6},
|
|
117
|
+
{"id": "agents-orchestrator", "name": "Agents Orchestrator", "category": "operations", "description": "Autonomous pipeline manager that orchestrates the entire development workflow.", "tags": ["orchestration", "pipeline", "automation"], "default_enabled": true, "priority": 9},
|
|
118
|
+
{"id": "claude-code-guide", "name": "Claude Code Guide", "category": "exploration", "description": "Expert on Claude Code features, hooks, MCP servers, settings, and integrations.", "tags": ["claude-code", "help", "guide"], "default_enabled": true, "priority": 8}
|
|
119
|
+
],
|
|
120
|
+
"mcps": [
|
|
121
|
+
{"id": "claude-memory", "name": "Claude Memory", "description": "Semantic memory storage and retrieval for persistent context.", "icon": "brain", "color": "#a371f7", "default_enabled": true, "source": "global"},
|
|
122
|
+
{"id": "supertonic-tts", "name": "Supertonic TTS", "description": "Text-to-speech with multiple voices and languages via Supertonic MCP.", "icon": "volume-2", "color": "#f0883e", "default_enabled": true, "source": "global"},
|
|
123
|
+
{"id": "context7", "name": "Context7", "description": "Up-to-date documentation and API references from the web.", "icon": "book", "color": "#58a6ff", "default_enabled": true, "source": "builtin"},
|
|
124
|
+
{"id": "chrome-devtools", "name": "Chrome DevTools", "description": "Browser automation, screenshots, network inspection, and performance tracing.", "icon": "monitor", "color": "#4285f4", "default_enabled": true, "source": "builtin"},
|
|
125
|
+
{"id": "filesystem", "name": "Filesystem", "description": "Enhanced file system operations and management.", "icon": "folder", "color": "#d29922", "default_enabled": false, "source": "catalog"},
|
|
126
|
+
{"id": "github", "name": "GitHub", "description": "GitHub API integration for repos, issues, and PRs.", "icon": "github", "color": "#8b949e", "default_enabled": false, "source": "catalog"},
|
|
127
|
+
{"id": "postgres", "name": "PostgreSQL", "description": "Direct PostgreSQL database access and queries.", "icon": "database", "color": "#336791", "default_enabled": false, "source": "catalog"},
|
|
128
|
+
{"id": "puppeteer", "name": "Puppeteer", "description": "Browser automation and web scraping capabilities.", "icon": "globe", "color": "#3fb950", "default_enabled": false, "source": "catalog"}
|
|
129
|
+
],
|
|
130
|
+
"hooks": [
|
|
131
|
+
{"id": "pre-compact", "name": "Pre-Compact Memory", "description": "Extracts and saves memories before context window compaction.", "trigger": "PreCompact", "matcher": "", "icon": "archive", "color": "#d29922", "default_enabled": true, "source": "global"},
|
|
132
|
+
{"id": "pre-compact-hook", "name": "Pre-Compact Memory (Project)", "description": "Project-level memory extraction before context compaction.", "trigger": "PreCompact", "matcher": "", "icon": "archive", "color": "#d29922", "default_enabled": true, "source": "project"},
|
|
133
|
+
{"id": "session-start", "name": "Session Start", "description": "Initializes session tracking and loads context on first user prompt.", "trigger": "UserPromptSubmit", "matcher": "", "icon": "play-circle", "color": "#3fb950", "default_enabled": true, "source": "global"},
|
|
134
|
+
{"id": "debug-hook", "name": "Debug Hook", "description": "Development diagnostic hook for inspecting hook input/output.", "trigger": "UserPromptSubmit", "matcher": "", "icon": "terminal", "color": "#8b949e", "default_enabled": true, "source": "global"},
|
|
135
|
+
{"id": "detect-correction", "name": "Detect Correction", "description": "Auto-detects when user corrects Claude and creates anchors.", "trigger": "UserPromptSubmit", "matcher": "", "icon": "check-circle", "color": "#3fb950", "default_enabled": true, "source": "global"},
|
|
136
|
+
{"id": "problem-detector", "name": "Problem Detector", "description": "Detects errors and problems in user prompts for proactive resolution.", "trigger": "UserPromptSubmit", "matcher": "", "icon": "alert-triangle", "color": "#f85149", "default_enabled": true, "source": "global"},
|
|
137
|
+
{"id": "memory-first-reminder", "name": "Memory-First Reminder", "description": "Reminds Claude to check stored memories before answering questions.", "trigger": "UserPromptSubmit", "matcher": "", "icon": "bell", "color": "#a371f7", "default_enabled": true, "source": "global"},
|
|
138
|
+
{"id": "enhanced-timeline", "name": "Enhanced Timeline (Prompt)", "description": "Logs user prompts to the enhanced timeline for session tracking.", "trigger": "UserPromptSubmit", "matcher": "", "icon": "clock", "color": "#79c0ff", "default_enabled": true, "source": "global"},
|
|
139
|
+
{"id": "grounding-hook", "name": "Grounding Hook", "description": "Injects context and anchors before every response to prevent hallucinations.", "trigger": "UserPromptSubmit", "matcher": "", "icon": "anchor", "color": "#a371f7", "default_enabled": true, "source": "global"},
|
|
140
|
+
{"id": "pre-external-search", "name": "Pre-External Search", "description": "Checks memory before allowing external searches (WebSearch, WebFetch, Context7).", "trigger": "PreToolUse", "matcher": "WebSearch|WebFetch|mcp__context7__.*", "icon": "search", "color": "#58a6ff", "default_enabled": true, "source": "global"},
|
|
141
|
+
{"id": "pre-tool-decision", "name": "Pre-Tool Decision", "description": "Validates tool usage decisions against project context before execution.", "trigger": "PreToolUse", "matcher": "Edit|Write|Bash|Task", "icon": "git-branch", "color": "#d29922", "default_enabled": true, "source": "global"},
|
|
142
|
+
{"id": "pre-tool-check", "name": "Pre-Tool Check", "description": "Blocks actions that violate anchors or entity registry BEFORE execution.", "trigger": "PreToolUse", "matcher": "Edit|Write|Bash|Task", "icon": "shield", "color": "#d29922", "default_enabled": true, "source": "global"},
|
|
143
|
+
{"id": "track-memory-usage", "name": "Track Memory Usage", "description": "Tracks all claude-memory MCP tool calls for usage analytics.", "trigger": "PostToolUse", "matcher": "mcp__claude-memory__.*", "icon": "activity", "color": "#a371f7", "default_enabled": true, "source": "global"},
|
|
144
|
+
{"id": "enhanced-timeline-post", "name": "Enhanced Timeline (Post-Tool)", "description": "Logs tool results to the enhanced timeline after execution.", "trigger": "PostToolUse", "matcher": "Edit|Write|Bash|Read|Glob|Grep", "icon": "clock", "color": "#79c0ff", "default_enabled": true, "source": "global"},
|
|
145
|
+
{"id": "auto-capture", "name": "Auto Capture", "description": "Passively captures code patterns and decisions from tool outputs.", "trigger": "PostToolUse", "matcher": "Edit|Write|Bash|Read|Glob|Grep", "icon": "camera", "color": "#39d353", "default_enabled": true, "source": "global"},
|
|
146
|
+
{"id": "auto-detect-response", "name": "Auto-Detect Response", "description": "Extracts decisions and observations from Claude's responses using LLM.", "trigger": "Stop", "matcher": "", "icon": "brain", "color": "#f85149", "default_enabled": true, "source": "global"},
|
|
147
|
+
{"id": "solution-capture-prompt", "name": "Solution Capture Prompt", "description": "Prompts for solution capture when a problem was resolved in the session.", "trigger": "Stop", "matcher": "", "icon": "save", "color": "#3fb950", "default_enabled": true, "source": "global"},
|
|
148
|
+
{"id": "extract-insights", "name": "Extract Insights", "description": "Extracts reusable insights and patterns from completed responses.", "trigger": "Stop", "matcher": "", "icon": "zap", "color": "#d29922", "default_enabled": true, "source": "global"},
|
|
149
|
+
{"id": "session-end", "name": "Session End", "description": "Final cleanup, session summary, and memory persistence on Stop.", "trigger": "Stop", "matcher": "", "icon": "log-out", "color": "#8b949e", "default_enabled": true, "source": "global"},
|
|
150
|
+
{"id": "stop-hook", "name": "Stop Passive Capture (Project)", "description": "Project-level passive memory extraction from each response on Stop.", "trigger": "Stop", "matcher": "", "icon": "download", "color": "#39d353", "default_enabled": true, "source": "project"},
|
|
151
|
+
{"id": "session-end-hook", "name": "Session End Memory (Project)", "description": "Project-level final memory extraction and cleanup at session end.", "trigger": "SessionEnd", "matcher": "", "icon": "hard-drive", "color": "#8b949e", "default_enabled": true, "source": "project"}
|
|
152
|
+
]
|
|
153
|
+
}
|