Concerns (6 files): - coding-style.md (163 lines): patterns, anti-patterns, error handling, SOLID - naming.md (105 lines): naming conventions table per language - documentation.md (149 lines): docstrings, WHY vs WHAT, README standards - testing.md (134 lines): AAA pattern, mocking philosophy, TDD - git-workflow.md (118 lines): conventional commits, branch naming, PR format - project-structure.md (82 lines): directory layout, entry points, config placement Languages (4 files): - python.md (224 lines): uv, ruff, pyright, pytest, pydantic, idioms, anti-patterns - typescript.md (150 lines): strict mode, discriminated unions, satisfies, as const - nix.md (129 lines): flake structure, module patterns, alejandra, anti-patterns - shell.md (100 lines): set -euo pipefail, shellcheck, quoting, POSIX Frameworks (1 file): - n8n.md (42 lines): workflow design, node patterns, Error Trigger, security Context budget: 975 lines (concerns + python) < 1500 limit Refs: T6-T16 of rules-system plan
2.1 KiB
2.1 KiB
Naming Conventions
Use consistent naming across all code. Follow language-specific conventions.
Language Reference
| Type | Python | TypeScript | Nix | Shell |
|---|---|---|---|---|
| Variables | snake_case | camelCase | camelCase | UPPER_SNAKE |
| Functions | snake_case | camelCase | camelCase | lower_case |
| Classes | PascalCase | PascalCase | - | - |
| Constants | UPPER_SNAKE | UPPER_SNAKE | camelCase | UPPER_SNAKE |
| Files | snake_case | camelCase | hyphen-case | hyphen-case |
| Modules | snake_case | camelCase | - | - |
General Rules
Files: Use hyphen-case for documentation, snake_case for Python, camelCase for TypeScript. Names should describe content.
Variables: Use descriptive names. Avoid single letters except loop counters. No Hungarian notation.
Functions: Use verb-noun pattern. Name describes what it does, not how it does it.
Classes: Use PascalCase with descriptive nouns. Avoid abbreviations.
Constants: Use UPPER_SNAKE with descriptive names. Group related constants.
Examples
Python:
# Variables
user_name = "alice"
is_authenticated = True
# Functions
def get_user_data(user_id):
pass
# Classes
class UserProfile:
pass
# Constants
MAX_RETRIES = 3
API_ENDPOINT = "https://api.example.com"
TypeScript:
// Variables
const userName = "alice";
const isAuthenticated = true;
// Functions
function getUserData(userId: string): User {
return null;
}
// Classes
class UserProfile {
private name: string;
}
// Constants
const MAX_RETRIES = 3;
const API_ENDPOINT = "https://api.example.com";
Nix:
# Variables
let
userName = "alice";
isAuthenticated = true;
in
# ...
Shell:
# Variables
USER_NAME="alice"
IS_AUTHENTICATED=true
# Functions
get_user_data() {
echo "Getting data"
}
# Constants
MAX_RETRIES=3
API_ENDPOINT="https://api.example.com"
File Naming
Use these patterns consistently. No exceptions.
- Skills:
hyphen-case - Python:
snake_case.py - TypeScript:
camelCase.tsorhyphen-case.ts - Nix:
hyphen-case.nix - Shell:
hyphen-case.sh - Markdown:
UPPERCASE.mdorsentence-case.md