Skip to content
Belief Engines
Esc
navigateopen⌘Jpreview
On this page

Naming

be-<type>-<name>. The name is the routing table for every repo, folder, page and command.

Every thing Belief Engines makes is named the same way. The name says whose it is, what kind it is, and which one. Nothing else carries that information — not a parent folder, not a registry, not a README.

   be  -  type  -  name
   │        │        │
   │        │        └── which one          kebab-case, 1-3 words
   │        └─────────── what kind it is    one word, from the list
   └──────────────────── ours               always "be"

Why it matters

  human says         "idea about zoom transcripts"
  Claude runs        be wiki new zoom-etl
  CLI creates        github.com/beliefengines/be-wiki-zoom-etl  ->  ~/be-wiki-zoom-etl
  teammate's Claude  be wiki pull zoom-etl
  any agent reads    ~/be-wiki-zoom-etl/docs/    knows the shape on sight
  it graduates to    be-internal/docs/be-pipeline-zoom-etl/

Home on the dev box is flat: every folder under ~ is be-<type>-<name> and ls ~ is the whole inventory.

One name, five places, zero lookups. A cold agent or a new hire sorts by type and finds everything of that kind. That is what keeps flat survivable.

Types

Type Is a Lives as
wiki one person’s idea, being flushed out its own repo, from be-wiki-template
customer a client engagement be-internal/docs/customers/
agent an agent we are specifying area in be-internal
pipeline a data flow, source to sink area in be-internal + eng repo
app something with a UI eng repo
infra AWS, Vercel, DNS, the plumbing eng repo
flow a multi-step process area or eng repo
cli a command-line tool eng repo
podcast an audio project eng repo
harness the invariant layer under everything singleton be-harness

Need a type that is not here? Add the row first, in this page, then use it. A type is a shared word — inventing one in a repo name creates a category of one.

Singletons

When there is exactly one of a type and there will only ever be one, the name is dropped: be-internal, be-website, be-cli, be-harness. The test is could a second one exist? If yes, it gets a name now, not later.

Where the pattern repeats

The same three parts name smaller things, so the type is visible at every level:

  repo      be-wiki-zoom-etl
  area      docs/be-pipeline-zoom-etl/
  page      docs/.../decision-storage-layer.md     <kind>-<what>.md
  command   be wiki new zoom-etl                   be <type> <verb> <name>
  agent     .claude/agents/historian.md            one word, a role

Page kinds are fixed: idea question research decision spec. index.md is the only page without a kind prefix.

Rules

  • Lowercase, hyphens only. No underscores, no camelCase, no dots.
  • Type is one word. Name is one to three.
  • Never nest a type inside a type: be-wiki-agent-wolf is a wiki named agent-wolf, and that is fine — but it is a wiki, not an agent.
  • Order is fixed. be-template-app reads as “a template called app”; be-app-template reads as “the app that is a template”. The second is right. Rename candidates go in the table below, not in place.

Rename candidates

Now Should be Why
be-template-app be-app-template type before name
be-pulpcrew be-<type>-pulpcrew missing type
be-vincent be-<type>-vincent missing type

Last updated on August 29, 2026

Was this page helpful?