| name | market-report |
| description | Compile previously-generated audit artifacts into a client-ready report in Markdown or PDF format. Invoke whenever the user says "report", "final report", "deliverable", "client report", "PDF report", or runs `/market report <url>` or `/market report --format pdf <url>`. Reads existing audit files in the project root and produces one consolidated deliverable. |
Market Report — Consolidated Deliverable
Compile the outputs of previous /market skills into one cohesive client-ready report. Markdown by default; PDF with --format pdf.
Pre-flight
-
Scan the project root for any of these artifacts:
MARKETING-AUDIT.md
LANDING-CRO.md
SEO-AUDIT.md
BRAND-VOICE.md
COMPETITOR-ANALYSIS.md
FUNNEL-ANALYSIS.md
LAUNCH-PLAN.md
-
If none exist: tell the user they should run /market audit <url> first. Offer to run it.
-
If some exist: use what's there; don't re-analyze unless data is stale or contradictory.
-
Extract scores, findings, and recommendations from each file. Normalize category names across files (they should already match, but verify).
-
Determine the format — --format md (default) or --format pdf.
Report Assembly
Build a JSON data structure that feeds either the Markdown template or the PDF generator:
{
"url": "https://example.com",
"brand_name": "Example",
"date": "YYYY-MM-DD",
"business_type": "SaaS",
"overall_score": 62,
"grade": "D",
"executive_summary": "2–4 sentences.",
"categories": {
"Content & Messaging": {"score": 68, "weight": "25%", "top_finding": "..."},
"Conversion Optimization": {"score": 52, "weight": "20%", "top_finding": "..."},
"SEO & Discoverability": {"score": 74, "weight": "20%", "top_finding": "..."},
"Competitive Positioning": {"score": 48, "weight": "15%", "top_finding": "..."},
"Brand & Trust": {"score": 70, "weight": "10%", "top_finding": "..."},
"Growth & Strategy": {"score": 55, "weight": "10%", "top_finding": "..."}
},
"findings": [
{"severity": "Critical", "title": "...", "evidence": "...", "fix": "...", "impact": "..."}
],
"quick_wins": ["..."],
"medium_term": ["..."],
"strategic": ["..."],
"competitors": [
{"name": "...", "positioning": "...", "pricing": "...", "social_proof": "...", "content": "..."}
]
}
Save to /tmp/report_data.json.
Markdown Output (default)
Generate MARKETING-REPORT-<domain>.md using this structure:
# Marketing Report — [Brand]
**URL:** [url] | **Business type:** [type] | **Date:** [date]
## Overall Score: [X]/100 — Grade [A-F]
[Executive summary — 2–4 sentences.]
## Scores at a Glance
| Category | Score | Weight | Status |
|---|---|---|---|
| Content & Messaging | X | 25% | ... |
| ...
## Key Findings
### 1. [Critical] [Title]
**Evidence:** [quoted]
**Fix:** [specific]
**Impact:** [reasoned]
... repeat ...
## Action Plan
### This Week — Quick Wins
1. ...
### This Month — High-Leverage
1. ...
### This Quarter — Strategic
1. ...
## Competitive Landscape
[If COMPETITOR-ANALYSIS.md exists, include the matrix]
## Methodology
[1 paragraph]
## Appendix
- [Link to MARKETING-AUDIT.md if separate]
- [Link to LANDING-CRO.md if separate]
- etc.
PDF Output (--format pdf)
-
Check reportlab is installed:
python3 -c "import reportlab" 2>/dev/null || pip3 install reportlab
-
Run the generator:
python3 scripts/generate_pdf_report.py /tmp/report_data.json "MARKETING-REPORT-<domain>.pdf"
-
Verify output exists and report file path + size to the user.
-
Clean up: rm /tmp/report_data.json
PDF Contents (generated by the script)
- Cover page with score gauge and grade
- Category bar chart
- Findings table with severity color coding
- Action plan in 3 tiers
- Competitive matrix (if data present)
- Methodology page
When to use Markdown vs PDF
| Use case | Format |
|---|
| Internal use, iterating | Markdown |
| Email attachment to client | PDF |
| Sales proposal support | PDF |
| Version control / handoff | Markdown |
Quality Bar
- Don't fabricate findings to fill gaps. If a category wasn't audited, leave it out or say "not assessed".
- Every score should trace back to an artifact in the project root.
- Round scores to whole numbers.
- The executive summary is the most-read section. Spend disproportionate effort on it.
- If the total score is below 40, don't sugarcoat — but do focus the reader on the 3 highest-leverage fixes, not the 30-item list.