Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add JBurlison/WoWAddonAPIAgents --skill wow-macro-commandsgit clone --depth 1 https://github.com/JBurlison/WoWAddonAPIAgentsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/jburlison/wowaddonapiagents/wow-macro-commands)<a href="https://agentmods.dev/skills/jburlison/wowaddonapiagents/wow-macro-commands"><img src="https://agentmods.dev/badge/skills/jburlison/wowaddonapiagents/wow-macro-commands.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00000 | $0.02000 |
| Opus 5 | $0.00000 | $0.01000 |
| Sonnet 5 | $0.00000 | $0.00400 |
| Haiku 4.5 | $0.00000 | $0.00200 |
Grade A, and why
wow-macro-commands scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 7d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 202 lines — stays where its author put it; the contents beside it link to each section on GitHub.
---
name: wow-macro-commands
description: "Complete reference for WoW Retail macro commands (slash commands), macro conditionals, macro syntax and options, secure command rules, castsequence, #show/#showtooltip, and conditional targeting. Use when writing macros, explaining /cast, /use, /castsequence, conditionals like [mod], [harm], [help], [@unit], or any slash command behavior."
---
# WoW Macro Commands
Use this skill when writing, explaining, or debugging World of Warcraft macros (slash commands).
> **Source of truth:** https://warcraft.wiki.gg/wiki/Macro_commands
> **Conditionals:** https://warcraft.wiki.gg/wiki/Macro_conditionals
> **Making a Macro:** https://warcraft.wiki.gg/wiki/Making_a_macro
> **Scope:** Retail only.
## What Macros Are
A macro is a list of slash commands executed sequentially from an action bar button. Each command goes on its own line, preceded by `/`. Macros have a **255 character limit**. Commands are **not** case-sensitive. Multiple commands run in a single frame — there is no way to wait or delay between lines.
/y Everybody, dance now! /dance
## Key Concepts
### Macro Execution Rules
- All commands in a macro execute in the **same frame** — no delays.
- You generally cannot cast more than one GCD-triggering spell per macro click.
- Instant spells that do NOT trigger the GCD can chain (e.g., trinket + cooldown + cast).
- If a `/cast` fails, subsequent `/cast` commands in the same macro are blocked.
### Secure vs. Insecure Commands
Only **secure commands** support macro conditionals (`[conditions]`). Insecure commands (chat, emotes) do not. See [references/SYNTAX.md](references/SYNTAX.md) for the full list of secure commands accepted by conditionals.
### The `!` Prefix (Toggle Prevention)
Toggleable abilities (Stealth, Shoot, Mass Dispel ground target) toggle off if `/cast` is pressed again. Prefix with `!` to prevent toggling off:
/cast !Stealth
## Core Commands Quick Reference
| Command | Purpose |
|---------|---------|
| `/cast` (or `/use`) | Cast a spell or use an item by name |
| `/castsequence` | Cast spells in order, advancing each click |
| `/castrandom` (or `/userandom`) | Cast a random spell/item from a list |
| `/stopcasting` | Stop current cast or channel |
| `/cancelaura` | Remove a buff by name |
| `/cancelform` | Leave current shapeshift form |
| `/cancelqueuedspell` | Cancel queued spell |
| `/stopmacro` | Stop processing the current macro (used with conditionals) |
| `/startattack` / `/stopattack` | Toggle auto-attack |
| `/target` | Target a unit by name (closest match) |
| `/targetexact` | Target by exact name match |
| `/focus` / `/clearfocus` | Set or clear focus target |
| `/click` | Simulate a mouse click on a UI button |
| `/equip` / `/equipslot` / `/equipset` | Equip items |
| `/dismount` | Dismount |
| `/script` (or `/run`) | Execute Lua code (insecure — cannot cast spells) |
| `#show` / `#showtooltip` | Control action bar icon and tooltip display |
## Macro Conditionals Overview
Conditionals let you choose parameters based on game state. They only work with secure commands.
**Basic syntax:**
/command [conditions] parameters; [conditions] parameters; ...
Clauses are evaluated left to right. The first true set of conditions executes. A clause with no conditions is always true (acts as "else").
/cast [help] Renew; [harm] Shadow Word: Pain
### Targeting Options (`@unit`)
Temporarily target a unit for this command only — does NOT change your selected target:
- `@player`, `@target`, `@focus`, `@mouseover`, `@party1`, `@raid5`, etc.
- `@cursor` — immediately targets ground under cursor
- `@none` — interrupts auto self-cast, requires targeting cursor
### Common Boolean Conditionals
| Conditional | Description |
|-------------|-------------|
| `exists` | Unit exists |
| `help` / `harm` | Unit can receive helpful/harmful spells |
| `dead` / `nodead` | Unit is dead / alive |
| `combat` / `nocombat` | Player in/out of combat |
| `stealth` / `nostealth` | Player stealthed |
| `mounted` / `nomounted` | Player mounted |
| `swimming` | Player swimming |
| `flying` | Player airborne (mounted/flight form) |
| `flyable` / `advflyable` | Area supports flying / Skyriding |
| `indoors` / `outdoors` | Player location |
| `mod:shift` / `mod:ctrl` / `mod:alt` | Modifier key held |
| `button:1` / `button:2` | Mouse button used (left/right) |
| `group` / `group:raid` / `group:party` | Player in group |
| `spec:1` / `spec:2` | Active spec number |
| `stance:n` / `form:n` | Current stance/form number |
| `known:spell` | Spell is known |
| `equipped:type` | Item type equipped (e.g., `equipped:Shields`) |
| `channeling` / `channeling:spell` | Currently channeling |
| `pet:name` / `pet:family` | Hunter pet by name/family |
| `pvpcombat` | PvP talents are usable |
| `resting` | In rested zone |
| `house:inside` / `house:plot` / `house:editor` / `house:neighborhood` | Housing states (Patch 11.2.7+) |
The `no` prefix inverts any condition: `[nomod]`, `[nodead]`, `[nostealth]`, etc.
See [references/CONDITIONALS.md](references/CONDITIONALS.md) for the complete conditionals reference.
## Castsequence
`/castsequence` advances through a spell list one per click:
/castsequence Immolate, Corruption, Curse of Agony
**Reset conditions** (placed before the spell list):
/castsequence reset=10/target/combat/shift Spell 1, Spell 2, Spell 3
- `reset=N` — reset after N seconds of inactivity
- `reset=target` — reset on target change
- `reset=combat` — reset on leaving combat
- `reset=shift/alt/ctrl` — reset when modifier held
## #show and #showtooltip
Control the action bar button's icon and tooltip. Must be on the first line, lowercase only:
#showtooltip [modifier:shift] Conjure Food; Conjure Water
- `#show` — controls icon only
- `#showtooltip` — controls icon AND tooltip
- Without parameters, uses the first spell WoW auto-detects
- Cannot use both `#show` and `#showtooltip` in the same macro
## Reference Files
| Reference | Contents |
|-----------|----------|
| [SLASH-COMMANDS.md](references/SLASH-COMMANDS.md) | Complete slash command reference organized by category |
| [CONDITIONALS.md](references/CONDITIONALS.md) | Full macro conditionals reference with API equivalents |
| [SYNTAX.md](references/SYNTAX.md) | Macro syntax rules, secure commands list, EBNF grammar |
## Common Macro Patterns
### Mouseover healing with fallback
#showtooltip /cast [@mouseover, help, nodead] [ ] Flash of Light
### Focus crowd control
#showtooltip Polymorph /focus [@focus, noharm] [@focus, dead] [modifier] /stopmacro [@focus, noexists] /cast [@focus] Polymorph
### Modifier-based spell selection
#showtooltip /cast [mod:shift] Healing Word; [mod:ctrl] Power Word: Shield; Heal
### Trinket + cooldown + cast
#showtooltip Pyroblast /use 13 /cast Arcane Power /cast Presence of Mind /cast Pyroblast
### Cancelaura + cast
/cancelaura Ice Block /cast Ice Block
### Equip set swap
/equipset [equipped:Shields] DPS; Tank
## When to Use This Skill
- Writing or debugging WoW macros
- Explaining slash command behavior or syntax
- Working with macro conditionals and targeting
- Understanding secure vs. insecure command restrictions
- Implementing `/castsequence`, `/castrandom`, `#showtooltip`
- Helping with focus, mouseover, or conditional targeting macros
What ships with it
3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 7d ago First seen · 202 lines · 0 tokens per session scan A 12eb9d58aa88
wow-macro-commands is a skill published in the GitHub repository JBurlison/WoWAddonAPIAgents (43 stars, last pushed 6mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 2,000 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
gameobject-component-destroy
Destroy one or more Components from a target GameObject. Missing (null) components are skipped — they cannot be destroyed. Use 'gameobject-find' and 'gameobject-component-get' to identify the components first.
unity-version-split
Split a C# file into Unity 6.5+ and pre-Unity 6.5 variants. Use when a file needs different implementations for different Unity versions due to API changes (e.g., EntityId vs int, GetEntityId vs GetInstanceID).
unity-addressables
Manage Addressables groups, entries, profiles and content builds (com.unity.addressables, reflection-based).
playtest-report
Generates a structured playtest report template or analyzes existing playtest notes into a structured format. Use this to standardize playtest feedback collection and analysis.
unity-manual-component
Manually add, configure, reorder, and copy components on GameObjects using Unity Editor UI. For one-off Inspector workflows that do not need REST automation.
motion
How an agent turns a character mesh into a usable animated FBX — and how to judge whether the result is shippable.