positioning-map
Build a positioning map for 3–5 competitors and identify the empty quadrant the founder could own
Install / Use
npx skills add majiayu000/claude-skill-registry-data --skill positioning-mapInstalls into whichever agent you are using.
SKILL.md
Installable skill definition
Quality Score
Category
MarketingSupported Platforms
Our assessment of positioning-map
positioning-map scores 59/100 on our quality scale, 588th of 597 Marketing skills we index.
Its SKILL.md is 30 KB long, well organised into 30 sections with 2 code examples: a thorough specification that gives an agent plenty to work with.
It has no GitHub stars yet, so there is no community track record; judge it on its content.
Maintenance, license and trust
- We could not determine when the repository was last updated.
- No license is declared. By default that means all rights are reserved: you can read it, but reusing or redistributing it is not clearly permitted. Ask the author before building on it commercially.
- Its trust signals score 68/100, with 3 cautions from licensing, adoption, age or documentation. These come from repository metadata, not a code audit — read the skill file before letting an agent act on it.
positioning-map compared with similar skills
All 4 of these similar skills score higher than positioning-map; compare them before choosing.
| Skill | Score | Stars | Updated | Format |
|---|---|---|---|---|
| positioning-map (this skill)by majiayu000 | 59 | 0 | — | SKILL.md |
| Agent-Reachby Panniantong | 100 | 91.8k | 20d ago | CLAUDE.md |
| headroomby headroomlabs-ai | 100 | 74.5k | today | CLAUDE.md |
| CowAgentby zhayujie | 100 | 47.2k | today | CLAUDE.md |
| Scraplingby D4Vinci | 100 | 85.9k | 1d ago | MCP Server |
Frequently asked questions
- How do I install positioning-map?
- Run
npx skills add majiayu000/claude-skill-registry-data --skill positioning-map. The install tabs above show the steps for each supported agent. - Which AI agents does positioning-map work with?
- It is written for Universal, as a SKILL.md file. Other agents that read the same format can often use it too.
- Is positioning-map safe to use?
- It declares no license and scores 68/100 on trust signals. Skills are instructions an agent will follow, so read the file before installing it and do not approve commands you do not understand.
- Is positioning-map still maintained?
- We could not determine when the repository was last updated.
Skill content
View source on GitHubname: positioning-map description: Build a positioning map for 3–5 competitors and identify the empty quadrant the founder could own. Use when a founder asks "where's the positioning gap?", "how do I position against X?", "what's the competitive landscape look like on hero / pricing / hiring / customers?", or needs a structured comparison before a launch, repositioning, or fundraise. Combines Anysite MCP (LinkedIn company entity + post search + jobs search; SEC for late-stage) with Exa MCP (fetch JS-heavy SaaS marketing pages, find case studies and changelogs). Returns a comparison table across 5 axes (hero / pricing / specialities / recent shipping / hiring), 3 candidate positioning moves with explicit choice criteria, and a one-sentence positioning statement. Requires customer pain themes as input — positioning without pain context is just rearranging marketing copy. Run competitor-discovery and customer-pain-mining first if you don't have a curated competitor list + pain themes.
Positioning Map
Positioning isn't marketing copy — it's a product decision about who you say no to. This skill makes that choice visible by mapping competitors on 5 signal axes, locating the empty space, and forcing you to pick between 3 candidate moves rather than defaulting to the first one that sounds good.
Founders consistently underweight four things on competitor positioning: hero copy is the most-curated surface (so trust it least), pricing reveals who they actually sell to, what they ship reveals what they think matters, and who they hire reveals where they're going next quarter (the leakiest signal of all). Customer logos reveal who they actually catch, which often contradicts who they pitch.
Frameworks this skill draws from
This skill is the operational version of three positioning frameworks, executed against real public data:
- April Dunford — Obviously Awesome (5 components): competitive alternatives, unique attributes, value (and proof), target market characteristics, market category. Dunford's #1 insight: start with competitive alternatives, not with what you do. This skill operationalizes that by always grounding "the empty quadrant" against the actual competitor set, not against an abstract market.
- Geoffrey Moore — Crossing the Chasm (positioning statement template): "For [target customer] who [need], the [product] is a [category] that [benefit]. Unlike [primary alternative], our product [primary differentiation]." This is the format of the deliverable — the one-sentence positioning move.
- Ries & Trout — Positioning: The Battle for Your Mind (mental real-estate): you can only own ONE word/concept in the customer's mind. The "empty quadrant" framing inherits from this: the position you can own is the one nobody else is claiming AND that customers care about.
Adjacent frameworks worth knowing but not directly encoded here: Treacy & Wiersema's three value disciplines (product leadership / operational excellence / customer intimacy — pick one, do the others adequately) and Ulwick's outcome-driven JTBD (positioning aligned to unmet desired outcomes). If the founder uses these in their own thinking, fold them into the axis choices.
When this skill applies
- Founder asks where the positioning gap is
- Pre-launch — choosing what to say no to
- Pre-fundraise — proving positioning is defensible
- Post-
customer-pain-mining— synthesizing what you found with what competitors actually claim
What you need (inputs)
- 3–5 competitors with URLs — fewer than 3 isn't a map; more than 5 is noise.
- The job-to-be-done — one line. Without it, "axis" has no meaning.
- Customer pain themes — REQUIRED, not optional. Output from
customer-pain-mining. Positioning without pain context is just rearranging marketing copy. The gap lives where pain ≠ competitor claims. If the founder hasn't run pain-mining, refuse to produce a positioning sentence — produce only a descriptive map and flag this in the executive summary. - (Optional) Founder's current positioning — if doing a repositioning exercise.
If you don't have item 1, run competitor-discovery. If you don't have item 3, run customer-pain-mining first.
Tools
Exa MCP (primary for axes 1, 2, 4 — modern SaaS marketing sites are JS-rendered SPAs):
mcp__claude_ai_Exa__web_fetch_exa(urls)— pull homepage / pricing / customers / changelog pages. Batch multiple URLs per call.mcp__claude_ai_Exa__web_search_exa(query, numResults)— find case studies, changelog blogs, "X review" comparison posts.
Anysite MCP:
mcp__claude_ai_Anysite__execute(source="linkedin", category="company", endpoint="company", params={"company": "<alias>"})— company entity + URN + employee count + specialities[] + short_description.mcp__claude_ai_Anysite__execute(source="linkedin", category="search", endpoint="search_posts", params={"keywords": "<competitor> <category>", "date_posted": "past-month", "count": 10})— what they're posting and what's being said about them in the last month. Use this for the "recent shipping" axis; it covers the same ground aslinkedin/company/company_postsbut with richer engagement filtering viaquery_cache.mcp__claude_ai_Anysite__execute(source="linkedin", category="search", endpoint="search_jobs", params={"keywords": "<competitor>", "count": 20})— open roles. Filter response bycompany.aliasmatching the actual target (keyword search can catch namesakes — e.g. a keyword search for one competitor may return a different competitor's roles that mention it in the JD).mcp__claude_ai_Anysite__execute(source="sec", category="search", endpoint="search_companies", params={"entity_name": "<competitor>", "forms": ["10-K","S-1","D"], "count": 5})— only for late-stage / public competitors. For early-stage consumer SaaS, returns nothing useful.mcp__claude_ai_Anysite__execute(source="webparser", category="parse", endpoint="parse", params={...})— only for static-HTML competitor sites. Modern SaaS marketing pages (Next.js / Vercel) return empty; use Exa instead.
Budget: ~3 Anysite calls per competitor (LinkedIn company + post search + jobs search) + ~2 Exa fetches per competitor. For 5 competitors: ~15 Anysite + ~10 Exa.
How to run
For each competitor, run the same 5 axes. Capture as a row in a growing table.
Axis 1 — Hero copy (who they pitch)
mcp__claude_ai_Exa__web_fetch_exa(urls=["https://<competitor>.com"])
Extract: H1 headline, sub-headline, the verb (build / write / cite / extract / scrape / etc.), explicit audience callout if any ("for academic researchers," "for indie devs," "for teams 10–500", "for AI agents").
Validated on the web-scraping niche: a single batched Exa fetch on ["brightdata.com", "apify.com", "firecrawl.dev", "scrapingbee.com", "anysite.io"] returns hero + subhead + pricing summary + customer-logo trust bar for all 5 competitors in one call. The hero is the most curated surface — trust it least for "what the product actually does" and most for "who the company is currently pitching."
Webparser tends to fail on JS-rendered SPAs (Next.js / Vercel marketing sites) — Exa fetch is the reliable primary.
Axis 2 — Pricing (who they actually sell to)
mcp__claude_ai_Exa__web_fetch_exa(urls=["https://<competitor>.com/pricing"])
If /pricing returns CRAWL_NOT_FOUND (it sometimes does for Next.js sites), the pricing is usually on the homepage from Axis 1 — search for "$" in the body text.
Extract: tier names, lowest paid tier (in $), highest published tier, gating (seats / usage / features / credits). Convert everything to monthly USD for comparability. The lowest tier reveals their floor; the highest reveals ambition.
Web-scraping API niche pricing spread (validated): Firecrawl $0 → $16 Hobby → $83 Standard → $333 Growth (credit-based, 5x multiplier on extract). Apify $5 free → $49 Starter (compute-unit). Bright Data product-by-product: Crawl $1/1K req; Unlocker $1/1K; Browser API $5/GB; Web Scraper $0.001/record; effective $499/mo for 510K records. ScrapingBee $49/mo Freelance → $99 Startup → $599 Business+. The whole category is in pricing turmoil — the dominant pain in customer-pain-mining is the credit-multiplier surprise, so the pricing axis has positioning leverage right now.
Axis 3 — LinkedIn company entity (the org's verbatim self-positioning)
mcp__claude_ai_Anysite__execute(source="linkedin", category="company", endpoint="company", params={"company": "<alias or website-derived alias>"})
Returns: short_description, description, employee_count, founded_on, specialities[], headquarter_location.
What to extract:
short_description— often a single positioning sentence the company curates for LinkedIn (different from their homepage hero — useful contrast).specialities[]— explicit, comma-separated list of what they claim to do. Rare verbatim self-positioning. In Dunford's terms, this is their stated "unique attributes" list.employee_count— sets the stage size (e.g. Bright Data=355, Apify=231, Firecrawl=48, ScrapingBee=17).founded_on— for stage context.
Validated on the web-scraping niche: Bright Data's specialities[] is 13 terms long, dominated by use-cases (price intelligence, brand monitoring, market research, AI Agents). Apify's is 8 terms, platform-shaped ("Web scraping, Browser automation, AI agents, API integration, Data pipelines, No-code tools, Actor marketplace, Developer platform"). Firecrawl + ScrapingBee both ship empty specialities[] (small pages, content-marketing-led) — that absence is itself a signal.
Skip company_employee_stats for competitors under ~200 employees — the endpoint returns empty arrays for small organizations.
For the "what did they ship lately" axis, prefer linkedin/search/search_posts from Axis 4 over linkedin/company/company_posts because Axis 4's keyword + mentioned[] filter gives richer engagement-based filtering via query_cache.
Axis 4 — Recent shipping / signal (what they think matters now)
What did they ship or signal in the last 30 days?
mcp__claude_ai_Anysite__execute(source="linkedin", category="search", endpoint="search_posts", params={"keywords": "<competitor name> <category keyword>", "sort": "recent", "date_posted": "past-month", "count": 10})
Filter for signal — many results will be SEO listicles. Keep posts where (a) the author is the company itself (mentioned[] contains the company), or (b) comment_count + sum(reactions[].count) >= 10. Use query_cache.
Alternative: Exa for changelogs / feature blog posts:
mcp__claude_ai_Exa__web_search_exa(query="<competitor> new feature release 2025 — changelog blog post — what's new", numResults=5)
Then fetch the top URL if promising. Some products have explicit /changelog, /whats-new, /blog pages.
What to extract: count feature-release posts vs customer-story posts vs marketing posts in the last 30 days. The ratio tells you the company's stage and what they think the buyer cares about.
Validated on the web-scraping niche: Firecrawl ships fastest on AI-agent affordances (Onboarding-Skill flow, CLI launch, MCP server, "Highlights and Question formats are now live"). Bright Data ships compliance/enterprise content (DataDome partnership, Web MCP "now free"). Apify ships marketplace breadth (native MCP highlight, Creator Growth program, LangChain/n8n integrations). The recent-shipping axis reveals which company believes the buyer cares about which thing this quarter.
Axis 5 — Hiring signal (where they're going next quarter)
mcp__claude_ai_Anysite__execute(source="linkedin", category="search", endpoint="search_jobs", params={"keywords": "<competitor name>", "count": 20})
Hiring is the leakiest competitive signal. Companies can curate hero copy, hide pricing, lawyer up customer logos. They cannot hide that they just opened 5 enterprise sales reqs.
What to extract: count of open roles filtered by `
Truncated for display — read the full file on GitHub.
Related Skills
Agent-Reach
91.8kGive your AI agent eyes to see the entire internet. Read & search Twitter, Reddit, YouTube, GitHub, Bilibili, XiaoHongShu — one CLI, zero API fees.
headroom
74.5kCompress tool outputs, logs, files, and RAG chunks before they reach the LLM. 20% fewer tokens for coding agents, 60-95% fewer tokens for JSON, same answers. Library, proxy, MCP server.
CowAgent
47.2kOpen-source personal AI assistant & Agent Harness. Plans tasks, runs tools and skills, self-evolves with memory and knowledge. Multi-agent, multi-model, multi-channel. Lightweight, extensible, one-line install.
Scrapling
85.9k🕷️ An adaptive Web Scraping framework that handles everything from a single request to a full-scale crawl! Don't be shy, join here: https://discord.gg/EMgGbDceNQ and follow here for daily tips and tricks: https://x.com/Scrapling_dev
Trust signals
From repository metadata: license, adoption, age and documentation. Not a code audit — see the Safety scan above for what the skill file itself contains.
