Folder-name slug collisions yield mangled '-ill-md' slugs and indistinguishable duplicate search rows (29 of 159 sampled)
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 48/100
- Tipo di issue
- Bug
- Chiarezza
- Abbastanza chiara
- Stato di attività
- Attiva
- Stack tecnologico
- typescript
Direzione di ricerca
Start in apps/web/app/lib/github/fetch-github-skill.ts around lines 149 and 159, then compare the corresponding scan path in scan-github-repo.ts. Trace how colliding slugs are registered, rendered by search, and resolved by the CLI, including the source of the observed -ill-md suffix. Re-run skillx search "ui ux design" and GET /api/search?q=ui%20ux%20design; done means distinct stable identifiers and distinguishable results for both skills.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
Searching for ui ux design returns two rows that render identically, with nothing to tell them apart:
SKILL CATEGORY RATING
YPYT1/ui-ux-pro-max testing ⭐ 6.0
YPYT1/ui-ux-pro-max testing ⭐ 6.0
Reproducible on every run (3/3), via both skillx search "ui ux design" and GET /api/search?q=ui%20ux%20design.
They are not duplicates — they are two different skills that collided
The API returns 20 distinct slugs; the collision is in what gets displayed:
| slug | source_url |
created |
|---|---|---|
ypyt1-ui-ux-pro-max |
…/All-skills/tree/main/skills/_local/clawd-skills/ui-ux-pro-max |
2026-02-12T13:12:21Z |
ypyt1-ui-ux-pro-max-ill-md |
…/All-skills/tree/main/skills/ui-ux-pro-max |
2026-02-12T13:14:56Z |
Both live in YPYT1/All-skills under folders named ui-ux-pro-max, at different depths. Registration two and a half minutes apart, i.e. one scan pass over the repo.
Root cause: the slug carries no path information
apps/web/app/lib/github/fetch-github-skill.ts:159
const slug = `${owner}-${skillName}`.toLowerCase();
where skillName is only the last path segment (fetch-github-skill.ts:149, and identically scan-github-repo.ts for the scan path, which takes the parent folder name). Two skills in one repo whose folders share a name therefore produce the same slug, and name + author — the two fields the table renders — are identical as well.
The second registration was given the suffix -ill-md, which looks like SKILL.md with its first two characters lost. I could not locate the code that produces that suffix, so I am reporting the string as observed rather than guessing at the mechanism — but whatever writes it, -ill-md is not a meaningful disambiguator, and it becomes part of the skill's permanent public identity.
Not an isolated record
Sampling the marketplace through /api/search across 8 queries (ui ux design, testing, react, database, security, documentation, agent, python) surfaced 159 distinct skills, of which 29 carry an -ill-md slug — roughly one in five. Examples:
hookvibe-ui-ux-pro-max-ill-md
jeremylongshore-cloud-security-posture-ill-md
jeremylongshore-database-schema-designer-ill-md
leenbaksh-database-skill-ill-md
practical-stack-meta-agent-ill-md
Creation timestamps for the mangled and the normal records span the same window (2026-02-12 – 2026-02-13), so this does not look like a single bad batch.
Impact
- Search results contain rows a user cannot distinguish or choose between.
skillx use author/skillresolves two-part identifiers to the slugauthor-skill, so it silently reaches only whichever record won the clean slug; the other is addressable only by its mangled slug.- The mangled string is the skill's public identity — in URLs, in
skillx use, and in anything that has already linked to it — so fixing it later is a rename with breakage attached.
Suggested direction
Derive the slug from the full skill path rather than the leaf segment (e.g. owner-skills-local-clawd-skills-ui-ux-pro-max vs owner-skills-ui-ux-pro-max), or keep the leaf and append the distinguishing path segment on collision. Either way the disambiguator should come from the path that actually differs, not from the filename. Rendering the distinguishing part of source_url in the results table would also let a user pick between two same-named skills.
Found while exercising the CLI against the live marketplace; slug construction verified against the repo at main.
- Lingua principale
- TypeScript
- Stelle
- 189
- Fork
- 40
- Merge medio
- 7h 38m
- PR unite (30g)
- 30
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di nextlevelbuilder/skillx
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 88/100
nextlevelbuilder/skillx#49 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 76/100
nextlevelbuilder/skillx#28 ·
I maintainer di solito rispondono entro 1 giorno
-
refactor
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
nextlevelbuilder/skillx#27 ·
I maintainer di solito rispondono entro 1 giorno
-
Personal-kit API gaps for AgentKit kit publish/syncForse già presa @mrgoonie l’ha presa 3 giorni fa. Aperta
nextlevelbuilder/skillx#88 · 1 commento · 1 assegnatario ·
I maintainer di solito rispondono entro 1 giorno
-
enhancement
Difficoltà 5/5 Più di una settimana Idoneità per principianti 12/100
nextlevelbuilder/skillx#81 ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di nextlevelbuilder/skillx
Issue simili
-
Unsampled pageload span is profiled when profileLifecycle is 'trace' (browser UI profiling)Forse già presa @Jxxunnn l’ha presa oggi. ApertaBrowser Waiting for: Product Owner
Difficoltà 2/5 1-3 ore Idoneità per principianti 82/100
getsentry/sentry-javascript#25497 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
e2e-failure ready-to-code
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
redhat-developer/rhdh-plugin-export-overlays#4438 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
resource: destroying a resource calls AbortController.abort() without a reason, creating an AbortError with a stack trace each timeForse già presa Una pull request collegata a questa issue è aperta o già unita. Apertaarea: core
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
angular/angular#71422 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
bug status: needs triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
facebook/docusaurus#12739 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
factory-active task-identify-harness-labels-done task-identify-issue-type-done
Difficoltà 1/5 1-3 ore Idoneità per principianti 68/100
vercel/ai#23537 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno