← ExtensionDash: Store RankingsCONTENT HISTORY

Update to ExtensionDash: Store Rankings

Snapshot Nov 4, 2026 · 06:14 UTC · version 0.1.2

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save ExtensionDash: Store Rankings and check future changes in Following.

Up to 10 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Use when the user wants to see or change what ExtensionDash tracks for one of their extensions, such as adding or removing tracked keywords (search terms) or competitor listings, or showing the current tracking setup. Requires an ExtensionDash account connection. Uses list_extensions, list_keywords, list_competitors, search_catalog, add_keyword, remove_keyword, add_competitor, remove_competitor and list_scrape_runs.",
  "included_files": [],
  "name": "manage-tracking",
  "skill_md_contents": "---\nname: manage-tracking\ndescription: Use when the user wants to see or change what ExtensionDash tracks for one of their extensions, such as adding or removing tracked keywords (search terms) or competitor listings, or showing the current tracking setup. Requires an ExtensionDash account connection. Uses list_extensions, list_keywords, list_competitors, search_catalog, add_keyword, remove_keyword, add_competitor, remove_competitor and list_scrape_runs.\n---\n\n# Manage tracking\n\nShow and change the keywords and competitors tracked for one of the user's\nextensions.\n\n## What the server supports\n\nThere are exactly four write tools: `add_keyword`, `remove_keyword`,\n`add_competitor` and `remove_competitor`. Everything else is read-only.\n\nNothing here can:\n\n- add or remove a tracked extension of the user's own;\n- change plans, notes or settings;\n- delete recorded history.\n\nIf the user asks for one of those, say it is done on the dashboard at\nhttps://extensiondash.com. Do not attempt a workaround.\n\nThese tools need an account. If a call answers that \"this connection has no\naccount\", follow\n[connecting an account](../review-performance/references/connecting-an-account.md).\nNever ask for a token in the chat.\n\n## Resolve before writing\n\n1. **Extension.** Call `list_extensions` and match the user's wording to\n   `name`.\n   - If exactly one extension exists, use it and say which.\n   - If the name is ambiguous or missing and there are several, ask.\n     Never write to a guessed extension.\n2. **Keyword scope.**\n   - A keyword is a (term, locale) pair. `locale` defaults to `en`.\n   - `add_keyword` adds the term in every store the extension is listed in;\n     the response's `stores` says which.\n   - `remove_keyword` removes the (term, locale) from every store.\n   - If the user names a language or market (\"track it in German\"), pass\n     that locale, such as `de` or `pt-BR`.\n3. **Competitor identity.**\n   - A competitor is a (store, external_id) pair. The id is Chrome's\n     32-letter id or Firefox's AMO slug.\n   - If the user gives a name, resolve it with `search_catalog` (one store\n     per call).\n   - If several listings plausibly match, show them with users and URL and\n     ask.\n   - Each store has its own roster, so a Chrome and a Firefox version of\n     the same product are two competitors.\n4. **Check what already exists.**\n   - Call `list_keywords` before adding keywords. If a (term, locale) is\n     already tracked, report it as already tracked instead of re-adding.\n   - Call `list_competitors` before adding competitors. Skip ones already\n     on the roster.\n   - Terms are lowercased and whitespace-squished by the server, so compare\n     normalized forms.\n\n## Executing changes\n\n- **Clear requests.** When the request names the extension (or only one\n  exists) and the items, make the changes without asking for confirmation\n  again.\n- **Ambiguous requests.** When the target or scope is ambiguous, ask once,\n  listing the specific choices.\n- **Never write unasked.** Do not add a keyword or competitor the user did\n  not ask for, including ideas that came up during research. Offer them;\n  wait for a yes.\n- **Limits.** If the server answers with a plan limit, stop for that item\n  type. The message names the limit and, for competitors, the current\n  roster. Report it, and ask what to remove if the user wants room. Do not\n  retry.\n- **Removals.** Removing a keyword or competitor stops tracking but keeps\n  recorded history, and re-adding later restores it. Say so when removing.\n- **Wrong-language removal.** If `remove_keyword` says the term was not\n  tracked in that locale, its message lists the locales it is tracked in.\n  Relay that and ask whether to remove one of them.\n\n## After adding: pending results\n\nA newly added item has no result when the add returns.\n\n- **Keywords.** `add_keyword` returns rows whose `status` is `\"pending\"`\n  until a background rank fetch lands. Then `status` becomes `\"scanned\"`.\n  A pending row may still show an old position from earlier tracking;\n  that is not the new result.\n- **Competitors.** `add_competitor` returns `status: \"pending\"` until the\n  listing fetch lands. Then it becomes `\"scraped\"`.\n\nPolling rule:\n\n- Check at most 3 times, roughly 20–30 seconds apart, using\n  `list_keywords` or `list_competitors` for the same `extension_id`.\n- Between checks, `list_scrape_runs` with `extension_id` shows whether the\n  fetch is running, succeeded or failed.\n- If it is still pending after that, stop. Tell the user the fetch is\n  queued and they can check later with the same request. Do not keep\n  polling, and do not promise a time.\n- If `list_scrape_runs` shows a failure for the item, report it as a failed\n  fetch with its `error_message`, not as a ranking. Do not promise when it\n  will succeed.\n\n## Showing the current setup\n\nFor \"show my tracking\", give a table per extension built from `list_keywords`\nand `list_competitors`:\n\n- **Keywords:** term, locale, store, status, position with `depth_scanned`.\n- **Competitors:** name, store, users, rating, status.\n- The plan limit from `list_competitors`' `limit_per_store` (null means no\n  limit).\n- Any pending or failed items.\n\n## Report\n\nEnd every change with a short ledger:\n\n- **Added:** each item and the stores it landed in.\n- **Already tracked:** skipped, no change.\n- **Removed:** each item.\n- **Failed:** the item and the server's reason, for example a limit.\n- **Pending:** what is still fetching and how the user can check later.\n"
}

SHA-256 of public snapshot: 607d44cbcc3660b8d0e1db196d04202c7bf097904af471361cbdd7ba97f59651