Skip to content

plugin skills not hot-reloaded after runtime install via /plugins add #3134

@bug-ops

Description

@bug-ops

Description

The PR commit message claims plugins are "hot-reloaded via a single recursive watcher on the plugins root." However, the actual implementation watches individual skill directories collected at startup, not the plugins root directory itself.

skill_paths() in src/bootstrap/mod.rs calls mgr.collect_skill_dirs() at startup, which enumerates skill dirs from already-installed plugins. These paths are passed to SkillWatcher::start(). If the agent is running and a new plugin is installed via /plugins add (slash command or TUI), its skill directories are not in the watcher list and no hot-reload event fires.

Reproduction Steps

  1. Start agent: cargo run --features full -- --config .local/config/testing.toml
  2. While agent is running, install a plugin: /plugins add /path/to/plugin
  3. Ask agent to use a skill from the newly installed plugin
  4. Observe: agent does not find the skill (registry not updated)
  5. Restart agent: skill is now available

Expected Behavior

Installing a plugin via /plugins add while the agent is running should trigger skill hot-reload within the standard debounce window (500ms), making the plugin's skills available without restart.

Actual Behavior

Plugin skills are only loaded at startup. Runtime plugin installs require an agent restart to take effect.

Root Cause

src/bootstrap/mod.rs:skill_paths() collects plugin skill dirs once at startup. SkillWatcher watches those fixed paths. When a new plugin is installed post-startup, no watcher covers its skill dir.

A correct implementation would watch the plugins root directory (~/.local/share/zeph/plugins/) recursively, or re-register the new skill dirs with the existing watcher on each /plugins add operation.

Environment

  • Version: 0.19.1 (e1749ef)
  • Features: full
  • Session: CI-559, 2026-04-17

Metadata

Metadata

Assignees

Labels

P2High value, medium complexitybugSomething isn't workingskillszeph-skills crate

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions