[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6M96891F3PAAHCME0JH319T":3,"skill-same:01M6M96891F3PAAHCME0JH319T":114},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":23,"publishedAt":46,"linkOnly":47,"markdownContent":48,"markdownBody":49,"frontMatter":50,"refName":54,"commitSha":55,"skillDirectory":56,"forksCount":57,"repositoryHtmlUrl":58,"repositoryHomepageUrl":59,"ownerHtmlUrl":60,"ownerBlogUrl":61,"ownerDescription":62,"updatedAt":63,"install":64,"resources":77},"01M6M96891F3PAAHCME0JH319T","suede-competitor-profiling",null,"Use when asked \"research these competitors\" or to refresh named competitor profiles. Suede AI competitive intelligence captures current public evidence for positioning, pricing, product, reviews, search and AI visibility, separating facts, inferences and unknowns. NOT FOR: publishing comparison pages (use suede-competitors), sales battle cards (use suede-sales-enablement), or pricing decisions (use suede-pricing).","hashgraph-online\u002Fawesome-codex-plugins","hashgraph-online","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F160371962?v=4","01M6CNB6NRJVNNGN14TR01Q6D3","HOL (Hashgraph Online)","01M6JT1HSKKG9V68KQAQGBA7XP",1571,"Apache-2.0","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-competitor-profiling\u002FSKILL.md",[18],{"categoryNo":19,"categoryName":20,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000021","资料检索与研究","SCENARIO","使用场景",[24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45],"competitor profiling","profiling","suede competitor profiling","competitor","when","comparison","use","enablement","publishing","pages","profiles","pricing","for","evidence","competitive","competitive intelligence","competitors","intelligence","product","positioning","search","reviews","2026-11-10 10:12:30",false,"---\nname: suede-competitor-profiling\ndescription: \"Use when asked \\\"research these competitors\\\" or to refresh named competitor profiles. Suede AI competitive intelligence captures current public evidence for positioning, pricing, product, reviews, search and AI visibility, separating facts, inferences and unknowns. NOT FOR: publishing comparison pages (use suede-competitors), sales battle cards (use suede-sales-enablement), or pricing decisions (use suede-pricing).\"\nmetadata:\n  display-name: \"Suede AI Competitor Profiling Skills\"\n  version: 2.1.0\n---\n\n# Suede AI Competitor Profiling Skills\n\nUse this competitive-intelligence playbook to turn current public evidence into structured profiles with fact, inference, and unknowns kept separate.\n\n## Compatibility\n\nAn agent with web access and local file writing for raw captures and profiles. Optional SEO providers are used only when already available; their absence leaves those measurements unknown. The bundled `scripts\u002Fcollect.mjs` collector needs Node 22 or later and no API keys.\n\n## Initial Assessment\n\nCheck for `.agents\u002Fproduct-marketing.md` (or `.claude\u002Fproduct-marketing.md`, or the legacy `product-marketing-context.md`) and read it if present: your own positioning and ICP decide which competitors are actually comparable and which dimensions are worth profiling, and they are usually already written down there.\n\nThen work the intake list under Task-Specific Questions below. If the user gave URLs and the context file covers the rest, proceed without asking.\n\n---\n\n## Saving Raw Data\n\nBefore synthesizing the profile, persist all raw page captures, SEO inputs, and\nreview evidence to disk so they can be re-read, audited, or reused without\nrepeating provider requests or manual collection.\n\n**Directory layout** (relative to project root):\n\n```\ncompetitor-profiles\u002F\n├── raw\u002F\n│   └── \u003Ccompetitor-slug>\u002F\n│       └── \u003CYYYY-MM-DD>\u002F\n│           ├── scrapes\u002F    # one .md file per captured page (homepage.md, pricing.md, ...)\n│           ├── seo\u002F        # one .json or .csv file per authorized metric source\n│           ├── signals\u002F    # collect.mjs CSVs (history, hero, stack, dns, jobs, ...)\n│           └── reviews\u002F    # one .md or .json file per review source (g2.md, capterra.md, ...)\n├── \u003Ccompetitor-slug>.md    # final synthesized profile\n└── _summary.md             # cross-competitor summary\n```\n\nRules:\n\n- `\u003Ccompetitor-slug>` is lowercase, hyphenated (e.g. `responsehub`, `safe-base`)\n- `\u003CYYYY-MM-DD>` is the date the data was pulled: supports re-running and diffing snapshots over time\n- Save each browser, manual, or authorized-fetch page capture as raw markdown\n  to `scrapes\u002F\u003Cpage-name>.md`\n- Save each authorized SEO response or user-supplied export to\n  `seo\u002F\u003Csource-name>.\u003Cjson|csv>`\n- Save each review source to `reviews\u002F\u003Csource>.md` (cleaned text) or `.json` (raw)\n- Always create the date folder fresh on a new run; never overwrite a prior date's data\n\nThe synthesized profile (`\u003Ccompetitor-slug>.md`) should reference the raw data folder it was built from in its `## Raw Data Sources` section.\n\n---\n\n## Research Process\n\n### Phase 1: Public-Site Evidence\n\nFor each competitor URL, capture key public pages to extract positioning,\nfeatures, pricing, and messaging.\n\n**Availability gate:** Inspect the tools currently exposed in the session\nbefore selecting an acquisition method. A named connector is usable only when\nit is actually available, connected to the intended account when applicable,\nauthorized for this task, and its current schema has been read. Do not invent a\ntool call from the examples below.\n\nIf no mapping or page-fetch tool is available, use a browser-neutral\u002Fmanual\nfallback: open the public site, follow its primary navigation, inspect its\npublic sitemap or search results when accessible, record the exact URLs and\naccess date, and capture only evidence visible to the user. Respect access\ncontrols, site terms, robots directives where applicable, and rate limits.\n\n**When the gate blocks you**: a source needs an account you were not given, a\nplatform is not connected, a site's terms or robots directives put a page out of\nbounds, or the user wants a dossier published or sent onward without having\nauthorized it, halt in four parts:\n\n1. Stop. Do not collect the blocked source or publish the dossier.\n2. Name the blocker in one line (\"G2 reviews for \u003Ccompetitor> require a signed-in\n   account; this session has no authorized G2 connection\").\n3. Offer 2-4 options (proceed without that source and mark the fields\n   `not collected`; the user supplies an export; the user authorizes the\n   connection; substitute a permitted source).\n4. Wait for the answer. Do not pick one and continue.\n\n#### Step 1: Map the site\n\nIf a current authorized connector exposes a site-map or crawl capability, use\nits documented schema to discover the site structure. For example, some\nFirecrawl connections expose a `firecrawl_map` operation, but that name is not\nguaranteed. Otherwise run the bundled collector, which reads robots.txt and\nsitemaps only:\n\n```\nnode \u003Cskill-dir>\u002Fscripts\u002Fcollect.mjs site \u003Cdomain> --out competitor-profiles\u002Fraw\u002F\u003Ccompetitor-slug>\u002F\u003CYYYY-MM-DD>\u002Fscrapes\u002Furls.csv\n```\n\nIf it prints `blocked by \u003Chost>`, build the URL list through the manual\nfallback. Page capture in Step 2 stays a connector or manual step.\n\nFrom the map, identify and prioritize these page types:\n- Homepage\n- Pricing page\n- Features \u002F product pages\n- About \u002F company page\n- Blog (top-level, for content strategy signals)\n- Customers \u002F case studies page\n- Integrations page\n- Changelog \u002F what's new (if exists)\n\n#### Step 2: Capture key pages\n\nIf a current authorized connector exposes single-page fetch or extraction, use\nits documented schema on each identified URL. For example, some Firecrawl\nconnections expose `firecrawl_scrape`. Otherwise open each public page and\ncapture the relevant visible text manually.\n\n```\navailable page-fetch capability or browser\u002Fmanual capture → page evidence\n```\n\nSave each result to `competitor-profiles\u002Fraw\u002F\u003Ccompetitor-slug>\u002F\u003CYYYY-MM-DD>\u002Fscrapes\u002F\u003Cpage-name>.md` before extracting fields.\n\nExtract from each page:\n\n| Page | What to Extract |\n|------|----------------|\n| **Homepage** | Headline, subheadline, value proposition, primary CTA, social proof claims, target audience signals |\n| **Pricing** | Tiers, prices, feature breakdown per tier, billing options, free tier\u002Ftrial details, enterprise pricing signals |\n| **Features** | Feature categories, key capabilities, how they describe each feature, screenshots\u002Fdemo signals |\n| **About** | Founding story, team size, funding, mission statement, headquarters |\n| **Customers** | Named customers, logos, industries served, case study themes |\n| **Integrations** | Integration count, key integrations, categories |\n| **Changelog** | Release velocity, recent focus areas, product direction signals |\n\n#### Step 3: Capture competitor reviews (optional but high-value)\n\nIf a connected search\u002Ffetch tool is available and authorized, use its current\nschema to find the sources below. Otherwise search or browse them manually.\nPlatform-specific or account-only content may be accessed only when that\nplatform is actually connected and the user has authorized it.\n- G2 reviews page for the competitor\n- Capterra reviews page\n- Product Hunt launch page\n- TrustRadius profile\n\nSave each scraped review page to `competitor-profiles\u002Fraw\u002F\u003Ccompetitor-slug>\u002F\u003CYYYY-MM-DD>\u002Freviews\u002F\u003Csource>.md`. Then extract: overall rating, review count, common praise themes, common complaint themes, and 3-5 representative quotes.\n\n#### Step 4: Collect market signals (deep profile)\n\nRun the collector commands in\n[references\u002Fcollector.md](references\u002Fcollector.md) into the run's `signals\u002F`\nfolder: `stack` (marketing tools and pixels, first month seen), `dns`,\n`subdomains`, `jobs` (hiring by function and channel), `reviews` (App Store\nmonthly volume and rating, for app competitors), `adoption` (npm, PyPI,\nGitHub, for dev tools), and `ads` (ad-library links). Each output is a fact\ncited with its file and pull date; a pixel is an inference that a paid channel\nwas possible, not proof ads ran. When a command prints `blocked by \u003Chost>`,\nuse the manual method or mark the fields `not collected`.\n\n---\n\n### Phase 2: Optional SEO and Market Data\n\nFirst inspect current available tools and user-provided files. If an authorized\nSEO-data connector is exposed, read its current schemas and gather the same\nmetrics for every competitor. Some DataForSEO connections use the capability\nnames below, but their presence and exact schemas are not guaranteed. If no\nprovider is available, analyze a current user-supplied export or mark these\nfields `not collected`; never substitute guessed values.\n\nSave each raw response or export to\n`competitor-profiles\u002Fraw\u002F\u003Ccompetitor-slug>\u002F\u003CYYYY-MM-DD>\u002Fseo\u002F` before parsing.\nRecord provider, access date, market, device, database, and that traffic,\nauthority, and value metrics are provider estimates. See\n[references\u002Ftool-reference.md](references\u002Ftool-reference.md) for conditional\ncapability mapping and manual fallbacks.\n\n#### Domain Authority & Backlinks\n\nWhen the connected provider exposes an equivalent of `backlinks_summary`,\ncollect:\n- Domain rank \u002F authority score\n- Total backlinks\n- Referring domains count\n- Spam score\n\nWhen it exposes an equivalent of `backlinks_referring_domains`, collect:\n- Top referring domains (quality signals)\n- Link acquisition patterns\n\n#### Keyword & Traffic Intelligence\n\nWhen it exposes ranked-keyword data, collect:\n- Total organic keywords ranking\n- Keywords in top 3, top 10, top 100\n- Estimated organic traffic\n\nWhen it exposes a domain organic overview, collect:\n- Domain-level organic metrics\n- Estimated traffic value\n- Top keywords by traffic\n\nWhen it exposes site-keyword discovery, collect:\n- What keywords they target\n- Content gaps vs. your site\n\n#### Competitive Positioning Data\n\nWhen it exposes organic-competitor overlap, collect:\n- Their closest organic competitors (may reveal competitors you haven't considered)\n- Market overlap data\n\nWhen it exposes relevant-page estimates, collect:\n- Their highest-traffic pages\n- Content that drives the most organic value\n\n---\n\n#### AI Answer Visibility\n\nBuyers increasingly ask an assistant before they search. For each competitor,\nrun the same fixed prompt set (category questions such as \"best [category] for\n[ICP]\", comparison questions, and \"[competitor] alternatives\") in each\nassistant the user cares about, on a recorded date, and save the raw answers\nunder `seo\u002Fai-answers-\u003Cassistant>.md`. Record whether each brand is named, its\nposition, and which sources the answer cites. Answers vary run to run, so\nreport counts over the prompt set, never a single answer as a ranking. Hand\ndeeper visibility work to `suede-ai-seo`.\n\n### Phase 3: Synthesis\n\nCombine scraped content with SEO data to build the profile. Cross-reference claims (e.g., if they claim \"10,000 customers\" on site, check if their traffic\u002Fbacklink profile supports that scale).\n\n### Phase 4: Prove it before you hand it over\n\nRun this before the profile leaves your hands. It is one `ls` against a\nstructure Phase 1 and Phase 2 already produced:\n\n```\nls -R competitor-profiles\u002Fraw\u002F\u003Ccompetitor-slug>\u002F\u003CYYYY-MM-DD>\u002F\n```\n\n- Every field not marked `[unknown]` and not marked `not collected` traces to a\n  saved file in that folder. A `[fact: ...]` field traces to the `scrapes\u002F`,\n  `reviews\u002F`, `seo\u002F` or `signals\u002F` file it was read from; an `[inference]` field traces to\n  the scrape file it was inferred from, not to a separate artifact.\n- Any field that traces to nothing gets re-collected or re-marked `[unknown]`.\n  It is never softened into confident prose: that is exactly what Boundaries\n  forbids below.\n- The `## Raw Data Sources` block names the date folder the profile was built\n  from, so the same check is repeatable by someone else later.\n\n---\n\n## Output Format\n\n### Profile Document Structure\n\nGenerate one markdown file per competitor, saved to a `competitor-profiles\u002F` directory in the project root.\n\n**Filename**: `competitor-profiles\u002F[competitor-name].md`\n\n**Read [references\u002Ftemplates.md](references\u002Ftemplates.md) before writing the first\nprofile of a run**: it holds the evidence-marker legend that every field uses, the\nfull Deep Profile Template, the Quick Scan Template, and the summary, positioning-map,\nSWOT and changelog templates. Do not reconstruct a profile structure from memory:\nconsistency across profiles is what makes them comparable.\n\nThe deep profile runs these sections in order: At a Glance, Positioning & Messaging,\nProduct & Features, Pricing, Customers & Social Proof, SEO & Content Strategy,\nStrengths & Weaknesses, Competitive Implications, Raw Data Sources.\n\n---\n\n### Summary Document\n\nAfter profiling all competitors, generate a `competitor-profiles\u002F_summary.md` that includes:\n\n1. **Competitor landscape overview**: one paragraph summarizing the competitive field\n2. **Comparison table**: key metrics side by side for all profiled competitors\n3. **Positioning map**: where each competitor sits (e.g., simple↔complex, cheap↔premium)\n4. **Key takeaways**: 3-5 strategic observations from the research\n5. **Gaps and opportunities**: where the market is underserved\n\n---\n\n## Quick Scan vs. Deep Profile\n\n### Quick Scan (faster, lower cost)\n- Public-site evidence: homepage + pricing page only\n- SEO: one consistent provider overview and ranked-keyword summary when an\n  authorized source or user export is available; otherwise `not collected`\n- Skip: reviews, technology stack, backlink details\n- Output: abbreviated profile (At a Glance + Positioning + Pricing + SEO summary)\n\n### Deep Profile (comprehensive)\n- Public-site evidence: all key pages + available review sources\n- SEO: full backlink analysis + keyword intelligence + competitor discovery\n- Include: technology stack, content strategy analysis, review mining\n- Output: full profile template\n\nDefault to **quick scan** unless the user requests deep profiling or specifies a small number of competitors (3 or fewer).\n\n---\n\n## Handling Multiple Competitors\n\nWhen profiling more than one competitor:\n\n1. **Parallelize only when supported**: capture independent homepages or\n   pricing pages concurrently only when the available tool supports it and its\n   quota allows it; otherwise work sequentially\n2. **Use consistent metrics**: use the same available provider, market,\n   device, database, date window, and metric definitions for every competitor;\n   otherwise mark the comparison unavailable\n3. **Build the summary last**: after all individual profiles are complete\n4. **Prioritize by relevance**: if the user has 10+ competitors, suggest profiling the top 5 first based on domain overlap or market similarity\n\n---\n\n## Updating Profiles\n\nProfiles are snapshots. When updating:\n\n- Check pricing pages first (most volatile); `collect.mjs history \u003Cdomain>\u002Fpricing`\n  lists the months the archived page changed and `hero` the headline and\n  positioning changes. Open the captures before calling a change a pricing move\n- Refresh SEO metrics only through the same available provider and matching\n  market\u002Fdevice\u002Fdatabase parameters, or mark them unavailable\n- Scan changelog for product changes\n- Update the \"Generated\" date\n- Note what changed since last profile in a `## Change Log` section at the bottom\n\n---\n\n## Task-Specific Questions\n\nOnly ask if not answered by context or input:\n\n1. What competitor URLs should I profile?\n2. Quick scan or deep profile?\n3. Any specific dimensions to focus on (pricing, SEO, positioning)?\n4. Should I compare findings against your product?\n\n---\n\n## Boundaries\n\n- Do not present inference, stale pricing, traffic estimates, review summaries, or feature availability as verified current fact.\n- Do not access private accounts, bypass controls, scrape prohibited sources, contact competitors, or publish a dossier without authorization.\n- Do not label a competitor weak, deceptive, or noncompliant without a stated comparison criterion and evidence.\n- Do not decide product, pricing, legal, or sales strategy; surface supported implications and unresolved questions.\n\n## Routing\n\n- Need a public comparison or alternative page -> use `suede-competitors`.\n- Need how a competitor grew over time and which moves to copy -> use `suede-reverse-engineer-anyone`.\n- Need a sales battle card -> use `suede-sales-enablement`.\n- Need review and forum synthesis -> use `suede-customer-research`.\n- Need pricing, ad, or content implications -> use `suede-pricing`, `suede-ads`, or `suede-content-strategy`.\n- From those skills, route current-source competitor research back to `suede-competitor-profiling`.\n\n## Worked contract\n\n[Worked contract](references\u002Fusage-contract.md) gives a bounded input, expected output and failure check for this workflow.\n","# Suede AI Competitor Profiling Skills\n\nUse this competitive-intelligence playbook to turn current public evidence into structured profiles with fact, inference, and unknowns kept separate.\n\n## Compatibility\n\nAn agent with web access and local file writing for raw captures and profiles. Optional SEO providers are used only when already available; their absence leaves those measurements unknown. The bundled `scripts\u002Fcollect.mjs` collector needs Node 22 or later and no API keys.\n\n## Initial Assessment\n\nCheck for `.agents\u002Fproduct-marketing.md` (or `.claude\u002Fproduct-marketing.md`, or the legacy `product-marketing-context.md`) and read it if present: your own positioning and ICP decide which competitors are actually comparable and which dimensions are worth profiling, and they are usually already written down there.\n\nThen work the intake list under Task-Specific Questions below. If the user gave URLs and the context file covers the rest, proceed without asking.\n\n---\n\n## Saving Raw Data\n\nBefore synthesizing the profile, persist all raw page captures, SEO inputs, and\nreview evidence to disk so they can be re-read, audited, or reused without\nrepeating provider requests or manual collection.\n\n**Directory layout** (relative to project root):\n\n```\ncompetitor-profiles\u002F\n├── raw\u002F\n│   └── \u003Ccompetitor-slug>\u002F\n│       └── \u003CYYYY-MM-DD>\u002F\n│           ├── scrapes\u002F    # one .md file per captured page (homepage.md, pricing.md, ...)\n│           ├── seo\u002F        # one .json or .csv file per authorized metric source\n│           ├── signals\u002F    # collect.mjs CSVs (history, hero, stack, dns, jobs, ...)\n│           └── reviews\u002F    # one .md or .json file per review source (g2.md, capterra.md, ...)\n├── \u003Ccompetitor-slug>.md    # final synthesized profile\n└── _summary.md             # cross-competitor summary\n```\n\nRules:\n\n- `\u003Ccompetitor-slug>` is lowercase, hyphenated (e.g. `responsehub`, `safe-base`)\n- `\u003CYYYY-MM-DD>` is the date the data was pulled: supports re-running and diffing snapshots over time\n- Save each browser, manual, or authorized-fetch page capture as raw markdown\n  to `scrapes\u002F\u003Cpage-name>.md`\n- Save each authorized SEO response or user-supplied export to\n  `seo\u002F\u003Csource-name>.\u003Cjson|csv>`\n- Save each review source to `reviews\u002F\u003Csource>.md` (cleaned text) or `.json` (raw)\n- Always create the date folder fresh on a new run; never overwrite a prior date's data\n\nThe synthesized profile (`\u003Ccompetitor-slug>.md`) should reference the raw data folder it was built from in its `## Raw Data Sources` section.\n\n---\n\n## Research Process\n\n### Phase 1: Public-Site Evidence\n\nFor each competitor URL, capture key public pages to extract positioning,\nfeatures, pricing, and messaging.\n\n**Availability gate:** Inspect the tools currently exposed in the session\nbefore selecting an acquisition method. A named connector is usable only when\nit is actually available, connected to the intended account when applicable,\nauthorized for this task, and its current schema has been read. Do not invent a\ntool call from the examples below.\n\nIf no mapping or page-fetch tool is available, use a browser-neutral\u002Fmanual\nfallback: open the public site, follow its primary navigation, inspect its\npublic sitemap or search results when accessible, record the exact URLs and\naccess date, and capture only evidence visible to the user. Respect access\ncontrols, site terms, robots directives where applicable, and rate limits.\n\n**When the gate blocks you**: a source needs an account you were not given, a\nplatform is not connected, a site's terms or robots directives put a page out of\nbounds, or the user wants a dossier published or sent onward without having\nauthorized it, halt in four parts:\n\n1. Stop. Do not collect the blocked source or publish the dossier.\n2. Name the blocker in one line (\"G2 reviews for \u003Ccompetitor> require a signed-in\n   account; this session has no authorized G2 connection\").\n3. Offer 2-4 options (proceed without that source and mark the fields\n   `not collected`; the user supplies an export; the user authorizes the\n   connection; substitute a permitted source).\n4. Wait for the answer. Do not pick one and continue.\n\n#### Step 1: Map the site\n\nIf a current authorized connector exposes a site-map or crawl capability, use\nits documented schema to discover the site structure. For example, some\nFirecrawl connections expose a `firecrawl_map` operation, but that name is not\nguaranteed. Otherwise run the bundled collector, which reads robots.txt and\nsitemaps only:\n\n```\nnode \u003Cskill-dir>\u002Fscripts\u002Fcollect.mjs site \u003Cdomain> --out competitor-profiles\u002Fraw\u002F\u003Ccompetitor-slug>\u002F\u003CYYYY-MM-DD>\u002Fscrapes\u002Furls.csv\n```\n\nIf it prints `blocked by \u003Chost>`, build the URL list through the manual\nfallback. Page capture in Step 2 stays a connector or manual step.\n\nFrom the map, identify and prioritize these page types:\n- Homepage\n- Pricing page\n- Features \u002F product pages\n- About \u002F company page\n- Blog (top-level, for content strategy signals)\n- Customers \u002F case studies page\n- Integrations page\n- Changelog \u002F what's new (if exists)\n\n#### Step 2: Capture key pages\n\nIf a current authorized connector exposes single-page fetch or extraction, use\nits documented schema on each identified URL. For example, some Firecrawl\nconnections expose `firecrawl_scrape`. Otherwise open each public page and\ncapture the relevant visible text manually.\n\n```\navailable page-fetch capability or browser\u002Fmanual capture → page evidence\n```\n\nSave each result to `competitor-profiles\u002Fraw\u002F\u003Ccompetitor-slug>\u002F\u003CYYYY-MM-DD>\u002Fscrapes\u002F\u003Cpage-name>.md` before extracting fields.\n\nExtract from each page:\n\n| Page | What to Extract |\n|------|----------------|\n| **Homepage** | Headline, subheadline, value proposition, primary CTA, social proof claims, target audience signals |\n| **Pricing** | Tiers, prices, feature breakdown per tier, billing options, free tier\u002Ftrial details, enterprise pricing signals |\n| **Features** | Feature categories, key capabilities, how they describe each feature, screenshots\u002Fdemo signals |\n| **About** | Founding story, team size, funding, mission statement, headquarters |\n| **Customers** | Named customers, logos, industries served, case study themes |\n| **Integrations** | Integration count, key integrations, categories |\n| **Changelog** | Release velocity, recent focus areas, product direction signals |\n\n#### Step 3: Capture competitor reviews (optional but high-value)\n\nIf a connected search\u002Ffetch tool is available and authorized, use its current\nschema to find the sources below. Otherwise search or browse them manually.\nPlatform-specific or account-only content may be accessed only when that\nplatform is actually connected and the user has authorized it.\n- G2 reviews page for the competitor\n- Capterra reviews page\n- Product Hunt launch page\n- TrustRadius profile\n\nSave each scraped review page to `competitor-profiles\u002Fraw\u002F\u003Ccompetitor-slug>\u002F\u003CYYYY-MM-DD>\u002Freviews\u002F\u003Csource>.md`. Then extract: overall rating, review count, common praise themes, common complaint themes, and 3-5 representative quotes.\n\n#### Step 4: Collect market signals (deep profile)\n\nRun the collector commands in\n[references\u002Fcollector.md](references\u002Fcollector.md) into the run's `signals\u002F`\nfolder: `stack` (marketing tools and pixels, first month seen), `dns`,\n`subdomains`, `jobs` (hiring by function and channel), `reviews` (App Store\nmonthly volume and rating, for app competitors), `adoption` (npm, PyPI,\nGitHub, for dev tools), and `ads` (ad-library links). Each output is a fact\ncited with its file and pull date; a pixel is an inference that a paid channel\nwas possible, not proof ads ran. When a command prints `blocked by \u003Chost>`,\nuse the manual method or mark the fields `not collected`.\n\n---\n\n### Phase 2: Optional SEO and Market Data\n\nFirst inspect current available tools and user-provided files. If an authorized\nSEO-data connector is exposed, read its current schemas and gather the same\nmetrics for every competitor. Some DataForSEO connections use the capability\nnames below, but their presence and exact schemas are not guaranteed. If no\nprovider is available, analyze a current user-supplied export or mark these\nfields `not collected`; never substitute guessed values.\n\nSave each raw response or export to\n`competitor-profiles\u002Fraw\u002F\u003Ccompetitor-slug>\u002F\u003CYYYY-MM-DD>\u002Fseo\u002F` before parsing.\nRecord provider, access date, market, device, database, and that traffic,\nauthority, and value metrics are provider estimates. See\n[references\u002Ftool-reference.md](references\u002Ftool-reference.md) for conditional\ncapability mapping and manual fallbacks.\n\n#### Domain Authority & Backlinks\n\nWhen the connected provider exposes an equivalent of `backlinks_summary`,\ncollect:\n- Domain rank \u002F authority score\n- Total backlinks\n- Referring domains count\n- Spam score\n\nWhen it exposes an equivalent of `backlinks_referring_domains`, collect:\n- Top referring domains (quality signals)\n- Link acquisition patterns\n\n#### Keyword & Traffic Intelligence\n\nWhen it exposes ranked-keyword data, collect:\n- Total organic keywords ranking\n- Keywords in top 3, top 10, top 100\n- Estimated organic traffic\n\nWhen it exposes a domain organic overview, collect:\n- Domain-level organic metrics\n- Estimated traffic value\n- Top keywords by traffic\n\nWhen it exposes site-keyword discovery, collect:\n- What keywords they target\n- Content gaps vs. your site\n\n#### Competitive Positioning Data\n\nWhen it exposes organic-competitor overlap, collect:\n- Their closest organic competitors (may reveal competitors you haven't considered)\n- Market overlap data\n\nWhen it exposes relevant-page estimates, collect:\n- Their highest-traffic pages\n- Content that drives the most organic value\n\n---\n\n#### AI Answer Visibility\n\nBuyers increasingly ask an assistant before they search. For each competitor,\nrun the same fixed prompt set (category questions such as \"best [category] for\n[ICP]\", comparison questions, and \"[competitor] alternatives\") in each\nassistant the user cares about, on a recorded date, and save the raw answers\nunder `seo\u002Fai-answers-\u003Cassistant>.md`. Record whether each brand is named, its\nposition, and which sources the answer cites. Answers vary run to run, so\nreport counts over the prompt set, never a single answer as a ranking. Hand\ndeeper visibility work to `suede-ai-seo`.\n\n### Phase 3: Synthesis\n\nCombine scraped content with SEO data to build the profile. Cross-reference claims (e.g., if they claim \"10,000 customers\" on site, check if their traffic\u002Fbacklink profile supports that scale).\n\n### Phase 4: Prove it before you hand it over\n\nRun this before the profile leaves your hands. It is one `ls` against a\nstructure Phase 1 and Phase 2 already produced:\n\n```\nls -R competitor-profiles\u002Fraw\u002F\u003Ccompetitor-slug>\u002F\u003CYYYY-MM-DD>\u002F\n```\n\n- Every field not marked `[unknown]` and not marked `not collected` traces to a\n  saved file in that folder. A `[fact: ...]` field traces to the `scrapes\u002F`,\n  `reviews\u002F`, `seo\u002F` or `signals\u002F` file it was read from; an `[inference]` field traces to\n  the scrape file it was inferred from, not to a separate artifact.\n- Any field that traces to nothing gets re-collected or re-marked `[unknown]`.\n  It is never softened into confident prose: that is exactly what Boundaries\n  forbids below.\n- The `## Raw Data Sources` block names the date folder the profile was built\n  from, so the same check is repeatable by someone else later.\n\n---\n\n## Output Format\n\n### Profile Document Structure\n\nGenerate one markdown file per competitor, saved to a `competitor-profiles\u002F` directory in the project root.\n\n**Filename**: `competitor-profiles\u002F[competitor-name].md`\n\n**Read [references\u002Ftemplates.md](references\u002Ftemplates.md) before writing the first\nprofile of a run**: it holds the evidence-marker legend that every field uses, the\nfull Deep Profile Template, the Quick Scan Template, and the summary, positioning-map,\nSWOT and changelog templates. Do not reconstruct a profile structure from memory:\nconsistency across profiles is what makes them comparable.\n\nThe deep profile runs these sections in order: At a Glance, Positioning & Messaging,\nProduct & Features, Pricing, Customers & Social Proof, SEO & Content Strategy,\nStrengths & Weaknesses, Competitive Implications, Raw Data Sources.\n\n---\n\n### Summary Document\n\nAfter profiling all competitors, generate a `competitor-profiles\u002F_summary.md` that includes:\n\n1. **Competitor landscape overview**: one paragraph summarizing the competitive field\n2. **Comparison table**: key metrics side by side for all profiled competitors\n3. **Positioning map**: where each competitor sits (e.g., simple↔complex, cheap↔premium)\n4. **Key takeaways**: 3-5 strategic observations from the research\n5. **Gaps and opportunities**: where the market is underserved\n\n---\n\n## Quick Scan vs. Deep Profile\n\n### Quick Scan (faster, lower cost)\n- Public-site evidence: homepage + pricing page only\n- SEO: one consistent provider overview and ranked-keyword summary when an\n  authorized source or user export is available; otherwise `not collected`\n- Skip: reviews, technology stack, backlink details\n- Output: abbreviated profile (At a Glance + Positioning + Pricing + SEO summary)\n\n### Deep Profile (comprehensive)\n- Public-site evidence: all key pages + available review sources\n- SEO: full backlink analysis + keyword intelligence + competitor discovery\n- Include: technology stack, content strategy analysis, review mining\n- Output: full profile template\n\nDefault to **quick scan** unless the user requests deep profiling or specifies a small number of competitors (3 or fewer).\n\n---\n\n## Handling Multiple Competitors\n\nWhen profiling more than one competitor:\n\n1. **Parallelize only when supported**: capture independent homepages or\n   pricing pages concurrently only when the available tool supports it and its\n   quota allows it; otherwise work sequentially\n2. **Use consistent metrics**: use the same available provider, market,\n   device, database, date window, and metric definitions for every competitor;\n   otherwise mark the comparison unavailable\n3. **Build the summary last**: after all individual profiles are complete\n4. **Prioritize by relevance**: if the user has 10+ competitors, suggest profiling the top 5 first based on domain overlap or market similarity\n\n---\n\n## Updating Profiles\n\nProfiles are snapshots. When updating:\n\n- Check pricing pages first (most volatile); `collect.mjs history \u003Cdomain>\u002Fpricing`\n  lists the months the archived page changed and `hero` the headline and\n  positioning changes. Open the captures before calling a change a pricing move\n- Refresh SEO metrics only through the same available provider and matching\n  market\u002Fdevice\u002Fdatabase parameters, or mark them unavailable\n- Scan changelog for product changes\n- Update the \"Generated\" date\n- Note what changed since last profile in a `## Change Log` section at the bottom\n\n---\n\n## Task-Specific Questions\n\nOnly ask if not answered by context or input:\n\n1. What competitor URLs should I profile?\n2. Quick scan or deep profile?\n3. Any specific dimensions to focus on (pricing, SEO, positioning)?\n4. Should I compare findings against your product?\n\n---\n\n## Boundaries\n\n- Do not present inference, stale pricing, traffic estimates, review summaries, or feature availability as verified current fact.\n- Do not access private accounts, bypass controls, scrape prohibited sources, contact competitors, or publish a dossier without authorization.\n- Do not label a competitor weak, deceptive, or noncompliant without a stated comparison criterion and evidence.\n- Do not decide product, pricing, legal, or sales strategy; surface supported implications and unresolved questions.\n\n## Routing\n\n- Need a public comparison or alternative page -> use `suede-competitors`.\n- Need how a competitor grew over time and which moves to copy -> use `suede-reverse-engineer-anyone`.\n- Need a sales battle card -> use `suede-sales-enablement`.\n- Need review and forum synthesis -> use `suede-customer-research`.\n- Need pricing, ad, or content implications -> use `suede-pricing`, `suede-ads`, or `suede-content-strategy`.\n- From those skills, route current-source competitor research back to `suede-competitor-profiling`.\n\n## Worked contract\n\n[Worked contract](references\u002Fusage-contract.md) gives a bounded input, expected output and failure check for this workflow.\n",{"name":5,"metadata":51,"description":7},{"version":52,"display-name":53},"2.1.0","Suede AI Competitor Profiling Skills","main","2a6d24be2ed571c5ff2319c506b60741bbcb1cb0","plugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-competitor-profiling",490,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins","https:\u002F\u002Fhol.org\u002Fplugins\u002Fbest-codex-plugins","https:\u002F\u002Fgithub.com\u002Fhashgraph-online","https:\u002F\u002Fhol.org","Open-source standards and developer tools for interoperable AI agents: discovery, identity, communication, payments, privacy and security.","2026-11-14 02:12:02",{"source":8,"skillName":5,"commands":65,"prompt":75,"zipAvailable":76},[66,69,72],{"tool":67,"command":68},"npx","npx skills add hashgraph-online\u002Fawesome-codex-plugins --skill suede-competitor-profiling",{"tool":70,"command":71},"bunx","bunx skills add hashgraph-online\u002Fawesome-codex-plugins --skill suede-competitor-profiling",{"tool":73,"command":74},"pnpm","pnpm dlx skills add hashgraph-online\u002Fawesome-codex-plugins --skill suede-competitor-profiling","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-competitor-profiling\u002FSKILL.md",true,[78,84,88,92,96,100,104,108],{"path":79,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":82,"sourceHtmlUrl":83},"agents\u002Fopenai.yaml","REFERENCE","参考文档",566,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-competitor-profiling\u002Fagents\u002Fopenai.yaml",{"path":85,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":86,"sourceHtmlUrl":87},"CARD.md",4613,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-competitor-profiling\u002FCARD.md",{"path":89,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":90,"sourceHtmlUrl":91},"evals\u002Fevals.json",7948,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-competitor-profiling\u002Fevals\u002Fevals.json",{"path":93,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":94,"sourceHtmlUrl":95},"references\u002Fcollector.md",5930,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-competitor-profiling\u002Freferences\u002Fcollector.md",{"path":97,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":98,"sourceHtmlUrl":99},"references\u002Ftemplates.md",11931,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-competitor-profiling\u002Freferences\u002Ftemplates.md",{"path":101,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":102,"sourceHtmlUrl":103},"references\u002Ftool-reference.md",6919,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-competitor-profiling\u002Freferences\u002Ftool-reference.md",{"path":105,"resourceType":80,"resourceTypeDesc":81,"sizeBytes":106,"sourceHtmlUrl":107},"references\u002Fusage-contract.md",823,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-competitor-profiling\u002Freferences\u002Fusage-contract.md",{"path":109,"resourceType":110,"resourceTypeDesc":111,"sizeBytes":112,"sourceHtmlUrl":113},"scripts\u002Fcollect.mjs","SCRIPT","脚本",69334,"https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002FJasonColapietro\u002Fsuede-creator-skills\u002Fskills\u002Fsuede-competitor-profiling\u002Fscripts\u002Fcollect.mjs",[115,123,130,137,162,187],{"skillNo":116,"name":117,"nameZh":6,"description":118,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":119,"categories":120,"keywords":121,"publishedAt":122},"01M746ZWACVKMZ1BJXJZHYJSSX","migrate-to-e2e","Moves an existing Playwright, Cypress, Selenium, Appium, Detox, Maestro, or TesterArmy suite to e2e one slice at a time, with the old suite running beside the new one until each ported test is proven. Keeps a MIGRATION.md progress file so any later session resumes where the last stopped. Optionally plants a defect to show both suites catch it. Use for \u002Fmigrate-to-e2e, \"migrate our tests to e2e\", \"port these Maestro flows\", \"move our TesterArmy tests\", or when a project has an e2e config and an older suite still running.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fmigrate-to-e2e\u002FSKILL.md",[],[],"2026-11-11 15:11:14",{"skillNo":124,"name":125,"nameZh":6,"description":126,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":127,"categories":128,"keywords":129,"publishedAt":122},"01M746ZPTAX1Q0FBKAB1CYND7E","e2e","Writes, runs, and debugs end-to-end tests for web and mobile apps with e2e, the agentic test runner, which mixes agent.act goals with exact locator assertions on a Playwright browser or an iOS or Android device. Also drives a project's running app live over the e2e MCP server to look at a screen, check a UI change, take a screenshot or record a video, and try a locator; and runs bug bashes, parallel e2e explore runs with each bug proven by a repro test. Use when a project depends on e2e or has an e2e.config.ts, when asked for end-to-end, browser, mobile, or agentic UI tests, to check a change in the running app, to QA or bug bash an app or branch, or when an e2e run fails.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fe2e\u002FSKILL.md",[],[],{"skillNo":131,"name":132,"nameZh":6,"description":133,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":134,"categories":135,"keywords":136,"publishedAt":122},"01M746ZJN784HVHMDP9MQGCSGG","create-verification-skill","Generate a project-local verify-\u003Capp> skill on top of e2e, so any coding agent can launch the app, check it is worth driving, exercise a feature the way a user does, keep evidence, and bug bash it. Writes the skill, a feature map with one explore charter per feature, and proves it once. Use for \u002Fcreate-verification-skill, \"make a verification skill for this repo\", or when a project has no scripted way to prove UI behavior.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftester-army\u002Fe2e\u002Fskills\u002Fcreate-verification-skill\u002FSKILL.md",[],[],{"skillNo":138,"name":139,"nameZh":6,"description":140,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":141,"categories":142,"keywords":143,"publishedAt":46},"01M716A6ETNB9B1SQ3GXZC75VR","deja-search","deja-vu memory — search the user's past AI coding sessions with the deja CLI. Holds what they already settled and never wrote into the repo (naming rules, banned or already-tried tools, required checks before merge, preferred values, who owns what). Use before your first edit in a task, before you call a change done or ready to merge, before you recommend a tool, library, design or reviewer, before re-debugging an error that may already be solved, when they say 'didn't we fix this before', 'what did we decide about X' or 'I already have that', and before telling them something on this machine does not exist.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fvshulcz\u002Fdeja-vu\u002Fskills\u002Fdeja-search\u002FSKILL.md",[],[44,144,145,146,147,148,149,150,151,152,153,28,154,155,156,157,158,159,160,161],"deja search","never","error","ready","memory","re","decide","fix","design","debugging","you","done","reviewer","io","change","cli","merge","past",{"skillNo":163,"name":164,"nameZh":6,"description":165,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":166,"categories":167,"keywords":168,"publishedAt":46},"01M716A3J2W5SENSE9VGMXB375","deja-reflect","End-of-session reflection and memory curation with deja-vu. Review what was decided, what commands broke and what repaired them, and record durable project rules or decisions with deja remember so the next session starts with them.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Fvshulcz\u002Fdeja-vu\u002Fskills\u002Fdeja-reflect\u002FSKILL.md",[],[169,170,171,157,172,173,174,175,176,177,178,179,180,181,148,182,183,184,185,186],"deja reflect","reflect","review","with","record","github","next","https","node","Rules","decisions","brew","remember","project rules","project","session","end","reflection",{"skillNo":188,"name":189,"nameZh":6,"description":190,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":191,"categories":192,"keywords":202,"publishedAt":46},"01M715T3RR4BAYSR57HPPTJ0PF","revid","Make, edit, export and post AI videos with Revid (revid.ai) through the Revid MCP server. Use whenever the user wants a short-form or long-form video made (from an idea, a script, a URL, an article, a PDF, a tweet, a product page, their own clips, or a song), wants to find what is going viral on TikTok, YouTube, Instagram or X before making something, wants to edit or re-export an existing Revid project, generate a standalone AI image or clip, make a series episode, or publish and schedule a finished video to connected social accounts. Covers setup (hosted MCP with OAuth, or an API key), the 36 tools, credits, polling and the rules for publishing. Routes to the more specific revid-* skills when one fits.","https:\u002F\u002Fgithub.com\u002Fhashgraph-online\u002Fawesome-codex-plugins\u002Fblob\u002Fmain\u002Fplugins\u002Ftmakersas\u002Frevid-skills\u002Fskills\u002Frevid\u002FSKILL.md",[193,196,199],{"categoryNo":194,"categoryName":195,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000016","图像与多媒体",{"categoryNo":197,"categoryName":198,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000023","Skill与智能体开发",{"categoryNo":200,"categoryName":201,"taxonomyType":21,"taxonomyTypeDesc":22},"01JBSEEDCAT000000000000010","后端与接口",[189,203,204,205,206,207,208,183,209,149,210,211,212,213,28,214,215,216,217,218],"URL","Video","short-form","standalone","PDF","viral","tiktok","short","social","MCP","song","image","mcp server","schedule","api","publish"]