| name | competitive-analysis |
| description | Analyze competing products, tools, or approaches and produce a structured comparison report |
Competitive Analysis
When to Use
Use this skill when tasked with comparing competing products, tools, services, vendors, or approaches. This is for evaluating external options against each other and against organizational needs — not for comparing internal code implementations (use the analyst/comparative-analysis skill for weighted scoring of internal options).
Common scenarios:
- Evaluating vendor products for procurement decisions
- Comparing open-source tools for adoption
- Assessing competitive landscape for strategic planning
- Benchmarking current tooling against alternatives
Output Template
# Competitive Analysis: [Category]
**Date:** YYYY-MM-DD
**Analyst:** [agent name]
**Decision Context:** [What decision does this analysis support?]
## Executive Summary
[2-3 sentences: how many options evaluated, which stands out, why]
## Options Evaluated
| # | Option | Category | Version/Date | Source |
|---|--------|----------|--------------|--------|
| 1 | [name] | [type] | [version] | [where info came from] |
## Comparison Matrix
| Criterion | [Option A] | [Option B] | [Option C] |
|-----------|-----------|-----------|-----------|
| [criterion 1] | [value] | [value] | [value] |
| [criterion 2] | [value] | [value] | [value] |
## Individual Assessments
### [Option A]
**Strengths:**
- [Strength 1 — with specific evidence]
- [Strength 2]
**Weaknesses:**
- [Weakness 1 — with specific evidence]
- [Weakness 2]
**Best Fit For:** [scenario where this option wins]
### [Option B]
...
## Recommendation
**Recommended option:** [name]
**Rationale:** [3-5 sentences explaining why, referencing specific criteria]
**Caveats:** [conditions under which this recommendation would change]
## Sources
| # | Source | Type | Reliability | Notes |
|---|--------|------|-------------|-------|
| 1 | [name/path] | [doc/spec/article] | [High/Medium/Low] | [brief note] |
Procedure
1. Define the Analysis Scope
TASK_ID="$1"
bash /home/shared/scripts/task.sh get "$TASK_ID" | jq -r '.description'
Document these before proceeding:
- Category: What type of thing are we comparing? (e.g., "CI/CD platforms", "cloud storage providers")
- Decision context: What decision does this support? Who is the decision-maker?
- Options: List all options to evaluate (aim for 3-5; fewer is shallow, more is unfocused)
- Constraints: Budget limits, must-have requirements, deal-breakers
2. Gather Information on Each Option
TOPIC="$2"
rg -l -i "$TOPIC" ~/workspace/ /home/shared/ 2>/dev/null | head -30
find ~/workspace/ /home/shared/ -name '*.md' -o -name '*.txt' -o -name '*.csv' \
| xargs grep -li "compar\|versus\|vs\.\|alternative" 2>/dev/null
find /home/shared/ -name '*.json' -o -name '*.csv' -o -name '*.yaml' \
| xargs grep -li "$TOPIC" 2>/dev/null
INPUT_DIR="/home/shared/inputs"
if [ -d "$INPUT_DIR" ]; then
find "$INPUT_DIR" -type f | while read f; do
echo "=== $f ==="
head -50 "$f"
echo ""
done
fi
For each option, create a structured fact file:
OPTION="option-a"
mkdir -p /tmp/competitive-analysis
cat > "/tmp/competitive-analysis/${OPTION}.md" <<'EOF'
- **Full name:**
- **Category:**
- **Version/Release date:**
- **Vendor/Maintainer:**
- **Pricing model:**
- **License:**
- [capability 1]
- [capability 2]
- [limitation 1]
- [limitation 2]
- Source: [path/reference] — [what it says]
EOF
3. Define Evaluation Criteria
Criteria must be specific and measurable. Avoid vague criteria like "ease of use."
cat > /tmp/competitive-analysis/criteria.md <<'EOF'
|
|---|-----------|-----------|-------------|--------|
| 1 | [name] | [what exactly this means] | [how to measure/assess] | [H/M/L] |
| 2 | | | | |
| 3 | | | | |
| 4 | | | | |
| 5 | | | | |
EOF
Good criteria examples:
- "Supports SSO via SAML 2.0" (specific, verifiable)
- "First-year total cost for 50 users" (quantifiable)
- "Time to complete standard onboarding workflow" (measurable)
Bad criteria examples:
- "User-friendly" (subjective, undefined)
- "Good support" (vague)
- "Modern" (meaningless)
4. Build the Comparison Matrix
MATRIX_FILE="/tmp/competitive-analysis/matrix.csv"
echo "criterion,weight,option_a,option_b,option_c" > "$MATRIX_FILE"
cat >> "$MATRIX_FILE" <<'EOF'
SSO Support,H,SAML+OIDC,SAML only,No
Annual Cost (50 users),H,$12000,$8500,$15000
API Rate Limit,M,10000/hr,5000/hr,Unlimited
Setup Time (estimated),M,2 weeks,1 week,3 weeks
Active Community Size,L,15000 GitHub stars,2000,45000
EOF
Render the matrix as a readable table:
column -t -s',' "$MATRIX_FILE"
5. Assess Strengths and Weaknesses
For each option, extract strengths and weaknesses from the gathered facts:
python3 <<'PYEOF'
import csv
with open("/tmp/competitive-analysis/matrix.csv") as f:
reader = csv.DictReader(f)
rows = list(reader)
options = [k for k in rows[0].keys() if k not in ("criterion", "weight")]
for opt in options:
print(f"\n## {opt}")
strengths = []
weaknesses = []
for row in rows:
val = row[opt]
criterion = row["criterion"]
weight = row["weight"]
all_vals = [row[o] for o in options]
print(f" {criterion} ({weight}): {val}")
PYEOF
6. Formulate Recommendation
The recommendation must:
- Name a specific option
- Reference at least 3 criteria from the matrix that support it
- Acknowledge what is sacrificed by not choosing alternatives
- State conditions that would change the recommendation
7. Write the Report
REPORT_FILE="/home/shared/competitive-analysis-$(date +%Y%m%d)-${TOPIC}.md"
cat > "$REPORT_FILE" <<'REPORT'
**Date:** $(date +%Y-%m-%d)
**Analyst:** $(hostname)
**Decision Context:** [What decision this supports]
[2-3 sentences summarizing the analysis and top-level finding]
|
|---|--------|----------|--------------|--------|
| 1 | [name] | [type] | [version] | [source] |
| 2 | [name] | [type] | [version] | [source] |
| 3 | [name] | [type] | [version] | [source] |
|
|---|-----------|-----------|--------|
| 1 | [name] | [what it means] | [H/M/L] |
| 2 | [name] | [what it means] | [H/M/L] |
| Criterion | Weight | [Option A] | [Option B] | [Option C] |
|-----------|--------|-----------|-----------|-----------|
| [name] | H | [value] | [value] | [value] |
| [name] | M | [value] | [value] | [value] |
**Strengths:**
- [Strength with evidence from matrix]
**Weaknesses:**
- [Weakness with evidence from matrix]
**Best Fit For:** [specific scenario]
...
...
**Recommended option:** [name]
**Rationale:** [Why this option, citing specific criteria values from the matrix. Reference at least 3 data points.]
**What you give up:** [Specific advantages of non-recommended options that are sacrificed]
**Conditions that would change this recommendation:**
- If [condition], then [alternative option] would be preferred
- If [constraint changes], reconsider [option]
|
|---|--------|------|-------------|-------|
| 1 | [path/ref] | [type] | [H/M/L] | [note] |
REPORT
echo "Report written to: $REPORT_FILE"
8. Register as Artifact and Notify
bash /home/shared/scripts/artifact.sh register \
--name "competitive-analysis-${TOPIC}" \
--type "analysis" \
--path "$REPORT_FILE" \
--description "Competitive analysis of ${TOPIC} options"
bash /home/shared/scripts/send-mail.sh \
--to "$REQUESTING_AGENT" \
--subject "Competitive analysis complete: ${TOPIC}" \
--body "Report available at: $REPORT_FILE"
Quality Checklist