Prompts IA pour addons WoW Forever qui connaissent le client

Publié le Mis à jour le Rapports de la bêta de la build 1.60.1.69913

Partager

Guide des addons page 6 sur 7

Indiquez dans chaque prompt l’interface 16001, la famille d’API 12.1.5 et la build bêta, sinon le modèle choisit 120001 ou 11503. Ces prompts l’intègrent déjà, avec une passe de revue pour rattraper ce qui passe entre les mailles.

Demandez tout sur les prompts d’addon à notre IA accro

Interface 16001, cadres compatibles avec les valeurs secrètes, portages Midnight et Classic, revue et plus

Tout ce que couvrent nos guides. Les réponses proviennent de cette page et du reste de nos guides, avec les vraies valeurs en graphique et les sections de guide liées. C’est une IA : vérifiez la source avant de la citer.

Utilisez le prompt système une fois par session. Utilisez ensuite un prompt de tâche. Lancez enfin le prompt de revue sur le résultat. Remplacez les éléments entre accolades. Ne laissez pas le modèle choisir la version d’interface.

Ancrage du prompt
Famille 12.1.5
Interface dans les prompts
16001
API d’addon
API moderne
Journal de combat
Interdire CLEU

Cette bibliothèque de prompts fait partie du guide du développeur d’addons WoW Forever. Pour comprendre pourquoi chaque contrainte existe, lisez les patterns d’addons WoW Forever et les pièges courants des addons écrits par IA. Comparez le résultat avec les modèles de code et l’exemple Forever Beacon, puis testez-le dans le client actuel.

Prompt système

Collez ceci dans le modèle comme prompt système, ou comme premier message, avant de demander du code.

Prompt système
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.

Créer un addon Forever

Utilisez ce prompt de tâche pour générer un nouvel addon de zéro :

Nouvel addon
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.

Porter un addon Midnight

Utilisez ce prompt pour déplacer un addon depuis Midnight (interface 120100 et supérieure) :

Port 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.

Les mises à jour d’ID de projet dans ces prompts utilisent les constantes Camelot de Blizzard issues de l’extrait conservé 70338 et de la sonde WFG du 12 octobre, inspectés le 13 octobre. Le miroir lié peut afficher une build plus récente. Les prompts eux-mêmes n’ont pas été testés en jeu.

Porter un addon Classic Era

Utilisez ce prompt pour adapter un ancien addon Classic Era :

Port 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.

Barre d’unités sécurisée contre les secrets

Utilisez ce prompt pour qu’une IA construise des cadres de joueur, de familier ou de cible :

Barre d’unités
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.

Déboguer une erreur de la bêta

Utilisez ce prompt quand le client signale une erreur ou échoue sans rien dire :

Débogage
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.

Revue avant publication

Lancez ce prompt de revue hostile sur tout code généré avant de le placer dans le dossier de votre addon :

Revue
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".

Comment parler au modèle

  • Nommez d’abord le client : « WoW Forever », pas « WoW » ni « Classic ».
  • Interdisez le journal de combat à côté de la fonctionnalité.
  • Demandez des fichiers complets : des fichiers entiers, pas des fragments dans le texte.
  • Exigez des sondes de capacité : pour les API absentes du Warcraft Wiki.
  • Lancez le prompt de revue sur chaque résultat.

Ne décrivez jamais le client comme un serveur privé. Les modèles lisent « combat tracker » comme un analyseur de journal de combat. Si le modèle cite une API introuvable sur le Warcraft Wiki, demandez une sonde à l’exécution. Une passe de revue coûte moins qu’une soirée d’erreurs « Interface action failed ».

Prompt pour un panneau d’options et une entrée de compartiment d’addons

Une commande slash seule est difficile à trouver. Le Warcraft Wiki décrit le compartiment d’addons comme un menu déroulant de boutons près de la minicarte, que les addons installés enregistrent, conçu comme alternative à une icône de minicarte. Cette page documente Mainline en général, et nous n’avons trouvé aucun test sur la bêta de Forever ; demandez donc au modèle une vérification à l’exécution avant de compter sur le bouton.

L’enregistrement le plus simple passe par les métadonnées du TOC. AddonCompartmentFunc est obligatoire et nomme la fonction globale exécutée au clic. AddonCompartmentFuncOnEnter, AddonCompartmentFuncOnLeave et IconTexture sont facultatifs. Le wiki documente aussi un appel manuel à AddonCompartmentFrame:RegisterAddon. Un panneau d’options est distinct : Settings.RegisterVerticalLayoutCategory crée la page, et Settings.RegisterAddOnSetting lie un contrôle à une clé d’une table de variables sauvegardées.

Options et compartiment
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.

Vérifiez que les noms de fonctions correspondent exactement

Le champ du compartiment désigne une fonction globale par une chaîne. Si le modèle écrit MyAddOn_OnAddonCompartmentClick dans le .toc mais MyAddon_OnAddonCompartmentClick dans le fichier Lua, avec une seule lettre de casse d’écart, le bouton ne se déclenche jamais. Comparez les deux graphies côte à côte avant de charger l’addon.

Liez les options à la table sauvegardée, pas à une copie

Settings.RegisterAddOnSetting prend la table de variables sauvegardées et une clé de cette table. L’exemple du wiki lit et écrit MyAddOn_SavedVars.toggle directement. Si le modèle passe une valeur copiée au lieu de la table et de la clé, la case ne s’enregistre jamais et revient à la valeur par défaut après un /reload. L’exemple du wiki construit aussi sa table au niveau du fichier, mais les SavedVariables se chargent après l’exécution de vos fichiers et remplacent cette table ; enregistrez donc l’option dans ADDON_LOADED.

Prompt pour un minuteur qui ne devient pas une boucle de sondage

La sixième règle d’or du hub développeur est : des événements, pas le journal de combat, et la même discipline s’applique aux rappels ordinaires. La page C_Timer.After du Warcraft Wiki estime les minuteurs « generally more efficient » qu’un script Animation ou OnUpdate, qui coûtent quelque chose à chaque frame où ils s’exécutent. Un minuteur de 0 ms attend quand même la frame suivante, et OnUpdate n’est moins coûteux que pour un ticker qui se déclenche toutes les quelques frames.

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.

Rappel par minuteur
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.

Unique ou répété

C_Timer.After se déclenche une seule fois. C_Timer.NewTicker se répète et renvoie un handle avec une méthode :Cancel(). Nous ne l’avons pas vu testé sur la bêta de Forever, donc gardez la sonde de capacité. Si le modèle simule une répétition en appelant After depuis son propre callback, il n’y a aucun handle à annuler, et une seconde copie peut démarrer chaque fois que le code d’initialisation s’exécute de nouveau.

Ne reconstruisez pas ce que Blizzard fournit déjà

Demandez au modèle de nommer le système intégré avant qu’il n’écrive une ligne. Sautez cette étape et vous obtiendrez souvent un suivi de cooldown qui répète le cooldown manager.

Évaluer la réponse du modèle avant de la tester

Le résultat du prompt de revue n’est qu’une affirmation de plus du modèle, pas un résultat de test. Avant de le charger, passez toujours le code terminé au crible de la même liste fixe.

Kenneth Henseler travaille avec une IA sur un addon WoW Forever et la surprend quatre fois en train de se tromper avec aplomb, le 25 septembre 2026.

Faire prouver au modèle qu’une API existe

Quand le modèle s’appuie sur une fonction introuvable, faites-lui écrire une sonde que vous pouvez coller dans le chat avec /run. GetBuildInfo() renvoie la version, le numéro de build, la date de build et la version d’interface, dans cet ordre, donc print(select(4, GetBuildInfo())) affiche le numéro d’interface indiqué par le client. Une seconde ligne comme print(C_Timer and C_Timer.NewTicker ~= nil) indique si une fonction d’un namespace existe sur cette build.

Une sonde coûte un rechargement. Elle règle en quelques secondes ce qu’un modèle affirmerait sinon de mémoire. Notez la réponse dans vos notes avec le numéro de build à côté.

Un dernier contrôle avant de charger l’addon

  • Interface 16001, pas 120100 de Midnight ni 11509 de Classic Era.
  • Aucun calcul, comparaison ou print sur un possible secret.
  • Aucun enregistrement de COMBAT_LOG_EVENT_UNFILTERED nulle part dans le fichier.
  • Chaque appel à C_Item ou C_Spell a une vérification de nil.
  • Les SavedVariables ne sont touchées qu’à l’intérieur de ADDON_LOADED.
  • Le global de la commande slash est orthographié pareil aux deux endroits.

Pour comprendre chaque ligne, consultez les douze pièges des addons et les différences d’architecture du client qui les causent.

Tester l’affirmation, pas seulement le fichier

Les testeurs signalent que le client peut afficher « Interface action failed because of an AddOn » sans erreur Lua, et pcall ne l’empêche pas. Chargez l’addon dans le client bêta, déclenchez chaque fonctionnalité à la main et surveillez la fenêtre d’erreurs par défaut, pas seulement le chargement du fichier.

Garder les affirmations d’un prompt datées à mesure que la bêta évolue

Le prompt système contient une date de vérification et un numéro de build, car le comportement change d’une build à l’autre. Des données sauvegardées ont été signalées comme perdues entre deux sessions jusqu’à la build 70009. Mettez les deux à jour avant de réutiliser un ancien prompt, et retestez toute affirmation sur Forever plus ancienne que la build actuelle.

Demander au modèle de nommer la build qu’il suppose

Ajoutez une ligne à n’importe quel prompt de tâche : « indique le numéro de build et la date sur lesquels reposent tes affirmations sur Forever ». Un modèle qui ne sait pas répondre travaille probablement avec des données d’entraînement de Midnight ou de Classic Era, pas avec vos contraintes. Repérez-le avant de coller sa sortie dans vos fichiers de départ.

Retirer une affirmation plutôt que la tordre

Quand un fait du prompt système s’avère propre à une build, comme un global manquant qu’une build ultérieure rétablit, supprimez la ligne plutôt que d’y ajouter une réserve. Vérifiez la forme de retour d’une fonction dans l’aide-mémoire de l’API Forever, et relisez les règles d’or du hub développeur après tout patch de la bêta qui change le numéro d’interface.

Voir comment un addon publié cible Forever

Les addons publiés montrent à quoi ressemble un TOC Forever qui fonctionne. Le TOC Forever de Questie déclare ## Interface: 16001, et le moteur d’addon gratuit de RestedXP ainsi que TomTom listent aussi des fichiers Forever sur CurseForge. Le aperçu RestedXP Forever décrit ce que vend cet addon de guides. Ouvrez le .toc d’un addon publié et comparez sa ligne d’interface avec ce que votre modèle a écrit.

Notes de version GitHub de Questie v12.0.1+v1.0.3, avec « Added Forever client support » en premier sous New Features et les correctifs Forever en dessous
Partager l’image : notes de version GitHub de Questie v12.0.1+v1.0.3, avec « Added Forever client support » en premier sous New Features et les correctifs Forever en dessous

Les notes de version de Questie commencent leur liste de fonctionnalités par Added Forever client support.Source : notes de version de Questie sur GitHub, capturées le 30 sept. 2026.

Faits clés

  • Ancrage des prompts ModifiéNommez la famille d’API 12.1.5, les valeurs secrètes et la build bêta dans chaque requête
  • Interface dans les prompts ModifiéIndiquez 16001 pour que le modèle ne choisisse pas 120001 ou 11503
  • API des addons ModifiéeForever utilise l’API moderne des addons, avec les restrictions de combat de MidnightClassic : Classic Era conserve l’ancienne API, avec le journal de combat ouvert aux addons.
  • Journal de combat SuppriméInterdisez COMBAT_LOG_EVENT_UNFILTERED ; il provoque une erreur sur Midnight et il est rapporté comme indisponible sur Forever

Sources

  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)