From dudu
Map direct and indirect competitors, assess incumbent threat, and analyze moat durability. Produces a competitor matrix with citations.
How this skill is triggered — by the user, by Claude, or both
Slash command
/dudu:competitive-landscapeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Map every direct and indirect competitor for the deal. Read `lib/research-protocol.md` and `lib/playwright-auth.md` before starting. Cap at ~5 fetches per competitor and ~30 competitors.
Map every direct and indirect competitor for the deal. Read lib/research-protocol.md and lib/playwright-auth.md before starting. Cap at ~5 fetches per competitor and ~30 competitors.
Required (prompt if missing):
Same idempotency check as other skills (read lib/deal.md). Artifact path: deals/<slug>/competitive-landscape.md. If it exists and --force was not passed, print "Artifact already exists at deals//competitive-landscape.md. Pass --force to overwrite." and stop.
Competitor research splits cleanly per competitor. Run this skill in two stages:
Stage A — discovery (main session, ~10 fetches). Identify the candidate competitor list via batched parallel WebFetch (Layer 1) across Product Hunt, GitHub category search, and news/tech-press for the category. Output: a list of up to ~30 competitors with names + one-line positioning each.
Stage B — per-competitor deep dive (fan out). For the discovered list, dispatch one worker subagent per competitor, all concurrently in a single turn. See lib/research-protocol.md § Parallelization for the cross-platform mapping (Claude Code: Agent with subagent_type="general-purpose"; Codex: spawn_agent with agent_type="worker" and multi_agent = true in config).
Each subagent prompt MUST include:
lib/research-protocol.md (paste, don't reference).Activity verdict (Active / Abandoned / Unknown) with last-commit or last-news date.For incumbents specifically, the subagent additionally returns: shipping evidence link, hiring-signal count + link, public-statement quotes with sources.
After all subagents return, in the main session:
If the discovered competitor list has fewer than 3 entries, skip fan-out and use Layer 1 inline.
# Competitive landscape: <Company>
**Deal:** <slug>
**Generated:** <ISO timestamp>
## Direct competitors
| Competitor | Positioning | Traction | Last funding | Moat type | Last activity | Source |
|------------|-------------|----------|--------------|-----------|---------------|--------|
| ... | ... | ... | ... | ... | ... | [link] |
## Indirect competitors
| Competitor | Why indirect | Risk it becomes direct | Source |
|------------|--------------|------------------------|--------|
| ... | ... | ... | [link] |
## Incumbent threat assessment
For each incumbent who could plausibly crush a startup in this space:
### <Incumbent name>
- **Currently shipping in this area?** Yes / No / Building. Evidence: [link]
- **Hiring signal?** [count of job postings tagged with the relevant keywords, with link]
- **Public statements?** [quotes from earnings calls, blog posts, conference talks, with sources]
- **Verdict:** Sleeping / Watching / Building / Already shipping.
## Moat analysis
For each candidate moat type, with evidence:
- **Network effects:** [analysis with evidence, or "Not applicable"]
- **Proprietary data:** [analysis with evidence, or "Not applicable"]
- **Switching costs:** [analysis with evidence, or "Not applicable"]
- **Brand:** [analysis with evidence, or "Not applicable"]
## Sources
- ...
## Open questions
- ...
Update deals/<slug>/manifest.json skills_completed["competitive-landscape"] to the current ISO-8601 UTC timestamp.
npx claudepluginhub ying-kai-liao/dudu --plugin duduCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.