Guides

When advice conflicts

Your assistant has several sources of Playwright guidance. This decides which one wins.

The problem

An AI assistant working on your tests may have several sources of Playwright guidance loaded at once — official docs, a best-practices guide, your project’s own rules.

None of them knows the others exist. When they disagree, the assistant picks one, more or less at random. You get a different answer depending on the day.

The fix

Cue keeps a list of topics and who decides each one. It lives in a file every assistant reads automatically, so the tie-break happens before you notice there was a tie.

Ask it directly:

npx @wiluszdamian/cue locator "how do I record a trace"

Or in an assistant that has the skills installed, /resolve-owner.

Who owns what

TopicDecided by
How your tests are structured, named, taggedCue — your project’s rules
Which button is on which pageYour app’s notes
Running, debugging, tracing, recordingOfficial Playwright
Electron, i18n, visual testing, framework quirksA best-practices guide
Specs, tickets, roadmapYour team. Not Cue’s business.

The full table →

Two of these always win

Your project’s rules and your app’s notes beat everything else — even a source that states the opposite very confidently.

The reason is simple: no outside source can possibly know what your team decided or what your app looks like. On those two topics, they are guessing and you are not.

When nothing owns a topic

You get told so, plainly:

No owner is declared for "what colour should the button be".

This is a gap in rules/ownership.yaml, not an open question.

That is deliberate. An unowned topic is a gap for a person to fill, not permission to improvise. A convention invented on the spot is indistinguishable from one everyone agreed to — right up until the second person has to guess it too.

Why this isn’t just documentation

The table can’t live in a document an assistant might read. It has to be in the layer that is always loaded, because a document has no way to announce that it outranks another document.

That is why init writes it into AGENTS.md, and why sync keeps it current.