Skip to content

Skills grid: dedup a skill installed under a different source than the catalog lists it - #135

Merged
WebTigers merged 1 commit into
mainfrom
fix/skills-dedup
Aug 17, 2026
Merged

Skills grid: dedup a skill installed under a different source than the catalog lists it#135
WebTigers merged 1 commit into
mainfrom
fix/skills-dedup

Conversation

@WebTigers

Copy link
Copy Markdown
Owner

Symptom

ui-ux-pro-max-php showed twice in the grid — once Installed (source "From github.com/WebTigers/Skills/…") and once Available (source "WebTigers Skills").

Cause

It was installed via the paste-a-URL flow, which keys the install by the URL-derived source id (url-<hash>__ui-ux-pro-max-php). The catalog lists the same skill under webtigers-skills__ui-ux-pro-max-php. The datatable merge matched installed↔catalog only by install key, so the two didn't reconcile → two rows.

Fix

Dedup by the skill's canonical identity (repo + path) as well as the install key — a skill is the same wherever it was installed from. The reconciled row:

  • shows as Installed (not Available),
  • carries the catalog's provenance label,
  • and its actions target the actual installed key (so toggle/remove hit the real dir).

Tiger_Agent_Skills::installed() now returns path so the merge can match on it.

Verified

  • New test: install under url__widget, list the same repo+path in a catalog under catalog-x → asserts one row, installed, keyed to the real dir. 10/10 SkillsTest green.
  • Live on tiger-dev: ui-ux-pro-max-php collapses from 2 rows to 1.

🤖 Generated with Claude Code

…e catalog

A skill installed via one source (e.g. paste-a-URL → key `url-<hash>__x`) and the
SAME skill listed in a catalog (key `webtigers-skills__x`) have different install
keys, so the datatable merge showed BOTH — one "Installed", one "Available".

Dedup by canonical identity (repo + path) in addition to the install key: a skill
is the same wherever it was installed from. The matched row shows as installed,
carries the catalog's provenance, and its actions target the ACTUAL installed key
(so toggle/remove hit the real dir). Tiger_Agent_Skills::installed() now returns
`path` for the match.

Test: install a skill under `url__widget`, list the same repo+path in a catalog
under `catalog-x`, assert ONE row, installed, keyed to the real install dir.
Verified live on dev: ui-ux-pro-max-php collapses from 2 rows to 1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@WebTigers
WebTigers merged commit df10a2e into main Aug 17, 2026
13 checks passed
@WebTigers
WebTigers deleted the fix/skills-dedup branch August 17, 2026 14:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant