Skip to main content
Principles are the engineering culture every agent inherits. They are config, not control flow: injected into EM, worker, reviewer, and tester contexts, and recorded with the run — but no behavior branches on an individual principle string. Show the active set:
The output lists each merged principle with its source (default or project).

Defaults

Voss ships with six defaults:

Project overrides

Drop a .voss/principles.yml in the repo to extend or adjust the defaults:
Merge rules:
  • A key not in the defaults is added, after the defaults, in project order.
  • A key matching a default replaces its text in place (stable ordering).
  • A default is removed only when explicitly disabled — a null value or a name in disable.
  • Explicit disable wins over redefinition.
A malformed .voss/principles.yml raises a config error rather than silently falling back, so a broken file is never ignored.
Principles can be declared inline in a team{} block as well. Changing principles changes subsequent runs, but historical runs keep the principles that were active when they ran.