Skip to main content
Development

Development Practices

Tech stack, coding patterns, commit conventions, interface design, error handling, testing, and junior-friendly philosophy. Use when writing code, making commits, or choosing tools/patterns.

Development Practices

Development Philosophy

  • “How easy is this for a junior to understand, develop, and expand on?”
  • Self-documenting code > comments
  • Small, focused interfaces > god objects
  • Convention over configuration
  • Explicit > implicit

Tech Stack

CategoryTools
LanguagesRust, Go, TypeScript/Node 22, Python 3.13, Lua 5.4, Java 21, Haskell
Package Managerscargo, uv (Python), npm/yarn/pnpm, luarocks
Formatters/Lintersbiome (JS/TS), stylua (Lua), clippy (Rust), golangci-lint (Go), ruff (Python)
Observabilityopentelemetry (tracing/metrics/logs), structlog + stdlib logging (Python; loguru for scripts only)
EditorNeovim (HEAD) with LSP: ty, ts_ls, lua_ls, gopls, rust_analyzer, jsonls, yamlls, bashls, jdtls
ShellZsh + Oh My Zsh + Powerlevel10k
Terminal Multiplexertmux (vi-mode, vim-tmux-navigator)
DevOpsTerraform, kubectl, Helm, k9s, AWS CLI 2
Dev EnvironmentNix Flakes (13 composable shells), direnv, chezmoi

Commit Style

Angular Conventional Commits, enforced via sr commit and sr hook commit-msg:

type(scope): lowercase imperative description (max 72 chars)

Types: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert, bump

Rules:

  • Imperative mood (“add”, not “added”), no trailing period
  • Body explains why, not what
  • One logical change per commit, every file in exactly one commit
  • Order: infrastructure/config → core library → features → tests → docs
  • Footer: BREAKING CHANGE:, Closes #N, Fixes #N, Refs #N

Interface Design (Go SDKs)

  • Sealed interfaces: unexported marker methods (isMessage(), isDelta())
  • Functional options: New(WithX(...), WithY(...))
  • Provider pattern: Provider interface → provider/{name}/ adapters
  • Channel-based streaming: ChatStream() (<-chan Delta, error)

Error Handling

LanguageApproach
Rustthiserror (libraries), anyhow (CLI/apps), .context(), no unsafe
Gostructured errors, errors.Is()/errors.As(), sentinel errors, IsTransient() helper
Pythonstandard exceptions, pytest assertions

Testing

For comprehensive testing guidance (test types, fixtures, mocks, CI strategy), see the test-code skill.

LanguageFrameworkPatternCI Command
Rustcargo test#[cfg(test)] + tests/ integrationcargo test --workspace
Gotesting_test.go, table-drivengo test ./...
Pythonpytesttests/test_*.py, class-baseduv run pytest

Workspace Organization

  • Rust: crates/ with core → impl → cli
  • Go: cmd/ for binaries, root or internal/ for packages
  • Python: src/ layout with hatchling

Coding Patterns

  • Convention over configuration — placeholder comments (<project>) over complex templating
  • Composable toolsets — Nix flakes combine reusable per-language toolsets
  • Machine polymorphism — chezmoi templates adapt to is_macos/is_linux/is_personal/is_work
  • Minimal Homebrew — Nix for reproducibility, Homebrew only for macOS-specific tools
  • Subprocess safety — Neovim detects non-interactive environments and disables clipboard
  • ZSH caching — 24-hour compinit cache, auto fpath discovery for completions