Unified skill for constraint generation, pre-action checking, circuit breaker management, and constraint lifecycle. Consolidates 7 granular skills into a single enforcement system.
Trigger: 行動前∨閾値到達 (pre-action or threshold reached)
Source skills: constraint-generator, circuit-breaker, emergency-override, constraint-lifecycle, constraint-versioning, positive-framer (partial), contextual-injection (partial)
bash
openclaw install leegitw/constraint-engine
Dependencies: leegitw/failure-memory (for eligibility data)
bash
# Install with dependencies
openclaw install leegitw/context-verifier
openclaw install leegitw/failure-memory
openclaw install leegitw/constraint-engine
Standalone usage: Requires failure-memory for constraint generation from observations. For full lifecycle management, install the complete suite (see Neon Agentic Suite).
Data handling: This skill operates within your agent's trust boundary. When triggered,
it uses your agent's configured model for constraint checking and generation. No external APIs
or third-party services are called. Results are written to output/constraints/ in your workspace.
Instructions get ignored. Rules get forgotten. Documentation goes unread. This skill takes a different approach — constraints generated from actual failures:
R≥3 ∧ C≥2)The insight: A constraint born from "this actually broke" carries more weight than "this might break." Consequences teach better than instructions.
text
/ce <sub-command> [arguments]
CommandCJKLogicTrigger/ce check検査action→constraints[]→pass∨blockNext Steps (auto)/ce generate生成eligible(obs)→constraintNext Steps (auto)/ce status状態active[], circuit∈{CLOSED,OPEN,HALF}Explicit/ce override上書constraint→bypass(temp), audit.log++Explicit/ce lifecycle周期state∈{draft→active→retiring→retired}Explicit/ce version版本constraint→v++, history.preserveExplicit/ce threshold閾値user∨context→custom_thresholdExplicit
ArgumentRequiredDescriptionactionYesAction to check against constraints--severityNoMinimum severity to check: critical, important, minor (default: all)
ArgumentRequiredDescriptionobservationYesObservation ID or pattern to generate constraint from--forceNoGenerate even if eligibility criteria not met
ArgumentRequiredDescription--circuitNoShow circuit breaker status only--activeNoShow active constraints only
ArgumentRequiredDescriptionconstraintYesConstraint ID to overridereasonYesReason for override (logged for audit)--durationNoOverride duration (default: "session")
ArgumentRequiredDescriptionconstraintYesConstraint IDstateYesTarget state: draft, active, retiring, retired
ArgumentRequiredDescriptionconstraintYesConstraint ID--bumpNoVersion bump type: major, minor, patch (default: minor)
ArgumentRequiredDescription--RNoCustom recurrence threshold (default: 3)--CNoCustom confirmation threshold (default: 2)--resetNoReset to default thresholds
Configuration is loaded from (in order of precedence):
.openclaw/constraint-engine.yaml (OpenClaw standard).claude/constraint-engine.yaml (Claude Code compatibility)yaml
# .openclaw/constraint-engine.yaml
thresholds:
R: 3 # Recurrence threshold (default: 3)
C: 2 # Confirmation threshold (default: 2)
false_positive_max: 0.2 # Max D/(C+D) ratio (default: 0.2)
circuit_breaker:
critical_threshold: 3 # Violations to trip for CRITICAL
important_threshold: 5 # Violations to trip for IMPORTANT
minor_threshold: 10 # Violations to trip for MINOR
window_days: 30 # Violation window (default: 30 days)
lifecycle:
review_reminder_days: 80 # Days before 90-day review to remind
Observation becomes eligible for constraint when:
text
R≥3 ∧ C≥2 ∧ D/(C+D)<0.2 ∧ sources≥2
CriterionMeaningR≥3At least 3 recurrencesC≥2At least 2 human confirmationsD/(C+D)<0.2False positive rate under 20%sources≥2Observed by at least 2 different sources
Constraints are automatically reframed positively:
NegativePositive"Don't commit without tests""Always run tests before commit""Don't push to main directly""Always create PR for main changes""Don't deploy without review""Always get code review before deployment""Don't skip migrations""Always run database migrations before release"
text
[CHECK BLOCKED] deploy production
Constraint violated: CON-20260212-005
"Always get code review approval before production deployment"
Severity: CRITICAL
Action: Request review via /ro twin, then retry deployment.
text
[CHECK PASSED] deploy staging
Active constraints checked: 3
✓ CON-20260210-001: Tests pass
✓ CON-20260211-002: Staging smoke test
✓ CON-20260212-003: Database migration verified
All constraints satisfied. Proceeding to staging.
StateMeaningBehaviorCLOSEDNormal operationConstraints enforcedOPENCircuit trippedBlock all related actionsHALF-OPENTesting recoveryAllow limited actions
SeverityThresholdWindowCRITICAL3 violations30 daysIMPORTANT5 violations30 daysMINOR10 violations30 days
text
draft → active → retiring → retired
│ │ │
└────────┴─────────┴── 90-day review gates
text
[CHECK PASSED] git commit -m "feature"
Active constraints checked: 5
All constraints satisfied.
text
[CHECK BLOCKED] git commit -m "feature"
Constraint violated: CON-20260210-001
"Always run tests before commit"
Severity: CRITICAL
Action: Run tests first, then retry commit.
Override: /ce override CON-20260210-001 "emergency hotfix"
text
=== Constraint Engine Status ===
Circuit Breaker: CLOSED (healthy)
Active Constraints (5):
- CON-20260210-001: Always run tests before commit [CRITICAL]
- CON-20260212-003: Always lint before commit [IMPORTANT]
- ...
Draft Constraints (2):
- CON-20260215-001: Pending approval
Violations (30d): 2
text
[CONSTRAINT GENERATED]
From: OBS-20260210-003 (lint-before-commit)
ID: CON-20260215-001
Text: "Always run lint before commit"
Severity: IMPORTANT
Status: draft
Next: Review and approve with /ce lifecycle CON-20260215-001 active
ConditionBehaviorInvalid sub-commandList available sub-commandsConstraint not foundError with suggestion to searchIneligible observationShow missing criteria, suggest /fm statusCircuit OPENBlock action, show recovery guidanceOverride without reasonRequire reason for audit trail
After invoking this skill:
ConditionActionConstraint generatedAdd to output/constraints/draft/, notify userConstraint activatedMove to output/constraints/active/Action blockedLog to output/hooks/blocked.log, explain whyCircuit OPENSurface to user with recovery guidanceOverride usedAudit log entry, temporary bypass only
This skill reads/writes:
text
output/
├── constraints/
│ ├── draft/ # Pending constraints
│ │ └── CON-YYYYMMDD-XXX.md
│ ├── active/ # Enforced constraints
│ │ └── CON-YYYYMMDD-XXX.md
│ ├── retired/ # Historical constraints
│ │ └── CON-YYYYMMDD-XXX.md
│ └── metadata.json # VFM scoring data
└── hooks/
└── blocked.log # Actions blocked by constraints
What this skill accesses:
.openclaw/constraint-engine.yaml and .claude/constraint-engine.yaml.learnings/ directory)output/constraints/ and output/hooks/What this skill does NOT access:
What this skill does NOT do:
Dependency note:
This skill reads observation data from failure-memory skill's workspace ( .learnings/).
Install leegitw/failure-memory for full constraint generation functionality.
Without failure-memory, constraint generation will have no observation data to process.
Audit logging:
Override actions are logged to output/hooks/blocked.log for audit purposes.
Logs are stored locally in the workspace only.
/ce check validates action against active constraints/ce check blocks when constraint violated, shows reason/ce generate creates constraint from eligible observation/ce generate applies positive reframing/ce status shows circuit breaker state and active constraints/ce override creates temporary bypass with audit log/ce lifecycle transitions constraint through states/ce version increments constraint version preserving historyConsolidated from 7 skills as part of agentic skills consolidation (2026-02-15).