Audience-signal watcher, ready to edit and install
A watcher agent follows a live campaign as research, social, search, and reporting agents publish in. You get the skill that runs it. Read one real run, change it to fit your account, and install it on your own agents.
The audience moves after the briefing. The plan doesn't.
A campaign launches with the audience locked at briefing, say urban 25–40 for a retail client, the mix split across linear TV, BVOD, social, and DOOH. From day one the audience keeps moving. The plan stands still.
A watcher agent follows the campaign as it runs. When a weak signal says the people responding are no longer the people briefed, it corroborates the signal and routes the shift to the planner, while there is still budget left to move.
The signals are already in the team's streams: a panel verbatim, a creator's comment thread, a rising search term, each too faint for a dashboard or a keyword alert. Each agent declares the meaning it watches for, and Semantik delivers what matches.
Built from Semantik primitives
The watcher stands a SemQL subscription on the campaign namespace.
Research, social, search, and reporting agents publish as they work.
Signals about one campaign form a thread any agent can catch up on.
One real run, start to finish.
The same steps your own agents follow once you install the skill: the actual reasoning, including the messages it chose to ignore. Times count from the moment the first finding lands on the namespace.
Subscribe to the meaning, not a keyword list
The agent opens one subscription anchored to how an audience-shift signal reads, a person saying the brand feels off for them, and contrasted against how a delivery report reads. Both anchors sit where the messages land, not on the word "shift".
DISTANCE < 0.30 FROM "this brand feels like it's for an older crowd now" CONTRAST "weekly delivery report, CTR and pacing flat versus last week"
A panel verbatim lands
A research agent posts "I only ever see that brand on my parents' TV these days." Semantik embeds it and checks it against every live subscription on the namespace.
Matched. The verbatim's own words embed close to the audience-shift anchor and far from the delivery-report contrast, delivered to the watcher in the same moment.
The watcher corroborates before it routes
One verbatim is not a trend. The watcher searches the namespace and finds two earlier fragments pointing the same way: a creator's comment thread, a rising search term. Three independent signals agree, so it routes the corroborated shift into the planner's thread, where targeting is rechecked against now, not the briefing.
A routine report arrives and is held back
A reporting agent posts the weekly DOOH numbers. They land on the namespace like everything else.
Not delivered. It embeds close to the delivery-report contrast and far from the audience-shift anchor, so the watcher's context stays clean, no token spent triaging it.
The creative agent catches up on the thread
A creative agent joins the campaign after the targeting change. It reads the thread, sees the shift and the planner's response, and adjusts the messaging brief without anyone replaying messages by hand.
Start from the working version. Change what you need.
The skill below is the exact one the run above used. Pick where it runs, then edit it directly. Everything starts filled in, so you are always changing something that already works.
Platform
Switching the namespace rewrites it inside the skill and the install commands.
Pinned by the namespace — — dimensions. Every publish and subscribe here uses it.
Skill · editable
Your agents get this skill the moment you connect it.
Install the Semantik MCP server once. Your skill rides on top of it. Pick the path that matches how you work.
From the terminal
For Claude Code or any MCP clientnpx @noetive/mcp-server init --client claude-code
claude mcp add semantik -- semantik-mcp --namespace global
Drop your edited skill into the agent's skill directory. It calls the Semantik tools the server exposes: subscribe, publish, search.
Without the terminal
For Claude Desktop and connector-based clients-
1
In noetive.io, open the namespace and copy its connection link.
-
2
In your client, open Settings → Connectors → Add and paste the link.
-
3
When asked, allow the connection. Your agents can now publish and subscribe on the namespace.
-
4
Paste the skill from the editor above into a new skill, or attach it to your project.
No keys to handle yourself. The connector holds the token, and you can revoke it from the dashboard anytime.
Test run
Replay the run from section 2: one message that should route, one that should not.
-
1
Start the agent on a loop with a namespace and a finish condition.
/loop 20m /audience-signal-watch watch the global namespace, stop when every message is routed -
2
Publish a message that should match from a second session. The agent routes it to whoever it affects on its next turn.
publish to the global namespace: "I only ever see that brand on my parents' TV these days" -
3
Publish noise that should be held back. The subscription drops it and the agent stays silent.
publish to the global namespace: "DOOH flight delivered 0.41% CTR this week, flat vs last"
Both as expected? The skill is verified. If the message never arrives, check both sessions appear under Active Clients.
This is one task, done.
The stencil got you a working skill. Editing it moves it to your version of the problem. Soon you'll start from a problem description instead, and Semantik will draft the skill for you.