engineering-principleslisted
Install: claude install-skill johantor/zion
# Engineering principles
Defaults, not dogma — when a rule conflicts with the repo's established patterns, the repo wins.
- **Match the repo.** Follow existing conventions, structure, and idioms even over personal preference. Consistency beats local "better".
- **YAGNI.** Build only what the task needs. No speculative abstractions, config knobs, unused params, or "future-proofing". Delete dead code.
- **KISS.** Simplest solution that works; optimize for the next reader, not cleverness.
- **DRY with judgment.** Rule of three before abstracting; a little duplication beats the wrong abstraction; don't couple unrelated code that merely looks similar.
- **Small units.** One thing, one reason to change; short functions; composition over inheritance; minimal public surface.
- **Naming/comments.** Intention-revealing names; comments explain *why*, not *what*; no commented-out code; no TODO graveyards.
- **Errors.** Fail fast, handle explicitly, validate at boundaries; never silently swallow.
- **Security.** Treat external input as untrusted — validate and encode at trust boundaries; prefer the framework's safe API (parameterized queries, safe templating) over hand-rolled escaping. Never hardcode or log secrets; least privilege by default.
- **Observability.** Make failures diagnosable — log with enough context to locate the cause and surface errors where they'll be seen, never bury them. Match the repo's logging idiom; no noisy logging on the happy path.
- **Minimal-scope diffs.** S