Help us improve
Share bugs, ideas, or general feedback.
From gtmvp-gtm-agents
Use when synthesizing strengths/weaknesses/opportunities/threats for a brand into a strategic-priority list — not for generic SWOT-as-content output. Output ties each S/W/O/T back to evidence, cross-references competitor insights, and produces a ranked strategic priorities list. Cited by the brand-strategist agent and /gtm-audit slash command.
npx claudepluginhub gtmvp/gtmvp-gtm-agents --plugin gtmvp-gtm-agentsHow this skill is triggered — by the user, by Claude, or both
Slash command
/gtmvp-gtm-agents:swot-analysisThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Most SWOT outputs are useless because they're vague ("strong brand," "limited resources") and disconnected from action. This skill enforces evidence-anchoring and produces a ranked strategic-priorities list as the actual deliverable — the four S/W/O/T quadrants are inputs to the priorities, not the output.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Breaks plans, specs, or PRDs into thin vertical-slice issues on the project issue tracker using tracer bullets. Useful for converting high-level work into grabbable implementation tickets.
Share bugs, ideas, or general feedback.
Most SWOT outputs are useless because they're vague ("strong brand," "limited resources") and disconnected from action. This skill enforces evidence-anchoring and produces a ranked strategic-priorities list as the actual deliverable — the four S/W/O/T quadrants are inputs to the priorities, not the output.
Don't use for sales-collateral SWOTs — those want a flatter, more flattering format.
competitor-discovery-cot first if missing)If competitor data is missing, surface that in dataQuality — without it the SWOT degrades to a generic blurb.
| Quadrant | Source | Question | Trap to avoid |
|---|---|---|---|
| Strengths | Internal | What does this brand do better than alternatives? | "Strong team" — too vague. Be specific: "20+ years selling into mid-market healthcare" |
| Weaknesses | Internal | What internal limitations constrain growth? | "Limited resources" — generic. Be specific: "No retention program; CAC payback 18 months" |
| Opportunities | External | What favorable market conditions could the brand pursue? | Restating market trends. The opportunity is what this brand specifically can do with the trend |
| Threats | External | What unfavorable external forces could damage the brand? | "Competition" — bare. Be specific: "Hubspot bundling AI features at zero marginal cost compresses our category's pricing" |
Work in this order:
Establish data sufficiency. What's known? What's assumed? What's missing? Set dataQuality accordingly: excellent (all sources), good (most), fair (some), poor (mostly inference).
Pass through each quadrant once with evidence. Each item must cite the source: brand intelligence, competitor analysis, market data, observed channel performance. Items without evidence are downgraded or dropped.
Identify cross-quadrant tensions. Where does a Strength enable an Opportunity? Where does a Weakness magnify a Threat? These are the strategic levers.
Rank strategic priorities. From the cross-quadrant analysis, produce 5-8 candidate priorities ranked by impact × feasibility. Each priority must answer: what to do, why, and what to stop doing. Include estimated hours_per_week cost per priority.
Optimize priority selection (Z3 solver). Use the knapsack template from skills/solver-patterns (Template 2) to select the optimal subset of priorities under founder capacity constraints.
Model inputs (derived from Step 4 candidates):
item_ids: each candidate priority's IDvalues[i]: impact_score × swot_coverage_weight — where impact_score is {high=3, medium=2, low=1} and swot_coverage_weight counts how many S/W/O/T items the priority addressescosts[i]: estimated hours_per_week per priority (from Step 4)total_capacity: founder's weekly hours available for strategic work (ask if not provided; default 15)categories[i]: list of SWOT quadrant tags per priority (e.g. ["threat_pricing_compression", "weakness_no_retention"])must_cover_categories: all critical Threats (items scored "high" in threats quadrant) — at least one selected priority must address eachmax_concurrent: default 3 (avoids context-switching for a solo founder)Solver flow (per skills/solver-patterns §2 and skills/gtm-output-schemas §8):
clear_model — fresh sessionadd_item calls per Template 2solve_model with 10s timeoutclear_model — cleanupOutput enrichment. For selected priorities: show hours allocated and remaining capacity. For dropped priorities: show explicit "freed hours" and which SWOT items go unaddressed. Flag uncovered SWOT items as accepted risks.
Set confidence. Not all SWOTs are equal. State your confidence (0-1) and why.
{
"strengths": [
"Specific internal strength backed by evidence (3-7 items)"
],
"weaknesses": [
"Specific internal weakness backed by evidence (3-7 items)"
],
"opportunities": [
"Specific external opportunity tied to a market trend (3-7 items)"
],
"threats": [
"Specific external threat tied to a market force or competitor move (3-7 items)"
],
"competitorInsights": {
"competitive_advantages": ["Where this brand beats the named competitors, specifically"],
"competitive_gaps": ["Where named competitors are stronger"],
"market_opportunities": ["Unmet customer needs surfaced by competitor analysis"]
},
"marketInsights": {
"industry_trends": ["Trends actively reshaping this category (12-24 months)"],
"market_forces": ["Macro forces — economic, technological, regulatory"],
"growth_areas": ["Sub-segments with above-average growth"]
},
"strategicPriorities": [
{
"priority": "Specific action — what to do",
"rationale": "Why this priority is ranked here, citing the SWOT evidence",
"impact": "high | medium | low",
"effort": "high | medium | low",
"hoursPerWeek": 5,
"swotItemsAddressed": ["threat_pricing_compression", "weakness_no_retention"],
"stopDoing": "What this priority explicitly de-prioritizes (a SWOT without trade-offs is a wishlist)"
}
],
"optimizedSelection": {
"selectedPriorities": ["priority_id_1", "priority_id_2", "priority_id_3"],
"droppedPriorities": [
{ "id": "priority_id_4", "freedHours": 8, "uncoveredSwotItems": ["opportunity_ai_tooling"] }
],
"totalHoursAllocated": 14,
"remainingCapacity": 1,
"uncoveredThreats": [],
"acceptedRisks": ["opportunity_ai_tooling"],
"solverStatus": "optimal"
},
"confidence": 0.85,
"dataQuality": "excellent | good | fair | poor"
}
stopDoing field. A SWOT without an explicit trade-off is wishful thinking.dataQuality: 'fair' or worse triggers a recommendation to gather more intel before acting. Bad data + confident SWOT = expensive strategy mistakes.droppedPriorities array isn't a graveyard — it's a conscious decision log with freed hours and accepted risk items.