Skip to content

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.