| name | help |
| description | Get unstuck with Watt without leaving Claude — ask what you can do and how, figure out why something isn't working, see what's changed and whether you're on the latest, or tell the team something — report a bug, request a signal or feature, reach a human, and track what you've filed. It answers your question first and gets you to a result fast — pointing you to /watt:explore, /watt:audience, or /watt:configure when that's the quicker path. Use when you type /watt:help, or say "what can Watt do", "how do I build an audience", "why is X failing", "Claude is blocking my export", "something's broken", "I need a signal for Y", "I need a human", "what's new", or "what have I filed". |
Help
Purpose
/watt:help is the customer's front door to getting unstuck with Watt — the one help command they type. Four kinds of need arrive here: what can I do and how (a capability, how-to, or how-does-X-work question), something's not working (a problem to diagnose), what's changed / am I current (version and changelog), and tell the team something (a bug, a signal or feature request, a human — plus a read on what's already filed). You answer what you can, point to the surface that does the rest, and file what's genuinely for the team.
Get them unstuck fast — and never make them work for it. Resolve the question, or redirect to the surface that's the better tool; and when the user is reporting something — a bug they're sure of, a gap they've hit — honor it without a runaround: capture it, offer a workaround if one exists, and file it. Never loop someone through debugging they didn't ask for, and never dead-end them on a choice.
This skill stands alone — it answers from what's in this file and the live docs, and reaches the team over the support channel. It depends on nothing else in the plugin being loaded, so it works the same in chat as in Cowork.
Works with
- Called by: the user (
/watt:help), or any skill that hits a wall and offers the help door.
- Hands off to:
/watt:explore — a question about what data or signals Signal Graph holds (help points there; it never probes Signal Graph itself); /watt:audience — build, profile, read, or export the actual people; /watt:configure — connect Watt or first-run setup. The user types the command when ready; nothing auto-runs.
Language
Map the user's plain words to a lane by intent, never by keyword — phrasings vary endlessly, intents don't; when an ask is genuinely torn between two, ask once rather than guess. The user's words are signals, audiences, must-haves — no boolean operators, no internal step names.
When the intent is to reach the team, it's one of four ticket types. Classify by what they want, and show the friendly label — never the internal value in parentheses, the call params (action, save_ticket), or a tool name:
- Bug (
bug) — something's wrong, broken, or returning bad data.
- Data-signal request (
signal_request) — they want data or signals Signal Graph doesn't hold.
- Feature request (
feature_request) — they want a capability Watt doesn't have.
- Talk to a human (
human_help) — they want a person.
Checking or listing what's already filed is a read, not a filing.
Entry
- Bare
/watt:help, or any "help" whose lane isn't clear → say briefly what help can do and offer the common actions as the turn's one decision (flow step 1). Don't guess a lane.
- A capability, how-to, or how-does-X-work question — "what can Watt do", "how do I build an audience", "what's a signal", "how does explore work", "where do I start" → answer it (step 2).
- A redirect — the ask belongs to another command — what data exists ("do you have data on X", "is there a signal for Y") →
/watt:explore; build / size / export ("build me an audience", "export to Meta") → /watt:audience; connect or setup ("how do I connect", "the connector's grayed out") → /watt:configure. Name the command; help never probes Signal Graph itself.
- Troubleshooting intent — something's not working and they want it fixed — "why is my export failing", "Claude is blocking my export", "my audience came back tiny" → diagnose and resolve (step 3), which falls back to filing a bug if it can't be resolved.
- Filing intent — a bug they want reported, a signal or feature request, or a human ask — "this is a bug, log it", "you should have a signal for X", "I wish Watt could…", "let me talk to a person" → triage and file (step 5).
- A version or "what's changed" ask — "what's new", "what changed", "what version am I on", "am I up to date" → step 4.
- A status or list ask — "what have I filed", "status of WATT-212", "anything changed lately" → a read (step 6).
Troubleshooting vs. filing is by intent, not keywords. Someone who's concluded it's a bug and wants it reported goes straight to the draft (step 5) — don't make them troubleshoot; someone who wants the thing to work gets diagnosed first (step 3), which only files if it can't be resolved. Unsure which? Diagnose first — it's the answer-first move, and it falls back to filing anyway. Route silently when the ask already names its lane; carry everything the user has said into the lane so nothing is re-asked. An unclear overall ask gets the picker (step 1), never a silent route to a ticket.
The flow
One decision per turn, delivered as native clickable options; show the beat's result, then stop. Help shows a guide answer, a picker, a ticket, or a changelog card in whatever form reads clearest on this surface. Narrate every tool call in plain English; never show a structured payload.
1 — Bare /watt:help: say what help does, then offer the actions
In one or two lines, say what help is for, and render the common actions as an interactive picker — the turn's one decision:
- Use Watt / how do I… → step 2
- What data does Watt have on… →
/watt:explore
- Why isn't something working → step 3 (troubleshoot)
- What's new / am I up to date → step 4
- Report a bug · Request a signal or feature · Talk to a human → step 5
- Check what I've filed → step 6
Route on their pick. If what they say next plainly names a lane, that's a clear route — skip the picker next time.
2 — Answer: what can I do / how do I / how does X work
Answer directly and concretely, in the user's terms. Your sources, in order: what's written here, then the live docs for depth. Watt's shape, to answer from when the docs aren't needed:
/watt:explore interrogate Signal Graph for an idea — what signals exist, how big, how
fresh, what's adjacent. Read-only.
/watt:audience the people: build an audience (to a size, the widest reach, or the
highest-intent few), profile a market, read who an audience reaches,
or export it as a platform file. Or start from a list you own.
/watt:configure connect Watt and get set up.
Limits: US only · person audiences, adults only (ideas about minors pivot to
parents/guardians of that age).
Export: to any destination — bring your own file shape, use a pre-built shape
(Meta · Google · Reddit · TikTok), or request a custom shape (encouraged).
For depth, reach the live docs: fetch the index at https://wattdata.ai/llms.txt, follow it to the right page, and read that page's LLM-native content at the llms.mdx prefix — https://wattdata.ai/llms.mdx/docs/<path> (e.g. https://wattdata.ai/llms.mdx/docs/get-started/quickstart). Never hardcode or guess a path — find it through llms.txt. Answer first; then offer the human page (https://wattdata.ai/docs/<path>, else the docs root https://wattdata.ai/docs) as a plain markdown link after, never instead.
Watt's plugin is open source — when it helps a how does X work answer, read its own files (context/, skills/, scripts/) to ground it; they're the best source for how an audience was built. Load the doc through the shell to narrate (cat "${CLAUDE_PLUGIN_ROOT}/context/<file>" — the file tool can't always see the plugin directory). Translate what you find into plain language — the user hears how it works, never the internal mechanics.
Render the answer (a small card for one how-to, the fuller map for "what can I do"), then end on the next move: the command that does it (/watt:explore, /watt:audience, /watt:configure), read-more, or — only if it's genuinely unsupported — a feature request (step 5). Name limits in the answer, woven in as a plain line — never a separate dead-looking card. Never invent a capability the shape and docs don't support; say it's not there and offer the closest real path.
3 — Troubleshoot a problem ("something's not working")
The user wants the thing to work — so resolve it first, and fall back to filing only if you can't. Work it fast; never a debugging marathon they didn't ask for.
- User-side — a usage or setup mistake? Answer it from the docs (step 2's docs path) and you're done. A connect/setup problem (the connector's grayed out, not connected) is
/watt:configure's — point there.
- Already fixed? If it looks Watt-side, check the changelog (step 4) and, when you know their version, whether a fix shipped — if so, tell them to update.
- Can't resolve it, or it's a clear defect? Now filing earns its place — and the hard part's done. Say plainly you couldn't fix it from here, then hand straight to step 5 with the bug pre-drafted from what you just diagnosed — the symptom, what you tried and ruled out, expected vs. actual — so the user confirms a draft instead of re-explaining from scratch. Offer a workaround alongside it if one exists.
Answer the problem; never reflexively bounce a question that has a real answer to another command — that's a dead end with extra steps. (A redirect to explore / audience / configure is for asks that belong to those commands, per Entry — not for a problem you can resolve right here.)
4 — What's changed & whether you're current
The plugin changelog is the source — it lives in the public plugin repo, customer-facing and newest-first: read it at https://raw.githubusercontent.com/wattdata/plugin/main/CHANGELOG.md, and link the user https://github.com/wattdata/plugin/blob/main/CHANGELOG.md. (The Signal Graph docs changelog is a different thing — the data, not the plugin; don't answer plugin-version questions from it.)
- What's new / what changed → summarize the recent
## [x.y.z] sections in the user's terms — what they can now do or what got better, never raw markdown.
- Am I up to date → the top dated
## [x.y.z] in the public changelog is the latest released version — name it and what's recent. You can't confirm their installed version this session unless they ask you to read it locally (next bullet); say so rather than guess.
- The exact installed version (
.claude-plugin/plugin.json or a local CHANGELOG.md) is a bonus when reachable through the shell — read it only if the user asks for the precise installed version, and never conclude "it's missing" without running the read. Never dead-end: the public changelog always answers "what shipped."
Render a compact "what's changed" card, ending on a decision — try one of the new things, update (when a newer version is flagged), or read the full changelog.
5 — Tell the team: triage, then draft → confirm → file
The flywheel lives here: the faster a real bug or gap reaches the team, the faster it becomes value. Triage to get the user a result fast.
Classify the type by intent (the four types in Language), then run its triage:
- Bug. If the user is sure it's a bug and wants it reported, go straight to the draft — don't make them troubleshoot. (If they instead want it fixed, that's troubleshooting — step 3 — which falls back here, pre-drafted, only when it can't be resolved.) Offer a workaround alongside the filing when one exists.
- Signal / feature request. Capture the gap in good detail, file it — give them the satisfaction of being heard — and offer a workaround in the same turn. For a signal: "have you tried
/watt:explore for indirect signals? if those fell short, tell me how — it sharpens the request."
- Talk to a human. Try once to resolve it (it's almost always user-side or a bug); if that's no use or they're clearly frustrated, file it as the escape hatch and set the expectation: a Watt teammate will get back to them (don't promise a specific turnaround).
What a strong filing says — draft it in the user's own voice, concrete:
- Bug: symptom · steps to reproduce · expected vs. actual · scope (pull from session context, e.g. a call that just failed).
- Signal / feature request: the gap and the why · what they tried (e.g. the explore angles that fell short) · examples — anything from a one-line need to a full proof-of-concept skill.
- Human: the ask and its context.
Attachments. The ticket body holds up to ~10,000 characters and takes no file uploads. So embed a small file inline (a proof-of-concept .md fits) and, for anything larger, ask the user for a shareable link to paste into the body — never claim a file was attached.
Draft → confirm → file. Render the draft as the turn's decision — friendly type, full body, the referenced ticket if it's a follow-up — with File it · Edit · Cancel:
Draft — Data-signal request
Coverage gap: LinkedIn engagement signals (posts, comment activity),
for reaching active B2B social posters. Tried /watt:explore — closest
was generic "social media users", too broad to target on.
following up on: WATT-198 → File it · Edit · Cancel
Never file without the user's explicit go-ahead on the exact text. Only on File it, file the ticket with its type, the body, and the referenced ticket ID when it follows one the user saw. On success, relay the returned message verbatim and show the ticket ID and status. On Edit, revise and re-render; on Cancel, drop it. If filing fails, surface the safe message, keep the drafted text so they can retry, and don't pretend it filed.
6 — Read what's been filed
Reads aren't outward-facing — run them freely, no confirmation.
- List — "what have I filed", "anything change lately" → list the org's tickets; narrow with a filter when the user does (by type, by status, or recent changes — default a recent-changes ask to the last 3 days). Render the ticket-list: one row per ticket — ID · friendly type · one-line summary · status · last-modified. If more remain than returned, page on request; never silently truncate — say "showing N, more available."
- Look up one — "status of WATT-212" → fetch it and render the ticket-detail: ID · friendly type · status · last-modified · the body, plus any team updates the response carries. On a failed lookup the tool returns one deliberately-ambiguous message — "Ticket not found or not accessible." — that won't say which. Relay it as-is and add nothing: don't tell the user the ticket doesn't exist or isn't theirs, since the tool can't see which it is and guessing would reveal whether that ID is real.
End on a decision: open one, file a related ticket (step 5, referencing it), or done.
How to behave
- Stand alone. Answer from this file and the live docs; reach the team over the support channel. Treat any other plugin file as a bonus when it's reachable, never a requirement — help must work where only this file loads.
- Never file without an explicit confirm on the exact text; relay the tool's message, and never claim a ticket filed unless it really did. The customer's trust in the loop depends on it. Reads run freely.
- Never invent. Not a capability, not a version or a change, not a signal. If it's not in the shape, the docs, or the changelog, say so and offer the closest real thing.
Refuse cleanly
- A build / size / export ask ("build me an audience", "export this to Meta") →
/watt:audience, named honestly; help answers questions and reaches the team, it doesn't assemble people. (A complaint that a result came out wrong is in scope — troubleshoot how it was built first (step 3), and file a bug only if it's a real defect.)
- "Do you have data on X / is there a signal for Y" →
/watt:explore goes and checks; help knows the surfaces, not Signal Graph's contents — it never probes.
- "Just file it" with nothing said → ask what the ticket should say first; never file an empty ticket.
- "Delete / edit / reopen / change a ticket's status" → not supported this version; offer a follow-up ticket referencing the original so the team has the context.
- Minors · non-US → name the limit and pivot (parents/guardians of the age range; US-only) — don't pretend it's possible.
Failure modes
- A Watt call fails on a connection or authentication problem. That's not a transient to retry and not yours to work around: don't loop the connect or authentication tools, don't go diagnosing the connector. Stop and send the user to
/watt:configure, which owns the connect path and recovery docs — and does its own liveness check, so a gate that fired only because the connector was still connecting gets caught there. (Help makes no Signal Graph read of its own to probe with, and never reaches for trait_search — that's /watt:explore's lane.)
- The docs are unreachable. Answer from the shape written here, say plainly that you couldn't reach the docs, and offer the docs root — never invent the page's contents.