competitive-intelligence
Skill51 starsChanged 8 months agoMITView on GitHub
Analyzes opportunity data and activity notes to generate competitive intelligence including win/loss rates by competitor, patterns, and rep-ready battlecard talking points. Use when user asks "how are we doing against [competitor]", "competitive analysis", "competitor win rate", "battlecard for [competitor]", "competitive landscape", "why are we losing to [competitor]", or "competitor intelligence".
17 other projects use a version of this.
Adopted by
Most recently taken up by
- realjaymes/marketingagentskillstheir own version, first seen Oct 21, 2026
- open-gitagent/enterprise-skillstheir own version, first seen Oct 15, 2026
- anthropics/knowledge-work-pluginstheir own version, first seen Oct 13, 2026
- akachandan1/proofstacktheir own version, first seen Oct 11, 2026
- edu6565/claude-skillstheir own version, first seen Oct 11, 2026
- SkillMedev/gtm-launchtheir own version, first seen Oct 5, 2026
Used with
Projects with it also use pricing-strategy.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
silvainfmSkillpricing-strategy
When the user wants help with pricing decisions, packaging, or monetization strategy. Also use when the user mentions 'pricing,' 'pricing tiers,' 'freemium,' 'free trial,' 'packaging,' 'price increase,' 'value metric,' 'Van Westendorp,' 'willingness to pay,' or 'monetization.' This skill covers pricing research, tier structure, and packaging strategy.
Also in 3 projects that use this
Other versions17 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 17
- anthropics/knowledge-work-plugins★ 35ksame name
- realjaymes/marketingagentskills★ 68same name
- the-nam-shub/e5-real-skills★ 10same name
- guerrilla2799/marketing-skills★ 9same name
- 10Legs/ceo-f500-harness★ 8same name
- zime-skills/global★ 8same name
- zime-skills/zime-skills★ 8same name
- open-gitagent/enterprise-skills★ 4same name
- alemdarlabs/sage-unreal-mcp★ 2same name
- buildingwithai/skills★ 1same name
7 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository15 other files it gives its agents.
- account-briefing-generatorSkill
- account-risk-early-warningSkill
- create-an-assetSkill
- cross-sell-target-identifierSkill
- daily-briefingSkill
- draft-outreachSkill
- duplicate-detectiveSkill
- expense-entrySkill
- forecastSkill
- handoff-brief-generatorSkill
- lead-qualification-playbookSkill
- log-call-transcriptsSkill
- next-best-action-engineSkill
- pipeline-health-analyzerSkill
- win-loss-pattern-analyzerSkill
The file
We split this skill into the rules it gives an agent
11 rules. 0 are common, 10 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 16 edited versions we read keep these.
10
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 49
Note: If opportunityclose is not populated (competitor not selected at close), fall back to text pattern matching in opportunity …
- Distinctive: line 68
Search description, currentsituation, and customerpainpoints for known competitor keywords or names provided by the user.
- Distinctive: line 73
Search activity notes for competitor mentions:
- Distinctive: line 80
Search notetext for competitor name patterns.
- Distinctive: line 164
Price objections: Look for "cheaper", "lower cost", "price", "pricing"
- Distinctive: line 165
Feature gaps: Look for "missing", "doesn't support", "can't do", "limitation"
- Distinctive: line 166
Existing relationship: Look for "incumbent", "already using", "switching cost", "prefer"
- Distinctive: line 167
Brand recognition: Look for "heard of", "well-known", "trusted", "market leader"
- Distinctive: line 168
Implementation concerns: Look for "complex", "timeline", "integration", "support"
- Distinctive: line 353
Search opportunityclose records for competitorid matching ACME
- Distinctive: line 438
Check if opportunityclose records have competitorid populated
“Common” is measured: kept by at least 6 in 10 of the 16 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Competitive Intelligence
Competitive insights are often locked in deal notes, lost opportunity records, and anecdotal rep knowledge. This skill mines Dataverse to surface structured competitive intelligence: which competitors appear most frequently, where deals are being lost to them, what deal patterns correlate with wins vs losses, and what talking points reps should use. This is the Dataverse-internal equivalent of competitive research — drawing from closed deal history rather than external sources.
Instructions
Step 1: Identify Competitor or Analysis Scope
Accept input from the user:
- Specific competitor name (to analyze one rival)
- All competitors (for a full competitive landscape view)
- Time range (default: last 12 months)
- Segment filter (by owner, territory, deal size, or industry)
Calculate date range for analysis: createdon >= '[start_date]'
Step 2: Identify Lost Deals with Competitor Information
Important: The opportunity entity does not have a direct competitorid field — the opportunity-to-competitor relationship is many-to-many (opportunitycompetitors_association). When an opportunity is closed, Dynamics 365 creates an opportunityclose activity record which does have a direct competitorid lookup. Use opportunityclose for structured competitor data on closed deals.
Query closed-lost opportunityclose records:
SELECT oc.opportunityid, oc.competitorid, oc.description, oc.createdon,
oc.actualrevenue
FROM opportunityclose oc
WHERE oc.statecode = 1
AND oc.createdon >= '[start_date]'
ORDER BY oc.createdon DESCThen join to the opportunity table by opportunityid to get deal details:
SELECT opportunityid, name, estimatedvalue, actualclosedate, salesstage,
description, ownerid, customerid, closeprobability
FROM opportunity
WHERE statecode = 2
AND actualclosedate >= '[start_date]'
ORDER BY actualclosedate DESCNote: If opportunityclose is not populated (competitor not selected at close), fall back to text pattern matching in opportunity description fields as described in Step 3.
Fetch competitor names if competitor table is used:
SELECT competitorid, name, websiteurl, overview, strengths, weaknesses,
opportunitiescomments, threatscomments
FROM competitorStep 3: Mine Opportunity Descriptions for Competitor Mentions
For opportunities without structured competitor fields, search text fields for competitor names:
SELECT opportunityid, name, estimatedvalue, statecode, actualclosedate,
salesstage, description, currentsituation, customerneed, customerpainpoints
FROM opportunity
WHERE statecode IN (1, 2)
AND actualclosedate >= '[start_date]'Search description, currentsituation, and customerpainpoints for known competitor keywords or names provided by the user. Categorize each mention as:
- Win with competitor present (statecode = 1)
- Loss to competitor (statecode = 2)
Step 4: Pull Competitor Annotations from Activities
Search activity notes for competitor mentions:
SELECT annotationid, notetext, subject, objectid, createdon
FROM annotation
WHERE createdon >= '[start_date]'Search notetext for competitor name patterns. Extract:
- Context of mention (evaluation, objection, price comparison)
- Outcome (linked opportunity won or lost)
- Frequency of mention
Also search phonecall and appointment descriptions:
SELECT activityid, subject, description, regardingobjectid, statecode
FROM phonecall
WHERE createdon >= '[start_date]'Step 5: Calculate Win/Loss Rates by Competitor
From Step 2, you now have two lists of opportunityids: [lost_opportunityids] (from opportunityclose where competitorid matches and deal was lost) and [won_opportunityids] (from a separate opportunityclose query for won deals). Run an additional query to capture won opportunityclose records for this competitor:
SELECT oc.opportunityid, oc.createdon, oc.actualrevenue
FROM opportunityclose oc
WHERE oc.competitorid = '[competitorid]'
AND oc.createdon >= '[start_date]'Cross-reference these opportunityids against opportunity.statecode to split into won vs lost buckets. Then aggregate:
Won opportunities where competitor was present:
SELECT COUNT(opportunityid) as won_count, SUM(estimatedvalue) as won_value
FROM opportunity
WHERE statecode = 1
AND actualclosedate >= '[start_date]'Filter results programmatically to only those opportunityids found in the won opportunityclose results above.
Lost opportunities to competitor:
SELECT COUNT(opportunityid) as lost_count, SUM(estimatedvalue) as lost_value
FROM opportunity
WHERE statecode = 2
AND actualclosedate >= '[start_date]'Filter results programmatically to only those opportunityids in [lost_opportunityids] from Step 2.
Calculate:
- Win rate = won_count / (won_count + lost_count) × 100
- Average deal size (wins) vs average deal size (losses)
- Average sales cycle (wins) vs average sales cycle (losses)
Step 6: Identify Deal Patterns
For won deals with competitor present vs lost deals to competitor, compare:
Deal size distribution:
SELECT COUNT(opportunityid) as count, SUM(estimatedvalue) as total_value
FROM opportunity
WHERE statecode = 1
AND estimatedvalue < 25000Filter results programmatically to only those opportunityids in [won_opportunityids]. Repeat for medium ($25K-$100K) and enterprise (>$100K) segments; run equivalent queries for statecode = 2 filtered to [lost_opportunityids].
Industry distribution:
SELECT account.industrycode, COUNT(opportunity.opportunityid) as count
FROM opportunity
JOIN account ON opportunity.customerid = account.accountid
WHERE opportunity.statecode = 2
AND opportunity.actualclosedate >= '[start_date]'
GROUP BY account.industrycodeFilter results programmatically to only those opportunityids in [lost_opportunityids] from Step 2.
Stage at loss:
SELECT salesstage, COUNT(opportunityid) as lost_count, SUM(estimatedvalue) as lost_value
FROM opportunity
WHERE statecode = 2
AND actualclosedate >= '[start_date]'
GROUP BY salesstageFilter results programmatically to only those opportunityids in [lost_opportunityids] from Step 2.
Step 7: Identify Common Objections and Pain Points
From text mining in Step 4, categorize recurring themes from notes and activity descriptions when competitor is mentioned:
- Price objections: Look for "cheaper", "lower cost", "price", "pricing"
- Feature gaps: Look for "missing", "doesn't support", "can't do", "limitation"
- Existing relationship: Look for "incumbent", "already using", "switching cost", "prefer"
- Brand recognition: Look for "heard of", "well-known", "trusted", "market leader"
- Implementation concerns: Look for "complex", "timeline", "integration", "support"
Count frequency of each theme across deal notes.
Step 8: Extract Win Patterns
For won deals where this competitor was present, identify common factors:
Qualification strength in wins:
SELECT budgetstatus, decisionmaker, need, purchasetimeframe, purchaseprocess,
COUNT(opportunityid) as count
FROM opportunity
WHERE statecode = 1
AND actualclosedate >= '[start_date]'
GROUP BY budgetstatus, decisionmaker, need, purchasetimeframe, purchaseprocessFilter results programmatically to only those opportunityids in [won_opportunityids] from Step 5.
Note which BANT patterns appear most often in wins — these inform the competitive playbook.
Activity volume in wins vs losses: Count total activities per opportunity for wins and losses separately using activitypointer to identify engagement differences.
Step 9: Generate Competitive Intelligence Report
COMPETITIVE INTELLIGENCE REPORT
Competitor: [Competitor Name]
Period: [Start Date] – [End Date]
Generated: [Today's Date]
═══════════════════════════════════════════════════════════
EXECUTIVE SUMMARY
───────────────────────────────────────────────────────────
Deals Analyzed: [n won] wins / [n lost] losses
Win Rate (competitive): [n]%
Revenue Won (competitive): $[value]
Revenue Lost to Competitor: $[value]
COMPETITIVE PERFORMANCE BY DEAL SIZE
───────────────────────────────────────────────────────────
Small (<$25K): Win rate [n]% | [n] won, [n] lost
Medium ($25K-$100K): Win rate [n]% | [n] won, [n] lost
Enterprise (>$100K): Win rate [n]% | [n] won, [n] lost
WHERE WE LOSE
───────────────────────────────────────────────────────────
Most losses occur at: [Stage] stage ([n]% of losses)
Top industries lost: [Industry 1] ([n] deals), [Industry 2] ([n] deals)
Average deal size lost: $[value] vs average deal size won: $[value]
COMMON OBJECTIONS (from deal notes)
───────────────────────────────────────────────────────────
1. Price/Cost concerns — mentioned in [n]% of lost deals
2. [Feature gap] — mentioned in [n]% of lost deals
3. [Incumbent relationship] — mentioned in [n]% of lost deals
WIN PATTERNS (what works in competitive deals)
───────────────────────────────────────────────────────────
✓ Economic buyer engaged: [n]% of wins vs [n]% of losses
✓ Budget confirmed before Propose: [n]% of wins vs [n]% of losses
✓ Higher activity volume: [n] avg activities (wins) vs [n] (losses)
✓ Shorter sales cycle: [n] avg days (wins) vs [n] avg days (losses)
BATTLECARD: [COMPETITOR NAME]
───────────────────────────────────────────────────────────
Their strengths (from deal notes):
• [Strength extracted from notes]
• [Strength extracted from notes]
Common objections and responses:
• "They're cheaper" → [Response based on win patterns]
• "[Feature gap]" → [Response/workaround]
• "We already know them" → [Response focused on differentiation]
Where we win:
• [Scenario 1 — e.g., enterprise deals with complex integration needs]
• [Scenario 2 — e.g., accounts with active support issues with competitor]
• [Scenario 3 — e.g., deals where economic buyer is engaged early]
Where to be careful:
• [Risk area 1 — e.g., SMB price-sensitive deals]
• [Risk area 2 — e.g., industries where competitor has strong presence]
RECOMMENDED ACTIONS
───────────────────────────────────────────────────────────
1. [Specific action based on loss patterns]
2. [Coaching recommendation for reps]
3. [Process change to improve win rate]
═══════════════════════════════════════════════════════════Output Format
Deliver a two-part output:
- Intelligence report — quantitative win/loss analysis with patterns
- Battlecard — rep-ready talking points, objection responses, and when-to-use guidance
Example Interaction
User Input: "Show me competitive intelligence on Acme Corp for the last 6 months."
Skill Output:
COMPETITIVE INTELLIGENCE REPORT
Competitor: Acme Corp | Period: Sep 2025 – Mar 2026
═══════════════════════════════════════════════════════════
EXECUTIVE SUMMARY
Win Rate vs Acme Corp: 38% (vs 61% overall win rate)
Revenue Won: $420,000 | Revenue Lost to Acme: $680,000
COMPETITIVE PERFORMANCE BY DEAL SIZE
Small (<$25K): 55% win rate — strongest segment
Medium ($25K-$100K): 32% win rate — significant gap
Enterprise (>$100K): 18% win rate — critical weakness
WHERE WE LOSE
Most losses at: Propose stage (67% of losses)
Top industries: Financial Services (5 deals), Healthcare (3 deals)
COMMON OBJECTIONS
1. Price — mentioned in 71% of lost deals
2. Existing integration with their platform — 43% of lost deals
3. Acme's brand recognition in FSI — 29% of lost deals
WIN PATTERNS
✓ Economic buyer engaged early: 78% of wins vs 22% of losses
✓ POC completed before proposal: 64% of wins vs 11% of losses
BATTLECARD: ACME CORP
"They're cheaper" → "Our TCO over 3 years is [X]% lower due to..."
"We use their platform" → "Our API integrates in <2 hours — here's a reference customer..."Dataverse Tables Used
| Table | Purpose |
opportunity | Win/loss records and deal details |
opportunityclose | Structured competitor data on closed deals (has direct competitorid lookup) |
competitor | Structured competitor profiles |
account | Industry and firmographic context |
activitypointer | Activity volume comparison |
annotation | Mining notes for competitive mentions |
phonecall | Call descriptions for competitor mentions |
Key Fields Reference
opportunity:
statecode(STATE) - Open(0), Won(1), Lost(2)description(MULTILINE TEXT) - General opportunity notescurrentsituation(MULTILINE TEXT) - Customer's current environmentactualclosedate(DATE) - When deal was closedsalesstage(CHOICE) - Stage at close- Note:
opportunityhas no directcompetitoridfield — the relationship is many-to-many viaopportunitycompetitors_association. Useopportunityclose.competitoridfor closed deal competitor data.
opportunityclose:
opportunityid(LOOKUP) - Links to the closed opportunitycompetitorid(LOOKUP) - Competitor selected at close (direct lookup, use this for competitive analysis)description(MULTILINE TEXT) - Close reason / notes entered at time of closeactualrevenue(MONEY) - Final deal value at closestatecode(STATE) - Activity completion statecreatedon(DATETIME) - When the close activity was created
competitor:
name(NVARCHAR) - Competitor namestrengths(MULTILINE TEXT) - Known strengthsweaknesses(MULTILINE TEXT) - Known weaknessesoverview(MULTILINE TEXT) - General descriptionopportunitiescomments(MULTILINE TEXT) - Where we winthreatscomments(MULTILINE TEXT) - Where we lose
Configurable Parameters
- Analysis period (default: last 12 months)
- Minimum deal count threshold for statistical confidence (default: 5 deals)
- Competitor name keywords for text mining (configurable list)
- Deal size segmentation thresholds
Examples
Example 1: Specific Competitor Analysis
User says: "How are we doing against ACME Corp?"
Actions:
- Search opportunityclose records for competitorid matching ACME
- Query won and lost deals with ACME as competitor
- Calculate win/loss rates and deal value analysis
- Mine activity notes for competitive mentions
- Generate battlecard talking points
Result:
COMPETITIVE ANALYSIS: ACME CORP (Last 12 Months)
HEAD-TO-HEAD RECORD:
Wins: 8 deals ($420K) | Losses: 12 deals ($680K)
Win Rate: 40% (vs 55% overall win rate)
WHERE WE LOSE:
- Price objection in 67% of losses
- Mid-market segment: 25% win rate
WHERE WE WIN:
- Enterprise deals: 62% win rate
- When technical eval involved: 71% win rate
BATTLECARD:
"They're cheaper" → "Our TCO over 3 years is 23% lower..."
"We use their platform" → "Our API integrates in <2 hours..."Example 2: Full Competitive Landscape
User says: "Show me the competitive landscape for Q4"
Actions:
- Query all opportunityclose records with competitor data for Q4
- Group by competitor name
- Calculate win rates and deal values per competitor
- Rank by frequency and threat level
Result:
Q4 COMPETITIVE LANDSCAPE
| Competitor | Encounters | Win Rate | Avg Deal |
|------------|------------|----------|----------|
| ACME Corp | 20 deals | 40% | $55K |
| Globex | 14 deals | 57% | $72K |
| Initech | 8 deals | 75% | $45K |
TOP THREAT: ACME Corp (high volume, low win rate)
STRONG AGAINST: Initech (technical differentiation)Example 3: Loss Pattern Analysis
User says: "Why are we losing to Globex?"
Actions:
- Query lost opportunities with Globex as competitor
- Analyze opportunity descriptions and close notes
- Extract common patterns and objections
- Generate actionable insights
Result:
GLOBEX LOSS ANALYSIS (8 losses, $340K)
COMMON PATTERNS:
- 75% lost at Proposal stage (late loss)
- Avg sales cycle: 45 days (vs our 38 day avg)
- 5/8 losses in Financial Services vertical
TOP OBJECTIONS (from notes):
1. "Existing Globex relationship" (3 deals)
2. "Integration concerns" (3 deals)
3. "Reference requests unfulfilled" (2 deals)
RECOMMENDATION:
- Engage technical resources earlier in Financial Services
- Build reference library for banking customersTroubleshooting
Error: No competitor data found
Cause: Competitors not being recorded at deal close, or competitor table empty Solution:
- Check if opportunityclose records have competitorid populated
- Fall back to text mining in opportunity descriptions
- Recommend enabling competitor tracking in close workflow
Error: Insufficient data for analysis
Cause: Too few deals with specific competitor to draw conclusions Solution:
- Expand time range beyond default 12 months
- Combine with related competitors for aggregate view
- Note statistical limitations in output
Error: Win rate appears inaccurate
Cause: opportunityclose only captures explicit competitor selection; many deals may not have competitor recorded Solution:
- Cross-reference with text mining results
- Note coverage percentage in output
- Recommend better competitor capture at deal close
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

