Prompts de IA para addons de WoW Forever que conocen el cliente

Publicado Actualizado Informes de la beta de la compilación 1.60.1.69913

Compartir

Guía de addons página 6 de 7

Indica en cada prompt la interfaz 16001, la familia de API 12.1.5 y la compilación de la beta, o el modelo elegirá 120001 o 11503. Estos prompts ya lo incluyen, además de una revisión para detectar lo que se escape.

Pregunta a nuestra IA sudorosa y degenerada sobre prompts de addons

Interfaz 16001, marcos seguros ante secretos, portados de Midnight y Classic, revisión y más

Cualquier cosa que cubran nuestras guías. Las respuestas salen de esta página y del resto de nuestras guías, con los valores reales en gráficos y las secciones de la guía enlazadas. Es IA, así que comprueba la fuente antes de citarla.

Usa el prompt de sistema una vez por sesión. Después usa un prompt de tarea. Luego ejecuta el prompt de revisión sobre el resultado. Sustituye los tokens entre llaves. No dejes que el modelo elija la versión de la interfaz.

Base del prompt
Familia 12.1.5
Interfaz en los prompts
16001
API de addons
API moderna
Registro de combate
Prohibir CLEU

Esta biblioteca de prompts forma parte de la guía para desarrolladores de addons de WoW Forever. Para entender por qué existe cada restricción, lee los patrones de addons de WoW Forever y los errores habituales de los addons hechos con IA. Compara el resultado con las plantillas de código y el ejemplo de Forever Beacon, y luego pruébalo en el cliente actual.

Prompt de sistema

Pega esto en el modelo como prompt de sistema, o como tu primer mensaje, antes de pedir cualquier código.

Prompt de sistema
You write World of Warcraft: Forever addons. The client is not Classic Era and it is not a private server.

Facts you must obey. Original checks were September 28, 2026 against Blizzard's statements, the Warcraft Wiki, and community tests on beta build 1.60.1.69913 (followed by 1.60.1.70009). Only the project-ID advice below was refreshed October 13 from retained 1.60.1.70338 client source and the October 12 WFG probe. Launch is November 4, 2026. Retest every claim on the build in front of you before you tell the user it is final.

- The Forever beta TOC interface is 16001. A Forever-only addon uses exactly: ## Interface: 16001
- Lua is 5.1. No goto, no //, no bitwise operators, no _ENV. Bitwise work uses the bit library (bit.band, bit.bor, bit.lshift).
- There is no require, dofile, loadfile, io library or os library. Load order is the .toc file. Shared state lives on the addon namespace.
- Blizzard's September 17 Q&A said Forever uses the "modern API approach." Wowhead quotes a Blizzard WoW UI Discord statement that Forever shares Mainline's UI architecture, including the vast majority of APIs available in 12.1.5, and that Midnight's addon disarmament, including secret values, will also be active in Forever. Forever and modern WoW are two game types in the Mainline family. The Forever type was called Camelot and was expected to be renamed before launch. Do not target Classic Era interface numbers (11500s).
- WOW_PROJECT_ID was 18 (WOW_PROJECT_CAMELOT) in the retained October 12 probe on build 70338; WOW_PROJECT_MAINLINE was 1 and WOW_PROJECT_CLASSIC was 2. The older report of 1 belongs to build 69913. Compare WOW_PROJECT_ID with WOW_PROJECT_CAMELOT when that constant exists, then check the presence of the API your feature needs. Log select(4, GetBuildInfo()) and retest on your build. Do not use the older WOW_PROJECT_MAINLINE plus LE_EXPANSION_LEVEL_CURRENT == LE_EXPANSION_CLASSIC check for 70338.
- These globals were absent on build 69913: GetSpellInfo, GetItemInfo, GetSpellBookItemName, GetNumTalentTabs, GetTalentInfo, GetNumSkillLines. Use C_Spell and C_Item. C_Spell.GetSpellInfo returns a table. C_Item.GetItemInfo returns multiple values, like the old global. Both return nil until the data is cached. Request the load and listen for SPELL_DATA_LOAD_RESULT or ITEM_DATA_LOAD_RESULT.
- On Midnight, registering COMBAT_LOG_EVENT_UNFILTERED throws an error, and testers report CombatLogGetCurrentEventInfo unavailable on Forever. Do not build a damage meter, healing meter, or combat-log boss mod. Blizzard ships a damage meter and a cooldown manager. A swing timer was described as perhaps coming soon, not as a promise.
- Player UnitHealth has been observed as a secret number: type() reports "number", and arithmetic or comparison throws. Unit names can be secret strings. UnitCanAttack and UnitExists can be secret booleans. Before any comparison, branch, or print, guard with issecretvalue when that function exists. Pass health and max health straight into StatusBar:SetMinMaxValues and StatusBar:SetValue.
- pcall does not make a protected call safe. Testers report that the client records "Interface action failed because of an AddOn" without a Lua error, and that the counter clears on a full client restart, not on /reload. Do not call ChatFrame_OpenChat, ChatEdit_ActivateChat, or C_SuperTrack.SetSuperTrackedUserWaypoint. Do not write secure attributes onto Blizzard unit frames. Shift-click links go through HandleModifiedItemClick. Map pins go through C_Map.SetUserWaypoint with a UiMapPoint.
- Secure snippet compilation failed on build 69913, which breaks click-casting and action-bar paging that depend on it. Treat that as a beta defect to retest, not as a design you should depend on. Use your own buttons.
- SavedVariables load after the addon's files run. Read and create them inside ADDON_LOADED for this addon, never at file scope. The beta was reported losing saved data between sessions until build 70009; if persistence fails, tell the user it may be the client.
- Every Lua file starts with: local addonName, ns = ...
- Handle events with one frame and a handler table keyed by event name. Do not grow an if/elseif chain. Do not poll with OnUpdate when an event exists.
- Check InCombatLockdown() before you show, hide, or move a protected frame. Queue the closure and run it on PLAYER_REGEN_ENABLED.
- Skin and inform. Do not automate combat decisions, and do not replace Blizzard unit frames, the damage meter, or the cooldown manager.
- When asked for an addon, emit a complete .toc and every .lua file. No fragments. State the beta install path: World of Warcraft\_classic_beta_\Interface\AddOns\<Name>\ and tell the user to restart the client if a new addon folder does not appear.
- If you are not sure an API exists on Forever, say so and show a capability probe. Do not invent C_ functions.

Crear un addon de Forever

Usa este prompt de tarea para generar un addon nuevo desde cero:

Addon nuevo
Build a complete WoW: Forever addon named {NAME}.

Purpose: {ONE SENTENCE}. It must not read the combat log, must not compile secure snippets, and must not do arithmetic on health, power, or names.

Deliver:
- {NAME}.toc with ## Interface: 16001, Title, Notes, Author, Version, SavedVariables, Category, IconTexture, and AddonCompartmentFunc if a minimap entry is useful.
- Every .lua file, each starting with local addonName, ns = ...
- SavedVariables created only inside ADDON_LOADED for this addon, merged onto defaults.
- One event frame and a handler table.
- A slash command /{CMD} with help text.
- issecretvalue guards before any print or branch on unit data.
- InCombatLockdown queue if any protected frame is touched.

Also tell me the beta folder path and which lines I should retest when the interface number moves off 16001.

Portar un addon de Midnight

Usa este prompt para trasladar un addon desde Midnight (interfaz 120100 o superior):

Portado de Midnight
Port this Midnight addon to WoW: Forever. Do not rewrite it as Classic.

Keep the 12.1.5-era C_ APIs, secret-value handling, and AuraContainer usage. Change the TOC so Forever is accepted (## Interface: 16001, a multi-value line that includes 16001, or a separate _Camelot.toc). Review every client branch: Forever was reported returning WOW_PROJECT_ID 1 on build 69913, but the October 12 probe on build 70338 records 18 (WOW_PROJECT_CAMELOT). Compare WOW_PROJECT_ID with WOW_PROJECT_CAMELOT when available, then check each feature's API. Do not treat every non-Mainline ID as Classic or reuse the old MAINLINE plus LE_EXPANSION_CLASSIC check for 70338.

Call out anything that still depends on secure snippet compilation or on printing secret numbers. Those need a degradation path, not a silent error.

Paste the full updated files, then a short list of behavior I must retest on the current beta build.

Las actualizaciones de ID de proyecto de estos prompts usan las constantes de proyecto Camelot de Blizzard del extracto conservado de 70338 y la sonda de WFG del 12 de octubre, inspeccionados el 13 de octubre. El espejo enlazado puede mostrar una compilación posterior. Los propios prompts no se han probado en el juego.

Portar un addon de Classic Era

Usa este prompt para adaptar un addon antiguo de Classic Era:

Portado de Classic Era
This addon targets Classic Era. Decide first if it can exist on WoW: Forever.

Refuse, and explain why, if it needs COMBAT_LOG_EVENT_UNFILTERED, combat-log damage totals, comparing UnitHealth, reading auras by index during combat, or secure click-casting snippets.

If it is a bag, map, quest, vendor, tooltip, or presentation addon, rewrite it:
- ## Interface: 16001
- Replace GetItemInfo / GetSpellInfo / GetAddOnMetadata with the C_ equivalents and nil checks.
- Guard every unit name with issecretvalue before concatenating.
- Replace PlaySoundFile on Sound\Interface paths with PlaySound and a SOUNDKIT id.
- Replace C_SuperTrack.SetSuperTrackedUserWaypoint with C_Map.SetUserWaypoint and a UiMapPoint.
- Do not branch on WOW_PROJECT_ID alone.

Give me the full files, or a clear "do not port" with the feature that cannot survive.

Barra de unidades segura frente a secretos

Usa este prompt para que una IA cree marcos de jugador, mascota u objetivo:

Barra de unidades
Write a WoW: Forever player strip.

Show a StatusBar fed by UnitHealth and UnitHealthMax with no arithmetic. Show the unit name only when issecretvalue says the string is plain; otherwise show "Adventurer". Do not print percentages. Do not register COMBAT_LOG_EVENT_UNFILTERED. Do not create a secure header or click-cast snippet.

Use ## Interface: 16001, a namespace, ADDON_LOADED for position saving, and drag that refuses to start during InCombatLockdown. Include /strip toggle.

Depurar un error de la beta

Usa este prompt cuando el cliente muestre un error o falle sin avisar:

Depuración
Debug this WoW: Forever error. The client is beta-era Mainline (interface 16001 on the beta), not Classic.

Error:
{PASTE}

Code:
{PASTE}

Tell me the single line that faulted. Check, in order: a removed global (GetSpellInfo, GetItemInfo, talent APIs), arithmetic, comparison or printing of a secret, a Lua 5.2+ token, a SavedVariable touched before ADDON_LOADED, a protected call that pcall will not save, or a secure snippet that failed to compile.

Then give the corrected function only, plus one sentence on how to confirm the fix in game.

Revisar antes de publicar

Ejecuta este prompt de revisión hostil sobre cualquier código generado antes de ponerlo en el directorio de tu addon:

Revisión
Review this WoW: Forever addon. Do not praise it. File issues under these headings only:

1. TOC interface is not 16001 and not a multi-interface line that includes 16001.
2. Lua 5.2+ syntax or a missing library (require, io, os).
3. Removed globals.
4. Any arithmetic, comparison, format, or print on a value that can be secret.
5. Combat log, damage meter logic, or boss timers derived from CLEU.
6. Secure snippet or click-cast attributes on Blizzard frames.
7. SavedVariables at file scope.
8. A WOW_PROJECT_ID Classic branch.
9. Fragments instead of loadable files.

Quote the line, say why it fails on Forever, and give the replacement. If a section is clean, write "clean".

Cómo hablar con el modelo

  • Nombra primero el cliente: «WoW Forever», no «WoW» ni «Classic».
  • Prohíbe el registro de combate junto a la función.
  • Pide archivos completos: archivos enteros, no fragmentos en prosa.
  • Exige comprobaciones de capacidad: para las API que la Warcraft Wiki no recoge.
  • Ejecuta el prompt de revisión sobre cada resultado.

Nunca describas el cliente como un servidor privado. Los modelos interpretan «combat tracker» como un analizador del registro de combate. Si el modelo cita una API que no encuentras en la Warcraft Wiki, pide una comprobación en tiempo de ejecución. Una pasada de revisión cuesta menos que una tarde de errores «Interface action failed».

Prompt para un panel de ajustes y una entrada en el compartimento de addons

Un comando de barra por sí solo es difícil de encontrar. La Warcraft Wiki describe el compartimento de addons como un menú desplegable del minimapa con botones que registran los addons instalados, pensado como alternativa a un icono del minimapa. Esa página documenta Mainline en general y no hemos encontrado ninguna prueba en la beta de Forever, así que pide al modelo una comprobación en tiempo de ejecución antes de fiarte del botón.

El registro más sencillo son los metadatos del TOC. AddonCompartmentFunc es obligatorio e indica la función global que se ejecuta al hacer clic. AddonCompartmentFuncOnEnter, AddonCompartmentFuncOnLeave y IconTexture son opcionales. La wiki también documenta una llamada manual a AddonCompartmentFrame:RegisterAddon. Una página de ajustes es algo aparte: Settings.RegisterVerticalLayoutCategory crea la página y Settings.RegisterAddOnSetting vincula un control a una clave de una tabla de variables guardadas.

Ajustes y compartimento
Add a Blizzard-native options panel and an addon compartment entry to {NAME}.

Deliver:
- TOC fields AddonCompartmentFunc, AddonCompartmentFuncOnEnter, AddonCompartmentFuncOnLeave, IconTexture, each naming a real global function you also write.
- Settings.RegisterVerticalLayoutCategory for the panel, then Settings.RegisterAddOnCategory, opened by /{CMD} through Settings.OpenToCategory.
- One Settings.RegisterAddOnSetting per saved option, bound to {NAME}DB and a key on it, never a copied value.
- No code that touches {NAME}DB before ADDON_LOADED fires for this addon.

State plainly that the compartment button is documented for Mainline generally, not confirmed on the Forever beta.

Comprueba que los nombres de las funciones coincidan exactamente

El campo del compartimento nombra una función global mediante una cadena. Si el modelo escribe MyAddOn_OnAddonCompartmentClick en el .toc pero MyAddon_OnAddonCompartmentClick en el archivo Lua, con una sola letra de diferencia en mayúsculas o minúsculas, el botón nunca se activa. Compara ambas grafías una junto a otra antes de cargar el addon.

Vincula los ajustes a la tabla guardada, no a una copia

Settings.RegisterAddOnSetting toma la tabla de variables guardadas y una clave de ella. El ejemplo de la wiki lee y escribe MyAddOn_SavedVars.toggle directamente. Si el modelo pasa un valor copiado en lugar de la tabla y la clave, la casilla nunca se guarda y vuelve al valor por defecto tras un /reload. El ejemplo de la wiki también construye su tabla en el ámbito del archivo, pero las SavedVariables se cargan después de que se ejecuten tus archivos y sustituyen esa tabla, así que registra el ajuste dentro de ADDON_LOADED.

Prompt para un temporizador que no se convierta en un bucle de sondeo

La sexta regla de oro del centro para desarrolladores es usar eventos, no el registro de combate, y la misma disciplina vale para los recordatorios corrientes. La página de C_Timer.After de la Warcraft Wiki dice que los temporizadores son «generally more efficient» que un script Animation o OnUpdate, que cuestan algo en cada fotograma en que se ejecutan. Un temporizador de 0 ms sigue esperando al siguiente fotograma, y OnUpdate solo resulta más barato para un ticker que se dispara cada pocos fotogramas.

Point the prompt at something Blizzard's tools leave out. Blizzard said Forever will include a damage meter and a cooldown manager. Check whether the manager covers the exact spell or item effect before deciding a reminder duplicates it. A vendor restock or quest reset reminder does not.

Recordatorio con temporizador
Build a WoW: Forever addon that reminds the player when a repeatable vendor or quest resets, not a spell or item cooldown.

Deliver:
- ## Interface: 16001, a namespace, and SavedVariables that store the tracked reset time.
- C_Timer.After or C_Timer.NewTicker to check the clock, never an OnUpdate script.
- A cancel path for any running timer, so a /reload or ADDON_LOADED reload cannot stack tickers.
- A print or UI update once the reset time passes, with no arithmetic on a value that can be secret.

Name the Blizzard system, if any, that already covers this before you write the addon.

Una sola vez frente a repetición

C_Timer.After se dispara una sola vez. C_Timer.NewTicker se repite y devuelve un identificador con un método :Cancel(). No hemos visto que se haya probado en la beta de Forever, así que mantén la comprobación de capacidades. Si el modelo simula una repetición llamando a After desde su propia función de retorno, no hay identificador que cancelar y puede arrancar una segunda copia cada vez que se vuelva a ejecutar el código de inicio.

No reconstruyas lo que Blizzard ya incluye

Pide al modelo que nombre el sistema integrado antes de escribir una sola línea. Si te saltas ese paso, lo normal es que obtengas un seguimiento de tiempos de reutilización que repite el gestor de tiempos de reutilización.

Cómo evaluar la respuesta del modelo antes de probarla

El resultado del prompt de revisión es una afirmación más del modelo, no un resultado de prueba. Antes de cargar el código terminado, repasa siempre la misma lista fija.

Kenneth Henseler trabaja con una IA en un addon de WoW Forever y la pilla equivocándose con total seguridad cuatro veces, 25 de septiembre de 2026.

Haz que el modelo demuestre que una API existe

Cuando el modelo se apoye en una función que no encuentras, pídele que escriba una sonda que puedas pegar en el chat con /run. GetBuildInfo() devuelve la versión de la compilación, el número de compilación, la fecha de compilación y la versión de la interfaz, en ese orden, así que print(select(4, GetBuildInfo())) muestra el número de interfaz que informa el cliente. Una segunda línea como print(C_Timer and C_Timer.NewTicker ~= nil) responde si una función de un espacio de nombres existe en esta compilación.

Una sonda cuesta una recarga. Resuelve en segundos lo que un modelo afirmaría de memoria. Anota la respuesta en tus notas junto al número de compilación.

Un repaso rápido antes de cargar el addon

  • Interfaz 16001, no la 120100 de Midnight ni la 11509 de Classic Era.
  • Nada de operaciones matemáticas, comparaciones ni print sobre un posible secreto.
  • Ningún registro de COMBAT_LOG_EVENT_UNFILTERED en ninguna parte del archivo.
  • Cada llamada a C_Item o C_Spell tiene una comprobación de nil.
  • SavedVariables solo se tocan dentro de ADDON_LOADED.
  • El global del comando de barra está escrito igual en los dos sitios.

Para entender el razonamiento de cada línea, consulta las doce trampas en las que caen los addons y las diferencias de arquitectura del cliente que las causan.

Prueba la afirmación, no solo el archivo

Los probadores informan de que el cliente puede registrar «Interface action failed because of an AddOn» sin ningún error de Lua, y pcall no lo evita. Carga el addon en el cliente de la beta, activa cada función a mano y vigila el marco de errores predeterminado, no solo si el archivo se carga.

Mantén fechadas las afirmaciones de un prompt a medida que avanza la beta

El prompt del sistema incluye una fecha de comprobación y un número de compilación porque el comportamiento cambia entre compilaciones. Se informó de que los datos guardados se perdían entre sesiones hasta la compilación 70009. Actualiza ambos antes de reutilizar un prompt antiguo y vuelve a probar cualquier afirmación sobre Forever anterior a la compilación actual.

Pide al modelo que nombre la compilación que asume

Añade una línea a cualquier prompt de tarea: «indica el número de compilación y la fecha en que se basan tus afirmaciones sobre Forever». Un modelo que no sabe responder probablemente trabaja con datos de entrenamiento de Midnight o de Classic Era, no con tus restricciones. Detéctalo antes de pegar su resultado en tus archivos iniciales.

Retira una afirmación en lugar de estirarla

Cuando un dato del prompt del sistema resulta depender de la compilación, como un global ausente que una compilación posterior restaura, elimina la línea en lugar de añadirle una salvedad. Comprueba la forma de retorno de una función con la hoja de referencia de la API de Forever y vuelve a leer las reglas de oro del centro para desarrolladores después de cualquier parche de la beta que cambie el número de interfaz.

Mira cómo un addon publicado apunta a Forever

Los addons publicados muestran cómo es un TOC de Forever que funciona. El TOC de Forever de Questie declara ## Interface: 16001, y el motor de addon gratis de RestedXP y TomTom también incluyen archivos de Forever en CurseForge. La página de RestedXP Forever explica qué vende ese addon de guías. Abre el .toc de un addon publicado y compara su línea de interfaz con lo que escribió tu modelo.

Notas de la versión v12.0.1+v1.0.3 de Questie en GitHub, con Added Forever client support primero en New Features y las correcciones de Forever debajo
Compartir imagen: Notas de la versión v12.0.1+v1.0.3 de Questie en GitHub, con Added Forever client support primero en New Features y las correcciones de Forever debajo

Las notas de la versión de Questie empiezan su lista de novedades con Added Forever client support.Fuente: notas de la versión de Questie en GitHub, capturadas el 30 sept 2026.

Datos clave

  • Base del prompt CambiadoNombra la familia de API 12.1.5, los valores secretos y la compilación de la beta en cada petición
  • Interfaz en los prompts CambiadoIndica 16001 para que el modelo no elija 120001 ni 11503
  • API de addons CambiadaForever usa la API moderna de addons, con las restricciones de combate de MidnightClassic: Classic Era mantiene la API anterior, con el registro de combate abierto a los addons.
  • Registro de combate EliminadoProhíbe COMBAT_LOG_EVENT_UNFILTERED; da error en Midnight y se informa de que no está disponible en Forever

Fuentes

  1. WoW: Forever Will Have Addon Changes from MidnightWowhead
  2. World of Warcraft Developer Q&A (September 17 stream), add-on answer at 01:20:52Blizzard Entertainment (YouTube)
  3. TOC formatWarcraft Wiki
  4. What the WoW Forever beta breaks for addons: secret health values, dead secure snippets, new APIsWoW Forever Builds
  5. AddonsWarcraft Forever
  6. Patch 12.0.0/API changesWarcraft Wiki
  7. Addon compartmentWarcraft Wiki
  8. Settings APIWarcraft Wiki
  9. API C_Timer.AfterWarcraft Wiki
  10. Secret ValuesWarcraft Wiki
  11. WOWF Beta: Addon SavedVariables appear to write correctly to disk but are not restored at startupWorld of Warcraft Forums (player bug report)
  12. API GetBuildInfoWarcraft Wiki
  13. Questie on CurseForgeCurseForge
  14. RestedXP Guide on CurseForgeCurseForge
  15. Blizzard client source: ProjectConstants.lua (retained build 70338; mirror may change)Blizzard Entertainment (source mirrored by Gethe)