diff --git a/data/aliases.json b/data/aliases.json index c585b759..c25dad23 100644 --- a/data/aliases.json +++ b/data/aliases.json @@ -102,6 +102,7 @@ "startup-business-projections": "startup-business-analyst-financial-projections", "startup-business-opportunity": "startup-business-analyst-market-opportunity", "systems-programming-project": "systems-programming-rust-project", - "team-collaboration-notes": "team-collaboration-standup-notes" + "team-collaboration-notes": "team-collaboration-standup-notes", + "shopify—development": "shopify-development" } } \ No newline at end of file diff --git a/scripts/build-catalog.js b/scripts/build-catalog.js index 5696b20c..4dd05588 100644 --- a/scripts/build-catalog.js +++ b/scripts/build-catalog.js @@ -480,6 +480,11 @@ function buildTriggers(skill, tags) { return unique([...tags, ...tokens]).slice(0, 12); } +/** Common typo aliases (e.g. em dash — instead of hyphen -) for skill lookup. */ +const TYPO_ALIASES = { + "shopify—development": "shopify-development", +}; + function buildAliases(skills) { const existingIds = new Set(skills.map((skill) => skill.id)); const aliases = {}; @@ -518,6 +523,12 @@ function buildAliases(skills) { used.add(alias); } + for (const [typo, canonicalId] of Object.entries(TYPO_ALIASES)) { + if (existingIds.has(canonicalId) && !aliases[typo]) { + aliases[typo] = canonicalId; + } + } + return aliases; }