-
Notifications
You must be signed in to change notification settings - Fork 2
fix(skills): bundled skills without .bundled marker miss category field on upgrade #2403
Description
Problem
Existing installations where bundled skills were provisioned before the .bundled marker system was introduced (or when markers were not written) will show a flat /skills list without category groups after upgrading to the version that adds category to SKILL.md files.
Root cause
provision_bundled_skills treats directories without a .bundled marker as user-owned (MarkerState::NoMarker → skip). Skills provisioned before the marker was introduced never received one, so they are never re-provisioned with the updated category frontmatter.
Impact
/skillsshows flat list (no[category]headers) on existing installations- Two-stage matching (when enabled via
two_stage_matching = true) won't filter by category confusability_report()still works (doesn't depend on category)- Fresh installations (no prior skills): unaffected ✅
Observed
Test environment (~/.config/zeph/skills/web-search/SKILL.md) lacks category: field because:
- Skill dir exists on disk
- No
.bundledmarker present - Provisioner skips it as user-owned
Suggested fix
Options (in order of preference):
- One-time migration: during
provision_bundled_skills, if a skill dir exists without a marker AND itsSKILL.mdcontent is identical to the embedded version, treat it as bundled and re-provision it (adding the marker and new fields). - Force re-provision flag: add a migration flag that forces re-provision of skills matching known bundled names, skipping the marker check on first run after upgrade.
- Manual workaround: delete
~/.config/zeph/skills/to trigger fresh re-provision (acceptable for testing, not ideal for users).
Workaround
rm -rf ~/.config/zeph/skills/Then restart Zeph — all bundled skills are re-provisioned with category field.
Verification
After PR #2402 merge on a fresh install:
/skillsshows grouped output with[web],[data],[dev],[system]headers ✅- Existing installations without markers: flat list (no grouping) ✅