From a1343ea4f5fe3fa4df03584f845779891f3a566d Mon Sep 17 00:00:00 2001 From: Chris Farhood Date: Sat, 11 Apr 2026 07:31:27 -0400 Subject: [PATCH] fix(skills): use acceptedSkills instead of listFull; cross-source slug check - Replace redundant listFull() call with acceptedSkills to avoid extra DB round-trip - Check slug conflicts against full acceptedSkills list instead of just same-source skills - Call upsertAcceptedSkill after persisting to keep in-memory list current Co-Authored-By: Claude Opus 4.6 --- server/src/services/company-skills.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/server/src/services/company-skills.ts b/server/src/services/company-skills.ts index 89c1979e..75e9bd1b 100644 --- a/server/src/services/company-skills.ts +++ b/server/src/services/company-skills.ts @@ -2017,7 +2017,7 @@ export function companySkillService(db: Db) { } // Re-scan GitHub/sks_sh sources to pick up newly added skills - const existingSkills = await listFull(companyId); + const existingSkills = acceptedSkills; const sourceByLocator = new Map(); for (const skill of existingSkills) { if (skill.sourceType !== "github" && skill.sourceType !== "skills_sh") continue; @@ -2030,12 +2030,15 @@ export function companySkillService(db: Db) { try { const result = await readUrlSkillImports(companyId, sourceLocator, null); for (const nextSkill of result.skills) { - const existing = skillsAtSource.find((s) => s.slug === nextSkill.slug); + const existing = acceptedSkills.find((s) => s.slug === nextSkill.slug); if (!existing) { // New skill discovered — derive key and upsert nextSkill.key = deriveCanonicalSkillKey(companyId, nextSkill); const persisted = (await upsertImportedSkills(companyId, [nextSkill]))[0]; - if (persisted) imported.push(persisted); + if (persisted) { + imported.push(persisted); + upsertAcceptedSkill(persisted); + } } } } catch {