Naming Conventions¶
File and Directory Names¶
RULE: Use kebab-case for all new files and directories. RATIONALE: Consistent across all languages, URL-safe, no ambiguity. EXAMPLES: agent-runner.py, build-executor.sh, cost-gate.py LEGACY EXCEPTIONS: ge_agent/, ge_engine/, ge_common/, ge_comm/ are Python packages (underscore required by Python import system). Do not rename. All NEW directories use kebab-case.
Python¶
RULE: snake_case for functions, variables, file names within packages. PascalCase for classes. RATIONALE: PEP 8 standard. EXAMPLES: execute_agent(), pty_executor.py, class AgentRunner KEY FILES: ge_agent/runner.py, ge_agent/execution/pty_executor.py, ge_agent/execution/provider_config.py, ge_agent/execution/cost_gate.py
TypeScript / Next.js¶
RULE: camelCase for functions and variables. PascalCase for components and types. kebab-case for file names. RATIONALE: Next.js convention. Admin UI follows this. EXAMPLES: fetchAgentConfig(), AgentCard.tsx, agent-card.tsx
Redis Streams¶
NAMING CONVENTION: Two patterns coexist in the codebase:
- Per-agent streams: dots (triggers.{agent}) — e.g., triggers.urszula, triggers.koen
- System streams: colons (ge:work:incoming, ge:work:completed, ge:work:failed)
- Other system streams: dots (system.halt, system.health, notifications.queue, decisions.pending, decisions.resolved)
AUTHORITATIVE SOURCE: config/dolly-routing.yaml
RULE: Match existing convention for each stream category. Do not mix patterns within a category.
NEVER: camelCase (agentRunner), slashes, SCREAMING_CASE
API Endpoints¶
RULE: kebab-case paths, camelCase JSON bodies. REFERENCE: wiki/docs/development/contracts/api.md (documentation of Admin UI's actual API surface) EXAMPLES: /api/agent-tasks, /api/internal/consumption/llm, { agentId: "urszula" }
Database¶
RULE: snake_case for tables and columns. Singular table names. EXAMPLES: session_learning, knowledge_pattern, agent_task
Kubernetes Resources¶
RULE: kebab-case for all k8s resource names. REFERENCE: k8s/ directory for actual manifest names EXAMPLES: ge-executor, admin-ui-postgres, vault-unseal
Environment Variables¶
RULE: SCREAMING_SNAKE_CASE. EXAMPLES: ANTHROPIC_API_KEY, ANTHROPIC_MODEL, REDIS_URL, GE_OPS_PATH, PYTHONPATH
Git Branches¶
RULE: type/description in kebab-case. CURRENT BRANCH (at time of writing): feat/provider-native-profiles EXAMPLES: feat/discussion-system, fix/redis-stream-naming, refactor/executor-provider
ENFORCEMENT: Code review rejects non-conforming names. Linter rules where applicable.