{
  "schemaVersion": 1,
  "datasetVersion": "1.0.0",
  "clientBuild": "1.60.1.70205",
  "locale": "enUS",
  "checkedAt": "2026-10-03",
  "coverage": "18 documented patterns across nine classes; no in-game execution receipts",
  "macroCharacterLimit": 255,
  "classes": [
    {
      "id": 1,
      "slug": "warrior",
      "name": "Warrior"
    },
    {
      "id": 2,
      "slug": "paladin",
      "name": "Paladin"
    },
    {
      "id": 3,
      "slug": "hunter",
      "name": "Hunter"
    },
    {
      "id": 4,
      "slug": "rogue",
      "name": "Rogue"
    },
    {
      "id": 5,
      "slug": "priest",
      "name": "Priest"
    },
    {
      "id": 7,
      "slug": "shaman",
      "name": "Shaman"
    },
    {
      "id": 8,
      "slug": "mage",
      "name": "Mage"
    },
    {
      "id": 9,
      "slug": "warlock",
      "name": "Warlock"
    },
    {
      "id": 11,
      "slug": "druid",
      "name": "Druid"
    }
  ],
  "sources": [
    {
      "id": "client",
      "name": "Forever beta 1.60.1.70205 client snapshot",
      "url": "https://wowforeverguides.com/data/macros/v1.json",
      "kind": "client",
      "checkedAt": "2026-10-03",
      "locators": [
        "DBFilesClient/SpellName.db2",
        "DBFilesClient/SkillLineAbility.db2",
        "DBFilesClient/ChrClasses.db2",
        "Blizzard_ChatFrameBase/Shared/SlashCommands.lua:348-387,661-669,1259-1269",
        "Blizzard_MacroUI/Blizzard_MacroUI.xml:123",
        "Blizzard_MacroUI/Blizzard_MacroUI.lua:362-368",
        "Blizzard_MacroUI/Blizzard_MacroIconSelector.lua:MacroPopupFrameMixin.OkayButton_OnClick",
        "DBFilesClient/GlobalStrings.db2:MACRO_HELP_TEXT_LINE2,MACRO_HELP_TEXT_LINE4,MACRO_HELP_TEXT_LINE5,SLASH_MACRO1,SLASH_CAST1,SLASH_STARTATTACK1,SLASH_PET_ATTACK1"
      ]
    },
    {
      "id": "templates",
      "name": "Useful Macro Templates (community forum)",
      "url": "https://us.forums.blizzard.com/en/wow/t/useful-macro-templates/42937",
      "kind": "community-documentation",
      "checkedAt": "2026-10-03",
      "locator": "Post 1: Helpful Mouseover, Harmful Mouseover, Multi-modifier Mouseover"
    },
    {
      "id": "question",
      "name": "Macro question (community explanation)",
      "url": "https://us.forums.blizzard.com/en/wow/t/macro-question/1315443",
      "kind": "community-documentation",
      "checkedAt": "2026-10-03",
      "locator": "Post 2: left-to-right conditions, help/harm and mouseover"
    },
    {
      "id": "startattack",
      "name": "Rogue startattack macro (Classic community example)",
      "url": "https://us.forums.blizzard.com/en/wow/t/rogue-startattack-macro/288154",
      "kind": "community-documentation",
      "checkedAt": "2026-10-03",
      "locator": "Post 5: #showtooltip, /startattack and /cast Sinister Strike"
    },
    {
      "id": "pet-report",
      "name": "Forever beta Voidwalker petattack report",
      "url": "https://us.forums.blizzard.com/en/wow/t/warlock-petattack-behavior-bug-voidwalker-returns-to-me-while-chain-pulling/2365631",
      "kind": "beta-player-report",
      "checkedAt": "2026-10-03",
      "locator": "Post 1: mouseover /petattack reproduction and pet returning while chain pulling"
    },
    {
      "id": "ui-report",
      "name": "Forever beta macro UI discussion",
      "url": "https://us.forums.blizzard.com/en/wow/t/still-cannot-use-macros/2361658",
      "kind": "beta-player-report",
      "checkedAt": "2026-10-03",
      "locator": "Posts 1-5: New, Save, and later working macros"
    }
  ],
  "macros": [
    {
      "id": "warrior-melee",
      "class": "warrior",
      "title": "Begin melee and use Heroic Strike",
      "code": "#showtooltip Heroic Strike\n/startattack [harm,nodead]\n/cast [harm,nodead] Heroic Strike",
      "action": "Start melee auto-attacking your living hostile target and attempt Heroic Strike.",
      "prerequisites": "Learn Heroic Strike, equip a usable melee weapon and have the required Rage.",
      "constraints": "Auto-attack can begin even when Heroic Strike fails. This can pull a target; it does not choose a stance or generate Rage.",
      "spells": [
        {
          "id": 78,
          "name": "Heroic Strike",
          "locator": "SpellName ID 78",
          "abilityRows": [
            {
              "id": 1401,
              "classMask": 1,
              "skillLine": 26,
              "acquireMethod": 2
            }
          ]
        }
      ],
      "sourceIds": [
        "client",
        "startattack",
        "question"
      ],
      "checkedAt": "2026-10-03",
      "evidence": "documentation-pattern",
      "syntaxCheck": {
        "status": "structural-check",
        "checkedAt": "2026-10-03",
        "description": "Command allowlist, bracket/option shape, exact enUS spell names and 255-character UI limit; not the game parser."
      },
      "execution": {
        "status": "not-run",
        "receipt": null
      }
    },
    {
      "id": "warrior-hamstring",
      "class": "warrior",
      "title": "Mouseover Hamstring",
      "code": "#showtooltip Hamstring\n/cast [@mouseover,harm,nodead][harm,nodead] Hamstring",
      "action": "Attempt the spell on a living hostile mouseover, otherwise your living hostile target.",
      "prerequisites": "Learn Hamstring; meet its weapon, stance and Rage requirements.",
      "constraints": "No valid hostile unit means no cast. A matching mouseover can fail range, line of sight or spell restrictions without falling through to your target.",
      "spells": [
        {
          "id": 1715,
          "name": "Hamstring",
          "locator": "SpellName ID 1715",
          "abilityRows": [
            {
              "id": 3995,
              "classMask": 1,
              "skillLine": 26,
              "acquireMethod": 0
            }
          ]
        }
      ],
      "sourceIds": [
        "client",
        "templates",
        "question"
      ],
      "checkedAt": "2026-10-03",
      "evidence": "documentation-pattern",
      "syntaxCheck": {
        "status": "structural-check",
        "checkedAt": "2026-10-03",
        "description": "Command allowlist, bracket/option shape, exact enUS spell names and 255-character UI limit; not the game parser."
      },
      "execution": {
        "status": "not-run",
        "receipt": null
      }
    },
    {
      "id": "paladin-heal",
      "class": "paladin",
      "title": "Mouseover Holy Light",
      "code": "#showtooltip Holy Light\n/cast [@mouseover,help,nodead][help,nodead][@player] Holy Light",
      "action": "Attempt the spell on a living friendly mouseover, then a living friendly target, then yourself.",
      "prerequisites": "Learn Holy Light. Hover a friendly unit or unit frame; use a keybind to keep the pointer there.",
      "constraints": "A valid mouseover wins even if it is out of range or line of sight; that failure does not try the next target. Resource costs and cast times still apply.",
      "spells": [
        {
          "id": 635,
          "name": "Holy Light",
          "locator": "SpellName ID 635",
          "abilityRows": [
            {
              "id": 6501,
              "classMask": 2,
              "skillLine": 594,
              "acquireMethod": 2
            },
            {
              "id": 59546,
              "classMask": 2,
              "skillLine": 594,
              "acquireMethod": 0
            }
          ]
        }
      ],
      "sourceIds": [
        "client",
        "templates",
        "question"
      ],
      "checkedAt": "2026-10-03",
      "evidence": "documentation-pattern",
      "syntaxCheck": {
        "status": "structural-check",
        "checkedAt": "2026-10-03",
        "description": "Command allowlist, bracket/option shape, exact enUS spell names and 255-character UI limit; not the game parser."
      },
      "execution": {
        "status": "not-run",
        "receipt": null
      }
    },
    {
      "id": "paladin-purify",
      "class": "paladin",
      "title": "Mouseover Purify",
      "code": "#showtooltip Purify\n/cast [@mouseover,help,nodead][help,nodead][@player] Purify",
      "action": "Attempt the spell on a living friendly mouseover, then a living friendly target, then yourself.",
      "prerequisites": "Learn Purify and identify an effect that the spell can remove.",
      "constraints": "The same friendly target priority applies. The macro does not detect debuff type or decide whether a dispel is needed. Range and Mana still matter.",
      "spells": [
        {
          "id": 1152,
          "name": "Purify",
          "locator": "SpellName ID 1152",
          "abilityRows": [
            {
              "id": 6529,
              "classMask": 2,
              "skillLine": 594,
              "acquireMethod": 0
            }
          ]
        }
      ],
      "sourceIds": [
        "client",
        "templates",
        "question"
      ],
      "checkedAt": "2026-10-03",
      "evidence": "documentation-pattern",
      "syntaxCheck": {
        "status": "structural-check",
        "checkedAt": "2026-10-03",
        "description": "Command allowlist, bracket/option shape, exact enUS spell names and 255-character UI limit; not the game parser."
      },
      "execution": {
        "status": "not-run",
        "receipt": null
      }
    },
    {
      "id": "hunter-mark-pet",
      "class": "hunter",
      "title": "Send your pet and apply Hunter’s Mark",
      "code": "#showtooltip Hunter's Mark\n/petattack [@target,harm,nodead]\n/cast [harm,nodead] Hunter's Mark",
      "action": "Send your active pet at your living hostile target and attempt Hunter’s Mark.",
      "prerequisites": "Learn Hunter’s Mark; summon a living controllable pet for the pet command.",
      "constraints": "The pet can attack even if the mark fails. This pulls the target. Check pet behavior on a safe target; a beta player report describes pets returning during chain pulls.",
      "spells": [
        {
          "id": 1130,
          "name": "Hunter's Mark",
          "locator": "SpellName ID 1130",
          "abilityRows": [
            {
              "id": 7277,
              "classMask": 4,
              "skillLine": 163,
              "acquireMethod": 0
            }
          ]
        }
      ],
      "sourceIds": [
        "client",
        "question",
        "pet-report"
      ],
      "checkedAt": "2026-10-03",
      "evidence": "documentation-pattern",
      "syntaxCheck": {
        "status": "structural-check",
        "checkedAt": "2026-10-03",
        "description": "Command allowlist, bracket/option shape, exact enUS spell names and 255-character UI limit; not the game parser."
      },
      "execution": {
        "status": "not-run",
        "receipt": null
      }
    },
    {
      "id": "hunter-mend",
      "class": "hunter",
      "title": "Mend your pet",
      "code": "#showtooltip Mend Pet\n/cast Mend Pet",
      "action": "Attempt Mend Pet with the usual spell targeting.",
      "prerequisites": "Learn Mend Pet and have an active living pet.",
      "constraints": "This simple button does not summon or revive a pet. Use the spell’s normal range and channel/cast requirements.",
      "spells": [
        {
          "id": 136,
          "name": "Mend Pet",
          "locator": "SpellName ID 136",
          "abilityRows": [
            {
              "id": 7260,
              "classMask": 4,
              "skillLine": 50,
              "acquireMethod": 0
            }
          ]
        }
      ],
      "sourceIds": [
        "client",
        "question"
      ],
      "checkedAt": "2026-10-03",
      "evidence": "documentation-pattern",
      "syntaxCheck": {
        "status": "structural-check",
        "checkedAt": "2026-10-03",
        "description": "Command allowlist, bracket/option shape, exact enUS spell names and 255-character UI limit; not the game parser."
      },
      "execution": {
        "status": "not-run",
        "receipt": null
      }
    },
    {
      "id": "rogue-melee",
      "class": "rogue",
      "title": "Begin melee and use Sinister Strike",
      "code": "#showtooltip Sinister Strike\n/startattack [harm,nodead]\n/cast [harm,nodead] Sinister Strike",
      "action": "Start melee auto-attacking your living hostile target and attempt Sinister Strike.",
      "prerequisites": "Learn Sinister Strike, equip a usable weapon and have the required Energy.",
      "constraints": "Auto-attack can begin when the strike cannot. This may break your intended approach or pull the target; it is not a stealth opener.",
      "spells": [
        {
          "id": 1752,
          "name": "Sinister Strike",
          "locator": "SpellName ID 1752",
          "abilityRows": [
            {
              "id": 3395,
              "classMask": 8,
              "skillLine": 38,
              "acquireMethod": 2
            }
          ]
        }
      ],
      "sourceIds": [
        "client",
        "startattack",
        "question"
      ],
      "checkedAt": "2026-10-03",
      "evidence": "documentation-pattern",
      "syntaxCheck": {
        "status": "structural-check",
        "checkedAt": "2026-10-03",
        "description": "Command allowlist, bracket/option shape, exact enUS spell names and 255-character UI limit; not the game parser."
      },
      "execution": {
        "status": "not-run",
        "receipt": null
      }
    },
    {
      "id": "rogue-gouge",
      "class": "rogue",
      "title": "Mouseover Gouge",
      "code": "#showtooltip Gouge\n/cast [@mouseover,harm,nodead][harm,nodead] Gouge",
      "action": "Attempt the spell on a living hostile mouseover, otherwise your living hostile target.",
      "prerequisites": "Learn Gouge; meet its position, weapon and Energy requirements.",
      "constraints": "No valid hostile unit means no cast. A matching mouseover can fail range, line of sight or spell restrictions without falling through to your target. Existing damage can still interfere with the crowd control.",
      "spells": [
        {
          "id": 1776,
          "name": "Gouge",
          "locator": "SpellName ID 1776",
          "abilityRows": [
            {
              "id": 3394,
              "classMask": 8,
              "skillLine": 38,
              "acquireMethod": 0
            }
          ]
        }
      ],
      "sourceIds": [
        "client",
        "templates",
        "question"
      ],
      "checkedAt": "2026-10-03",
      "evidence": "documentation-pattern",
      "syntaxCheck": {
        "status": "structural-check",
        "checkedAt": "2026-10-03",
        "description": "Command allowlist, bracket/option shape, exact enUS spell names and 255-character UI limit; not the game parser."
      },
      "execution": {
        "status": "not-run",
        "receipt": null
      }
    },
    {
      "id": "priest-heal",
      "class": "priest",
      "title": "Mouseover Lesser Heal",
      "code": "#showtooltip Lesser Heal\n/cast [@mouseover,help,nodead][help,nodead][@player] Lesser Heal",
      "action": "Attempt the spell on a living friendly mouseover, then a living friendly target, then yourself.",
      "prerequisites": "Learn Lesser Heal; use a keybind while hovering a friendly frame or unit.",
      "constraints": "A valid mouseover wins even if it is out of range or line of sight; that failure does not try the next target. Resource costs and cast times still apply.",
      "spells": [
        {
          "id": 2050,
          "name": "Lesser Heal",
          "locator": "SpellName ID 2050",
          "abilityRows": [
            {
              "id": 2313,
              "classMask": 16,
              "skillLine": 56,
              "acquireMethod": 2
            }
          ]
        }
      ],
      "sourceIds": [
        "client",
        "templates",
        "question"
      ],
      "checkedAt": "2026-10-03",
      "evidence": "documentation-pattern",
      "syntaxCheck": {
        "status": "structural-check",
        "checkedAt": "2026-10-03",
        "description": "Command allowlist, bracket/option shape, exact enUS spell names and 255-character UI limit; not the game parser."
      },
      "execution": {
        "status": "not-run",
        "receipt": null
      }
    },
    {
      "id": "priest-renew",
      "class": "priest",
      "title": "Mouseover Renew",
      "code": "#showtooltip Renew\n/cast [@mouseover,help,nodead][help,nodead][@player] Renew",
      "action": "Attempt the spell on a living friendly mouseover, then a living friendly target, then yourself.",
      "prerequisites": "Learn Renew; choose a living friendly unit.",
      "constraints": "A valid mouseover wins even if it is out of range or line of sight; that failure does not try the next target. Resource costs and cast times still apply. The macro does not check whether Renew is already active.",
      "spells": [
        {
          "id": 139,
          "name": "Renew",
          "locator": "SpellName ID 139",
          "abilityRows": [
            {
              "id": 3790,
              "classMask": 16,
              "skillLine": 56,
              "acquireMethod": 0
            }
          ]
        }
      ],
      "sourceIds": [
        "client",
        "templates",
        "question"
      ],
      "checkedAt": "2026-10-03",
      "evidence": "documentation-pattern",
      "syntaxCheck": {
        "status": "structural-check",
        "checkedAt": "2026-10-03",
        "description": "Command allowlist, bracket/option shape, exact enUS spell names and 255-character UI limit; not the game parser."
      },
      "execution": {
        "status": "not-run",
        "receipt": null
      }
    },
    {
      "id": "shaman-heal",
      "class": "shaman",
      "title": "Mouseover Healing Wave",
      "code": "#showtooltip Healing Wave\n/cast [@mouseover,help,nodead][help,nodead][@player] Healing Wave",
      "action": "Attempt the spell on a living friendly mouseover, then a living friendly target, then yourself.",
      "prerequisites": "Learn Healing Wave; use a keybind while hovering a friendly frame or unit.",
      "constraints": "A valid mouseover wins even if it is out of range or line of sight; that failure does not try the next target. Resource costs and cast times still apply.",
      "spells": [
        {
          "id": 331,
          "name": "Healing Wave",
          "locator": "SpellName ID 331",
          "abilityRows": [
            {
              "id": 4492,
              "classMask": 64,
              "skillLine": 374,
              "acquireMethod": 2
            }
          ]
        }
      ],
      "sourceIds": [
        "client",
        "templates",
        "question"
      ],
      "checkedAt": "2026-10-03",
      "evidence": "documentation-pattern",
      "syntaxCheck": {
        "status": "structural-check",
        "checkedAt": "2026-10-03",
        "description": "Command allowlist, bracket/option shape, exact enUS spell names and 255-character UI limit; not the game parser."
      },
      "execution": {
        "status": "not-run",
        "receipt": null
      }
    },
    {
      "id": "shaman-lightning",
      "class": "shaman",
      "title": "Mouseover Lightning Bolt",
      "code": "#showtooltip Lightning Bolt\n/cast [@mouseover,harm,nodead][harm,nodead] Lightning Bolt",
      "action": "Attempt the spell on a living hostile mouseover, otherwise your living hostile target.",
      "prerequisites": "Learn Lightning Bolt and have enough Mana.",
      "constraints": "No valid hostile unit means no cast. A matching mouseover can fail range, line of sight or spell restrictions without falling through to your target. Casting the spell can pull the target.",
      "spells": [
        {
          "id": 403,
          "name": "Lightning Bolt",
          "locator": "SpellName ID 403",
          "abilityRows": [
            {
              "id": 8714,
              "classMask": 64,
              "skillLine": 375,
              "acquireMethod": 2
            }
          ]
        }
      ],
      "sourceIds": [
        "client",
        "templates",
        "question"
      ],
      "checkedAt": "2026-10-03",
      "evidence": "documentation-pattern",
      "syntaxCheck": {
        "status": "structural-check",
        "checkedAt": "2026-10-03",
        "description": "Command allowlist, bracket/option shape, exact enUS spell names and 255-character UI limit; not the game parser."
      },
      "execution": {
        "status": "not-run",
        "receipt": null
      }
    },
    {
      "id": "mage-frostbolt",
      "class": "mage",
      "title": "Mouseover Frostbolt",
      "code": "#showtooltip Frostbolt\n/cast [@mouseover,harm,nodead][harm,nodead] Frostbolt",
      "action": "Attempt the spell on a living hostile mouseover, otherwise your living hostile target.",
      "prerequisites": "Learn Frostbolt and have enough Mana.",
      "constraints": "No valid hostile unit means no cast. A matching mouseover can fail range, line of sight or spell restrictions without falling through to your target. This starts a normal cast, rather than casting while moving.",
      "spells": [
        {
          "id": 116,
          "name": "Frostbolt",
          "locator": "SpellName ID 116",
          "abilityRows": [
            {
              "id": 69,
              "classMask": 128,
              "skillLine": 6,
              "acquireMethod": 0
            }
          ]
        }
      ],
      "sourceIds": [
        "client",
        "templates",
        "question"
      ],
      "checkedAt": "2026-10-03",
      "evidence": "documentation-pattern",
      "syntaxCheck": {
        "status": "structural-check",
        "checkedAt": "2026-10-03",
        "description": "Command allowlist, bracket/option shape, exact enUS spell names and 255-character UI limit; not the game parser."
      },
      "execution": {
        "status": "not-run",
        "receipt": null
      }
    },
    {
      "id": "mage-modifier",
      "class": "mage",
      "title": "Shift for Fireball; otherwise Frostbolt",
      "code": "#showtooltip\n/cast [mod:shift] Fireball; Frostbolt",
      "action": "Attempt Fireball while holding Shift; otherwise attempt Frostbolt with normal spell targeting.",
      "prerequisites": "Learn both spells. Bind the macro to a key whose Shift combination is not assigned to another action.",
      "constraints": "The first matching option wins; it does not choose by resistance, range or cooldown. A conflicting Shift keybind can prevent this macro from firing.",
      "spells": [
        {
          "id": 133,
          "name": "Fireball",
          "locator": "SpellName ID 133",
          "abilityRows": [
            {
              "id": 455,
              "classMask": 128,
              "skillLine": 8,
              "acquireMethod": 2
            }
          ]
        },
        {
          "id": 116,
          "name": "Frostbolt",
          "locator": "SpellName ID 116",
          "abilityRows": [
            {
              "id": 69,
              "classMask": 128,
              "skillLine": 6,
              "acquireMethod": 0
            }
          ]
        }
      ],
      "sourceIds": [
        "client",
        "templates",
        "question"
      ],
      "checkedAt": "2026-10-03",
      "evidence": "documentation-pattern",
      "syntaxCheck": {
        "status": "structural-check",
        "checkedAt": "2026-10-03",
        "description": "Command allowlist, bracket/option shape, exact enUS spell names and 255-character UI limit; not the game parser."
      },
      "execution": {
        "status": "not-run",
        "receipt": null
      }
    },
    {
      "id": "warlock-corruption-pet",
      "class": "warlock",
      "title": "Send your demon and apply Corruption",
      "code": "#showtooltip Corruption\n/petattack [@target,harm,nodead]\n/cast [harm,nodead] Corruption",
      "action": "Send your active demon at your living hostile target and attempt Corruption.",
      "prerequisites": "Learn Corruption; summon a living controllable demon for the pet command.",
      "constraints": "The demon can attack when the cast fails. This pulls the target. A beta player report describes a Voidwalker returning during chain pulls; this macro does not fix that behavior.",
      "spells": [
        {
          "id": 172,
          "name": "Corruption",
          "locator": "SpellName ID 172",
          "abilityRows": [
            {
              "id": 10144,
              "classMask": 256,
              "skillLine": 355,
              "acquireMethod": 0
            }
          ]
        }
      ],
      "sourceIds": [
        "client",
        "question",
        "pet-report"
      ],
      "checkedAt": "2026-10-03",
      "evidence": "documentation-pattern",
      "syntaxCheck": {
        "status": "structural-check",
        "checkedAt": "2026-10-03",
        "description": "Command allowlist, bracket/option shape, exact enUS spell names and 255-character UI limit; not the game parser."
      },
      "execution": {
        "status": "not-run",
        "receipt": null
      }
    },
    {
      "id": "warlock-fear",
      "class": "warlock",
      "title": "Mouseover Fear",
      "code": "#showtooltip Fear\n/cast [@mouseover,harm,nodead][harm,nodead] Fear",
      "action": "Attempt the spell on a living hostile mouseover, otherwise your living hostile target.",
      "prerequisites": "Learn Fear; use an eligible hostile unit and have enough Mana.",
      "constraints": "No valid hostile unit means no cast. A matching mouseover can fail range, line of sight or spell restrictions without falling through to your target. Feared enemies can move into other enemies; choose the target carefully.",
      "spells": [
        {
          "id": 5782,
          "name": "Fear",
          "locator": "SpellName ID 5782",
          "abilityRows": [
            {
              "id": 6451,
              "classMask": 256,
              "skillLine": 355,
              "acquireMethod": 0
            }
          ]
        }
      ],
      "sourceIds": [
        "client",
        "templates",
        "question"
      ],
      "checkedAt": "2026-10-03",
      "evidence": "documentation-pattern",
      "syntaxCheck": {
        "status": "structural-check",
        "checkedAt": "2026-10-03",
        "description": "Command allowlist, bracket/option shape, exact enUS spell names and 255-character UI limit; not the game parser."
      },
      "execution": {
        "status": "not-run",
        "receipt": null
      }
    },
    {
      "id": "druid-heal",
      "class": "druid",
      "title": "Mouseover Healing Touch",
      "code": "#showtooltip Healing Touch\n/cast [@mouseover,help,nodead][help,nodead][@player] Healing Touch",
      "action": "Attempt the spell on a living friendly mouseover, then a living friendly target, then yourself.",
      "prerequisites": "Learn Healing Touch and use a form that permits casting it.",
      "constraints": "A valid mouseover wins even if it is out of range or line of sight; that failure does not try the next target. Resource costs and cast times still apply. This macro does not cancel a shapeshift form.",
      "spells": [
        {
          "id": 5185,
          "name": "Healing Touch",
          "locator": "SpellName ID 5185",
          "abilityRows": [
            {
              "id": 6261,
              "classMask": 1024,
              "skillLine": 573,
              "acquireMethod": 2
            }
          ]
        }
      ],
      "sourceIds": [
        "client",
        "templates",
        "question"
      ],
      "checkedAt": "2026-10-03",
      "evidence": "documentation-pattern",
      "syntaxCheck": {
        "status": "structural-check",
        "checkedAt": "2026-10-03",
        "description": "Command allowlist, bracket/option shape, exact enUS spell names and 255-character UI limit; not the game parser."
      },
      "execution": {
        "status": "not-run",
        "receipt": null
      }
    },
    {
      "id": "druid-rejuvenation",
      "class": "druid",
      "title": "Mouseover Rejuvenation",
      "code": "#showtooltip Rejuvenation\n/cast [@mouseover,help,nodead][help,nodead][@player] Rejuvenation",
      "action": "Attempt the spell on a living friendly mouseover, then a living friendly target, then yourself.",
      "prerequisites": "Learn Rejuvenation and use a form that permits casting it.",
      "constraints": "A valid mouseover wins even if it is out of range or line of sight; that failure does not try the next target. Resource costs and cast times still apply. It does not check for an existing Rejuvenation or cancel a form.",
      "spells": [
        {
          "id": 774,
          "name": "Rejuvenation",
          "locator": "SpellName ID 774",
          "abilityRows": [
            {
              "id": 6278,
              "classMask": 1024,
              "skillLine": 573,
              "acquireMethod": 0
            }
          ]
        }
      ],
      "sourceIds": [
        "client",
        "templates",
        "question"
      ],
      "checkedAt": "2026-10-03",
      "evidence": "documentation-pattern",
      "syntaxCheck": {
        "status": "structural-check",
        "checkedAt": "2026-10-03",
        "description": "Command allowlist, bracket/option shape, exact enUS spell names and 255-character UI limit; not the game parser."
      },
      "execution": {
        "status": "not-run",
        "receipt": null
      }
    }
  ]
}
