A Raycast extension for instantly navigating to Icy Veins World of Warcraft class and spec guides.
I am experimenting with using LLM tools to build projects. This is one such experiment.
Invoke the command by typing iv in Raycast. Pressing Enter with an empty query opens a staged grid: classes first, then specs, then pve / pvp, then the relevant sub-pages. You can still type a direct query like sp pve gear at any point, and the grid will jump to matching guides.
The empty-query grid shows up to three sections in order:
| Section |
Description |
| Recent |
The last guide page you opened (1 slot) |
| Favorites |
Your starred specs — up to 5 (see Favorites) |
| Classes |
All playable classes |
On any spec card, press ⌘K to open the Action Panel and choose "Add to Favorites" (or ⌘F directly). The spec immediately appears in the Favorites section on the home grid. Select the action again to remove it. Up to 5 favorites are stored.
On any spec card, open the Action Panel and choose "Copy Stat Priority". The extension fetches the spec's PvE guide, parses the stat priority list, and copies it to the clipboard (e.g. Mastery > Critical Strike > Haste > Versatility). Results are cached for 1 hour.
Define up to 5 personal text macros in the extension preferences (open via "Manage Custom Macros" in any Action Panel). Each macro has a name and body. On any spec page item, open the Action Panel to see your macros listed — selecting one copies it to the clipboard.
To open extension preferences at any time, use "Manage Custom Macros" from any Action Panel (⚙ gear icon).
All parts are optional and can be typed in any order after the spec. The query is case-insensitive.
| Part |
Examples |
| spec |
sp, shadow priest, bdk, ww, ret |
| mode |
pve, pvp (defaults to PvE when omitted) |
| page |
gear, talents, rotation, guide … |
| You type |
Opens |
sp pve gear |
Shadow Priest › PvE › Gear & Best in Slot |
bdk |
All Blood Death Knight guides (PvE + PvP) |
ret pve talents |
Retribution Paladin › PvE › Spec Builds & Talents |
aug pvp |
Augmentation Evoker › all PvP guides |
ww pvp comps |
Windwalker Monk › PvP › Best Arena Compositions |
sp pve lev |
Shadow Priest › Leveling Guide |
disc resources |
Discipline Priest › Resources |
For the quickest flow, type iv then press Space. Raycast enters inline argument mode — type your full query (e.g. sp pve gear), then press Enter to open the view with results already filtered.
When browsing specs, select any spec card and open the Action Panel (⌘K). The "Copy Stat Priority" action fetches the Icy Veins stat priority page for that spec and copies the priority order (e.g. Mastery > Critical Strike > Haste > Versatility) directly to your clipboard — no browser required. Results are cached for 30 minutes.
| Spec |
Short aliases |
| Blood |
bdk, blood dk |
| Frost |
fdk, frost dk |
| Unholy |
uhdk, uh dk, unholy dk |
| Spec |
Short aliases |
| Devourer (new) |
devourer, devourer dh |
| Havoc |
havoc, havoc dh |
| Vengeance |
vdh, vengeance dh |
| Spec |
Short aliases |
| Balance |
bala, boomkin, boomy, balance |
| Feral |
feral, cat druid |
| Guardian |
guardian, bear druid |
| Restoration |
rdru, resto druid |
| Spec |
Short aliases |
| Augmentation |
aug, aug evoker |
| Devastation |
dev, dev evoker |
| Preservation |
pres, pres evoker |
| Spec |
Short aliases |
| Beast Mastery |
bm, bm hunter |
| Marksmanship |
mm, mm hunter |
| Survival |
surv, survival |
| Spec |
Short aliases |
| Arcane |
arcane |
| Fire |
fire |
| Frost |
fmage, frost mag |
| Spec |
Short aliases |
| Brewmaster |
brew, brew monk |
| Mistweaver |
mw, mw monk |
| Windwalker |
ww, ww monk |
| Spec |
Short aliases |
| Holy |
hpal, holy pala |
| Protection |
prot pala, prot paladin |
| Retribution |
ret, ret pala, ret paladin |
| Spec |
Short aliases |
| Discipline |
disc, disc priest |
| Holy |
hpriest, holy priest |
| Shadow |
sp, shadow priest |
| Spec |
Short aliases |
| Assassination |
sin, sin rogue |
| Outlaw |
outlaw |
| Subtlety |
sub, sub rogue |
| Spec |
Short aliases |
| Elemental |
ele, ele shaman |
| Enhancement |
enh, enh shaman |
| Restoration |
rsham, resto shaman |
| Spec |
Short aliases |
| Affliction |
affli, affli warlock |
| Demonology |
demo, demo warlock |
| Destruction |
destro, destro warlock |
| Spec |
Short aliases |
| Arms |
arms |
| Fury |
fury |
| Protection |
prot war, prot warrior |
| Page |
Aliases |
| Guide (intro) |
guide, intro (or omit) |
| Leveling Guide |
leveling |
| Easy Mode |
easy |
| Spec Builds & Talents |
talents, build |
| Rotation, Cooldowns & Abilities |
rotation, cooldowns, abilities |
| Stat Priority |
stats, priority |
| Gems, Enchants & Consumables |
gems, enchants, consumables |
| Gear & Best in Slot |
gear, bis |
| Mythic+ Tips |
mythic, m+, tips |
| Spell Summary |
spells, glossary |
| Page |
Aliases |
| PvP Guide (intro) |
guide, intro (or omit) |
| Talents & Builds |
talents, build |
| Gear & Trinkets |
gear, bis |
| Rotation & Playstyle |
rotation, cooldowns, abilities |
| Battleground Blitz |
bg, battleground, blitz |
| Best Arena Compositions |
comps, comp, compositions |
| Useful Macros |
macros |
| Best Races & Racials |
races |
| Page |
Aliases |
| Resources |
resources |
npm install # install dependencies
npm test # run test suite (vitest)
npm run build # build the extension
npm run lint # lint + format check
npm run fix-lint # auto-fix formatting
npm run dev # start dev server (ray develop)
npm run generate-icons # composite role badges onto spec icons (see below)
Spec icons displayed in the grid are pre-composited at build time — each base spec icon has a small role badge (DPS / Tank / Healer) composited into the bottom-right corner. The output is written to assets/icons/with-role/ and committed to the repository.
Re-run this script whenever:
- A new spec is added to
src/data/specs.ts
- The role badge images (
assets/icons/dps.png, tank.png, healer.png) are replaced
- A spec's
pveRole changes
The script reads spec slugs and roles directly from src/data/specs.ts, then uses sharp to composite each badge at 25% icon size with 25px margin. Commit the updated assets/icons/with-role/ files after running.
src/
iv.tsx # Raycast command entry point
types.ts # shared TypeScript interfaces
data/
classes.ts # all WoW classes with slugs and aliases
specs.ts # all 40 specs with slugs, aliases, and roles
pages.ts # PvE / PvP / any page definitions
utils/
urlBuilder.ts # URL construction
gridNavigation.ts # query → grid state resolver
suggestions.ts # live autocomplete engine
specMatcher.ts # shared spec/class matching helpers
text.ts # shared string utilities
specUsage.ts # tracks spec selection frequency
statPriority.ts # fetches and parses stat priority from guides
favorites.ts # LocalStorage-backed favorites
recents.ts # LocalStorage-backed recent guide entries
macros.ts # parses and expands custom macros
__tests__/
data.test.ts
gridNavigation.test.ts
suggestions.test.ts
favorites.test.ts
recents.test.ts
macros.test.ts
assets/
extension-icon.png # Icy Veins favicon (512×512)
icons/ # per-spec WoW icons (40 × .jpg)
with-role/ # composited icons with role badge (bottom-right)
dps.png / tank.png / healer.png
scripts/
generate-role-icons.mjs # composites role badges onto spec icons (run via npm run generate-icons)