Fix skill conflicts and priority issues when multiple OpenClaw skills compete for the same triggers.
Resolving Conflicts Between OpenClaw Skills
As you install more skills, conflicts can arise — two skills trying to handle the same command, competing for the same resources, or producing contradictory responses. Here's how to identify, prevent, and resolve skill conflicts.
Types of Conflicts
Conflict Type
Example
Symptom
Trigger overlap
Both email-sender and email-manager respond to "send email"
Duplicate or unexpected responses
Resource conflict
Two skills accessing the same API with different credentials
Authentication errors
Response conflict
Weather skill and travel skill both answer weather queries
Conflicting information
Dependency conflict
Skills require different versions of the same library
Installation failure
Port conflict
Two skills try to listen on the same port
Startup error
Detecting Conflicts
# Run the conflict checker
openclaw skill conflicts
# Checking for conflicts among 12 installed skills...
#
# ⚠️ Trigger Overlap:
# "send email" matched by:
# 1. email-sender (priority: 10)
# 2. email-manager (priority: 5)
# → email-sender will handle (higher priority)
#
# ⚠️ Dependency Conflict:
# axios@1.6.0 required by: weather (>=1.6)
# axios@1.4.0 required by: old-api-client (=1.4)
# → Potential runtime error
#
# ✅ No resource conflicts detected
# ✅ No port conflicts detected
# Check specific skill conflicts
openclaw skill conflicts email-sender
Resolving Trigger Overlaps
The most common conflict — multiple skills responding to the same input:
# Check dependency tree
openclaw skill deps --tree
# email-sender@2.1.0
# └── axios@1.6.7
# old-api-client@0.8.0
# └── axios@1.4.0 ⚠️ CONFLICT
# Force update the conflicting skill
openclaw skill update old-api-client
# If no update available, isolate dependencies
openclaw skill install old-api-client --isolate
# → Installs with its own dependency sandbox
Skill Namespacing
Prevent conflicts by using explicit skill references:
# Ambiguous (might conflict):
You: "Send an email to Alice"
# Explicit (no conflict):
You: "Use email-sender to email Alice about the meeting"
# Or use skill prefixes in config:
skills:
namespacing:
enabled: true
prefix_trigger: true
# Now: "email-sender: send email to Alice"
Disabling Conflicting Skills
# Temporarily disable a skill
openclaw skill disable old-api-client
# → Disabled. 11 skills active.
# Replace with a better alternative
openclaw skill uninstall old-api-client
openclaw skill install new-api-client
Conflict Resolution Strategies
Strategy
When to Use
How
Priority
Two skills can coexist
Set priority in config
Disable triggers
One skill handles subset
Disable specific triggers
Uninstall
Skill is redundant
Remove the less capable skill
Namespace
Both skills needed
Use explicit skill references
Isolate
Dependency conflict
Install with --isolate flag
Fork & merge
Best features from both
Create a custom combined skill
Testing After Resolving Conflicts
# Test that the conflict is resolved
openclaw skill test email-sender
# ✅ All triggers working
# ✅ No conflicts detected
# ✅ Dependencies: OK
# Test the specific trigger that was conflicting
openclaw chat --dry-run "Send an email to test@example.com"
# → Would route to: email-sender (priority: 10)
# → Action: compose_email
# → No conflicts
# Run full conflict check
openclaw skill conflicts
# ✅ No conflicts detected among 11 active skills
Tip: The simplest conflict resolution is often the best — uninstall the skill you use less. If you need both, set explicit priorities and disable overlapping triggers on the lower-priority skill.