competitor-mindshare
Skill6 starsChanged 2 months agoMITView on GitHub
This skill should be used when the user wants to run the Competitor Tracker skill, or asks to \"measure competitor mindshare\", \"track how much people talk about <brand> on X\", \"compare brand chatter\", or wants a recurring share-of-voice measurement with a shareable dashboard. Runs on the superagnt MCP: X search + workspace database + the workspace dashboard, with an optional daily hosted run.
In this repository27 other files it gives its agents.
- attio-crmSkill
- company-enrichmentSkill
- dub-linksSkill
- email-finderSkill
- exa-searchSkill
- facebook-dataSkill
- heyreach-outreachSkill
- instagram-dataSkill
- instantly-outreachSkill
- lead-enrichmentSkill
- linkedin-dataSkill
- reddit-dataSkill
- seo-dataSkill
- social-dataSkill
- tiktok-dataSkill
- web-scrapingSkill
- x-twitter-dataSkill
- youtube-dataSkill
- agency-outboundSkill
- audience-radarSkill
- competitor-ad-researchSkill
- gtm-prospecting-deskSkill
- newsletter-autopilotSkill
- shortform-script-engineSkill
- super-seoSkill
- video-multiplierSkill
- warm-outbound-engineSkill
The file
We split this skill into the rules it gives an agent
2 rules. About 0 are common, 0 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈0
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 101
Never compare numbers measured with different query shapes, floors, or limits — change the method, start a new series (add a method_version …
- Very specific: line 104
Every published number traces to rows in mindshare_daily.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Competitor Tracker
Measure posts-per-hour and engagement for a fixed brand set with an identical method every day, so the trend is real. The methodology is the one from the public superagnt research reports: identical queries, literal-match filtering, and rates computed from the returned page's own timestamps.
Step 0 — tools
agnt_tools_list_enabled; if missing:
agnt_tools_enable({ "families": ["data:x", "database"] }).
requires_upgrade → hand the confirm_url to the user, wait, re-run.
(The competitor-mindshare skill endpoint pre-enables these. The workspace
dashboard's tools, agnt_dashboards_*, are on for every workspace.)
Tool names on grouped servers
This skill writes flat (per-operation) tool names. New superagnt servers list
grouped tools instead: one tool per resource with an action argument. Flat
names still resolve there but are not listed, so call the grouped form:
data_x_search_get_search_search→data_x_discover, actionsearchagnt_db_insert→agnt_db_write, actioninsertagnt_db_apply_migration→agnt_db_sql, actionapply_migrationagnt_dashboards_guide/agnt_dashboards_preview→agnt_dashboards_read, actionguide/previewagnt_dashboards_write_file/agnt_dashboards_publish→agnt_dashboards_write, actionwrite_file/publishagnt_agents_create→agnt_agents_write, actioncreateagnt_schedules_create→agnt_schedules_write, actioncreateagnt_tools_enable→agnt_tools_write, actionenable
On a grouped server every data source is already on, so skip the data:*
part of Step 0 (enable any other family with agnt_tools_write, action
enable). Grouped data calls return a compact markdown view: pass
response_format: "json" for every view field, or "raw" for the full
payload, when a step needs a field the table leaves out.
Step 1 — name the brands (first run only)
The user lists brands/products to track (include their own). Record query
variants per brand — people abbreviate product names — in
mindshare_brands(id, brand, variants text[], active). Create
mindshare_daily(id, brand_id, measured_at timestamptz, posts_per_hour
numeric, median_likes numeric, sample_size int, top_post_url text) via
agnt_db_apply_migration.
Step 2 — measure
Per brand, identically: data_x_search_get_search_search
(section=latest, fixed like-floor, same limit for every brand). Filter the
returned page CLIENT-SIDE to posts whose text literally contains a brand
variant — the endpoint fuzzy-matches, and skipping this step inflates
everything. Rate = matching posts ÷ the span between the page's first and
last timestamps. Median likes over the matches. One agnt_db_insert row per
brand per day.
Method caveats to state in any summary: mindshare ≠ market share; gaps under ~1.5x are noise; generic brand names (a common word) over-count and need tighter variants.
Step 3 — the scoreboard view
First run: agnt_dashboards_guide once (the files, the query grammar, the
sa-* elements and publishing). Then build one view, mindshare, in your
draft with agnt_dashboards_write_file (pass intent on the first write):
queries/mindshare_today.sql: today's posts per hour and median likes per brand, highest first.queries/mindshare_trend.sql: one row per day, oldest first, one column per brand (pivot in SQL:max(d.posts_per_hour) filter (where b.brand = 'Acme') as acme).views/mindshare.html: ansa-chartkindhbarover today's rates, ansa-chartkindlineover the trend (y-fieldsthe brand columns,series-labelsthe brand names), and ansa-tableof the latest measurements.- the view's entry in
dashboard.json.
agnt_dashboards_preview the view, fix what its report names, then
agnt_dashboards_publish. Later runs just insert rows; the view stays current
on its own (a new brand needs its column in the trend query, then publish).
To share the scoreboard, the user turns on the view's public link from the
superagnt app: agents can't make one.
Step 4 — offer the daily run (a task agent)
Same pattern as every packaged skill: once one measurement pass has succeeded,
offer a daily run by building a task agent (recipe: the base task-agents
skill) — agnt_agents_create with a system prompt carrying step 2 verbatim
(brand table, query shape, insert), only the tools it uses, deploy, then
agnt_schedules_create (cadence confirmed; billed runs; a plan limit comes
back as requires_upgrade with a confirm_url for the user). Local-only
users just re-run the skill.
Rules
- Never compare numbers measured with different query shapes, floors, or
limits — change the method, start a new series (add a
method_versioncolumn rather than mixing). - Every published number traces to rows in
mindshare_daily.
<!-- skill_id: competitor-mindshare · source: https://github.com/superagnt/plugins -->Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

