Competitive moat analysis
Skill event4u-app/agent-config/src/skills/competitive-moat-analysis
Use when mapping competitors, naming defensibility, and finding white-space — moat reasoning, where-to-play, where-not-to-play. Triggers on 'who are we competing with', 'what's our moat'.From its SKILL.md
npx -y skills add event4u-app/agent-config --skill competitive-moat-analysisAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 7 stars7 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
10.2 KB, ~2.3k tokens by cl100k_base, as published. Nobody here has run it
competitive-moat-analysis
When to use
- A strategist needs a competitor map for a market / segment — not a feature-comparison sheet, but a where-they-are-strong / where-we-are-strong / where-no-one-is read.
- A board pack or fundraise narrative claims a moat; the question is which moat, how durable, and what would erode it.
- A market-entry decision needs white-space identification — where can we win cleanly because incumbents structurally can't follow?
Do NOT use for narrative / messaging surface (route to Wing-3 positioning-strategy for the outward-facing pitch; this skill produces the internal cognition that pitch rests on), per-package adoption comparisons (route to competitive-positioning (Wing-1 package-peer comparison)), or build-vs-buy decisions (route to build-buy-partner (P1)).
Cognition cluster
- Mental model 18 — Where to play, where not to play. A moat is read as much from what we refuse to do as from what we do. Trying to win everywhere = winning nowhere. See
mental-models.md§ 18. - Mental model 28 — Inversion. "What would force a customer to leave us for an incumbent?" The inversion answer surfaces the load-bearing moat assumption. If the answer is "nothing", the moat is wishful; if the answer is concrete, that's the real fragility. See
mental-models.md§ 28. - Mental model 21 — Second-order thinking. Moats compound or decay; "feature parity today" says nothing about "feature parity in 18 months". Read each moat by its compounding rate, not its current state. See
mental-models.md§ 21. - Context-spine — customer-segment + product + org-stage. Read customer-segment for which incumbent matters in which segment (the enterprise incumbent is rarely the SMB incumbent). Read product for which moats are real vs roadmap. Read org-stage for moat realism (pre-revenue moats are claims; growth-stage moats are evidence).
Procedure
Step 0: Frame the competitive set honestly
Most "competitor lists" are too broad. For each candidate competitor, ask:
- Do they sell to our customer-segment slot, or an adjacent one? Different segments = different competitive set.
- Do customers actually evaluate them against us, or are they a "we sometimes get compared" mention? Evaluation-set ≠ market-set.
- Are they direct (same outcome) or indirect (different outcome, same budget line)? Both matter; tag which.
Output: the evaluated-against set, the adjacent set, and the indirect-budget-competitor set — three distinct lists.
Step 1: Map the moat dimensions
Pick 4–7 dimensions where moats actually live — not feature checklists. Canonical dimensions:
- Data network effect — does data accumulated by each customer compound across all customers?
- Two-sided network effect — does each new participant make the product more valuable to existing participants?
- Switching cost — does integration depth, data lock-in, or workflow embeddedness raise the exit cost?
- Distribution lock-in — do we own a channel competitors can't replicate (community, partner ecosystem, OEM)?
- Cost-structure advantage — is our unit-economics floor structurally lower than competitors' (route to
unit-economics-modeling(O1) for the read)? - Domain capability — proprietary algorithm, regulatory licence, certification stack, or proprietary dataset.
- Brand / trust — only legitimate in regulated / high-stakes segments where trust is the gating factor.
Don't list dimensions where no one has a moat; those are commodities.
Step 2: Score each competitor on each dimension
For each (competitor × dimension) cell:
- Their position —
strong / moderate / weak / not-applicable. - Our position — same scale.
- Evidence — file, doc, customer quote, public artifact. Cells without evidence = unknown, not parity.
The output is a matrix. Cells without evidence are surfaced, not silently called ties.
Step 3: Inspect the inversion — what would erode each moat we claim?
For each dimension where we score strong:
- What's the technical / business mechanism that holds it?
- What competitor move would erode it in 18 months? (new pricing model, new vertical entry, new tech wave, regulatory shift)
- What evidence would tell us it's eroding? (leading signal, not lagging revenue)
A moat without a named erosion path is unfalsifiable — flag as "claimed-moat, unstressed".
Step 4: Identify the white-space
White-space = (segment × need) cells where no one currently has a strong position. For each:
- Why is no one there? (capability gap, distribution gap, no incumbent has it as a focal job, regulatory complexity)
- Is the gap durable or just slow-to-fill? (durable = structural barrier; slow = first-mover gets a 12-month window then incumbents follow)
- Does our context-spine slot (org-stage, product, segment) let us address it?
White-space ≠ TAM; it's where we can plant a flag and defend it.
Step 5: Validate the moat read before emitting
Before producing the artifact, verify three things:
- Evidence coverage — confirm every
strongcell cites concrete evidence; uncitedstrongcells are demoted to claimed and must be re-run. - Inversion mitigation — assert that every claimed moat has a named erosion path and at least one leading signal to monitor; un-stressed moats are unfalsifiable and must be flagged.
- White-space ≠ wishlist — check that each white-space cell has a named structural reason no one is there; un-named white-space is wishful and must be demoted.
All three must pass. If any fails, return to the failing step.
Step 6: Emit the moat read
Produce the moat-and-white-space artifact. P3 feeds P2 (market-entry-analysis) for beachhead defensibility, P4 (vision-articulation) for "why us" framing, and Wing-3 positioning-strategy for the outward-facing narrative.
Related Skills
WHEN to use this
- Internal moat reading for board, fundraise, strategy off-site.
- Beachhead defensibility check before market entry.
- White-space identification for product / segment expansion.
WHEN NOT to use this
- Outward-facing positioning narrative — route to Wing-3
positioning-strategy; P3 produces the internal read, positioning-strategy produces the external pitch. - Package-vs-peer adoption comparison — route to
competitive-positioning(Wing-1 meta). - Build-vs-buy on a capability gap — route to
build-buy-partner(P1). - Market-entry sequencing — route to
market-entry-analysis(P2); P2 composes this skill for beachhead defensibility. - Vision narrative — route to
vision-articulation(P4); P4 composes this skill for the "why us" frame.
When the agent should load this
- "Who are we actually competing with?"
- "What's our moat?"
- "Where's the white-space?"
- "What would force a customer to leave us?"
- "Wo gewinnen wir wirklich?"
Output
competitive-set.md— evaluated-against / adjacent / indirect-budget lists, each named with one-sentence rationale.moat-matrix.md— competitor × dimension grid; evidence-cited cells; unknowns surfaced.moat-stress-test.md— for each claimed moat: erosion path, leading signals, falsifiability flag.white-space-map.md— (segment × need) cells no one owns; durability tag; addressability check against context-spine.
Gotcha
- "Brand" as a moat is rarely real outside regulated / high-trust segments. Be skeptical.
- "Feature parity" today is not a moat read; it's a snapshot. Read the compounding rate.
- White-space without a named structural reason no one is there = wishlist. Push back hard on un-named white-space.
- The competitive set is usually too broad. Most "competitors" don't show up in customer evaluation sets.
Do NOT
- Do NOT treat feature lists as moat dimensions; moats live in compounding / lock-in / structural-cost dimensions.
- Do NOT call cells parity when there's no evidence — surface as unknown.
- Do NOT claim a moat without a named erosion path and leading signals.
Runnable example
Series-B vertical SaaS in healthcare scheduling.
- Step 0 — Evaluated-against: 2 vertical incumbents + 1 horizontal scheduling tool. Adjacent: 3 general-purpose calendar SaaS (different segment). Indirect: in-house clinic-management software custom builds.
- Step 1 — Dimensions: switching cost (workflow embeddedness), domain capability (HIPAA + state-licensure handling), distribution lock-in (EHR-integration partnerships), cost-structure, data network effect.
- Step 2 — Matrix scored with evidence: we score strong on domain capability (HIPAA certs + 50-state licensure rules) and switching cost (24-month deployment investment); incumbent A strong on distribution (5 EHR integrations); horizontal tool weak across all healthcare dimensions.
- Step 3 — Erosion path for switching-cost moat: "incumbent A ships migration-tooling that cuts switch cost by 70 %." Leading signal: incumbent A hiring senior eng for "migration platform."
- Step 4 — White-space: mid-size dental specialty groups (50–200 providers); incumbents focus on hospitals (too small) or solo practitioners (margin too thin). Structural reason: regulatory complexity per state × dental-specialty workflows mean horizontal tools don't customize enough; hospital-focused incumbents won't down-segment.
- Step 5 — Validate: every strong cell evidence-cited; switching-cost moat has erosion path + leading signal; white-space has structural reason. Pass.
- Step 6 — Emit moat-and-white-space artifact; P2 composes it for the dental-specialty beachhead defensibility read.
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.