hanzo-mcp 0.8.11__py3-none-any.whl → 0.9.0__py3-none-any.whl

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.

Potentially problematic release.


This version of hanzo-mcp might be problematic. Click here for more details.

Files changed (166) hide show
  1. hanzo_mcp/__init__.py +1 -3
  2. hanzo_mcp/analytics/posthog_analytics.py +3 -9
  3. hanzo_mcp/bridge.py +9 -25
  4. hanzo_mcp/cli.py +6 -15
  5. hanzo_mcp/cli_enhanced.py +5 -14
  6. hanzo_mcp/cli_plugin.py +3 -9
  7. hanzo_mcp/config/settings.py +6 -20
  8. hanzo_mcp/config/tool_config.py +1 -3
  9. hanzo_mcp/core/base_agent.py +88 -88
  10. hanzo_mcp/core/model_registry.py +238 -210
  11. hanzo_mcp/dev_server.py +5 -15
  12. hanzo_mcp/prompts/__init__.py +2 -6
  13. hanzo_mcp/prompts/project_todo_reminder.py +3 -9
  14. hanzo_mcp/prompts/tool_explorer.py +1 -3
  15. hanzo_mcp/prompts/utils.py +7 -21
  16. hanzo_mcp/server.py +2 -6
  17. hanzo_mcp/tools/__init__.py +26 -27
  18. hanzo_mcp/tools/agent/__init__.py +2 -1
  19. hanzo_mcp/tools/agent/agent.py +10 -30
  20. hanzo_mcp/tools/agent/agent_tool.py +22 -15
  21. hanzo_mcp/tools/agent/claude_desktop_auth.py +3 -9
  22. hanzo_mcp/tools/agent/cli_agent_base.py +7 -24
  23. hanzo_mcp/tools/agent/cli_tools.py +75 -74
  24. hanzo_mcp/tools/agent/code_auth.py +1 -3
  25. hanzo_mcp/tools/agent/code_auth_tool.py +2 -6
  26. hanzo_mcp/tools/agent/critic_tool.py +8 -24
  27. hanzo_mcp/tools/agent/iching_tool.py +12 -36
  28. hanzo_mcp/tools/agent/network_tool.py +7 -18
  29. hanzo_mcp/tools/agent/prompt.py +1 -5
  30. hanzo_mcp/tools/agent/review_tool.py +10 -25
  31. hanzo_mcp/tools/agent/swarm_alias.py +1 -3
  32. hanzo_mcp/tools/agent/unified_cli_tools.py +38 -38
  33. hanzo_mcp/tools/common/batch_tool.py +15 -45
  34. hanzo_mcp/tools/common/config_tool.py +9 -28
  35. hanzo_mcp/tools/common/context.py +1 -3
  36. hanzo_mcp/tools/common/critic_tool.py +1 -3
  37. hanzo_mcp/tools/common/decorators.py +2 -6
  38. hanzo_mcp/tools/common/enhanced_base.py +2 -6
  39. hanzo_mcp/tools/common/fastmcp_pagination.py +4 -12
  40. hanzo_mcp/tools/common/forgiving_edit.py +9 -28
  41. hanzo_mcp/tools/common/mode.py +1 -5
  42. hanzo_mcp/tools/common/paginated_base.py +3 -11
  43. hanzo_mcp/tools/common/paginated_response.py +10 -30
  44. hanzo_mcp/tools/common/pagination.py +3 -9
  45. hanzo_mcp/tools/common/path_utils.py +34 -0
  46. hanzo_mcp/tools/common/permissions.py +14 -13
  47. hanzo_mcp/tools/common/personality.py +983 -701
  48. hanzo_mcp/tools/common/plugin_loader.py +3 -15
  49. hanzo_mcp/tools/common/stats.py +6 -18
  50. hanzo_mcp/tools/common/thinking_tool.py +1 -3
  51. hanzo_mcp/tools/common/tool_disable.py +2 -6
  52. hanzo_mcp/tools/common/tool_list.py +2 -6
  53. hanzo_mcp/tools/common/validation.py +1 -3
  54. hanzo_mcp/tools/compiler/__init__.py +8 -0
  55. hanzo_mcp/tools/compiler/sandboxed_compiler.py +681 -0
  56. hanzo_mcp/tools/config/config_tool.py +7 -13
  57. hanzo_mcp/tools/config/index_config.py +1 -3
  58. hanzo_mcp/tools/config/mode_tool.py +5 -15
  59. hanzo_mcp/tools/database/database_manager.py +3 -9
  60. hanzo_mcp/tools/database/graph.py +1 -3
  61. hanzo_mcp/tools/database/graph_add.py +3 -9
  62. hanzo_mcp/tools/database/graph_query.py +11 -34
  63. hanzo_mcp/tools/database/graph_remove.py +3 -9
  64. hanzo_mcp/tools/database/graph_search.py +6 -20
  65. hanzo_mcp/tools/database/graph_stats.py +11 -33
  66. hanzo_mcp/tools/database/sql.py +4 -12
  67. hanzo_mcp/tools/database/sql_query.py +6 -10
  68. hanzo_mcp/tools/database/sql_search.py +2 -6
  69. hanzo_mcp/tools/database/sql_stats.py +5 -15
  70. hanzo_mcp/tools/editor/neovim_command.py +1 -3
  71. hanzo_mcp/tools/editor/neovim_session.py +7 -13
  72. hanzo_mcp/tools/environment/__init__.py +8 -0
  73. hanzo_mcp/tools/environment/environment_detector.py +594 -0
  74. hanzo_mcp/tools/filesystem/__init__.py +28 -26
  75. hanzo_mcp/tools/filesystem/ast_multi_edit.py +14 -43
  76. hanzo_mcp/tools/filesystem/ast_tool.py +3 -0
  77. hanzo_mcp/tools/filesystem/base.py +20 -12
  78. hanzo_mcp/tools/filesystem/content_replace.py +7 -12
  79. hanzo_mcp/tools/filesystem/diff.py +2 -10
  80. hanzo_mcp/tools/filesystem/directory_tree.py +285 -51
  81. hanzo_mcp/tools/filesystem/edit.py +10 -18
  82. hanzo_mcp/tools/filesystem/find.py +312 -179
  83. hanzo_mcp/tools/filesystem/git_search.py +12 -24
  84. hanzo_mcp/tools/filesystem/multi_edit.py +10 -18
  85. hanzo_mcp/tools/filesystem/read.py +14 -30
  86. hanzo_mcp/tools/filesystem/rules_tool.py +9 -17
  87. hanzo_mcp/tools/filesystem/search.py +1160 -0
  88. hanzo_mcp/tools/filesystem/watch.py +2 -4
  89. hanzo_mcp/tools/filesystem/write.py +7 -10
  90. hanzo_mcp/tools/framework/__init__.py +8 -0
  91. hanzo_mcp/tools/framework/framework_modes.py +714 -0
  92. hanzo_mcp/tools/jupyter/base.py +6 -20
  93. hanzo_mcp/tools/jupyter/jupyter.py +4 -12
  94. hanzo_mcp/tools/llm/consensus_tool.py +8 -24
  95. hanzo_mcp/tools/llm/llm_manage.py +2 -6
  96. hanzo_mcp/tools/llm/llm_tool.py +17 -58
  97. hanzo_mcp/tools/llm/llm_unified.py +18 -59
  98. hanzo_mcp/tools/llm/provider_tools.py +1 -3
  99. hanzo_mcp/tools/lsp/lsp_tool.py +621 -481
  100. hanzo_mcp/tools/mcp/mcp_add.py +1 -3
  101. hanzo_mcp/tools/mcp/mcp_stats.py +1 -3
  102. hanzo_mcp/tools/mcp/mcp_tool.py +9 -23
  103. hanzo_mcp/tools/memory/__init__.py +10 -27
  104. hanzo_mcp/tools/memory/conversation_memory.py +636 -0
  105. hanzo_mcp/tools/memory/knowledge_tools.py +7 -25
  106. hanzo_mcp/tools/memory/memory_tools.py +6 -18
  107. hanzo_mcp/tools/search/find_tool.py +12 -34
  108. hanzo_mcp/tools/search/unified_search.py +24 -78
  109. hanzo_mcp/tools/shell/__init__.py +16 -4
  110. hanzo_mcp/tools/shell/auto_background.py +2 -6
  111. hanzo_mcp/tools/shell/base.py +1 -5
  112. hanzo_mcp/tools/shell/base_process.py +5 -7
  113. hanzo_mcp/tools/shell/bash_session.py +7 -24
  114. hanzo_mcp/tools/shell/bash_session_executor.py +5 -15
  115. hanzo_mcp/tools/shell/bash_tool.py +3 -7
  116. hanzo_mcp/tools/shell/command_executor.py +26 -79
  117. hanzo_mcp/tools/shell/logs.py +4 -16
  118. hanzo_mcp/tools/shell/npx.py +2 -8
  119. hanzo_mcp/tools/shell/npx_tool.py +1 -3
  120. hanzo_mcp/tools/shell/pkill.py +4 -12
  121. hanzo_mcp/tools/shell/process_tool.py +2 -8
  122. hanzo_mcp/tools/shell/processes.py +5 -17
  123. hanzo_mcp/tools/shell/run_background.py +1 -3
  124. hanzo_mcp/tools/shell/run_command.py +1 -3
  125. hanzo_mcp/tools/shell/run_command_windows.py +1 -3
  126. hanzo_mcp/tools/shell/run_tool.py +56 -0
  127. hanzo_mcp/tools/shell/session_manager.py +2 -6
  128. hanzo_mcp/tools/shell/session_storage.py +2 -6
  129. hanzo_mcp/tools/shell/streaming_command.py +7 -23
  130. hanzo_mcp/tools/shell/uvx.py +4 -14
  131. hanzo_mcp/tools/shell/uvx_background.py +2 -6
  132. hanzo_mcp/tools/shell/uvx_tool.py +1 -3
  133. hanzo_mcp/tools/shell/zsh_tool.py +12 -20
  134. hanzo_mcp/tools/todo/todo.py +1 -3
  135. hanzo_mcp/tools/vector/__init__.py +97 -50
  136. hanzo_mcp/tools/vector/ast_analyzer.py +6 -20
  137. hanzo_mcp/tools/vector/git_ingester.py +10 -30
  138. hanzo_mcp/tools/vector/index_tool.py +3 -9
  139. hanzo_mcp/tools/vector/infinity_store.py +7 -27
  140. hanzo_mcp/tools/vector/mock_infinity.py +1 -3
  141. hanzo_mcp/tools/vector/node_tool.py +538 -0
  142. hanzo_mcp/tools/vector/project_manager.py +4 -12
  143. hanzo_mcp/tools/vector/unified_vector.py +384 -0
  144. hanzo_mcp/tools/vector/vector.py +2 -6
  145. hanzo_mcp/tools/vector/vector_index.py +8 -8
  146. hanzo_mcp/tools/vector/vector_search.py +7 -21
  147. {hanzo_mcp-0.8.11.dist-info → hanzo_mcp-0.9.0.dist-info}/METADATA +2 -2
  148. hanzo_mcp-0.9.0.dist-info/RECORD +191 -0
  149. hanzo_mcp/tools/agent/agent_tool_v1_deprecated.py +0 -645
  150. hanzo_mcp/tools/agent/swarm_tool.py +0 -718
  151. hanzo_mcp/tools/agent/swarm_tool_v1_deprecated.py +0 -577
  152. hanzo_mcp/tools/filesystem/batch_search.py +0 -900
  153. hanzo_mcp/tools/filesystem/directory_tree_paginated.py +0 -350
  154. hanzo_mcp/tools/filesystem/find_files.py +0 -369
  155. hanzo_mcp/tools/filesystem/grep.py +0 -467
  156. hanzo_mcp/tools/filesystem/search_tool.py +0 -767
  157. hanzo_mcp/tools/filesystem/symbols_tool.py +0 -515
  158. hanzo_mcp/tools/filesystem/tree.py +0 -270
  159. hanzo_mcp/tools/jupyter/notebook_edit.py +0 -317
  160. hanzo_mcp/tools/jupyter/notebook_read.py +0 -147
  161. hanzo_mcp/tools/todo/todo_read.py +0 -143
  162. hanzo_mcp/tools/todo/todo_write.py +0 -374
  163. hanzo_mcp-0.8.11.dist-info/RECORD +0 -193
  164. {hanzo_mcp-0.8.11.dist-info → hanzo_mcp-0.9.0.dist-info}/WHEEL +0 -0
  165. {hanzo_mcp-0.8.11.dist-info → hanzo_mcp-0.9.0.dist-info}/entry_points.txt +0 -0
  166. {hanzo_mcp-0.8.11.dist-info → hanzo_mcp-0.9.0.dist-info}/top_level.txt +0 -0
@@ -1,50 +1,70 @@
1
- """Tool personality system for organizing development tools based on famous programmers."""
1
+ """Complete enhanced tool personality system with 112+ personalities."""
2
2
 
3
3
  import os
4
- from typing import Set, Dict, List, Optional
5
- from dataclasses import dataclass
6
-
7
-
8
- @dataclass
9
- class ToolPersonality:
10
- """Represents a programmer personality with tool preferences."""
11
-
12
- name: str
13
- programmer: str
14
- description: str
15
- tools: List[str]
16
- environment: Optional[Dict[str, str]] = None
17
- philosophy: Optional[str] = None
18
-
19
- def __post_init__(self):
20
- """Validate personality configuration."""
21
- if not self.name:
22
- raise ValueError("Personality name is required")
23
- if not self.tools:
24
- raise ValueError("Personality must include at least one tool")
4
+ from typing import Set, Dict, List, Optional, Any
5
+ from dataclasses import dataclass, field
25
6
 
26
7
 
27
8
  class PersonalityRegistry:
28
- """Registry for tool personalities."""
9
+ """Registry for tool personalities with validation and export capabilities."""
29
10
 
30
- _personalities: Dict[str, ToolPersonality] = {}
11
+ _personalities: Dict[str, 'ToolPersonality'] = {}
31
12
  _active_personality: Optional[str] = None
32
13
 
33
14
  @classmethod
34
- def register(cls, personality: ToolPersonality) -> None:
35
- """Register a tool personality."""
15
+ def register(cls, personality: 'ToolPersonality') -> None:
16
+ """Register a tool personality with validation."""
17
+ # Ensure agent enabled if API keys present
18
+ personality = ensure_agent_enabled(personality)
19
+ # Normalize tools (dedupe and sort)
20
+ personality.tools = sorted(set(personality.tools))
36
21
  cls._personalities[personality.name] = personality
37
22
 
38
23
  @classmethod
39
- def get(cls, name: str) -> Optional[ToolPersonality]:
24
+ def add_personality(cls, personality: 'ToolPersonality') -> None:
25
+ """Add a custom personality with validation."""
26
+ if personality.name in cls._personalities:
27
+ raise ValueError(f"Personality '{personality.name}' already exists")
28
+ cls.register(personality)
29
+
30
+ @classmethod
31
+ def get(cls, name: str) -> Optional['ToolPersonality']:
40
32
  """Get a personality by name."""
41
33
  return cls._personalities.get(name)
42
34
 
43
35
  @classmethod
44
- def list(cls) -> List[ToolPersonality]:
36
+ def list(cls) -> List['ToolPersonality']:
45
37
  """List all registered personalities."""
46
38
  return list(cls._personalities.values())
47
39
 
40
+ @classmethod
41
+ def export(cls, include_tools: bool = False) -> List[Dict[str, Any]]:
42
+ """Export personalities with metadata for UI/CLI."""
43
+ result = []
44
+ for p in cls._personalities.values():
45
+ export = {
46
+ "name": p.name,
47
+ "programmer": p.programmer,
48
+ "description": p.description,
49
+ "tool_count": len(p.tools),
50
+ "tags": p.tags if hasattr(p, 'tags') else [],
51
+ "philosophy": p.philosophy if hasattr(p, 'philosophy') else None,
52
+ }
53
+ if include_tools:
54
+ export["tools"] = p.tools
55
+ if hasattr(p, 'metadata') and p.metadata:
56
+ export["metadata"] = p.metadata
57
+ result.append(export)
58
+ return result
59
+
60
+ @classmethod
61
+ def filter_by_tags(cls, tags: List[str]) -> List['ToolPersonality']:
62
+ """Filter personalities by tags."""
63
+ return [
64
+ p for p in cls._personalities.values()
65
+ if hasattr(p, 'tags') and any(tag in p.tags for tag in tags)
66
+ ]
67
+
48
68
  @classmethod
49
69
  def set_active(cls, name: str) -> None:
50
70
  """Set the active personality."""
@@ -52,8 +72,14 @@ class PersonalityRegistry:
52
72
  raise ValueError(f"Personality '{name}' not found")
53
73
  cls._active_personality = name
54
74
 
75
+ # Apply environment variables from the mode
76
+ personality = cls._personalities[name]
77
+ if personality.environment:
78
+ for key, value in personality.environment.items():
79
+ os.environ[key] = value
80
+
55
81
  @classmethod
56
- def get_active(cls) -> Optional[ToolPersonality]:
82
+ def get_active(cls) -> Optional['ToolPersonality']:
57
83
  """Get the active personality."""
58
84
  if cls._active_personality:
59
85
  return cls._personalities.get(cls._active_personality)
@@ -68,917 +94,1173 @@ class PersonalityRegistry:
68
94
  return set()
69
95
 
70
96
 
97
+ def ensure_agent_enabled(personality: 'ToolPersonality') -> 'ToolPersonality':
98
+ """Enable agent tool if API keys are present."""
99
+ # Check for any API key environment variables
100
+ api_keys = [
101
+ "OPENAI_API_KEY",
102
+ "ANTHROPIC_API_KEY",
103
+ "TOGETHER_API_KEY",
104
+ "HANZO_API_KEY",
105
+ ]
106
+
107
+ if any(os.environ.get(key) for key in api_keys):
108
+ if "agent" not in personality.tools:
109
+ personality.tools = personality.tools + ["agent"]
110
+
111
+ return personality
112
+
113
+
114
+ def validate_tools(tools: List[str]) -> List[str]:
115
+ """Validate and normalize tool names."""
116
+ valid_tools = []
117
+ for tool in tools:
118
+ if tool in ALL_TOOL_NAMES:
119
+ valid_tools.append(tool)
120
+ else:
121
+ # Silently skip unknown tools for now
122
+ pass
123
+ return sorted(set(valid_tools))
124
+
125
+
126
+ def register_default_personalities():
127
+ """Register all default tool personalities with validation and deduplication."""
128
+ for personality in personalities:
129
+ # Ensure agent enabled if API keys present
130
+ personality = ensure_agent_enabled(personality)
131
+ # Validate and normalize tools (commented out to avoid issues with unknown tools)
132
+ # personality.tools = validate_tools(personality.tools)
133
+ personality.tools = sorted(set(personality.tools))
134
+ PersonalityRegistry.register(personality)
135
+
136
+
137
+ def get_personality_from_env() -> Optional[str]:
138
+ """Get personality name from environment variables."""
139
+ return os.environ.get("HANZO_MODE") or os.environ.get("PERSONALITY") or os.environ.get("MODE")
140
+
141
+
142
+ def activate_personality_from_env():
143
+ """Activate personality from environment if set."""
144
+ personality_name = get_personality_from_env()
145
+ if personality_name:
146
+ try:
147
+ PersonalityRegistry.set_active(personality_name)
148
+ print(f"Activated personality: {personality_name}")
149
+ except ValueError as e:
150
+ print(f"Failed to activate personality: {e}")
151
+
152
+
153
+ @dataclass
154
+ class ToolPersonality:
155
+ """Represents a programmer personality with tool preferences."""
156
+
157
+ name: str
158
+ programmer: str
159
+ description: str
160
+ tools: List[str]
161
+ environment: Optional[Dict[str, str]] = None
162
+ philosophy: Optional[str] = None
163
+ tags: List[str] = field(default_factory=list)
164
+ metadata: Dict[str, Any] = field(default_factory=dict)
165
+
166
+ def __post_init__(self):
167
+ """Validate and normalize personality configuration."""
168
+ if not self.name:
169
+ raise ValueError("Personality name is required")
170
+ if not self.tools:
171
+ raise ValueError("Personality must include at least one tool")
172
+ # Deduplicate and sort tools
173
+ self.tools = sorted(set(self.tools))
174
+
175
+
71
176
  # Essential tools that are always available
72
- ESSENTIAL_TOOLS = ["read", "write", "edit", "tree", "bash", "think"]
73
-
74
- # Common tool sets for reuse
75
- UNIX_TOOLS = ["grep", "find_files", "bash", "process", "diff"]
76
- BUILD_TOOLS = ["bash", "npx", "uvx", "process"]
77
- VERSION_CONTROL = ["git_search", "diff"]
78
- AI_TOOLS = ["agent", "consensus", "critic", "think"]
79
- SEARCH_TOOLS = ["search", "symbols", "grep", "git_search"]
80
- DATABASE_TOOLS = ["sql_query", "sql_search", "graph_add", "graph_query"]
81
- VECTOR_TOOLS = ["vector_index", "vector_search"]
82
-
83
- # 100 Programmer Personalities
177
+ ESSENTIAL_TOOLS = ['read', 'write', 'edit', 'tree', 'bash', 'think']
178
+
179
+ # Classic tool sets
180
+ UNIX_TOOLS = ['grep', 'find_files', 'bash', 'process', 'diff']
181
+ BUILD_TOOLS = ['bash', 'npx', 'uvx', 'process', 'cargo', 'gem', 'pip']
182
+ VERSION_CONTROL = ['git_search', 'diff', 'gh', 'gitlab']
183
+ AI_TOOLS = ['agent', 'consensus', 'critic', 'think', 'llm']
184
+ SEARCH_TOOLS = ['search', 'symbols', 'grep', 'git_search', 'ast_search']
185
+ DATABASE_TOOLS = ['sql_query', 'sql_search', 'graph_add', 'graph_query']
186
+ VECTOR_TOOLS = ['vector_index', 'vector_search', 'embeddings']
187
+
188
+ # Modern DevOps & Cloud tools
189
+ DEVOPS_TOOLS = ['docker', 'container_build', 'k8s', 'kubectl', 'helm', 'kustomize', 'minikube']
190
+ CI_CD_TOOLS = ['ci', 'github_actions', 'gitlab_ci', 'jenkins', 'circleci', 'artifact_publish']
191
+ CLOUD_TOOLS = ['terraform', 'ansible', 'cloud_cli', 'aws_s3', 'kms', 'secrets_manager']
192
+ OBSERVABILITY_TOOLS = ['prometheus', 'grafana', 'otel', 'logs', 'tracing', 'slo', 'chaos']
193
+
194
+ # Security & Quality tools
195
+ SECURITY_TOOLS = ['sast', 'dast', 'fuzz', 'dependency_scan', 'secret_scan', 'sigstore', 'sbom', 'snyk', 'trivy']
196
+ TESTING_TOOLS = ['pytest', 'jest', 'mocha', 'go_test', 'linters', 'formatter', 'coverage']
197
+
198
+ # ML/DataOps tools
199
+ ML_TOOLS = ['mlflow', 'dvc', 'kedro', 'mlem', 'model_registry', 'feature_store', 'jupyter', 'notebook']
200
+ AI_OPS_TOOLS = ['model_deploy', 'gpu_manager', 'quantize', 'onnx_convert', 'huggingface', 'hf_hub']
201
+
202
+ # Developer UX tools
203
+ DEV_UX_TOOLS = ['ngrok', 'localstack', 'devcontainer', 'vscode_remote', 'repl', 'watch', 'hot_reload']
204
+
205
+ # Utility tools
206
+ UTILITY_TOOLS = ['package_manager', 'image_scan', 'signing', 'notebook', 'batch', 'todo', 'rules']
207
+
208
+ # All available tools for validation
209
+ ALL_TOOL_NAMES = ['agent', 'ansible', 'artifact_publish', 'ast_search', 'aws_s3', 'bash', 'batch', 'cargo', 'chaos', 'ci', 'circleci', 'cloud_cli', 'consensus', 'container_build', 'coverage', 'critic', 'dast', 'dependency_scan', 'devcontainer', 'diff', 'docker', 'dvc', 'edit', 'embeddings', 'feature_store', 'find_files', 'formatter', 'fuzz', 'gem', 'gh', 'git_search', 'github_actions', 'gitlab', 'gitlab_ci', 'go_test', 'gpu_manager', 'grafana', 'graph_add', 'graph_query', 'grep', 'helm', 'hf_hub', 'hot_reload', 'huggingface', 'image_scan', 'jenkins', 'jest', 'jupyter', 'k8s', 'kedro', 'kms', 'kubectl', 'kustomize', 'linters', 'llm', 'localstack', 'logs', 'minikube', 'mlem', 'mlflow', 'mocha', 'model_deploy', 'model_registry', 'ngrok', 'notebook', 'npx', 'onnx_convert', 'otel', 'package_manager', 'pip', 'process', 'prometheus', 'pytest', 'quantize', 'read', 'repl', 'rules', 'sast', 'sbom', 'search', 'secret_scan', 'secrets_manager', 'signing', 'sigstore', 'slo', 'snyk', 'sql_query', 'sql_search', 'symbols', 'terraform', 'think', 'todo', 'tracing', 'tree', 'trivy', 'uvx', 'vector_index', 'vector_search', 'vscode_remote', 'watch', 'write']
210
+
211
+ # Complete list of 117 programmer personalities
84
212
  personalities = [
85
- # 1-10: Language Creators
86
- ToolPersonality(
87
- name="guido",
88
- programmer="Guido van Rossum",
89
- description="Python's BDFL - readability counts",
90
- philosophy="There should be one-- and preferably only one --obvious way to do it.",
91
- tools=ESSENTIAL_TOOLS
92
- + ["uvx", "jupyter", "multi_edit", "symbols", "rules"]
93
- + AI_TOOLS
94
- + SEARCH_TOOLS,
95
- environment={"PYTHONPATH": ".", "PYTEST_ARGS": "-xvs"},
96
- ),
97
213
  ToolPersonality(
98
- name="matz",
99
- programmer="Yukihiro Matsumoto",
100
- description="Ruby creator - optimize for developer happiness",
101
- philosophy="Ruby is designed to make programmers happy.",
102
- tools=ESSENTIAL_TOOLS + ["npx", "symbols", "batch", "todo"] + SEARCH_TOOLS,
103
- environment={"RUBY_VERSION": "3.0", "BUNDLE_PATH": "vendor/bundle"},
104
- ),
105
- ToolPersonality(
106
- name="brendan",
107
- programmer="Brendan Eich",
108
- description="JavaScript creator - dynamic and flexible",
109
- philosophy="Always bet on JS.",
110
- tools=ESSENTIAL_TOOLS
111
- + ["npx", "watch", "symbols", "todo", "rules"]
112
- + BUILD_TOOLS
113
- + SEARCH_TOOLS,
114
- environment={"NODE_ENV": "development", "NPM_CONFIG_LOGLEVEL": "warn"},
214
+ name="10x",
215
+ programmer="10x Engineer",
216
+ description="Maximum productivity, all tools enabled",
217
+ philosophy="Move fast and optimize everything.",
218
+ tools=['agent', 'ansible', 'artifact_publish', 'ast_search', 'aws_s3', 'bash', 'batch', 'cargo', 'chaos', 'ci', 'circleci', 'cloud_cli', 'consensus', 'container_build', 'coverage', 'critic', 'dast', 'dependency_scan', 'devcontainer', 'diff', 'docker', 'dvc', 'edit', 'embeddings', 'feature_store', 'find_files', 'formatter', 'fuzz', 'gem', 'gh', 'git_search', 'github_actions', 'gitlab', 'gitlab_ci', 'go_test', 'gpu_manager', 'grafana', 'graph_add', 'graph_query', 'grep', 'helm', 'hf_hub', 'hot_reload', 'huggingface', 'image_scan', 'jenkins', 'jest', 'jupyter', 'k8s', 'kedro', 'kms', 'kubectl', 'kustomize', 'linters', 'llm', 'localstack', 'logs', 'minikube', 'mlem', 'mlflow', 'mocha', 'model_deploy', 'model_registry', 'ngrok', 'notebook', 'npx', 'onnx_convert', 'otel', 'package_manager', 'pip', 'process', 'prometheus', 'pytest', 'quantize', 'read', 'repl', 'rules', 'sast', 'sbom', 'search', 'secret_scan', 'secrets_manager', 'signing', 'sigstore', 'slo', 'snyk', 'sql_query', 'sql_search', 'symbols', 'terraform', 'think', 'todo', 'tracing', 'tree', 'trivy', 'uvx', 'vector_index', 'vector_search', 'vscode_remote', 'watch', 'write'],
219
+ environment={'PRODUCTIVITY': 'MAX', 'TOOLS': 'ALL', 'DOCKER_BUILDKIT': '1', 'CI': 'true'},
220
+ tags=['productivity', 'fullstack', 'power-user'],
115
221
  ),
116
222
  ToolPersonality(
117
- name="dennis",
118
- programmer="Dennis Ritchie",
119
- description="C creator - close to the metal",
120
- philosophy="UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity.",
121
- tools=ESSENTIAL_TOOLS + ["symbols", "content_replace"] + UNIX_TOOLS,
122
- environment={"CC": "gcc", "CFLAGS": "-Wall -O2"},
223
+ name="academic",
224
+ programmer="Academic Researcher",
225
+ description="Publish or perish",
226
+ philosophy="Standing on the shoulders of giants.",
227
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'jupyter', 'todo', 'critic', 'agent', 'consensus', 'critic', 'think', 'search', 'symbols', 'grep', 'git_search'],
228
+ environment={'LATEX_ENGINE': 'xelatex'},
229
+ tags=['general'],
123
230
  ),
124
231
  ToolPersonality(
125
- name="bjarne",
126
- programmer="Bjarne Stroustrup",
127
- description="C++ creator - zero-overhead abstractions",
128
- philosophy="C++ is designed to allow you to express ideas.",
129
- tools=ESSENTIAL_TOOLS
130
- + ["symbols", "multi_edit", "content_replace"]
131
- + UNIX_TOOLS
132
- + BUILD_TOOLS,
133
- environment={"CXX": "g++", "CXXFLAGS": "-std=c++20 -Wall"},
232
+ name="ada",
233
+ programmer="Ada Lovelace",
234
+ description="First programmer - algorithms as poetry",
235
+ philosophy="The Analytical Engine has no pretensions to originate anything. It can do whatever we know how to order it to perform.",
236
+ tools=['ast_search', 'bash', 'edit', 'formatter', 'git_search', 'grep', 'notebook', 'read', 'search', 'symbols', 'think', 'tree', 'write'],
237
+ environment={'ALGORITHM_STYLE': 'poetic'},
238
+ tags=['pioneer', 'academic', 'algorithms'],
134
239
  ),
135
240
  ToolPersonality(
136
- name="james",
137
- programmer="James Gosling",
138
- description="Java creator - write once, run anywhere",
139
- philosophy="Java is C++ without the guns, knives, and clubs.",
140
- tools=ESSENTIAL_TOOLS + ["symbols", "batch", "todo"] + BUILD_TOOLS,
141
- environment={"JAVA_HOME": "/usr/lib/jvm/java-11-openjdk"},
241
+ name="adrian",
242
+ programmer="Adrian Holovaty",
243
+ description="Django co-creator - web framework for perfectionists",
244
+ philosophy="The web framework for perfectionists with deadlines.",
245
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'uvx', 'sql_query', 'watch', 'sql_query', 'sql_search', 'graph_add', 'graph_query'],
246
+ environment={'DJANGO_SETTINGS_MODULE': 'settings'},
247
+ tags=['pioneer', 'web'],
142
248
  ),
143
249
  ToolPersonality(
144
250
  name="anders",
145
251
  programmer="Anders Hejlsberg",
146
252
  description="TypeScript/C# creator - type safety matters",
147
253
  philosophy="TypeScript is JavaScript that scales.",
148
- tools=ESSENTIAL_TOOLS
149
- + ["npx", "symbols", "watch", "rules"]
150
- + BUILD_TOOLS
151
- + SEARCH_TOOLS,
152
- environment={"TYPESCRIPT_VERSION": "5.0"},
153
- ),
154
- ToolPersonality(
155
- name="larry",
156
- programmer="Larry Wall",
157
- description="Perl creator - there's more than one way to do it",
158
- philosophy="The three chief virtues of a programmer are laziness, impatience, and hubris.",
159
- tools=ESSENTIAL_TOOLS + ["grep", "content_replace", "batch"] + UNIX_TOOLS,
160
- environment={"PERL5LIB": "./lib"},
161
- ),
162
- ToolPersonality(
163
- name="rasmus",
164
- programmer="Rasmus Lerdorf",
165
- description="PHP creator - pragmatic web development",
166
- philosophy="I'm not a real programmer. I throw together things until it works.",
167
- tools=ESSENTIAL_TOOLS + ["npx", "sql_query", "watch"] + DATABASE_TOOLS,
168
- environment={"PHP_VERSION": "8.0"},
169
- ),
170
- ToolPersonality(
171
- name="rich",
172
- programmer="Rich Hickey",
173
- description="Clojure creator - simplicity matters",
174
- philosophy="Programming is not about typing... it's about thinking.",
175
- tools=ESSENTIAL_TOOLS + ["symbols", "todo", "batch"] + AI_TOOLS,
176
- environment={"CLOJURE_VERSION": "1.11"},
254
+ tools=['ast_search', 'bash', 'cargo', 'edit', 'formatter', 'gem', 'git_search', 'grep', 'npx', 'pip', 'process', 'read', 'rules', 'search', 'symbols', 'think', 'tree', 'uvx', 'watch', 'write'],
255
+ environment={'TYPESCRIPT_VERSION': '5.0', 'DOTNET_VERSION': '8.0'},
256
+ tags=['languages', 'typescript', 'types'],
177
257
  ),
178
- # 11-20: Systems & Infrastructure
179
258
  ToolPersonality(
180
- name="linus",
181
- programmer="Linus Torvalds",
182
- description="Linux & Git creator - pragmatic excellence",
183
- philosophy="Talk is cheap. Show me the code.",
184
- tools=ESSENTIAL_TOOLS
185
- + ["git_search", "diff", "content_replace", "critic"]
186
- + UNIX_TOOLS,
187
- environment={"KERNEL_VERSION": "6.0", "GIT_AUTHOR_NAME": "Linus Torvalds"},
188
- ),
189
- ToolPersonality(
190
- name="rob",
191
- programmer="Rob Pike",
192
- description="Go creator - simplicity and concurrency",
193
- philosophy="A little copying is better than a little dependency.",
194
- tools=ESSENTIAL_TOOLS
195
- + ["symbols", "batch", "process"]
196
- + UNIX_TOOLS
197
- + BUILD_TOOLS,
198
- environment={"GOPATH": "~/go", "GO111MODULE": "on"},
259
+ name="andrej",
260
+ programmer="Andrej Karpathy",
261
+ description="AI educator & former Tesla AI director",
262
+ philosophy="The unreasonable effectiveness of neural networks.",
263
+ tools=['agent', 'ast_search', 'bash', 'consensus', 'critic', 'dvc', 'edit', 'feature_store', 'git_search', 'gpu_manager', 'grep', 'jupyter', 'kedro', 'llm', 'mlem', 'mlflow', 'model_registry', 'notebook', 'read', 'search', 'symbols', 'think', 'tree', 'uvx', 'watch', 'write'],
264
+ environment={'CUDA_VISIBLE_DEVICES': '0', 'PYTHONUNBUFFERED': '1'},
265
+ tags=['ai', 'ml', 'education'],
199
266
  ),
200
267
  ToolPersonality(
201
- name="ken",
202
- programmer="Ken Thompson",
203
- description="Unix creator - elegant minimalism",
204
- philosophy="When in doubt, use brute force.",
205
- tools=ESSENTIAL_TOOLS + UNIX_TOOLS,
206
- environment={"PATH": "/usr/local/bin:$PATH"},
268
+ name="andrew",
269
+ programmer="Andrew Ng",
270
+ description="AI educator & Coursera co-founder",
271
+ philosophy="AI is the new electricity.",
272
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'agent', 'consensus', 'critic', 'think', 'jupyter', 'todo', 'watch'],
273
+ environment={'CUDA_VISIBLE_DEVICES': '0'},
274
+ tags=['pioneer', 'ai'],
207
275
  ),
208
276
  ToolPersonality(
209
277
  name="bill",
210
278
  programmer="Bill Joy",
211
279
  description="Vi creator & BSD contributor",
212
280
  philosophy="The best way to predict the future is to invent it.",
213
- tools=ESSENTIAL_TOOLS + ["neovim_edit", "neovim_command"] + UNIX_TOOLS,
214
- environment={"EDITOR": "vi"},
281
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'neovim_edit', 'neovim_command', 'grep', 'find_files', 'bash', 'process', 'diff'],
282
+ environment={'EDITOR': 'vi'},
283
+ tags=['pioneer'],
215
284
  ),
216
285
  ToolPersonality(
217
- name="richard",
218
- programmer="Richard Stallman",
219
- description="GNU creator - software freedom",
220
- philosophy="Free software is a matter of liberty, not price.",
221
- tools=ESSENTIAL_TOOLS + ["content_replace", "batch"] + UNIX_TOOLS,
222
- environment={"EDITOR": "emacs"},
286
+ name="bjarne",
287
+ programmer="Bjarne Stroustrup",
288
+ description="C++ creator - zero-overhead abstractions",
289
+ philosophy="C++ is designed to allow you to express ideas.",
290
+ tools=['bash', 'cargo', 'content_replace', 'diff', 'edit', 'find_files', 'formatter', 'gem', 'grep', 'multi_edit', 'npx', 'pip', 'process', 'read', 'symbols', 'think', 'tree', 'uvx', 'write'],
291
+ environment={'CXX': 'g++', 'CXXFLAGS': '-std=c++20 -Wall'},
292
+ tags=['languages', 'cpp', 'performance'],
293
+ ),
294
+ ToolPersonality(
295
+ name="bram",
296
+ programmer="Bram Moolenaar",
297
+ description="Vim creator",
298
+ philosophy="The best way to avoid RSI is to not type so much.",
299
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'neovim_edit', 'neovim_command', 'neovim_session'],
300
+ environment={'VIM_VERSION': '9.0'},
301
+ tags=['pioneer'],
302
+ ),
303
+ ToolPersonality(
304
+ name="brendan",
305
+ programmer="Brendan Eich",
306
+ description="JavaScript creator - dynamic and flexible",
307
+ philosophy="Always bet on JS.",
308
+ tools=['ast_search', 'bash', 'cargo', 'devcontainer', 'edit', 'formatter', 'gem', 'git_search', 'grep', 'hot_reload', 'jest', 'localstack', 'ngrok', 'npx', 'pip', 'process', 'read', 'repl', 'rules', 'search', 'symbols', 'think', 'todo', 'tree', 'uvx', 'vscode_remote', 'watch', 'write'],
309
+ environment={'NODE_ENV': 'development', 'NPM_CONFIG_LOGLEVEL': 'warn'},
310
+ tags=['languages', 'javascript', 'web'],
223
311
  ),
224
312
  ToolPersonality(
225
313
  name="brian",
226
314
  programmer="Brian Kernighan",
227
315
  description="AWK co-creator & Unix pioneer",
228
316
  philosophy="Controlling complexity is the essence of computer programming.",
229
- tools=ESSENTIAL_TOOLS + ["grep", "content_replace"] + UNIX_TOOLS,
230
- environment={"AWK": "gawk"},
317
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'grep', 'content_replace', 'grep', 'find_files', 'bash', 'process', 'diff'],
318
+ environment={'AWK': 'gawk'},
319
+ tags=['pioneer'],
231
320
  ),
232
321
  ToolPersonality(
233
- name="donald",
234
- programmer="Donald Knuth",
235
- description="TeX creator - literate programming",
236
- philosophy="Premature optimization is the root of all evil.",
237
- tools=ESSENTIAL_TOOLS + ["symbols", "todo", "critic"],
238
- environment={"TEXMFHOME": "~/texmf"},
322
+ name="bruce",
323
+ programmer="Bruce Schneier",
324
+ description="Security expert & cryptographer",
325
+ philosophy="Security is a process, not a product.",
326
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'critic', 'symbols', 'git_search', 'grep', 'find_files', 'bash', 'process', 'diff'],
327
+ environment={'SECURITY_AUDIT': 'true'},
328
+ tags=['security'],
239
329
  ),
240
330
  ToolPersonality(
241
- name="graydon",
242
- programmer="Graydon Hoare",
243
- description="Rust creator - memory safety without GC",
244
- philosophy="Memory safety without garbage collection, concurrency without data races.",
245
- tools=ESSENTIAL_TOOLS
246
- + ["symbols", "multi_edit", "critic", "todo"]
247
- + BUILD_TOOLS,
248
- environment={"RUST_BACKTRACE": "1", "CARGO_HOME": "~/.cargo"},
331
+ name="carmack",
332
+ programmer="John Carmack",
333
+ description="id Software - Doom & Quake creator",
334
+ philosophy="Focus is a matter of deciding what things you're not going to do.",
335
+ tools=['bash', 'cargo', 'diff', 'edit', 'find_files', 'gem', 'gpu_manager', 'grep', 'multi_edit', 'npx', 'pip', 'process', 'read', 'symbols', 'think', 'tree', 'uvx', 'watch', 'write'],
336
+ environment={'GL_VERSION': '4.6', 'VULKAN_SDK': '/usr/local/vulkan'},
337
+ tags=['gaming', 'graphics', 'performance'],
249
338
  ),
250
339
  ToolPersonality(
251
- name="ryan",
252
- programmer="Ryan Dahl",
253
- description="Node.js & Deno creator",
254
- philosophy="I/O needs to be done differently.",
255
- tools=ESSENTIAL_TOOLS + ["npx", "uvx", "watch", "process"] + BUILD_TOOLS,
256
- environment={"DENO_DIR": "~/.deno"},
340
+ name="casey",
341
+ programmer="Casey Muratori",
342
+ description="Handmade Hero creator",
343
+ philosophy="Performance matters. Write code from scratch.",
344
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'symbols', 'watch', 'process', 'critic'],
345
+ environment={'HANDMADE': 'true'},
346
+ tags=['pioneer'],
257
347
  ),
258
348
  ToolPersonality(
259
- name="mitchell",
260
- programmer="Mitchell Hashimoto",
261
- description="HashiCorp founder - infrastructure as code",
262
- philosophy="Automate everything.",
263
- tools=ESSENTIAL_TOOLS + ["bash", "process", "watch", "todo"] + BUILD_TOOLS,
264
- environment={"TERRAFORM_VERSION": "1.0"},
349
+ name="chris",
350
+ programmer="Chris Olah",
351
+ description="AI interpretability researcher",
352
+ philosophy="Understanding neural networks matters.",
353
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'agent', 'consensus', 'critic', 'think', 'vector_index', 'vector_search', 'jupyter', 'critic'],
354
+ environment={'DISTILL_MODE': 'interactive'},
355
+ tags=['ai'],
265
356
  ),
266
- # 21-30: Web & Frontend
267
357
  ToolPersonality(
268
- name="tim",
269
- programmer="Tim Berners-Lee",
270
- description="WWW inventor - open web",
271
- philosophy="The Web is for everyone.",
272
- tools=ESSENTIAL_TOOLS + ["npx", "watch", "rules"] + SEARCH_TOOLS,
273
- environment={"W3C_VALIDATOR": "true"},
358
+ name="chris_lattner",
359
+ programmer="Chris Lattner",
360
+ description="LLVM & Swift creator",
361
+ philosophy="Compiler infrastructure should be modular.",
362
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'symbols', 'multi_edit', 'critic', 'bash', 'npx', 'uvx', 'process'],
363
+ environment={'LLVM_VERSION': '16'},
364
+ tags=['pioneer'],
274
365
  ),
275
366
  ToolPersonality(
276
- name="douglas",
277
- programmer="Douglas Crockford",
278
- description="JSON creator - JavaScript the good parts",
279
- philosophy="JavaScript has some extraordinarily good parts.",
280
- tools=ESSENTIAL_TOOLS + ["npx", "symbols", "critic"] + SEARCH_TOOLS,
281
- environment={"JSLINT": "true"},
367
+ name="cloud_native",
368
+ programmer="Cloud Native Developer",
369
+ description="Kubernetes-first development",
370
+ philosophy="Containers everywhere, orchestrate everything.",
371
+ tools=['ansible', 'artifact_publish', 'aws_s3', 'bash', 'chaos', 'ci', 'circleci', 'cloud_cli', 'container_build', 'dast', 'dependency_scan', 'diff', 'docker', 'edit', 'fuzz', 'gh', 'git_search', 'github_actions', 'gitlab', 'gitlab_ci', 'grafana', 'helm', 'jenkins', 'k8s', 'kms', 'kubectl', 'kustomize', 'logs', 'minikube', 'otel', 'prometheus', 'read', 'sast', 'sbom', 'secret_scan', 'secrets_manager', 'sigstore', 'slo', 'snyk', 'terraform', 'think', 'tracing', 'tree', 'trivy', 'write'],
372
+ environment={'KUBECONFIG': '~/.kube/config', 'DOCKER_REGISTRY': 'ghcr.io', 'CLOUD_PROVIDER': 'aws', 'TERRAFORM_VERSION': '1.5'},
373
+ tags=['devops', 'kubernetes', 'cloud'],
282
374
  ),
283
375
  ToolPersonality(
284
- name="john",
285
- programmer="John Resig",
286
- description="jQuery creator - write less, do more",
287
- philosophy="Do more with less code.",
288
- tools=ESSENTIAL_TOOLS + ["npx", "watch", "symbols"] + SEARCH_TOOLS,
289
- environment={"JQUERY_VERSION": "3.6"},
376
+ name="creative",
377
+ programmer="Creative Coder",
378
+ description="Code as art",
379
+ philosophy="Programming is the art of the possible.",
380
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'watch', 'jupyter', 'todo', 'agent', 'consensus', 'critic', 'think'],
381
+ environment={'P5_MODE': 'global'},
382
+ tags=['general'],
290
383
  ),
291
384
  ToolPersonality(
292
- name="evan",
293
- programmer="Evan You",
294
- description="Vue.js creator - progressive framework",
295
- philosophy="Approachable, versatile, performant.",
296
- tools=ESSENTIAL_TOOLS + ["npx", "watch", "symbols", "todo"] + BUILD_TOOLS,
297
- environment={"VUE_VERSION": "3"},
385
+ name="dan_kaminsky",
386
+ programmer="Dan Kaminsky",
387
+ description="DNS security researcher",
388
+ philosophy="Break it to make it better.",
389
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'critic', 'symbols', 'process', 'grep', 'find_files', 'bash', 'process', 'diff'],
390
+ environment={'DNSSEC': 'true'},
391
+ tags=['security'],
298
392
  ),
299
393
  ToolPersonality(
300
- name="jordan",
301
- programmer="Jordan Walke",
302
- description="React creator - declarative UIs",
303
- philosophy="Learn once, write anywhere.",
304
- tools=ESSENTIAL_TOOLS + ["npx", "watch", "symbols", "rules"] + BUILD_TOOLS,
305
- environment={"REACT_VERSION": "18"},
394
+ name="daniel_b",
395
+ programmer="Daniel J. Bernstein",
396
+ description="djb - qmail & Curve25519 creator",
397
+ philosophy="Security through simplicity.",
398
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'critic', 'symbols', 'grep', 'find_files', 'bash', 'process', 'diff'],
399
+ environment={'QMAIL_HOME': '/var/qmail'},
400
+ tags=['pioneer', 'ai'],
306
401
  ),
307
402
  ToolPersonality(
308
- name="jeremy",
309
- programmer="Jeremy Ashkenas",
310
- description="CoffeeScript & Backbone creator",
311
- philosophy="It's just JavaScript.",
312
- tools=ESSENTIAL_TOOLS + ["npx", "symbols", "watch"],
313
- environment={"COFFEE_VERSION": "2.0"},
403
+ name="daniel_r",
404
+ programmer="Daniel Robbins",
405
+ description="Gentoo founder",
406
+ philosophy="Your system, your way.",
407
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'bash', 'npx', 'uvx', 'process', 'grep', 'find_files', 'bash', 'process', 'diff'],
408
+ environment={'GENTOO_PROFILE': 'default/linux/amd64/17.1'},
409
+ tags=['pioneer'],
410
+ ),
411
+ ToolPersonality(
412
+ name="data_scientist",
413
+ programmer="Data Scientist",
414
+ description="Analyze all the things",
415
+ philosophy="In God we trust. All others must bring data.",
416
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'jupyter', 'sql_query', 'stats', 'vector_index', 'vector_search', 'agent', 'consensus', 'critic', 'think'],
417
+ environment={'JUPYTER_THEME': 'dark'},
418
+ tags=['general'],
314
419
  ),
315
420
  ToolPersonality(
316
421
  name="david",
317
422
  programmer="David Heinemeier Hansson",
318
423
  description="Rails creator - convention over configuration",
319
424
  philosophy="Optimize for programmer happiness.",
320
- tools=ESSENTIAL_TOOLS + ["npx", "sql_query", "watch", "todo"] + DATABASE_TOOLS,
321
- environment={"RAILS_ENV": "development"},
322
- ),
323
- ToolPersonality(
324
- name="taylor",
325
- programmer="Taylor Otwell",
326
- description="Laravel creator - PHP artisan",
327
- philosophy="Love beautiful code? We do too.",
328
- tools=ESSENTIAL_TOOLS + ["npx", "sql_query", "watch"] + DATABASE_TOOLS,
329
- environment={"LARAVEL_VERSION": "10"},
425
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'npx', 'sql_query', 'watch', 'todo', 'sql_query', 'sql_search', 'graph_add', 'graph_query'],
426
+ environment={'RAILS_ENV': 'development'},
427
+ tags=['pioneer', 'ai'],
330
428
  ),
331
429
  ToolPersonality(
332
- name="adrian",
333
- programmer="Adrian Holovaty",
334
- description="Django co-creator - web framework for perfectionists",
335
- philosophy="The web framework for perfectionists with deadlines.",
336
- tools=ESSENTIAL_TOOLS + ["uvx", "sql_query", "watch"] + DATABASE_TOOLS,
337
- environment={"DJANGO_SETTINGS_MODULE": "settings"},
430
+ name="demis",
431
+ programmer="Demis Hassabis",
432
+ description="DeepMind co-founder",
433
+ philosophy="Solve intelligence, use it to solve everything else.",
434
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'agent', 'consensus', 'critic', 'think', 'vector_index', 'vector_search', 'agent', 'consensus'],
435
+ environment={'JAX_VERSION': '0.4'},
436
+ tags=['pioneer'],
338
437
  ),
339
438
  ToolPersonality(
340
- name="matt",
341
- programmer="Matt Mullenweg",
342
- description="WordPress creator - democratize publishing",
343
- philosophy="Code is poetry.",
344
- tools=ESSENTIAL_TOOLS + ["sql_query", "watch", "rules"] + DATABASE_TOOLS,
345
- environment={"WP_DEBUG": "true"},
439
+ name="dennis",
440
+ programmer="Dennis Ritchie",
441
+ description="C creator - close to the metal",
442
+ philosophy="UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity.",
443
+ tools=['bash', 'content_replace', 'diff', 'edit', 'find_files', 'gdb', 'grep', 'process', 'read', 'symbols', 'think', 'tree', 'write'],
444
+ environment={'CC': 'gcc', 'CFLAGS': '-Wall -O2'},
445
+ tags=['languages', 'c', 'unix'],
346
446
  ),
347
- # 31-40: Database & Data
348
447
  ToolPersonality(
349
- name="michael_s",
350
- programmer="Michael Stonebraker",
351
- description="PostgreSQL creator - ACID matters",
352
- philosophy="One size does not fit all in databases.",
353
- tools=ESSENTIAL_TOOLS + DATABASE_TOOLS + ["batch", "todo"],
354
- environment={"PGDATA": "/var/lib/postgresql/data"},
448
+ name="devops",
449
+ programmer="DevOps Engineer",
450
+ description="Automate everything",
451
+ philosophy="You build it, you run it.",
452
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'bash', 'npx', 'uvx', 'process', 'process', 'watch', 'todo', 'grep', 'find_files', 'bash', 'process', 'diff'],
453
+ environment={'CI_CD': 'enabled'},
454
+ tags=['general'],
355
455
  ),
356
456
  ToolPersonality(
357
- name="michael_w",
358
- programmer="Michael Widenius",
359
- description="MySQL/MariaDB creator",
360
- philosophy="A small fast database for the web.",
361
- tools=ESSENTIAL_TOOLS + DATABASE_TOOLS + ["watch"],
362
- environment={"MYSQL_HOME": "/usr/local/mysql"},
457
+ name="dijkstra",
458
+ programmer="Edsger W. Dijkstra",
459
+ description="Structured programming and correctness",
460
+ philosophy="Simplicity is prerequisite for reliability.",
461
+ tools=['bash', 'coverage', 'edit', 'formatter', 'go_test', 'jest', 'linters', 'mocha', 'model_check', 'pytest', 'read', 'symbols', 'think', 'tree', 'write'],
462
+ environment={'GOTO_ALLOWED': 'false', 'PROOF_REQUIRED': 'true'},
463
+ tags=['academic', 'correctness', 'algorithms'],
363
464
  ),
364
465
  ToolPersonality(
365
- name="salvatore",
366
- programmer="Salvatore Sanfilippo",
367
- description="Redis creator - data structures server",
368
- philosophy="Simplicity is a great virtue.",
369
- tools=ESSENTIAL_TOOLS + ["bash", "watch", "process"] + DATABASE_TOOLS,
370
- environment={"REDIS_VERSION": "7.0"},
466
+ name="donald",
467
+ programmer="Donald Knuth",
468
+ description="TeX creator - literate programming",
469
+ philosophy="Premature optimization is the root of all evil.",
470
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'symbols', 'todo', 'critic'],
471
+ environment={'TEXMFHOME': '~/texmf'},
472
+ tags=['pioneer'],
473
+ ),
474
+ ToolPersonality(
475
+ name="douglas",
476
+ programmer="Douglas Crockford",
477
+ description="JSON creator - JavaScript the good parts",
478
+ philosophy="JavaScript has some extraordinarily good parts.",
479
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'npx', 'symbols', 'critic', 'search', 'symbols', 'grep', 'git_search'],
480
+ environment={'JSLINT': 'true'},
481
+ tags=['pioneer'],
371
482
  ),
372
483
  ToolPersonality(
373
484
  name="dwight",
374
485
  programmer="Dwight Merriman",
375
486
  description="MongoDB co-creator - document databases",
376
487
  philosophy="Build the database you want to use.",
377
- tools=ESSENTIAL_TOOLS + DATABASE_TOOLS + ["watch", "todo"],
378
- environment={"MONGO_VERSION": "6.0"},
488
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'sql_query', 'sql_search', 'graph_add', 'graph_query', 'watch', 'todo'],
489
+ environment={'MONGO_VERSION': '6.0'},
490
+ tags=['pioneer', 'database'],
491
+ ),
492
+ ToolPersonality(
493
+ name="dylan",
494
+ programmer="Dylan Field",
495
+ description="Figma co-founder",
496
+ philosophy="Design tools should be collaborative.",
497
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'watch', 'todo', 'rules'],
498
+ environment={'FIGMA_API': 'enabled'},
499
+ tags=['pioneer'],
379
500
  ),
380
501
  ToolPersonality(
381
502
  name="edgar",
382
503
  programmer="Edgar F. Codd",
383
504
  description="Relational model inventor",
384
505
  philosophy="Data independence is key.",
385
- tools=ESSENTIAL_TOOLS + DATABASE_TOOLS + ["critic"],
386
- environment={"SQL_MODE": "ANSI"},
506
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'sql_query', 'sql_search', 'graph_add', 'graph_query', 'critic'],
507
+ environment={'SQL_MODE': 'ANSI'},
508
+ tags=['pioneer'],
387
509
  ),
388
510
  ToolPersonality(
389
- name="jim_gray",
390
- programmer="Jim Gray",
391
- description="Transaction processing pioneer",
392
- philosophy="The transaction is the unit of work.",
393
- tools=ESSENTIAL_TOOLS + DATABASE_TOOLS + ["batch", "critic"],
394
- environment={"ISOLATION_LEVEL": "SERIALIZABLE"},
511
+ name="enterprise",
512
+ programmer="Enterprise Developer",
513
+ description="Process and compliance",
514
+ philosophy="Nobody ever got fired for buying IBM.",
515
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'todo', 'critic', 'rules', 'stats', 'sql_query', 'sql_search', 'graph_add', 'graph_query'],
516
+ environment={'COMPLIANCE': 'SOC2'},
517
+ tags=['general'],
395
518
  ),
396
519
  ToolPersonality(
397
- name="jeff_dean",
398
- programmer="Jeff Dean",
399
- description="MapReduce & BigTable co-creator",
400
- philosophy="Design for planet-scale.",
401
- tools=ESSENTIAL_TOOLS + DATABASE_TOOLS + VECTOR_TOOLS + ["batch"],
402
- environment={"HADOOP_HOME": "/opt/hadoop"},
520
+ name="evan",
521
+ programmer="Evan You",
522
+ description="Vue.js creator - progressive framework",
523
+ philosophy="Approachable, versatile, performant.",
524
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'npx', 'watch', 'symbols', 'todo', 'bash', 'npx', 'uvx', 'process'],
525
+ environment={'VUE_VERSION': '3'},
526
+ tags=['pioneer'],
403
527
  ),
404
528
  ToolPersonality(
405
- name="sanjay",
406
- programmer="Sanjay Ghemawat",
407
- description="MapReduce & BigTable co-creator",
408
- philosophy="Simple abstractions for complex systems.",
409
- tools=ESSENTIAL_TOOLS + DATABASE_TOOLS + ["batch", "process"],
410
- environment={"SPARK_HOME": "/opt/spark"},
529
+ name="fabrice",
530
+ programmer="Fabrice Bellard",
531
+ description="QEMU & FFmpeg creator",
532
+ philosophy="Small, fast, and elegant code.",
533
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'symbols', 'process', 'bash', 'npx', 'uvx', 'process'],
534
+ environment={'QEMU_VERSION': '8.0'},
535
+ tags=['pioneer'],
411
536
  ),
412
537
  ToolPersonality(
413
- name="mike",
414
- programmer="Mike Cafarella",
415
- description="Hadoop co-creator",
416
- philosophy="Storage is cheap, compute is cheap.",
417
- tools=ESSENTIAL_TOOLS + DATABASE_TOOLS + ["batch", "process"],
418
- environment={"HADOOP_CONF_DIR": "/etc/hadoop"},
538
+ name="frances",
539
+ programmer="Frances E. Allen",
540
+ description="Compiler optimization and parallelization",
541
+ philosophy="Parallel computing is the future.",
542
+ tools=['bash', 'chaos', 'compiler', 'edit', 'gpu_manager', 'grafana', 'logs', 'otel', 'prometheus', 'read', 'slo', 'think', 'tracing', 'tree', 'write'],
543
+ environment={'OPTIMIZATION_LEVEL': 'O3', 'PARALLELISM': 'auto'},
544
+ tags=['compilers', 'optimization', 'parallel'],
419
545
  ),
420
546
  ToolPersonality(
421
- name="matei",
422
- programmer="Matei Zaharia",
423
- description="Apache Spark creator",
424
- philosophy="In-memory computing changes everything.",
425
- tools=ESSENTIAL_TOOLS + DATABASE_TOOLS + ["batch", "process", "jupyter"],
426
- environment={"SPARK_MASTER": "local[*]"},
547
+ name="francois",
548
+ programmer="François Chollet",
549
+ description="Keras creator",
550
+ philosophy="Deep learning for humans.",
551
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'agent', 'consensus', 'critic', 'think', 'jupyter', 'watch', 'todo'],
552
+ environment={'KERAS_BACKEND': 'tensorflow'},
553
+ tags=['pioneer'],
427
554
  ),
428
- # 41-50: AI & Machine Learning
429
555
  ToolPersonality(
430
- name="yann",
431
- programmer="Yann LeCun",
432
- description="Deep learning pioneer - ConvNets",
433
- philosophy="AI is not magic; it's just math and data.",
434
- tools=ESSENTIAL_TOOLS + AI_TOOLS + VECTOR_TOOLS + ["jupyter", "watch"],
435
- environment={"PYTORCH_VERSION": "2.0"},
556
+ name="fullstack",
557
+ programmer="Full Stack Developer",
558
+ description="Every tool for every job",
559
+ philosophy="Jack of all trades, master of... well, all trades.",
560
+ tools=['grep', 'sql_search', 'git_search', 'tree', 'read', 'critic', 'think', 'graph_query', 'sql_query', 'watch', 'diff', 'bash', 'consensus', 'jupyter', 'vector_index', 'neovim_edit', 'mcp', 'edit', 'rules', 'todo', 'npx', 'find_files', 'vector_search', 'process', 'uvx', 'search', 'write', 'graph_add', 'symbols', 'agent'],
561
+ environment={'ALL_TOOLS': 'enabled'},
562
+ tags=['general'],
563
+ ),
564
+ ToolPersonality(
565
+ name="gabe",
566
+ programmer="Gabe Newell",
567
+ description="Valve founder - Half-Life & Steam",
568
+ philosophy="The easiest way to stop piracy is not by putting antipiracy technology to work. It's by giving those people a service that's better than what they're receiving from the pirates.",
569
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'process', 'watch', 'todo', 'bash', 'npx', 'uvx', 'process'],
570
+ environment={'STEAM_RUNTIME': '1'},
571
+ tags=['pioneer'],
436
572
  ),
437
573
  ToolPersonality(
438
574
  name="geoffrey",
439
575
  programmer="Geoffrey Hinton",
440
576
  description="Deep learning godfather",
441
577
  philosophy="The brain has to work with what it's got.",
442
- tools=ESSENTIAL_TOOLS + AI_TOOLS + VECTOR_TOOLS + ["jupyter"],
443
- environment={"TF_VERSION": "2.13"},
578
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'agent', 'consensus', 'critic', 'think', 'vector_index', 'vector_search', 'jupyter'],
579
+ environment={'TF_VERSION': '2.13'},
580
+ tags=['general'],
444
581
  ),
445
582
  ToolPersonality(
446
- name="yoshua",
447
- programmer="Yoshua Bengio",
448
- description="Deep learning pioneer",
449
- philosophy="We need to think about AI that helps humanity.",
450
- tools=ESSENTIAL_TOOLS + AI_TOOLS + VECTOR_TOOLS + ["jupyter", "batch"],
451
- environment={"THEANO_FLAGS": "device=cuda"},
583
+ name="grace",
584
+ programmer="Grace Hopper",
585
+ description="Compiler pioneer and debugging inventor",
586
+ philosophy="The most dangerous phrase in the language is 'We've always done it this way.'",
587
+ tools=['artifact_publish', 'bash', 'ci', 'circleci', 'compiler', 'coverage', 'docker', 'edit', 'formatter', 'github_actions', 'gitlab_ci', 'go_test', 'jenkins', 'jest', 'linters', 'mocha', 'pytest', 'read', 'think', 'tree', 'write'],
588
+ environment={'COMPILER_TOOL': 'cobol-compat', 'DOCKER_REGISTRY': 'ghcr.io'},
589
+ tags=['pioneer', 'compilers', 'pragmatic'],
452
590
  ),
453
591
  ToolPersonality(
454
- name="andrew",
455
- programmer="Andrew Ng",
456
- description="AI educator & Coursera co-founder",
457
- philosophy="AI is the new electricity.",
458
- tools=ESSENTIAL_TOOLS + AI_TOOLS + ["jupyter", "todo", "watch"],
459
- environment={"CUDA_VISIBLE_DEVICES": "0"},
592
+ name="graydon",
593
+ programmer="Graydon Hoare",
594
+ description="Rust creator - memory safety without GC",
595
+ philosophy="Memory safety without garbage collection, concurrency without data races.",
596
+ tools=['bash', 'cargo', 'coverage', 'critic', 'edit', 'formatter', 'gem', 'go_test', 'jest', 'linters', 'mocha', 'multi_edit', 'npx', 'pip', 'process', 'pytest', 'read', 'symbols', 'think', 'todo', 'tree', 'uvx', 'write'],
597
+ environment={'RUST_BACKTRACE': '1', 'CARGO_HOME': '~/.cargo'},
598
+ tags=['languages', 'rust', 'safety'],
460
599
  ),
461
600
  ToolPersonality(
462
- name="demis",
463
- programmer="Demis Hassabis",
464
- description="DeepMind co-founder",
465
- philosophy="Solve intelligence, use it to solve everything else.",
466
- tools=ESSENTIAL_TOOLS + AI_TOOLS + VECTOR_TOOLS + ["agent", "consensus"],
467
- environment={"JAX_VERSION": "0.4"},
601
+ name="guido",
602
+ programmer="Guido van Rossum",
603
+ description="Python's BDFL - readability counts",
604
+ philosophy="There should be one-- and preferably only one --obvious way to do it.",
605
+ tools=['agent', 'ast_search', 'bash', 'consensus', 'critic', 'dvc', 'edit', 'feature_store', 'formatter', 'git_search', 'grep', 'jupyter', 'kedro', 'llm', 'mlem', 'mlflow', 'model_registry', 'multi_edit', 'notebook', 'pytest', 'read', 'rules', 'search', 'symbols', 'think', 'tree', 'uvx', 'write'],
606
+ environment={'PYTHONPATH': '.', 'PYTEST_ARGS': '-xvs', 'BLACK_CONFIG': 'pyproject.toml'},
607
+ tags=['languages', 'python', 'readability'],
608
+ ),
609
+ ToolPersonality(
610
+ name="guillermo",
611
+ programmer="Guillermo Rauch",
612
+ description="Vercel founder & Next.js creator",
613
+ philosophy="Make the Web. Faster.",
614
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'npx', 'watch', 'rules', 'bash', 'npx', 'uvx', 'process'],
615
+ environment={'NEXT_VERSION': '14'},
616
+ tags=['pioneer'],
617
+ ),
618
+ ToolPersonality(
619
+ name="hanzo",
620
+ programmer="Hanzo AI Default",
621
+ description="Balanced productivity and quality",
622
+ philosophy="AI-powered development at scale.",
623
+ tools=['agent', 'artifact_publish', 'ast_search', 'bash', 'cargo', 'ci', 'circleci', 'consensus', 'container_build', 'critic', 'diff', 'docker', 'dvc', 'edit', 'feature_store', 'gem', 'gh', 'git_search', 'github_actions', 'gitlab', 'gitlab_ci', 'grep', 'helm', 'jenkins', 'jupyter', 'k8s', 'kedro', 'kubectl', 'kustomize', 'llm', 'minikube', 'mlem', 'mlflow', 'model_registry', 'multi_edit', 'notebook', 'npx', 'pip', 'process', 'read', 'rules', 'search', 'symbols', 'think', 'todo', 'tree', 'uvx', 'watch', 'write'],
624
+ environment={'HANZO_MODE': 'enabled', 'AI_ASSIST': 'true', 'DOCKER_BUILDKIT': '1', 'KUBECONFIG': '~/.kube/config'},
625
+ tags=['default', 'balanced', 'ai'],
626
+ ),
627
+ ToolPersonality(
628
+ name="hideo",
629
+ programmer="Hideo Kojima",
630
+ description="Metal Gear creator",
631
+ philosophy="70% of my body is made of movies.",
632
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'todo', 'watch', 'critic'],
633
+ environment={'KOJIMA_PRODUCTIONS': 'true'},
634
+ tags=['pioneer'],
635
+ ),
636
+ ToolPersonality(
637
+ name="hoare",
638
+ programmer="Tony Hoare",
639
+ description="Algorithms, CSP, and Hoare logic",
640
+ philosophy="Premature optimization is the root of all evil.",
641
+ tools=['bash', 'coverage', 'edit', 'formatter', 'go_test', 'jest', 'linters', 'mocha', 'model_check', 'pytest', 'read', 'symbols', 'think', 'tree', 'write'],
642
+ environment={'PROOF_ASSISTANT': 'coq', 'NULL_REFERENCES': 'banned'},
643
+ tags=['algorithms', 'correctness', 'theory'],
644
+ ),
645
+ ToolPersonality(
646
+ name="ian",
647
+ programmer="Ian Murdock",
648
+ description="Debian founder",
649
+ philosophy="Free software, free society.",
650
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'grep', 'find_files', 'bash', 'process', 'diff', 'todo'],
651
+ environment={'DEBIAN_FRONTEND': 'noninteractive'},
652
+ tags=['pioneer'],
468
653
  ),
469
654
  ToolPersonality(
470
655
  name="ilya",
471
656
  programmer="Ilya Sutskever",
472
- description="OpenAI co-founder",
473
- philosophy="Scale is all you need.",
474
- tools=ESSENTIAL_TOOLS + AI_TOOLS + ["agent", "consensus", "critic"],
475
- environment={"OPENAI_API_KEY": "sk-..."},
657
+ description="OpenAI co-founder - scaling is all you need",
658
+ philosophy="AGI is the goal.",
659
+ tools=['agent', 'ansible', 'aws_s3', 'bash', 'batch', 'cloud_cli', 'consensus', 'critic', 'dvc', 'edit', 'feature_store', 'gpu_manager', 'hf_hub', 'huggingface', 'jupyter', 'kedro', 'kms', 'llm', 'mlem', 'mlflow', 'model_deploy', 'model_registry', 'notebook', 'onnx_convert', 'quantize', 'read', 'secrets_manager', 'symbols', 'terraform', 'think', 'tree', 'uvx', 'write'],
660
+ environment={'OPENAI_API_KEY': '', 'PYTORCH_ENABLE_MPS': '1', 'CUDA_VISIBLE_DEVICES': '0'},
661
+ tags=['ai', 'ml', 'research'],
476
662
  ),
477
663
  ToolPersonality(
478
- name="andrej",
479
- programmer="Andrej Karpathy",
480
- description="AI educator & Tesla AI director",
481
- philosophy="Build it from scratch to understand it.",
482
- tools=ESSENTIAL_TOOLS + AI_TOOLS + ["jupyter", "watch", "todo"],
483
- environment={"CUDA_HOME": "/usr/local/cuda"},
664
+ name="james",
665
+ programmer="James Gosling",
666
+ description="Java creator - write once, run anywhere",
667
+ philosophy="Java is C++ without the guns, knives, and clubs.",
668
+ tools=['bash', 'batch', 'cargo', 'edit', 'gem', 'gradle', 'maven', 'npx', 'pip', 'process', 'read', 'symbols', 'think', 'todo', 'tree', 'uvx', 'write'],
669
+ environment={'JAVA_HOME': '/usr/lib/jvm/java-11-openjdk', 'MAVEN_OPTS': '-Xmx1024m'},
670
+ tags=['languages', 'java', 'enterprise'],
484
671
  ),
485
672
  ToolPersonality(
486
- name="chris",
487
- programmer="Chris Olah",
488
- description="AI interpretability researcher",
489
- philosophy="Understanding neural networks matters.",
490
- tools=ESSENTIAL_TOOLS + AI_TOOLS + VECTOR_TOOLS + ["jupyter", "critic"],
491
- environment={"DISTILL_MODE": "interactive"},
673
+ name="jeff_dean",
674
+ programmer="Jeff Dean",
675
+ description="MapReduce & BigTable co-creator",
676
+ philosophy="Design for planet-scale.",
677
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'sql_query', 'sql_search', 'graph_add', 'graph_query', 'vector_index', 'vector_search', 'batch'],
678
+ environment={'HADOOP_HOME': '/opt/hadoop'},
679
+ tags=['pioneer'],
492
680
  ),
493
681
  ToolPersonality(
494
- name="francois",
495
- programmer="François Chollet",
496
- description="Keras creator",
497
- philosophy="Deep learning for humans.",
498
- tools=ESSENTIAL_TOOLS + AI_TOOLS + ["jupyter", "watch", "todo"],
499
- environment={"KERAS_BACKEND": "tensorflow"},
682
+ name="jeremy",
683
+ programmer="Jeremy Ashkenas",
684
+ description="CoffeeScript & Backbone creator",
685
+ philosophy="It's just JavaScript.",
686
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'npx', 'symbols', 'watch'],
687
+ environment={'COFFEE_VERSION': '2.0'},
688
+ tags=['pioneer'],
500
689
  ),
501
690
  ToolPersonality(
502
691
  name="jeremy_howard",
503
692
  programmer="Jeremy Howard",
504
693
  description="fast.ai founder",
505
694
  philosophy="Deep learning should be accessible to all.",
506
- tools=ESSENTIAL_TOOLS + AI_TOOLS + ["jupyter", "watch", "rules"],
507
- environment={"FASTAI_VERSION": "2.7"},
695
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'agent', 'consensus', 'critic', 'think', 'jupyter', 'watch', 'rules'],
696
+ environment={'FASTAI_VERSION': '2.7'},
697
+ tags=['pioneer', 'ai'],
508
698
  ),
509
- # 51-60: Security & Cryptography
510
699
  ToolPersonality(
511
- name="bruce",
512
- programmer="Bruce Schneier",
513
- description="Security expert & cryptographer",
514
- philosophy="Security is a process, not a product.",
515
- tools=ESSENTIAL_TOOLS + ["critic", "symbols", "git_search"] + UNIX_TOOLS,
516
- environment={"SECURITY_AUDIT": "true"},
700
+ name="jim_gray",
701
+ programmer="Jim Gray",
702
+ description="Transaction processing pioneer",
703
+ philosophy="The transaction is the unit of work.",
704
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'sql_query', 'sql_search', 'graph_add', 'graph_query', 'batch', 'critic'],
705
+ environment={'ISOLATION_LEVEL': 'SERIALIZABLE'},
706
+ tags=['general'],
517
707
  ),
518
708
  ToolPersonality(
519
- name="phil",
520
- programmer="Phil Zimmermann",
521
- description="PGP creator - privacy matters",
522
- philosophy="If privacy is outlawed, only outlaws will have privacy.",
523
- tools=ESSENTIAL_TOOLS + ["critic", "content_replace"] + UNIX_TOOLS,
524
- environment={"GPG_TTY": "$(tty)"},
709
+ name="joe",
710
+ programmer="Joe Armstrong",
711
+ description="Erlang creator",
712
+ philosophy="Let it crash.",
713
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'process', 'watch', 'critic'],
714
+ environment={'ERL_VERSION': 'OTP-26'},
715
+ tags=['pioneer'],
525
716
  ),
526
717
  ToolPersonality(
527
- name="whitfield",
528
- programmer="Whitfield Diffie",
529
- description="Public-key cryptography pioneer",
530
- philosophy="Privacy is necessary for an open society.",
531
- tools=ESSENTIAL_TOOLS + ["critic", "symbols"],
532
- environment={"OPENSSL_VERSION": "3.0"},
718
+ name="john",
719
+ programmer="John Resig",
720
+ description="jQuery creator - write less, do more",
721
+ philosophy="Do more with less code.",
722
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'npx', 'watch', 'symbols', 'search', 'symbols', 'grep', 'git_search'],
723
+ environment={'JQUERY_VERSION': '3.6'},
724
+ tags=['pioneer'],
533
725
  ),
534
726
  ToolPersonality(
535
- name="ralph",
536
- programmer="Ralph Merkle",
537
- description="Merkle trees inventor",
538
- philosophy="Cryptography is about mathematical guarantees.",
539
- tools=ESSENTIAL_TOOLS + ["symbols", "critic", "batch"],
540
- environment={"HASH_ALGORITHM": "SHA256"},
727
+ name="john_carmack",
728
+ programmer="John Carmack",
729
+ description="id Software - Doom & Quake creator",
730
+ philosophy="Focus is a matter of deciding what things you're not going to do.",
731
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'symbols', 'watch', 'process', 'bash', 'npx', 'uvx', 'process'],
732
+ environment={'OPENGL_VERSION': '4.6'},
733
+ tags=['pioneer'],
541
734
  ),
542
735
  ToolPersonality(
543
- name="daniel_b",
544
- programmer="Daniel J. Bernstein",
545
- description="djb - qmail & Curve25519 creator",
546
- philosophy="Security through simplicity.",
547
- tools=ESSENTIAL_TOOLS + ["critic", "symbols"] + UNIX_TOOLS,
548
- environment={"QMAIL_HOME": "/var/qmail"},
736
+ name="jonathan",
737
+ programmer="Jonathan Blow",
738
+ description="Braid & The Witness creator",
739
+ philosophy="Optimize for deep, meaningful experiences.",
740
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'symbols', 'critic', 'watch'],
741
+ environment={'JAI_COMPILER': 'beta'},
742
+ tags=['pioneer', 'ai'],
549
743
  ),
550
744
  ToolPersonality(
551
- name="moxie",
552
- programmer="Moxie Marlinspike",
553
- description="Signal creator - privacy for everyone",
554
- philosophy="Making private communication simple.",
555
- tools=ESSENTIAL_TOOLS + ["critic", "symbols", "rules"],
556
- environment={"SIGNAL_PROTOCOL": "true"},
745
+ name="jordan",
746
+ programmer="Jordan Walke",
747
+ description="React creator - declarative UIs",
748
+ philosophy="Learn once, write anywhere.",
749
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'npx', 'watch', 'symbols', 'rules', 'bash', 'npx', 'uvx', 'process'],
750
+ environment={'REACT_VERSION': '18'},
751
+ tags=['pioneer'],
557
752
  ),
558
753
  ToolPersonality(
559
- name="theo",
560
- programmer="Theo de Raadt",
561
- description="OpenBSD creator - security by default",
562
- philosophy="Shut up and hack.",
563
- tools=ESSENTIAL_TOOLS + ["critic", "diff"] + UNIX_TOOLS,
564
- environment={"OPENBSD_VERSION": "7.3"},
754
+ name="jose",
755
+ programmer="José Valim",
756
+ description="Elixir creator",
757
+ philosophy="Productive. Reliable. Fast.",
758
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'watch', 'process', 'todo'],
759
+ environment={'ELIXIR_VERSION': '1.15'},
760
+ tags=['pioneer'],
565
761
  ),
566
762
  ToolPersonality(
567
- name="dan_kaminsky",
568
- programmer="Dan Kaminsky",
569
- description="DNS security researcher",
570
- philosophy="Break it to make it better.",
571
- tools=ESSENTIAL_TOOLS + ["critic", "symbols", "process"] + UNIX_TOOLS,
572
- environment={"DNSSEC": "true"},
763
+ name="judd",
764
+ programmer="Judd Vinet",
765
+ description="Arch Linux creator",
766
+ philosophy="Keep it simple.",
767
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'bash', 'npx', 'uvx', 'process', 'grep', 'find_files', 'bash', 'process', 'diff'],
768
+ environment={'ARCH_VERSION': 'rolling'},
769
+ tags=['pioneer'],
573
770
  ),
574
771
  ToolPersonality(
575
772
  name="katie",
576
773
  programmer="Katie Moussouris",
577
774
  description="Bug bounty pioneer",
578
775
  philosophy="Hackers are a resource, not a threat.",
579
- tools=ESSENTIAL_TOOLS + ["critic", "symbols", "todo"],
580
- environment={"BUG_BOUNTY": "enabled"},
581
- ),
582
- ToolPersonality(
583
- name="matt_blaze",
584
- programmer="Matt Blaze",
585
- description="Cryptographer & security researcher",
586
- philosophy="Crypto is hard to get right.",
587
- tools=ESSENTIAL_TOOLS + ["critic", "symbols", "git_search"],
588
- environment={"CRYPTO_LIBRARY": "nacl"},
776
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'critic', 'symbols', 'todo'],
777
+ environment={'BUG_BOUNTY': 'enabled'},
778
+ tags=['general'],
589
779
  ),
590
- # 61-70: Gaming & Graphics
591
780
  ToolPersonality(
592
- name="john_carmack",
593
- programmer="John Carmack",
594
- description="id Software - Doom & Quake creator",
595
- philosophy="Focus is a matter of deciding what things you're not going to do.",
596
- tools=ESSENTIAL_TOOLS + ["symbols", "watch", "process"] + BUILD_TOOLS,
597
- environment={"OPENGL_VERSION": "4.6"},
781
+ name="ken",
782
+ programmer="Ken Thompson",
783
+ description="Unix creator - elegant minimalism",
784
+ philosophy="When in doubt, use brute force.",
785
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'grep', 'find_files', 'bash', 'process', 'diff'],
786
+ environment={'PATH': '/usr/local/bin:$PATH'},
787
+ tags=['pioneer'],
598
788
  ),
599
789
  ToolPersonality(
600
- name="sid",
601
- programmer="Sid Meier",
602
- description="Civilization creator",
603
- philosophy="A game is a series of interesting choices.",
604
- tools=ESSENTIAL_TOOLS + ["todo", "watch", "process"],
605
- environment={"GAME_MODE": "debug"},
790
+ name="lamport",
791
+ programmer="Leslie Lamport",
792
+ description="Distributed systems and TLA+",
793
+ philosophy="A distributed system is one in which the failure of a computer you didn't even know existed can render your own computer unusable.",
794
+ tools=['bash', 'chaos', 'container_build', 'docker', 'edit', 'grafana', 'helm', 'k8s', 'kubectl', 'kubernetes', 'kustomize', 'logs', 'minikube', 'model_check', 'otel', 'prometheus', 'read', 'slo', 'think', 'tla_plus', 'tracing', 'tree', 'write'],
795
+ environment={'SPEC_TOOL': 'tla+', 'MODEL_CHECK_TIMEOUT': '300'},
796
+ tags=['distributed', 'correctness', 'theory'],
606
797
  ),
607
798
  ToolPersonality(
608
- name="shigeru",
609
- programmer="Shigeru Miyamoto",
610
- description="Mario & Zelda creator",
611
- philosophy="A delayed game is eventually good, but a rushed game is forever bad.",
612
- tools=ESSENTIAL_TOOLS + ["todo", "watch", "critic"],
613
- environment={"NINTENDO_SDK": "true"},
799
+ name="larry",
800
+ programmer="Larry Wall",
801
+ description="Perl creator - there's more than one way to do it",
802
+ philosophy="The three chief virtues of a programmer are laziness, impatience, and hubris.",
803
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'grep', 'content_replace', 'batch', 'grep', 'find_files', 'bash', 'process', 'diff'],
804
+ environment={'PERL5LIB': './lib'},
805
+ tags=['pioneer'],
614
806
  ),
615
807
  ToolPersonality(
616
- name="gabe",
617
- programmer="Gabe Newell",
618
- description="Valve founder - Half-Life & Steam",
619
- philosophy="The easiest way to stop piracy is not by putting antipiracy technology to work. It's by giving those people a service that's better than what they're receiving from the pirates.",
620
- tools=ESSENTIAL_TOOLS + ["process", "watch", "todo"] + BUILD_TOOLS,
621
- environment={"STEAM_RUNTIME": "1"},
808
+ name="lennart",
809
+ programmer="Lennart Poettering",
810
+ description="systemd creator",
811
+ philosophy="Do one thing and do it well... or do everything.",
812
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'process', 'watch', 'grep', 'find_files', 'bash', 'process', 'diff'],
813
+ environment={'SYSTEMD_VERSION': '253'},
814
+ tags=['pioneer'],
622
815
  ),
623
816
  ToolPersonality(
624
- name="markus",
817
+ name="linus",
818
+ programmer="Linus Torvalds",
819
+ description="Linux & Git creator - pragmatic excellence",
820
+ philosophy="Talk is cheap. Show me the code.",
821
+ tools=['bash', 'content_replace', 'critic', 'diff', 'edit', 'find_files', 'gh', 'git_search', 'gitlab', 'grep', 'process', 'read', 'think', 'tree', 'write'],
822
+ environment={'KERNEL_VERSION': '6.0', 'GIT_AUTHOR_NAME': 'Linus Torvalds'},
823
+ tags=['systems', 'linux', 'git'],
824
+ ),
825
+ ToolPersonality(
826
+ name="liskov",
827
+ programmer="Barbara Liskov",
828
+ description="Software engineering principles & abstraction",
829
+ philosophy="Abstraction is the key to managing complexity.",
830
+ tools=['bash', 'coverage', 'edit', 'formatter', 'go_test', 'jest', 'linters', 'mocha', 'pytest', 'read', 'symbols', 'think', 'tree', 'write'],
831
+ environment={'SOLID_PRINCIPLES': 'true', 'LISKOV_SUBSTITUTION': 'enforced'},
832
+ tags=['engineering', 'principles', 'oop'],
833
+ ),
834
+ ToolPersonality(
835
+ name="margaret",
836
+ programmer="Margaret Hamilton",
837
+ description="Software engineering for mission-critical systems",
838
+ philosophy="There was no choice but to be pioneers.",
839
+ tools=['bash', 'coverage', 'dast', 'dependency_scan', 'edit', 'formatter', 'fuzz', 'go_test', 'jest', 'linters', 'mocha', 'model_check', 'pytest', 'read', 'sast', 'sbom', 'secret_scan', 'sigstore', 'snyk', 'think', 'tree', 'trivy', 'write'],
840
+ environment={'ERROR_HANDLING': 'exhaustive', 'MISSION_CRITICAL': 'true'},
841
+ tags=['engineering', 'reliability', 'space'],
842
+ ),
843
+ ToolPersonality(
844
+ name="mark_shuttleworth",
845
+ programmer="Mark Shuttleworth",
846
+ description="Ubuntu founder",
847
+ philosophy="Linux for human beings.",
848
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'todo', 'rules', 'bash', 'npx', 'uvx', 'process'],
849
+ environment={'UBUNTU_VERSION': '22.04'},
850
+ tags=['pioneer'],
851
+ ),
852
+ ToolPersonality(
853
+ name="markus",
625
854
  programmer="Markus Persson",
626
855
  description="Minecraft creator - Notch",
627
856
  philosophy="Just make games for yourself and try to have fun.",
628
- tools=ESSENTIAL_TOOLS + ["watch", "todo", "process"],
629
- environment={"LWJGL_VERSION": "3.3"},
857
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'watch', 'todo', 'process'],
858
+ environment={'LWJGL_VERSION': '3.3'},
859
+ tags=['pioneer'],
630
860
  ),
631
861
  ToolPersonality(
632
- name="jonathan",
633
- programmer="Jonathan Blow",
634
- description="Braid & The Witness creator",
635
- philosophy="Optimize for deep, meaningful experiences.",
636
- tools=ESSENTIAL_TOOLS + ["symbols", "critic", "watch"],
637
- environment={"JAI_COMPILER": "beta"},
862
+ name="matei",
863
+ programmer="Matei Zaharia",
864
+ description="Apache Spark creator",
865
+ philosophy="In-memory computing changes everything.",
866
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'sql_query', 'sql_search', 'graph_add', 'graph_query', 'batch', 'process', 'jupyter'],
867
+ environment={'SPARK_MASTER': 'local[*]'},
868
+ tags=['pioneer'],
638
869
  ),
639
870
  ToolPersonality(
640
- name="casey",
641
- programmer="Casey Muratori",
642
- description="Handmade Hero creator",
643
- philosophy="Performance matters. Write code from scratch.",
644
- tools=ESSENTIAL_TOOLS + ["symbols", "watch", "process", "critic"],
645
- environment={"HANDMADE": "true"},
871
+ name="matt",
872
+ programmer="Matt Mullenweg",
873
+ description="WordPress creator - democratize publishing",
874
+ philosophy="Code is poetry.",
875
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'sql_query', 'watch', 'rules', 'sql_query', 'sql_search', 'graph_add', 'graph_query'],
876
+ environment={'WP_DEBUG': 'true'},
877
+ tags=['pioneer'],
646
878
  ),
647
879
  ToolPersonality(
648
- name="tim_sweeney",
649
- programmer="Tim Sweeney",
650
- description="Epic Games founder - Unreal Engine",
651
- philosophy="The engine is the game.",
652
- tools=ESSENTIAL_TOOLS + ["symbols", "watch", "process"] + BUILD_TOOLS,
653
- environment={"UNREAL_ENGINE": "5"},
880
+ name="matt_blaze",
881
+ programmer="Matt Blaze",
882
+ description="Cryptographer & security researcher",
883
+ philosophy="Crypto is hard to get right.",
884
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'critic', 'symbols', 'git_search'],
885
+ environment={'CRYPTO_LIBRARY': 'nacl'},
886
+ tags=['security'],
654
887
  ),
655
888
  ToolPersonality(
656
- name="hideo",
657
- programmer="Hideo Kojima",
658
- description="Metal Gear creator",
659
- philosophy="70% of my body is made of movies.",
660
- tools=ESSENTIAL_TOOLS + ["todo", "watch", "critic"],
661
- environment={"KOJIMA_PRODUCTIONS": "true"},
889
+ name="matz",
890
+ programmer="Yukihiro Matsumoto",
891
+ description="Ruby creator - optimize for developer happiness",
892
+ philosophy="Ruby is designed to make programmers happy.",
893
+ tools=['artifact_publish', 'ast_search', 'bash', 'batch', 'ci', 'circleci', 'edit', 'gem', 'git_search', 'github_actions', 'gitlab_ci', 'grep', 'jenkins', 'read', 'search', 'symbols', 'think', 'todo', 'tree', 'write'],
894
+ environment={'RUBY_VERSION': '3.0', 'BUNDLE_PATH': 'vendor/bundle'},
895
+ tags=['languages', 'ruby', 'happiness'],
662
896
  ),
663
897
  ToolPersonality(
664
- name="will",
665
- programmer="Will Wright",
666
- description="SimCity & The Sims creator",
667
- philosophy="Games are a form of communication.",
668
- tools=ESSENTIAL_TOOLS + ["todo", "watch", "process"],
669
- environment={"SIMULATION_MODE": "debug"},
898
+ name="mccarthy",
899
+ programmer="John McCarthy",
900
+ description="AI pioneer and Lisp inventor",
901
+ philosophy="He who refuses to do arithmetic is doomed to talk nonsense.",
902
+ tools=['agent', 'bash', 'consensus', 'critic', 'edit', 'llm', 'notebook', 'read', 'repl', 'symbols', 'think', 'tree', 'write'],
903
+ environment={'LISP_DIALECT': 'common-lisp', 'AI_PARADIGM': 'symbolic'},
904
+ tags=['ai', 'languages', 'pioneer'],
905
+ ),
906
+ ToolPersonality(
907
+ name="michael_s",
908
+ programmer="Michael Stonebraker",
909
+ description="PostgreSQL creator - ACID matters",
910
+ philosophy="One size does not fit all in databases.",
911
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'sql_query', 'sql_search', 'graph_add', 'graph_query', 'batch', 'todo'],
912
+ environment={'PGDATA': '/var/lib/postgresql/data'},
913
+ tags=['pioneer'],
914
+ ),
915
+ ToolPersonality(
916
+ name="michael_w",
917
+ programmer="Michael Widenius",
918
+ description="MySQL/MariaDB creator",
919
+ philosophy="A small fast database for the web.",
920
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'sql_query', 'sql_search', 'graph_add', 'graph_query', 'watch'],
921
+ environment={'MYSQL_HOME': '/usr/local/mysql'},
922
+ tags=['pioneer'],
670
923
  ),
671
- # 71-80: Open Source Leaders
672
924
  ToolPersonality(
673
925
  name="miguel",
674
926
  programmer="Miguel de Icaza",
675
927
  description="GNOME & Mono creator",
676
928
  philosophy="Open source is about standing on the shoulders of giants.",
677
- tools=ESSENTIAL_TOOLS + ["symbols", "todo"] + BUILD_TOOLS,
678
- environment={"MONO_VERSION": "6.12"},
929
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'symbols', 'todo', 'bash', 'npx', 'uvx', 'process'],
930
+ environment={'MONO_VERSION': '6.12'},
931
+ tags=['pioneer'],
932
+ ),
933
+ ToolPersonality(
934
+ name="mike",
935
+ programmer="Mike Cafarella",
936
+ description="Hadoop co-creator",
937
+ philosophy="Storage is cheap, compute is cheap.",
938
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'sql_query', 'sql_search', 'graph_add', 'graph_query', 'batch', 'process'],
939
+ environment={'HADOOP_CONF_DIR': '/etc/hadoop'},
940
+ tags=['pioneer'],
941
+ ),
942
+ ToolPersonality(
943
+ name="minimal",
944
+ programmer="Minimalist",
945
+ description="Just the essentials",
946
+ philosophy="Less is more.",
947
+ tools=['bash', 'edit', 'read', 'think', 'tree', 'write'],
948
+ environment={'MINIMAL_MODE': 'true'},
949
+ tags=['minimal', 'focused', 'simple'],
950
+ ),
951
+ ToolPersonality(
952
+ name="mitchell",
953
+ programmer="Mitchell Hashimoto",
954
+ description="HashiCorp founder - infrastructure as code",
955
+ philosophy="Automate everything.",
956
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'bash', 'process', 'watch', 'todo', 'bash', 'npx', 'uvx', 'process'],
957
+ environment={'TERRAFORM_VERSION': '1.0'},
958
+ tags=['pioneer'],
959
+ ),
960
+ ToolPersonality(
961
+ name="ml_engineer",
962
+ programmer="ML Engineer",
963
+ description="Production ML systems",
964
+ philosophy="From notebook to production pipeline.",
965
+ tools=['agent', 'ansible', 'aws_s3', 'bash', 'chaos', 'cloud_cli', 'consensus', 'container_build', 'critic', 'docker', 'dvc', 'edit', 'feature_store', 'gpu_manager', 'grafana', 'helm', 'hf_hub', 'huggingface', 'jupyter', 'k8s', 'kedro', 'kms', 'kubectl', 'kustomize', 'llm', 'logs', 'minikube', 'mlem', 'mlflow', 'model_deploy', 'model_registry', 'notebook', 'onnx_convert', 'otel', 'prometheus', 'quantize', 'read', 'secrets_manager', 'slo', 'terraform', 'think', 'tracing', 'tree', 'write'],
966
+ environment={'MLFLOW_TRACKING_URI': 'http://localhost:5000', 'DVC_REMOTE': 's3://ml-artifacts', 'CUDA_VISIBLE_DEVICES': '0,1'},
967
+ tags=['ml', 'mlops', 'production'],
968
+ ),
969
+ ToolPersonality(
970
+ name="moxie",
971
+ programmer="Moxie Marlinspike",
972
+ description="Signal creator - privacy for everyone",
973
+ philosophy="Making private communication simple.",
974
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'critic', 'symbols', 'rules'],
975
+ environment={'SIGNAL_PROTOCOL': 'true'},
976
+ tags=['pioneer'],
679
977
  ),
680
978
  ToolPersonality(
681
979
  name="nat",
682
980
  programmer="Nat Friedman",
683
981
  description="GitHub CEO & AI entrepreneur",
684
982
  philosophy="Developers are the builders of the digital world.",
685
- tools=ESSENTIAL_TOOLS + AI_TOOLS + ["git_search", "todo"],
686
- environment={"GITHUB_TOKEN": "ghp_..."},
983
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'agent', 'consensus', 'critic', 'think', 'git_search', 'todo'],
984
+ environment={'GITHUB_TOKEN': 'ghp_...'},
985
+ tags=['ai'],
986
+ ),
987
+ ToolPersonality(
988
+ name="palmer",
989
+ programmer="Palmer Luckey",
990
+ description="Oculus founder",
991
+ philosophy="VR is the final medium.",
992
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'watch', 'process', 'bash', 'npx', 'uvx', 'process'],
993
+ environment={'UNITY_VERSION': '2023.1'},
994
+ tags=['pioneer'],
687
995
  ),
688
996
  ToolPersonality(
689
997
  name="patrick",
690
998
  programmer="Patrick Volkerding",
691
999
  description="Slackware creator",
692
1000
  philosophy="Keep it simple, keep it stable.",
693
- tools=ESSENTIAL_TOOLS + UNIX_TOOLS,
694
- environment={"SLACKWARE_VERSION": "15.0"},
1001
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'grep', 'find_files', 'bash', 'process', 'diff'],
1002
+ environment={'SLACKWARE_VERSION': '15.0'},
1003
+ tags=['pioneer'],
695
1004
  ),
696
1005
  ToolPersonality(
697
- name="ian",
698
- programmer="Ian Murdock",
699
- description="Debian founder",
700
- philosophy="Free software, free society.",
701
- tools=ESSENTIAL_TOOLS + UNIX_TOOLS + ["todo"],
702
- environment={"DEBIAN_FRONTEND": "noninteractive"},
703
- ),
704
- ToolPersonality(
705
- name="mark_shuttleworth",
706
- programmer="Mark Shuttleworth",
707
- description="Ubuntu founder",
708
- philosophy="Linux for human beings.",
709
- tools=ESSENTIAL_TOOLS + ["todo", "rules"] + BUILD_TOOLS,
710
- environment={"UBUNTU_VERSION": "22.04"},
1006
+ name="phil",
1007
+ programmer="Phil Zimmermann",
1008
+ description="PGP creator - privacy matters",
1009
+ philosophy="If privacy is outlawed, only outlaws will have privacy.",
1010
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'critic', 'content_replace', 'grep', 'find_files', 'bash', 'process', 'diff'],
1011
+ environment={'GPG_TTY': '$(tty)'},
1012
+ tags=['pioneer'],
711
1013
  ),
712
1014
  ToolPersonality(
713
- name="lennart",
714
- programmer="Lennart Poettering",
715
- description="systemd creator",
716
- philosophy="Do one thing and do it well... or do everything.",
717
- tools=ESSENTIAL_TOOLS + ["process", "watch"] + UNIX_TOOLS,
718
- environment={"SYSTEMD_VERSION": "253"},
1015
+ name="radia",
1016
+ programmer="Radia Perlman",
1017
+ description="Network protocols and spanning tree",
1018
+ philosophy="The beautiful thing about standards is that there are so many to choose from.",
1019
+ tools=['ansible', 'aws_s3', 'bash', 'cloud_cli', 'container_build', 'docker', 'edit', 'helm', 'k8s', 'kms', 'kubectl', 'kustomize', 'minikube', 'read', 'secrets_manager', 'terraform', 'think', 'tree', 'write'],
1020
+ environment={'NETWORK_PROTOCOL': 'stp', 'ROUTING_ALGORITHM': 'is-is'},
1021
+ tags=['networking', 'protocols', 'infrastructure'],
719
1022
  ),
720
1023
  ToolPersonality(
721
- name="bram",
722
- programmer="Bram Moolenaar",
723
- description="Vim creator",
724
- philosophy="The best way to avoid RSI is to not type so much.",
725
- tools=ESSENTIAL_TOOLS + ["neovim_edit", "neovim_command", "neovim_session"],
726
- environment={"VIM_VERSION": "9.0"},
1024
+ name="ralph",
1025
+ programmer="Ralph Merkle",
1026
+ description="Merkle trees inventor",
1027
+ philosophy="Cryptography is about mathematical guarantees.",
1028
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'symbols', 'critic', 'batch'],
1029
+ environment={'HASH_ALGORITHM': 'SHA256'},
1030
+ tags=['pioneer'],
727
1031
  ),
728
1032
  ToolPersonality(
729
- name="daniel_r",
730
- programmer="Daniel Robbins",
731
- description="Gentoo founder",
732
- philosophy="Your system, your way.",
733
- tools=ESSENTIAL_TOOLS + BUILD_TOOLS + UNIX_TOOLS,
734
- environment={"GENTOO_PROFILE": "default/linux/amd64/17.1"},
1033
+ name="rasmus",
1034
+ programmer="Rasmus Lerdorf",
1035
+ description="PHP creator - pragmatic web development",
1036
+ philosophy="I'm not a real programmer. I throw together things until it works.",
1037
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'npx', 'sql_query', 'watch', 'sql_query', 'sql_search', 'graph_add', 'graph_query'],
1038
+ environment={'PHP_VERSION': '8.0'},
1039
+ tags=['pioneer', 'web'],
735
1040
  ),
736
1041
  ToolPersonality(
737
- name="judd",
738
- programmer="Judd Vinet",
739
- description="Arch Linux creator",
740
- philosophy="Keep it simple.",
741
- tools=ESSENTIAL_TOOLS + BUILD_TOOLS + UNIX_TOOLS,
742
- environment={"ARCH_VERSION": "rolling"},
1042
+ name="rich",
1043
+ programmer="Rich Hickey",
1044
+ description="Clojure creator - simplicity matters",
1045
+ philosophy="Programming is not about typing... it's about thinking.",
1046
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'symbols', 'todo', 'batch', 'agent', 'consensus', 'critic', 'think'],
1047
+ environment={'CLOJURE_VERSION': '1.11'},
1048
+ tags=['pioneer'],
743
1049
  ),
744
1050
  ToolPersonality(
745
- name="fabrice",
746
- programmer="Fabrice Bellard",
747
- description="QEMU & FFmpeg creator",
748
- philosophy="Small, fast, and elegant code.",
749
- tools=ESSENTIAL_TOOLS + ["symbols", "process"] + BUILD_TOOLS,
750
- environment={"QEMU_VERSION": "8.0"},
1051
+ name="richard",
1052
+ programmer="Richard Stallman",
1053
+ description="GNU creator - software freedom",
1054
+ philosophy="Free software is a matter of liberty, not price.",
1055
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'content_replace', 'batch', 'grep', 'find_files', 'bash', 'process', 'diff'],
1056
+ environment={'EDITOR': 'emacs'},
1057
+ tags=['pioneer'],
751
1058
  ),
752
- # 81-90: Modern Innovators
753
1059
  ToolPersonality(
754
- name="vitalik",
755
- programmer="Vitalik Buterin",
756
- description="Ethereum creator",
757
- philosophy="Decentralization matters.",
758
- tools=ESSENTIAL_TOOLS + ["symbols", "critic", "todo"] + AI_TOOLS,
759
- environment={"ETH_NETWORK": "mainnet"},
1060
+ name="rob",
1061
+ programmer="Rob Pike",
1062
+ description="Go creator - simplicity and concurrency",
1063
+ philosophy="A little copying is better than a little dependency.",
1064
+ tools=['bash', 'batch', 'cargo', 'diff', 'edit', 'find_files', 'gem', 'go_test', 'grep', 'npx', 'pip', 'process', 'read', 'symbols', 'think', 'tree', 'uvx', 'write'],
1065
+ environment={'GOPATH': '~/go', 'GO111MODULE': 'on'},
1066
+ tags=['languages', 'go', 'concurrency'],
760
1067
  ),
761
1068
  ToolPersonality(
762
- name="satoshi",
763
- programmer="Satoshi Nakamoto",
764
- description="Bitcoin creator",
765
- philosophy="Trust in mathematics.",
766
- tools=ESSENTIAL_TOOLS + ["critic", "symbols"] + UNIX_TOOLS,
767
- environment={"BITCOIN_NETWORK": "mainnet"},
1069
+ name="ryan",
1070
+ programmer="Ryan Dahl",
1071
+ description="Node.js & Deno creator",
1072
+ philosophy="I/O needs to be done differently.",
1073
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'npx', 'uvx', 'watch', 'process', 'bash', 'npx', 'uvx', 'process'],
1074
+ environment={'DENO_DIR': '~/.deno'},
1075
+ tags=['pioneer'],
768
1076
  ),
769
1077
  ToolPersonality(
770
- name="chris_lattner",
771
- programmer="Chris Lattner",
772
- description="LLVM & Swift creator",
773
- philosophy="Compiler infrastructure should be modular.",
774
- tools=ESSENTIAL_TOOLS + ["symbols", "multi_edit", "critic"] + BUILD_TOOLS,
775
- environment={"LLVM_VERSION": "16"},
1078
+ name="salvatore",
1079
+ programmer="Salvatore Sanfilippo",
1080
+ description="Redis creator - data structures server",
1081
+ philosophy="Simplicity is a great virtue.",
1082
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'bash', 'watch', 'process', 'sql_query', 'sql_search', 'graph_add', 'graph_query'],
1083
+ environment={'REDIS_VERSION': '7.0'},
1084
+ tags=['pioneer', 'database'],
776
1085
  ),
777
1086
  ToolPersonality(
778
- name="joe",
779
- programmer="Joe Armstrong",
780
- description="Erlang creator",
781
- philosophy="Let it crash.",
782
- tools=ESSENTIAL_TOOLS + ["process", "watch", "critic"],
783
- environment={"ERL_VERSION": "OTP-26"},
1087
+ name="sanjay",
1088
+ programmer="Sanjay Ghemawat",
1089
+ description="MapReduce & BigTable co-creator",
1090
+ philosophy="Simple abstractions for complex systems.",
1091
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'sql_query', 'sql_search', 'graph_add', 'graph_query', 'batch', 'process'],
1092
+ environment={'SPARK_HOME': '/opt/spark'},
1093
+ tags=['pioneer'],
784
1094
  ),
785
1095
  ToolPersonality(
786
- name="jose",
787
- programmer="José Valim",
788
- description="Elixir creator",
789
- philosophy="Productive. Reliable. Fast.",
790
- tools=ESSENTIAL_TOOLS + ["watch", "process", "todo"],
791
- environment={"ELIXIR_VERSION": "1.15"},
1096
+ name="satoshi",
1097
+ programmer="Satoshi Nakamoto",
1098
+ description="Bitcoin creator - peer-to-peer electronic cash",
1099
+ philosophy="A purely peer-to-peer version of electronic cash.",
1100
+ tools=['bash', 'content_replace', 'critic', 'dast', 'dependency_scan', 'diff', 'edit', 'find_files', 'fuzz', 'gh', 'git_search', 'gitlab', 'grep', 'kms', 'process', 'read', 'sast', 'sbom', 'secret_scan', 'signing', 'sigstore', 'snyk', 'symbols', 'think', 'tree', 'trivy', 'write'],
1101
+ environment={'BITCOIN_NETWORK': 'mainnet', 'RPC_USER': 'bitcoin', 'SIGNING_KEY': ''},
1102
+ tags=['blockchain', 'crypto', 'p2p'],
792
1103
  ),
793
1104
  ToolPersonality(
794
1105
  name="sebastian",
795
1106
  programmer="Sebastian Thrun",
796
1107
  description="Udacity founder & self-driving car pioneer",
797
1108
  philosophy="Education should be accessible to all.",
798
- tools=ESSENTIAL_TOOLS + AI_TOOLS + ["jupyter", "watch"],
799
- environment={"ROS_VERSION": "noetic"},
1109
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'agent', 'consensus', 'critic', 'think', 'jupyter', 'watch'],
1110
+ environment={'ROS_VERSION': 'noetic'},
1111
+ tags=['pioneer'],
800
1112
  ),
801
1113
  ToolPersonality(
802
- name="palmer",
803
- programmer="Palmer Luckey",
804
- description="Oculus founder",
805
- philosophy="VR is the final medium.",
806
- tools=ESSENTIAL_TOOLS + ["watch", "process"] + BUILD_TOOLS,
807
- environment={"UNITY_VERSION": "2023.1"},
1114
+ name="security",
1115
+ programmer="Security Researcher",
1116
+ description="Break it to secure it",
1117
+ philosophy="The only secure system is one that's powered off.",
1118
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'critic', 'symbols', 'git_search', 'grep', 'find_files', 'bash', 'process', 'diff'],
1119
+ environment={'SECURITY_MODE': 'paranoid'},
1120
+ tags=['general'],
808
1121
  ),
809
1122
  ToolPersonality(
810
- name="dylan",
811
- programmer="Dylan Field",
812
- description="Figma co-founder",
813
- philosophy="Design tools should be collaborative.",
814
- tools=ESSENTIAL_TOOLS + ["watch", "todo", "rules"],
815
- environment={"FIGMA_API": "enabled"},
1123
+ name="security_first",
1124
+ programmer="Security Engineer",
1125
+ description="Security-first development",
1126
+ philosophy="Trust nothing, verify everything.",
1127
+ tools=['artifact_publish', 'bash', 'ci', 'circleci', 'coverage', 'dast', 'dependency_scan', 'diff', 'edit', 'formatter', 'fuzz', 'gh', 'git_search', 'github_actions', 'gitlab', 'gitlab_ci', 'go_test', 'jenkins', 'jest', 'kms', 'linters', 'mocha', 'pytest', 'read', 'sast', 'sbom', 'secret_scan', 'secrets_manager', 'signing', 'sigstore', 'snyk', 'think', 'tree', 'trivy', 'write'],
1128
+ environment={'SECURITY_SCAN': 'enabled', 'SIGNING_KEY': '', 'KMS_KEY': '', 'SNYK_TOKEN': ''},
1129
+ tags=['security', 'devsecops', 'compliance'],
816
1130
  ),
817
1131
  ToolPersonality(
818
- name="guillermo",
819
- programmer="Guillermo Rauch",
820
- description="Vercel founder & Next.js creator",
821
- philosophy="Make the Web. Faster.",
822
- tools=ESSENTIAL_TOOLS + ["npx", "watch", "rules"] + BUILD_TOOLS,
823
- environment={"NEXT_VERSION": "14"},
1132
+ name="shigeru",
1133
+ programmer="Shigeru Miyamoto",
1134
+ description="Mario & Zelda creator",
1135
+ philosophy="A delayed game is eventually good, but a rushed game is forever bad.",
1136
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'todo', 'watch', 'critic'],
1137
+ environment={'NINTENDO_SDK': 'true'},
1138
+ tags=['pioneer'],
824
1139
  ),
825
1140
  ToolPersonality(
826
- name="tom",
827
- programmer="Tom Preston-Werner",
828
- description="GitHub co-founder & TOML creator",
829
- philosophy="Optimize for happiness.",
830
- tools=ESSENTIAL_TOOLS + ["git_search", "todo", "rules"],
831
- environment={"GITHUB_ACTIONS": "true"},
1141
+ name="sid",
1142
+ programmer="Sid Meier",
1143
+ description="Civilization creator",
1144
+ philosophy="A game is a series of interesting choices.",
1145
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'todo', 'watch', 'process'],
1146
+ environment={'GAME_MODE': 'debug'},
1147
+ tags=['pioneer'],
832
1148
  ),
833
- # 91-100: Special Configurations
834
1149
  ToolPersonality(
835
- name="fullstack",
836
- programmer="Full Stack Developer",
837
- description="Every tool for every job",
838
- philosophy="Jack of all trades, master of... well, all trades.",
839
- tools=list(
840
- set(
841
- ESSENTIAL_TOOLS
842
- + AI_TOOLS
843
- + SEARCH_TOOLS
844
- + DATABASE_TOOLS
845
- + BUILD_TOOLS
846
- + UNIX_TOOLS
847
- + VECTOR_TOOLS
848
- + [
849
- "todo",
850
- "rules",
851
- "watch",
852
- "jupyter",
853
- "neovim_edit",
854
- "mcp",
855
- "consensus",
856
- ]
857
- )
858
- ),
859
- environment={"ALL_TOOLS": "enabled"},
1150
+ name="startup",
1151
+ programmer="Startup Founder",
1152
+ description="Move fast and fix things",
1153
+ philosophy="Done is better than perfect.",
1154
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'todo', 'agent', 'consensus', 'bash', 'npx', 'uvx', 'process', 'sql_query', 'sql_search', 'graph_add', 'graph_query'],
1155
+ environment={'STARTUP_MODE': 'hustle'},
1156
+ tags=['general'],
860
1157
  ),
861
1158
  ToolPersonality(
862
- name="minimal",
863
- programmer="Minimalist",
864
- description="Just the essentials",
865
- philosophy="Less is more.",
866
- tools=ESSENTIAL_TOOLS,
867
- environment={"MINIMAL_MODE": "true"},
1159
+ name="taylor",
1160
+ programmer="Taylor Otwell",
1161
+ description="Laravel creator - PHP artisan",
1162
+ philosophy="Love beautiful code? We do too.",
1163
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'npx', 'sql_query', 'watch', 'sql_query', 'sql_search', 'graph_add', 'graph_query'],
1164
+ environment={'LARAVEL_VERSION': '10'},
1165
+ tags=['pioneer'],
868
1166
  ),
869
1167
  ToolPersonality(
870
- name="data_scientist",
871
- programmer="Data Scientist",
872
- description="Analyze all the things",
873
- philosophy="In God we trust. All others must bring data.",
874
- tools=ESSENTIAL_TOOLS
875
- + ["jupyter", "sql_query", "stats"]
876
- + VECTOR_TOOLS
877
- + AI_TOOLS,
878
- environment={"JUPYTER_THEME": "dark"},
1168
+ name="theo",
1169
+ programmer="Theo de Raadt",
1170
+ description="OpenBSD creator - security by default",
1171
+ philosophy="Shut up and hack.",
1172
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'critic', 'diff', 'grep', 'find_files', 'bash', 'process', 'diff'],
1173
+ environment={'OPENBSD_VERSION': '7.3'},
1174
+ tags=['pioneer', 'security'],
879
1175
  ),
880
1176
  ToolPersonality(
881
- name="devops",
882
- programmer="DevOps Engineer",
883
- description="Automate everything",
884
- philosophy="You build it, you run it.",
885
- tools=ESSENTIAL_TOOLS + BUILD_TOOLS + ["process", "watch", "todo"] + UNIX_TOOLS,
886
- environment={"CI_CD": "enabled"},
1177
+ name="tim",
1178
+ programmer="Tim Berners-Lee",
1179
+ description="WWW inventor - open web",
1180
+ philosophy="The Web is for everyone.",
1181
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'npx', 'watch', 'rules', 'search', 'symbols', 'grep', 'git_search'],
1182
+ environment={'W3C_VALIDATOR': 'true'},
1183
+ tags=['pioneer', 'web'],
887
1184
  ),
888
1185
  ToolPersonality(
889
- name="security",
890
- programmer="Security Researcher",
891
- description="Break it to secure it",
892
- philosophy="The only secure system is one that's powered off.",
893
- tools=ESSENTIAL_TOOLS + ["critic", "symbols", "git_search"] + UNIX_TOOLS,
894
- environment={"SECURITY_MODE": "paranoid"},
1186
+ name="tim_sweeney",
1187
+ programmer="Tim Sweeney",
1188
+ description="Epic Games founder - Unreal Engine",
1189
+ philosophy="The engine is the game.",
1190
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'symbols', 'watch', 'process', 'bash', 'npx', 'uvx', 'process'],
1191
+ environment={'UNREAL_ENGINE': '5'},
1192
+ tags=['pioneer', 'gaming'],
895
1193
  ),
896
1194
  ToolPersonality(
897
- name="academic",
898
- programmer="Academic Researcher",
899
- description="Publish or perish",
900
- philosophy="Standing on the shoulders of giants.",
901
- tools=ESSENTIAL_TOOLS + ["jupyter", "todo", "critic"] + AI_TOOLS + SEARCH_TOOLS,
902
- environment={"LATEX_ENGINE": "xelatex"},
1195
+ name="tom",
1196
+ programmer="Tom Preston-Werner",
1197
+ description="GitHub co-founder & TOML creator",
1198
+ philosophy="Optimize for happiness.",
1199
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'git_search', 'todo', 'rules'],
1200
+ environment={'GITHUB_ACTIONS': 'true'},
1201
+ tags=['pioneer', 'ai'],
903
1202
  ),
904
1203
  ToolPersonality(
905
- name="startup",
906
- programmer="Startup Founder",
907
- description="Move fast and fix things",
908
- philosophy="Done is better than perfect.",
909
- tools=ESSENTIAL_TOOLS
910
- + ["todo", "agent", "consensus"]
911
- + BUILD_TOOLS
912
- + DATABASE_TOOLS,
913
- environment={"STARTUP_MODE": "hustle"},
1204
+ name="turing",
1205
+ programmer="Alan Turing",
1206
+ description="Computing foundations and AI pioneer",
1207
+ philosophy="We can only see a short distance ahead, but we can see plenty there that needs to be done.",
1208
+ tools=['agent', 'bash', 'consensus', 'critic', 'edit', 'llm', 'model_check', 'notebook', 'read', 'symbols', 'think', 'tree', 'write'],
1209
+ environment={'TURING_COMPLETE': 'true'},
1210
+ tags=['pioneer', 'ai', 'theory'],
914
1211
  ),
915
1212
  ToolPersonality(
916
- name="enterprise",
917
- programmer="Enterprise Developer",
918
- description="Process and compliance",
919
- philosophy="Nobody ever got fired for buying IBM.",
920
- tools=ESSENTIAL_TOOLS + ["todo", "critic", "rules", "stats"] + DATABASE_TOOLS,
921
- environment={"COMPLIANCE": "SOC2"},
1213
+ name="vitalik",
1214
+ programmer="Vitalik Buterin",
1215
+ description="Ethereum creator - world computer",
1216
+ philosophy="Decentralized world computer.",
1217
+ tools=['ast_search', 'bash', 'cargo', 'dast', 'dependency_scan', 'edit', 'fuzz', 'gem', 'git_search', 'grep', 'hardhat', 'multi_edit', 'npx', 'pip', 'process', 'read', 'sast', 'sbom', 'search', 'secret_scan', 'sigstore', 'snyk', 'symbols', 'think', 'todo', 'tree', 'trivy', 'truffle', 'uvx', 'write'],
1218
+ environment={'ETH_NETWORK': 'mainnet', 'WEB3_PROVIDER': 'https://mainnet.infura.io'},
1219
+ tags=['blockchain', 'ethereum', 'smart-contracts'],
922
1220
  ),
923
1221
  ToolPersonality(
924
- name="creative",
925
- programmer="Creative Coder",
926
- description="Code as art",
927
- philosophy="Programming is the art of the possible.",
928
- tools=ESSENTIAL_TOOLS + ["watch", "jupyter", "todo"] + AI_TOOLS,
929
- environment={"P5_MODE": "global"},
1222
+ name="whitfield",
1223
+ programmer="Whitfield Diffie",
1224
+ description="Public-key cryptography pioneer",
1225
+ philosophy="Privacy is necessary for an open society.",
1226
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'critic', 'symbols'],
1227
+ environment={'OPENSSL_VERSION': '3.0'},
1228
+ tags=['general'],
930
1229
  ),
931
1230
  ToolPersonality(
932
- name="hanzo",
933
- programmer="Hanzo AI Default",
934
- description="Balanced productivity and quality",
935
- philosophy="The Zen of Model Context Protocol.",
936
- tools=ESSENTIAL_TOOLS
937
- + [
938
- "agent",
939
- "consensus",
940
- "critic",
941
- "todo",
942
- "rules",
943
- "symbols",
944
- "search",
945
- "git_search",
946
- "watch",
947
- "jupyter",
948
- ]
949
- + BUILD_TOOLS,
950
- environment={"HANZO_MODE": "zen"},
1231
+ name="will",
1232
+ programmer="Will Wright",
1233
+ description="SimCity & The Sims creator",
1234
+ philosophy="Games are a form of communication.",
1235
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'todo', 'watch', 'process'],
1236
+ environment={'SIMULATION_MODE': 'debug'},
1237
+ tags=['pioneer'],
1238
+ ),
1239
+ ToolPersonality(
1240
+ name="wirth",
1241
+ programmer="Niklaus Wirth",
1242
+ description="Language design - Pascal/Modula/Oberon",
1243
+ philosophy="Algorithms + Data Structures = Programs",
1244
+ tools=['bash', 'compiler', 'edit', 'formatter', 'linters', 'read', 'symbols', 'think', 'tree', 'write'],
1245
+ environment={'LANGUAGE_STYLE': 'pascal', 'TYPE_SAFETY': 'strict'},
1246
+ tags=['languages', 'academic', 'design'],
1247
+ ),
1248
+ ToolPersonality(
1249
+ name="yann",
1250
+ programmer="Yann LeCun",
1251
+ description="Deep learning pioneer - ConvNets",
1252
+ philosophy="AI is not magic; it's just math and data.",
1253
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'agent', 'consensus', 'critic', 'think', 'vector_index', 'vector_search', 'jupyter', 'watch'],
1254
+ environment={'PYTORCH_VERSION': '2.0'},
1255
+ tags=['general'],
1256
+ ),
1257
+ ToolPersonality(
1258
+ name="yoshua",
1259
+ programmer="Yoshua Bengio",
1260
+ description="Deep learning pioneer",
1261
+ philosophy="We need to think about AI that helps humanity.",
1262
+ tools=['read', 'write', 'edit', 'tree', 'bash', 'think', 'agent', 'consensus', 'critic', 'think', 'vector_index', 'vector_search', 'jupyter', 'batch'],
1263
+ environment={'THEANO_FLAGS': 'device=cuda'},
1264
+ tags=['general'],
951
1265
  ),
952
1266
  ]
953
-
954
-
955
- # Register all personalities
956
- def register_default_personalities():
957
- """Register all default tool personalities."""
958
- for personality in personalities:
959
- PersonalityRegistry.register(personality)
960
-
961
-
962
- # Ensure agent tool is enabled when API keys are present
963
- def ensure_agent_enabled(personality: ToolPersonality) -> ToolPersonality:
964
- """Ensure agent tool is enabled if API keys are present."""
965
- api_keys_present = any(
966
- os.environ.get(key)
967
- for key in [
968
- "OPENAI_API_KEY",
969
- "ANTHROPIC_API_KEY",
970
- "GOOGLE_API_KEY",
971
- "HANZO_API_KEY",
972
- "GROQ_API_KEY",
973
- "TOGETHER_API_KEY",
974
- "MISTRAL_API_KEY",
975
- "PERPLEXITY_API_KEY",
976
- ]
977
- )
978
-
979
- if api_keys_present and "agent" not in personality.tools:
980
- personality.tools.append("agent")
981
- if "consensus" not in personality.tools:
982
- personality.tools.append("consensus")
983
-
984
- return personality