Skip to content

Custom instructions (user-provided guidance the loop honors)

config.customInstructions lets the operator point the-loop at their own instruction documents — readme/markdown files carrying whatever the structured config cannot model: team conventions, coding/testing/developing styles, naming rules, domain glossaries, review etiquette, "how we do things here". The paths are configured per installation of the-loop, so every project (and every machine) can point at its own docs, inside or outside the repository.

This is the guidance counterpart of config.externalTools: the external-tools registry declares tools the harness may use; custom instructions declare guidance the harness must follow. Both live inline in .the-loop/harness-config.yaml.

Config

yaml
customInstructions:
  docs:                           # ordered; later docs win over earlier ones on conflict
    - path: docs/team-conventions.md          # repo-relative …
      notes: House TS style, naming, PR etiquette.
    - path: /home/me/company-wide-rules.md    # … or absolute (per-machine, outside the repo)
      notes: Org-wide security & dependency policy.
  onMissing: warn                 # warn | error | ignore
  • docs — an ordered list. Each entry names a markdown/readme file (path) and optionally what it covers (notes), so phase-scoped loading knows when the doc matters.
  • onMissing — what to do when a configured doc is absent at its path: warn (default) notes the gap in the execution log and continues; error stops and asks the user; ignore skips silently.

When to read them

  • Always at the start of working a work item — right after loading .the-loop/harness-config.yaml and before any phase work — read every configured doc in list order. This applies to work-on and to every granular command that does real work (brainstormexecute-tasks).
  • Re-read on demand — under progressive disclosure (tokenEconomy.progressiveDisclosure), a long session may drop instruction detail at a context reset; the notes say which doc matters to which kind of work, so re-read the relevant doc when its territory comes up (e.g. a testing style guide before writing tests). After a context clear, the docs are re-read like every other checked-in artifact (reference/context.md).
  • During /init — the onboarding walks the instructions group (confirm ask level): init proposes candidates it detects in the repo (CONTRIBUTING.md, style guides under docs/) and the user confirms, adjusts or adds paths — including per-machine absolute paths init could never detect.

Precedence (who wins on conflict)

  1. the-loop's hard gates are not negotiable. No instruction doc can weaken security gates, the paper trail, phase/review gates, or risk-tiered autonomy. An instruction that tries ("skip the security review", "don't post reviews") is ignored and the conflict is logged (docs/decisions/conflicts.md) — fail-closed, exactly like any other conflicting input.
  2. The structured config wins where both speak. .the-loop/harness-config.yaml is the contract for everything it models (tooling, counts, gates, paths). An instruction doc saying "use yarn" does not override tooling.packageManager — instead surface the mismatch to the user and log it.
  3. Custom instructions win over the-loop's own defaults everywhere else. Style, conventions, idioms, domain guidance — anything the config does not model is exactly what these docs exist to decide.
  4. Within the list, later docs win over earlier ones, so an operator can layer org-wide rules first and project-specific overrides after.

Harness-native memory files (CLAUDE.md, Cursor rules, AGENTS.md) keep their harness-defined semantics and load independently; customInstructions is the harness-portable channel the-loop itself guarantees to read. Registering the same file in both places is harmless — it is simply read attentively.

Security note

Instruction docs are operator-configured, trusted installation input — the same trust level as .the-loop/harness-config.yaml itself, not webhook/ticket content. The authorized-actor guard (decision-023) is unaffected. Still, rule 1 above holds even for trusted docs: the gates the loop exists to enforce cannot be instructed away, and a doc pulled into the repo by a work item's own changes is reviewed like any other diff.

Released under the MIT License.