Skip to content

Configuration

the-loop's per-repo configuration is split from its CLI daemon configuration — they never share keys. See decision-032 for why.

Plugin config — .the-loop/harness-config.yaml

Written by /the-loop:init (schema-driven guided onboarding — see the onboarding reference), validated against .the-loop/harness-config.schema.json. Read by /the-loop:* commands and the operating skill. A subset of keys can be overridden per work item via the markdown front-matter of that item's spec files.

Top-level sections:

SectionCovers
ticketingGitHub or Jira; owner/repo, whether to use GitHub Projects.
repositoryMonorepo tooling (nx/yarn/pnpm/bun), whether scripts run from root.
workflowThe spec approach, phase list, specDir/capabilitiesDir, phase label prefix.
toolingPer-language package manager, unit/integration test runner, lint, type-check, release tooling.
customInstructionsUser-provided instruction docs the harness reads before working — see instructions reference.
testingGherkin docstring requirement, integrationTestGlobs for the-loop scenarios.
apiSpecsContract-first REST (OpenAPI) / GraphQL (SDL) locations and doc generation.
designUI/UX design-artifact directory/format — see design-artifacts reference.
hooksPre-commit / pre-push gate lists, commit convention.
observabilityDev/runtime log levels, browser logging — see observability reference.
reviewsSelf/critic review counts and stop conditions — see reviewing reference.
autonomyRisk-tiered autonomy (1–5) and sensitive-path detection.
securityThreat-model, design, and review gate requirements — see security reference.
tddTDD mode: standard | tdd-first | off.
minimalismGeneration-time bloat guard — see minimalism reference.
tokenEconomyModel routing, thinking effort, output verbosity and other cost levers (advisory only) — see token-economy reference.
selfImprovementLearnings index cap and write-gate occurrence threshold.
contextManagementCheckpoint-then-reset behaviour at phase/task boundaries — see context reference.
userInteractionDiagram format, mandatory PR briefing/education requirements.
notificationsWhich harness-raised events notify which roles (recipients resolve from .the-loop/collaborators.yaml).
externalToolsInline registry of MCPs/CLIs/skills the harness may use.

The full, commented template ships at skills/the-loop/templates/harness-config.yaml in the repository.

Collaborators — .the-loop/collaborators.yaml

The single source of truth for who collaborates on the project and how they are notified (decision-035). CODEOWNERS-like: the stewards of the repository. Validated against .the-loop/collaborators.schema.json.

Each collaborator declares a handle, kind (individual/group), roles, and their notifications: a per-user enabled switch and a list of channels — each with a type (only slack for now), its own enabled switch, via (mcp | cli | api — how the harness interacts with the channel) and channel-specific config (slack: channel-list). Recipients of a harness-raised notification are resolved from this file by the roles listed in the harness config's notifications.events; decisions themselves always land as ticket/PR comments.

yaml
collaborators:
  - handle: "@octocat"
    kind: individual
    roles: [engineer, approver]
    notifications:
      enabled: true
      channels:
        - type: slack
          enabled: true
          via: mcp
          config:
            channel-list: ["#the-loop"]

Everything the-loop manages — .the-loop/manifest.yaml

Tracks every file/directory the-loop creates or maintains in a project, so /the-loop:upgrade-the-loop can reconcile a project against the installed plugin version.

CLI config — cli-config.yaml

Read only by the CLI's daemon commands (gh-webhook, poll, sessions, events): webhooks, polling, eventLog, plus the operator's own collaborators (same structure as .the-loop/collaborators.yaml, declared here because the daemon never reads any repo's collaborators file — decision-035) and notifications (daemon-side event filters: work-item-spawned, dispatch-failed, session-died, event-dropped-unauthorized). Not tied to any one repo — see the CLI reference for the full resolution order (--config flag → $THE_LOOP_CLI_CONFIG → repo-relative → home directory).

Released under the MIT License.