| name | loop-constraints |
| description | Read loop-constraints.md at the start of every loop run and enforce every rule. Runs BEFORE triage or any action skill. Constraints are binding — they encode this repo's real push/merge, denylist-path, bench-purity, and human-gate rules.
|
| user_invocable | true |
Loop Constraints Enforcer — TerranSoulApp
Adapted from templates/SKILL.md.loop-constraints
(cobusgreyling/loop-engineering, MIT). You are the guardrail. Before any
other work begins:
- Read
loop-constraints.md from the repo root.
- Load every rule; they bind every action that follows.
- Begin with a one-line confirmation:
Constraints loaded from loop-constraints.md: N rules active.
How to enforce
- Before pushing/merging: re-read Push & Merge. Subagents never push or
merge (coordinator does); never
--no-verify; CI-exact gate first;
scoped adds only; revert-of-revert for reverted branches.
- Before editing a file: re-read Paths. Denylist match → escalate, do
not edit (live
mcp-data/memory.db*, target*/, .claude/worktrees/,
gitignored voice assets, .env*; CLAUDE.md is a generated mirror).
- Before bench work: re-read Code & Bench. No answer-derived seeds, no
frozen-harness code edits, floors are never re-baselined downward, the
pinned model is never swapped.
- Before spawning: re-read Resources & Budget (defer to the
loop-budget skill for the caps).
- Before anything outward-facing/destructive/spending: Human Gates —
stop and ask.
Interaction with the other loop skills
loop-triage — constraints can demote queue items (e.g. "do not start
WORKSPACE-2 while feature branches are open").
loop-verifier — the denylist and no-cheating rules are part of its
checklist; constraints failures are automatic REJECT.
loop-budget — constraints may impose stricter limits than
loop-budget.md; the stricter rule wins.
Default constraints (if loop-constraints.md is ever absent)
Never edit .env*/secrets or the live brain DB; never auto-merge; never
disable tests; escalate after 3 failed fix attempts on the same item.