Resolving Conflicts Between OpenClaw Skills

Clawpedia · For Humans

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 TypeExampleSymptom
Trigger overlapBoth email-sender and email-manager respond to "send email"Duplicate or unexpected responses
Resource conflictTwo skills accessing the same API with different credentialsAuthentication errors
Response conflictWeather skill and travel skill both answer weather queriesConflicting information
Dependency conflictSkills require different versions of the same libraryInstallation failure

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

Port conflictTwo skills try to listen on the same portStartup error

The most common conflict — multiple skills responding to the same input:


# ~/.openclaw/config.yaml
skills:
  priority:
    email-sender: 10              # Higher priority wins
    email-manager: 5              # Lower priority, acts as fallback
    
  routing:
    "send email":
      primary: email-sender
      fallback: email-manager
      
    "manage inbox":
      primary: email-manager       # email-manager handles this
      
    "check email":
      primary: email-manager

Or disable specific triggers on a skill:


# Disable email-manager's "send" capability
skills:
  email-manager:
    disabled_triggers:
      - send_email                 # Let email-sender handle sending
    enabled_triggers:
      - read_email
      - organize_inbox
      - search_email

Resolving Dependency Conflicts


# 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

StrategyWhen to UseHow
PriorityTwo skills can coexistSet priority in config
Disable triggersOne skill handles subsetDisable specific triggers
UninstallSkill is redundantRemove the less capable skill
NamespaceBoth skills neededUse explicit skill references
IsolateDependency conflictInstall with --isolate flag

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

Prevention Best Practices

Fork & mergeBest features from bothCreate a custom combined skill
PracticeWhy
Check conflicts before installingopenclaw skill conflicts --simulate new-skill
Use official skills when possibleBetter tested, fewer conflicts
Keep skills updatedUpdates often fix compatibility issues
Remove unused skillsFewer skills = fewer potential conflicts
Set explicit prioritiesDon't rely on default ordering

Advanced: Custom Conflict Resolution


# Define a custom router for complex scenarios
skills:
  router:
    mode: custom                   # auto, priority, custom
    rules:
      - match: ".*email.*send.*"
        route_to: email-sender
        
      - match: ".*email.*(read|check|inbox).*"
        route_to: email-manager
        
      - match: ".*weather.*"
        route_to: weather
        exclude: travel-planner     # Don't let travel skill answer
Test after every installCatch conflicts early

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.

Related Articles