OpenHands / OpenHands/software-agent-sdk

Add user-visible skill loading warnings to conversation UI

Open
#4,015 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

customer support enhancement
Dominant language
Python
Stars
1.1k
Forks
539
Avg merge
1d 19h
Merged PRs (30d)
137

Description

Problem

When skills are loaded with configuration conflicts (e.g., a skill defines both paths: and triggers:), the conflict is currently resolved silently. The paths: trigger takes precedence and triggers: is ignored, but users have no visibility into this behavior.

Currently, logger.warning() calls during skill loading only appear in:

  • Server logs (not visible to end users)
  • Local terminal output (only for SDK developers)

These warnings do not appear in the conversation UI where users would actually see them.

Background

Path-triggered skills (PR #3994) introduce a precedence rule: if a skill defines both paths: and triggers:, the paths: wins and triggers: is silently ignored. This makes the skill path-triggered (not model-invocable).

We discovered that:

  • Hooks already have HookExecutionEvent with a visualize property that displays in the UI
  • Skills have no equivalent mechanism for surfacing loading warnings
  • Users may create conflicting skill definitions without realizing one field is being ignored

Desired Feature

Add infrastructure to surface skill loading warnings/info in the conversation UI, similar to how HookExecutionEvent displays hook execution information.

Timing Considerations

Skills are loaded before the conversation exists:

1. Plugin.load() / AgentContext.__init__
   └─> Skill loading detects conflicts
   └─> No conversation yet to emit events to

2. Conversation.__init__()
   └─> Conversation starts
   └─> Could emit collected warnings here

3. Runtime
   └─> Path rules trigger on file operations

The warning collection and emission would need to be split across these phases.

Related

  • PR #3994 - Path-triggered skills implementation
  • HookExecutionEvent - Existing pattern for execution-time UI notifications

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reading the existing HookExecutionEvent visualization pattern, then trace skill loading through Plugin.load(), AgentContext.init(), and Conversation.init(). Determine how warnings can be collected before a conversation exists and emitted when it starts. Done means conflicting skill definitions produce a visible conversation UI warning without losing the loading-time information.

Written by the indexing model from the issue text.

Assessment

Tech stack
python
Domain
backend-api-design
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.