Skip to content

feat(constraints): add loop-constraints file + enforcement skill#71

Open
neerajdad123-byte wants to merge 3 commits into
cobusgreyling:mainfrom
neerajdad123-byte:feat/loop-constraints
Open

feat(constraints): add loop-constraints file + enforcement skill#71
neerajdad123-byte wants to merge 3 commits into
cobusgreyling:mainfrom
neerajdad123-byte:feat/loop-constraints

Conversation

@neerajdad123-byte

Copy link
Copy Markdown

Summary

Adds a structured constraints system — a single loop-constraints.md file where users define rules (e.g. "Don't push
before telling me", "Never edit auth/") and a loop-constraints skill that reads and enforces them at the start of
every loop run. Closes the gap where constraints were only soft prompts scattered across safety.md, LOOP.md, and
individual skill files.

Area What changed
Templates New loop-constraints.md (constraints file) + SKILL.md.loop-constraints (enforcement skill)
Examples Tool-specific usage guides for Grok, Claude Code, Codex
loop-audit Detects constraints file (+4 pts) and skill (+2 pts); new finding + recommendation
loop-init scaffoldConstraints() auto-generates both on npx loop-init
docs Cross-reference in docs/safety.md

Changes

  • New pattern or starter (followed templates/pattern-template.md + updated registry.yaml) — N/A
  • Doc / example improvement
  • Tool change (loop-audit)
  • Story (includes real failure or surprise + lesson) — N/A

Checklist (from CONTRIBUTING)

  • All required sections present for patterns — N/A
  • Links work from README, patterns/README, starters/README, docs/index
  • No secrets, tokens, internal company URLs
  • STATE.md* examples use .example suffix — N/A
  • Safety-related content references docs/safety.md
  • Ran node tools/loop-audit/dist/cli.js . and addressed findings

Testing / Dogfood

  • loop-audit passes on affected starters or this repo
  • Manual review of generated state / skill output

loop-audit: 11/11 passed
loop-cost: 7/7 passed
loop-init: 6/6 passed

node tools/loop-audit/dist/cli.js . → Score: 100/100 L3
node tools/loop-init/dist/cli.js /tmp/test -p daily-triage -t grok --dry-run → scaffolds constraints file + skill
correctly

Screenshots / Examples

$ npx @cobusgreyling/loop-audit .
Score: 100/100 Level: L3
✓ loop-constraints.md present.

$ npx @cobusgreyling/loop-init . --pattern daily-triage --tool grok --dry-run
would copy: ...templates/loop-constraints.md → loop-constraints.md
would copy: ...templates/SKILL.md.loop-constraints → .grok/skills/loop-constraints/SKILL.md

Files (11)

templates/loop-constraints.md [ADDED] (+30)
templates/SKILL.md.loop-constraints [ADDED] (+52)
examples/grok/constraints.md [ADDED] (+32)
examples/claude-code/constraints.md [ADDED] (+29)
examples/codex/constraints.md [ADDED] (+20)
docs/safety.md [MODIFIED] (+11 -2)
tools/loop-audit/src/auditor.ts [MODIFIED] (+36 -2)
tools/loop-audit/dist/auditor.d.ts [MODIFIED] (+4)
tools/loop-audit/dist/auditor.js [MODIFIED] (+34 -1)
tools/loop-audit/test/auditor.test.mjs [MODIFIED] (+1)
tools/loop-init/src/cli.ts [MODIFIED] (+17)
tools/loop-init/dist/cli.js [MODIFIED] (+9)

- New templates/loop-constraints.md: single source of truth for all loop guardrails (denylist paths, push/merge rules, human gates, budget caps)
- New templates/SKILL.md.loop-constraints: skill that reads constraints file at start of every run and enforces every rule
- loop-audit: scores constraints file (+4 pts) and skill (+2 pts); detects both in auditProject; new finding for missing constraints
- loop-init: scaffoldConstraints() generates loop-constraints.md + loop-constraints skill in target project
- docs/safety.md: cross-reference to new constraints file

Closes: the gap where constraints were only soft prompts scattered across safety.md, LOOP.md, and skill files. Now a single structured file + runtime enforcement skill.

Tests: loop-audit 11/11, loop-cost 7/7, loop-init 6/6

@cobusgreyling cobusgreyling left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks, CI passed. One fix needed before merge: in LOOP_SKILL_NAMES (both src/auditor.ts and dist/auditor.js), please add loop-constraints without removing draft-release-notes. Right now │ draft-release-notes was swapped out, which would regress scoring for projects using that skill.

@neerajdad123-byte

neerajdad123-byte commented Jun 26, 2026

Copy link
Copy Markdown
Author

Fixed — draft-release-notes restored alongside loop-constraints in both src/auditor.ts and dist/auditor.js. Both
skills are now present in LOOP_SKILL_NAMES.
@cobusgreyling

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants