Organize a workshop

Bind a folder as your orch workspace, register projects and shared folders, and keep git boundaries clean.

Goal#

Set up a workshop: one root folder that holds several projects (each its own git repo) plus shared folders per language that any project can read. Get orch init's seeded layout in place without breaking git boundaries.

Steps#

  1. Create (or cd into) the folder that will be your workshop root, then bind it:

    orch setup
    

    This writes orch.yaml and .orch/ in the current folder, asks for optional project/shared folder names, and puts orch.exe's folder on your user PATH.

  2. Seed the ordered layout and doctrine:

    orch init
    

    orch init asks for the docs locale, shared folders, project/app names, and whether to install orch guard hooks. It seeds a thin CLAUDE.md, DEV_PRACTICES.md, GATES.md, and a per-project TRACKER.md, then git inits each project and shared folder — never the workshop root. Add --recommend to default to shared/<lang>/ + projects/<app>/, or --dry-run to preview without writing.

  3. Register an existing project folder (if you didn't create it during orch init):

    orch project add products/saint
    

    Paths resolve from cwd first, then the workspace root. --name sets a short id (default: folder name).

  4. Register a shared folder by language:

    orch shared add shared/go --lang go
    

    --lang defaults to workspace.primary_languages, or the only shared.* bucket if there's just one. This also seeds and indexes symbols under that folder immediately.

Git boundaries#

  • The workshop root is not a git repo. orch init never runs git init there.
  • Each project folder is its own repo (orch project add does not create it — register an existing folder, or git init it yourself first).
  • Shared folders are also their own repos, one per language bucket.
  • .orch/ (device token, local db, externalized tool output) is added to the workshop root's .gitignore automatically by orch setup/orch init — it is local runtime state, not something to commit.

Verify#

orch project list
orch shared list

project list shows each registered path and, if another live interactive Chair already holds that project, a (chair: name, workers: N) suffix. shared list prints one <lang>\t<path> line per registered folder.

Undo#

orch project remove <path-or-name>
orch shared remove <path>

Both only unregister the entry from orch.yaml — neither deletes the folder or its git history.

  • configure-agents.md — after the workshop exists, tell orch which agent CLIs to launch.
  • worktrees.md — how dispatched sessions get their own isolated checkout per project.