Writing a community guide

Guide author6 min readUpdated

In short

What you get, what a pack looks like, the steps from your first guide to publishing, and the checklist before you do.

On this page
  1. What you get
  2. Quick start
  3. What a pack looks like
  4. From first guide to published
  5. Before you publish
  6. Import strings
  7. Where to go next

What you get#

If you write leveling guides, you can use everything Polestar uses for its own:

The guide format

plain text .guide files. The compiler fills in quest titles, givers and coordinates from the reference data, so accept 7 is a whole line.

The checks

lint checks every guide against the game's data, and playtest plays each one to the end in the real addon, without the game.

In the game

Polestar's guide engine, its waypoint arrow, its travel planner and its markers on the map.

You publish the result as your own addon, under your name and a license of your choice.

Quick start#

You need Node 24 or newer, and Lua 5.1 or LuaJIT for play and playtest. PACKS.md, "Setup" has the install command for each system.

shell
git clone https://github.com/fitzforge/polestar.git
cd polestar
npm link               # puts `polestar` on your PATH
polestar data build    # the reference data every guide command reads
polestar doctor        # checks the setup and prints the fix for anything missing
cd ..                  # your pack goes beside the clone, not inside it
polestar new my-pack   # asks for the id, title, author and licence
cd my-pack
polestar dev --play    # lint and build on every save, with the browser playground

What a pack looks like#

A community addon is built from a pack: a folder with a pack.json and your .guide files.

text
my-pack/
├── pack.json          your addon's id, title, author, version and licence
├── guides/
│   └── westfall.guide your guides, in any layout
├── LICENSE            the licence you chose
└── README.md          for your players
json
{
	"id": "joe-routes",
	"title": "Joe's Routes",
	"author": "Joe",
	"version": "1.2.0",
	"license": "CC-BY-4.0",
	"website": "https://github.com/joe/joe-routes"
}
text
guide joe-routes/northshire
title Northshire Valley
faction Alliance
race Human
levels 1-4
zone Elwynn Forest

step Deputy Willem
  accept 783
  turnin 783
  accept 7

step Kobold camp
  kill 6 x10 quest 7.1

step Back to the abbey
  turnin 7

The tools build the addon from these: the TOC, your credits, the compiled guides and the license files. Don't edit the built files: change the pack and build again. PACK_FORMAT.md describes every line of them.

From first guide to published#

  1. Start: polestar new my-pack writes pack.json, an example guide that already passes every check, a README for your players and the LICENSE you chose. In a clone of the public repository it also writes a GitHub workflow that checks every push.
  2. Write: polestar find <text> prints quest, NPC, object, item, inn and flight-point lines ready to paste. In the game, /polestar where prints where you stand as a guide line.
  3. Check: polestar lint checks every guide against the game's data, and polestar playtest plays each one to the end, for each race that can reach it and each class it has steps for.
  4. Try: polestar play opens the real addon in your browser with your pack loaded, and polestar install copies it into the game's AddOns folder (restart the game the first time).
  5. Build: polestar pack writes dist/<folder>-<version>.zip, byte for byte reproducible.
  6. Publish: upload the zip as a new addon project on CurseForge, Wago or GitHub. On CurseForge and Wago, mark Polestar as a required dependency so addon apps install it too. With the template's workflow, a version tag on GitHub builds the zip and attaches it to a release.
  7. Update: raise version in pack.json, run polestar pack again and upload the new zip.

Before you publish#

The tools check these. lint reports them, and compile, install and pack stop until they are fixed:

  • pack.json has an id, title, author, version and license. The id is 2 to 32 lower-case letters, digits or hyphens, and not one Polestar reserves. A title or an author name is at most 64 characters.
  • Every guide id starts with your pack id and a slash (ashka-emberway/westfall).
  • The addon folder is not named Polestar and does not start with Polestar_. By default it is PolestarPack_ and your title (PolestarPack_EmberwayRoutes).
  • A website, when you give one, starts with https:// or http://.
  • A next line hands over only to a guide that exists, is for the same faction, and that the characters of your guide can follow.
Read the rest of this section290 words

lint also warns while LICENSE still holds the placeholder line new writes for a license it has no text for.

We ask these of you. No tool checks them, but players need them to tell your addon apart and to reach you:

  • A name of your own that can't be mistaken for Polestar's addons. The tools put "Polestar Community:" before it in the AddOns list. Say on your addon page that it is a community addon for Polestar, and if you write your own notes line, keep that clear there too.
  • Your name as the author: the name players will look for.
  • A version you raise with every release.
  • A website or support link in website, so the Community guides page shows players where to report problems. Say the same on your addon page and in your README.
  • A license of your choice.Polestar's LICENSE-EXCEPTION.md lets you publish a community addon built by its compiler, including the reference data the compiler puts in it, under any terms you like.
  • Your own guide text.Don't copy text from Polestar's own guides: the license exception does not cover it. Handing over to one of Polestar's guides with next is fine, since that points to the guide rather than copying it.
  • Support for it.Players are told to report problems to the author, so answer them where you publish.
How your addon shows in the AddOns list

The TOC places your community addon under Polestar's entry in the Quests category, titled "Polestar Community: <your title>", with the line "Community addon for Polestar by <author>" unless you write your own notes. Polestar's own menus show your title as you wrote it. Community addons built before this name read "Polestar Pack:" until you rebuild them; Polestar reads both.

Import strings#

A single small guide can go to players as one line of text instead of an addon: they paste it on Polestar's Import page (/polestar import). Use it for a quest chain, an item, a mount, an errand; a route or a set of guides is a community addon.

Import stringCommunity addon
Forone small guidea whole route or a set of guides
You runpolestar export <file.guide>polestar pack
Playerspaste it on the Import pageinstall it, then restart the game
Updatesraise the guide's version and share the new string: players press Updateraise version in pack.json and upload the new zip
Sizeone guide of at most 60 steps (and 50,000 characters)no limit
shell
polestar lint && polestar playtest       # the same checks as for an addon
polestar export guides/cozy-sleeping-bag.guide > cozy.txt
  • The guide still lives in a pack: export finds the pack.json above the file, and the guide id starts with your pack id (yendi/cozy-sleeping-bag), so two authors' guides never collide. The string carries the guide and your pack's license; its author is the guide's author, else the pack's.
  • export lints the pack first and refuses a guide with errors (another guide's errors do not stop it). It prints only the string on stdout, so > file.txt keeps just that line.
  • A guide's version decides between Import and Update in the game: raise it when you share a new string.
  • A next or route choice may lead only to one of Polestar's guides or to a guide the player imported before; export names the guides to import first. Polestar refuses a string whose guide leads anywhere else.
  • A guide id under the id of a community addon the player has installed stays that addon's: the string is refused.
  • In polestar play <pack> (and polestar dev --play), Copy import string beside the guide picker gives the string of the guide picked.

The format of the string is in PACK_FORMAT.md, "Import strings". Strings are covered by the same license exception as community addons.

Where to go next#

You want to…Read
Write your first pack, step by stepPACKS.md, "A first pack in 15 minutes"
Write guides by playing, from the simulator, by hand or with an AI assistantPACKS.md, "Four ways to write guides"
Look up a guide line quicklyGUIDE_CHEATSHEET.md
Read the whole guide formatGUIDE_FORMAT.md
Fix a lint message or an in-game problemPACKS.md, "Lint messages" and "In game: statuses and problems"
Update after a game patchPACKS.md, "Updating"
Know exactly what the tools writePACK_FORMAT.md

Questions, or a community addon to show? Players and authors meet on the Polestar Discord (opens in a new tab).

Was this page helpful?

Start with, or act

  • PlayersInstall and first run
  • PlayersCommunity guides
  • PlayersFAQ
  • Guide authorsWriting a community guide
  • Guide authorsGuide format cheatsheet
  • ContributorsContributing
  • ActionCopy the AddOns folder (Windows)C:\Program Files (x86)\World of Warcraft\_classic_beta_\Interface\AddOns
  • ActionCopy the AddOns folder (macOS)/Applications/World of Warcraft/_classic_beta_/Interface/AddOns
  • ActionFind an optionEvery setting with its default; type its name here to jump to it.
  • ActionEvery slash command