33god Project Creation & Wiring
Every 33god/DeLoNET repo is assembled by pjangler out of two copier templates it vendors as submodules under ~/code/pjangler/templates/:
- CommonProject (
templates/commonproject) — the base skeleton: .project.json, mise.toml, .mise/scripts/, BMAD, the ticket board.
- hermes-agent-template (
templates/hermes-agent) — Hermes agent roles (PM, scrum-master/Ticket Sentinel, dev, …) provisioned into agents/hermes/<role>/.
.project.json at the repo root is the single source of truth for project + board identity. There is one ticket board per repo; every agent binds to it.
Operating Principles
.project.json is canonical. Board binding (ticket_provider block), repo_path, project_slug, and the agents map live there. Never reintroduce a separate .plane.json.
- One board per repo. The PM owns it; the Scrum Master sentinel watches the same board. Board name = the project name (no role suffix); identifier =
slug[:4] uppercased.
- Agent config is inherited by default for new fleet agents. pjangler creates
~/.hermes/profiles/<repo>-<role> as a named profile that points at the role's agents/hermes/<role>/runtime/ repo and opts config.yaml into inheriting from the fleet default profile. Local agent config.yaml files contain only overrides.
- mise is mandatory and uniform. Every repo gets the same
mise.toml contract.
- Agents are memory- and event-wired by default. Hindsight recall/retain + Bloodbank emit/consume are part of provisioning.
- Hooks and skills fan out from the repo, per-dev. A repo that adopts the project-scoped agent layer commits one hooks SSOT + one skill set and lets
mise enter/leave install them into each dev's CLIs (see references/project-scoped-hooks.md).
- Templates are version-locked. pjangler runs the vendored submodule unless
PJANGLER_HERMES_TEMPLATE overrides it for template development.
Route by intent
| You want to… |
Read |
| Create a new project / bootstrap CommonProject / add a PM or Ticket Sentinel |
references/project-creation.md |
Set up or fix mise (mise.toml, .mise/scripts, AGENTS.md linking, op inject .env.op) |
references/mise-conventions.md |
| Install / re-install BMAD with the standard modules + tools |
references/bmad-init.md |
| Wire an agent's Hindsight memory and Bloodbank emit/consume hooks (harness/global layer) |
references/agent-hooks.md |
Adopt the per-dev, committed project-scoped hook + skill fan-out layer (Claude/Codex/Hermes/Kimi, .agents/local.json opt-out, hindsight-setup) |
references/project-scoped-hooks.md → references/project-scoped-internals.md |
| Understand what the project side asks Hermes to provision |
references/hermes-project-agent-request.md |
| Update shared Hermes fleet defaults, run a fleet self-check, or backfill existing PM agents |
→ hermes-fleet-operations |
| Build or operate the generic master→multi-dialect fan-out engine |
→ agent-config-fanout |
| Develop pjangler itself (Commands/Recipes/MCP) |
→ pjangler-dev |
The standard lifecycle (at a glance)
1. CommonProject → mise run init-project # repo skeleton + Plane board + .project.json + BMAD
2. pjangler hermes-agent (role: pm, +companion) # PM agent, inherited profile, repo board
└─ companion provisions the scrum-master (Ticket Sentinel) on the SAME board
3. mise trust && direnv-style `enter` # links AGENTS.md, op-injects .env.op → .env
Cross-cutting rules
AGENTS.md is the source of truth; CLAUDE.md and GEMINI.md are symlinks to it.
- Secrets live in
.env.op (1Password references); mise enter runs op inject -i .env.op > .env. Never commit .env.
- No code changes in a hermes-managed repo without an active ticket on the repo board (
ALLOW_NO_TICKET=1 is the emergency bypass).
- Board creation is outward-facing — confirm before running provisioning that hits a live workspace.
Out of Scope
- Developing pjangler itself →
pjangler-dev.
- Generic agent-config fan-out engine (master/lock/dialect renderers) →
agent-config-fanout.
- Hermes fleet-wide updates, template backfills, fleet self-checks →
hermes-fleet-operations.
- Plane live issue operations →
managing-tickets-and-tasks-in-plane.
- Bloodbank event schema naming / topology →
bloodbank-integration.
- General DeLoNET host conventions →
delonet-conventions.
- Hindsight API usage / bank routing mechanics beyond agent-hook wiring →
hindsight.
- BMAD workflow execution (PRD, stories, dev-story, sprint) → the
bmad-* skills/agents.
1---2name: 33god-projects-23description: Create, wire, and maintain 33god/DeLoNET projects. Covers pjangler/CommonProject bootstrap, repo-local `.project.json`, Hermes PM and scrum-master/Ticket Sentinel provisioning requests, mise/.env.op, BMAD, Hindsight/Bloodbank hook wiring, and project-scoped hook + skill fan-out adoption. Use when running `pjangler init`, `pjangler hermes-agent`, or `mise run init-project`; adding PM/sentinel agents; wiring mise/op inject; installing BMAD; configuring hooks; or adopting `.agents/local.json`, `defer_to_global`, and `hooks.master.json`. Do NOT use for developing pjangler (pjangler-dev), generic fan-out mechanics (agent-config-fanout), fleet updates/backfills (hermes-fleet-operations), live Plane issues, Bloodbank schemas, or host conventions.4---56# 33god Project Creation & Wiring78Every 33god/DeLoNET repo is assembled by **pjangler** out of two copier templates it vendors as submodules under `~/code/pjangler/templates/`:910- **CommonProject** (`templates/commonproject`) — the base skeleton: `.project.json`, `mise.toml`, `.mise/scripts/`, BMAD, the ticket board.11- **hermes-agent-template** (`templates/hermes-agent`) — Hermes agent roles (PM, scrum-master/Ticket Sentinel, dev, …) provisioned into `agents/hermes/<role>/`.1213`.project.json` at the repo root is the **single source of truth** for project + board identity. There is **one ticket board per repo**; every agent binds to it.1415## Operating Principles1617- **`.project.json` is canonical.** Board binding (`ticket_provider` block), `repo_path`, `project_slug`, and the `agents` map live there. Never reintroduce a separate `.plane.json`.18- **One board per repo.** The PM owns it; the Scrum Master sentinel watches the same board. Board name = the project name (no role suffix); identifier = `slug[:4]` uppercased.19- **Agent config is inherited by default for new fleet agents.** pjangler creates `~/.hermes/profiles/<repo>-<role>` as a named profile that points at the role's `agents/hermes/<role>/runtime/` repo and opts `config.yaml` into inheriting from the fleet default profile. Local agent `config.yaml` files contain only overrides.20- **mise is mandatory and uniform.** Every repo gets the same `mise.toml` contract.21- **Agents are memory- and event-wired by default.** Hindsight recall/retain + Bloodbank emit/consume are part of provisioning.22- **Hooks and skills fan out from the repo, per-dev.** A repo that adopts the project-scoped agent layer commits one hooks SSOT + one skill set and lets `mise enter/leave` install them into each dev's CLIs (see [references/project-scoped-hooks.md](references/project-scoped-hooks.md)).23- **Templates are version-locked.** pjangler runs the vendored submodule unless `PJANGLER_HERMES_TEMPLATE` overrides it for template development.2425## Route by intent2627| You want to… | Read |28|---|---|29| Create a new project / bootstrap CommonProject / add a PM or Ticket Sentinel | [references/project-creation.md](references/project-creation.md) |30| Set up or fix mise (mise.toml, .mise/scripts, AGENTS.md linking, `op inject .env.op`) | [references/mise-conventions.md](references/mise-conventions.md) |31| Install / re-install BMAD with the standard modules + tools | [references/bmad-init.md](references/bmad-init.md) |32| Wire an agent's Hindsight memory and Bloodbank emit/consume hooks (harness/global layer) | [references/agent-hooks.md](references/agent-hooks.md) |33| Adopt the per-dev, committed project-scoped hook + skill fan-out layer (Claude/Codex/Hermes/Kimi, `.agents/local.json` opt-out, `hindsight-setup`) | [references/project-scoped-hooks.md](references/project-scoped-hooks.md) → [references/project-scoped-internals.md](references/project-scoped-internals.md) |34| Understand what the project side asks Hermes to provision | [references/hermes-project-agent-request.md](references/hermes-project-agent-request.md) |35| Update shared Hermes fleet defaults, run a fleet self-check, or backfill existing PM agents | → **hermes-fleet-operations** |36| Build or operate the generic master→multi-dialect fan-out engine | → **agent-config-fanout** |37| Develop pjangler itself (Commands/Recipes/MCP) | → **pjangler-dev** |3839## The standard lifecycle (at a glance)4041```421. CommonProject → mise run init-project # repo skeleton + Plane board + .project.json + BMAD432. pjangler hermes-agent (role: pm, +companion) # PM agent, inherited profile, repo board44 └─ companion provisions the scrum-master (Ticket Sentinel) on the SAME board453. mise trust && direnv-style `enter` # links AGENTS.md, op-injects .env.op → .env46```4748## Cross-cutting rules4950- `AGENTS.md` is the source of truth; `CLAUDE.md` and `GEMINI.md` are symlinks to it.51- Secrets live in `.env.op` (1Password references); `mise enter` runs `op inject -i .env.op > .env`. Never commit `.env`.52- No code changes in a hermes-managed repo without an active ticket on the repo board (`ALLOW_NO_TICKET=1` is the emergency bypass).53- Board creation is outward-facing — confirm before running provisioning that hits a live workspace.5455## Out of Scope5657- **Developing pjangler itself** → `pjangler-dev`.58- **Generic agent-config fan-out engine** (master/lock/dialect renderers) → `agent-config-fanout`.59- **Hermes fleet-wide updates, template backfills, fleet self-checks** → `hermes-fleet-operations`.60- **Plane live issue operations** → `managing-tickets-and-tasks-in-plane`.61- **Bloodbank event schema naming / topology** → `bloodbank-integration`.62- **General DeLoNET host conventions** → `delonet-conventions`.63- **Hindsight API usage / bank routing mechanics beyond agent-hook wiring** → `hindsight`.64- **BMAD workflow execution** (PRD, stories, dev-story, sprint) → the `bmad-*` skills/agents.