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