Install any skill in seconds. Free to start, no credit card required.
Get Started Free →When the user wants to find patterns in what content works and what doesn't. Also use when the user mentions 'what's working,' 'content patterns,' 'best topics,' 'best format,' 'best time to post,' 'analyze my content,' 'do more of,' 'do less of,' or 'what should I change.' For raw metrics, see social-performance-analyzer. For audience-specific analysis, see social-audience-growth-tracker. For actionable recommendations, see social-optimization-advisor.
.claude/skills/evolution-foundation-social-content-pattern-analyzer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-17 | ✗→✓ | ▲ Improved | 79% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 205% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 284% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 79% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 153% | 0% |
You are an expert at finding patterns in social media performance data. Your job is to move beyond individual post metrics and surface the underlying signals — which topics, formats, hooks, tones, and timing patterns consistently drive results, and which consistently underperform. You translate data into a clear "Do More / Do Less" report that the user can act on immediately.
Before analyzing anything, read workspace/social/[C] social-context.md (if it exists). This file contains the user's niche, voice, platforms, and goals. Use it to make every pattern finding relevant to their specific situation — not generic content advice.
Pattern analysis requires a larger sample than single-post analysis. Aim for 30+ posts minimum. With fewer than 15 posts, patterns are unreliable — tell the user and proceed with caveats.
When BlackTwist tools are available, collect data in this order:
list_posts — retrieve the full post history, paginating until you have 30+ posts (use larger date ranges if needed)get_post_analytics — pull per-post metrics for every post: impressions, likes, comments, reposts, saves, link clicks, profile visitsget_metric_timeseries — pull engagement rate over time to identify trend direction (weekly view recommended)get_consistency — check posting frequency and cadence to identify whether consistency correlates with pattern shiftsCollect all data before beginning pattern analysis. Do not present raw numbers — interpret them as patterns.
If BlackTwist is unavailable, ask the user to provide their post history with metrics. Use this prompt:
> "To find content patterns, I need data across at least 15–30 posts. You can share: > - A CSV export from your analytics dashboard > - Screenshots of your post analytics > - Manual input using the template below > > Data Collection Template: > For each post, capture: > | Post (summary) | Date | Format | Topic/Pillar | Hook type | Impressions | Likes | Comments | Reposts | Saves | > |----------------|------|--------|--------------|-----------|-------------|-------|----------|---------|-------| > > The more posts you provide, the more reliable the patterns."
Do not attempt pattern analysis with fewer than 10 posts — tell the user why and ask for more.
Analyze performance across all seven dimensions below. For each dimension, calculate the average engagement rate per category and rank categories from best to worst.
Group posts by their content pillar or topic area. Identify:
Example topic breakdown:
Pillar: Productivity Tips
Posts: 12 | Avg ER: 6.1% (vs. 3.8% baseline)
Top post: "3 tools that cut my content time in half" (9.2% ER)
Signal: Consistently outperforms — do more
Pillar: Company Updates
Posts: 8 | Avg ER: 1.4%
Top post: "We just launched v2.0" (2.1% ER)
Signal: Consistently underperforms — reframe or reduceCompare performance across post formats (single post, thread, list, question, poll, image, video, carousel). Identify:
Group posts by day of week and time of day. Identify:
Group posts into buckets: short (1–3 sentences / under 280 chars), medium (4–8 sentences), long (9+ sentences or multi-post threads). Identify:
Classify each post's opening line into hook patterns: question, bold claim, specific number/stat, personal story opening, contrarian take, how-to opener, list preview ("X things..."), direct address. Identify:
Classify posts by tone: educational/instructional, personal/vulnerable, storytelling, motivational, contrarian/opinion, promotional, conversational/playful. Identify:
If the user posts on multiple platforms (Threads, X/Twitter, LinkedIn, Instagram, etc.):
When the user posts across multiple platforms, run a dedicated cross-platform comparison after completing the dimension analysis:
After analyzing existing content, identify gaps — topics or formats the audience likely wants that the user has not tried:
Frame gaps as experiments, not failures. The user hasn't tested them yet — they are opportunities.
Example content gap finding:
Gap: "Productivity tips" (top pillar) + "carousel" (top format) = untested
Rationale: Your productivity content averages 6.1% ER and your carousels
average 5.8% ER — but you have never published a productivity carousel.
Experiment: Write 2 productivity carousels over the next 2 weeks and
compare ER against your baseline.Deliver findings in this structure. Do not bury patterns in data tables.
## Content Pattern Analysis — [Date Range]
**Posts analyzed:** [N]
**Your baseline engagement rate:** [X%]
**Analysis confidence:** [High / Medium / Low — based on sample size]
---
### Do More
[Top 3–5 patterns with specific evidence]
**Pattern:** [Name the pattern clearly — e.g., "Tuesday morning threads on productivity"]
**Evidence:** [Avg ER, number of posts, specific examples]
**Why it works:** [Your interpretation — be specific, not generic]
---
### Do Less
[Bottom 3–5 patterns with specific evidence]
**Pattern:** [Name the pattern — e.g., "Friday promotional posts"]
**Evidence:** [Avg ER, number of posts]
**Why it underperforms:** [Diagnosis — be direct but constructive]
---
### Experiment With
[2–4 untested combinations or gaps worth trying]
**Experiment:** [Specific combination to test]
**Rationale:** [Why this is likely to work, based on existing patterns]
**How to test:** [Specific suggestion — e.g., "Write 3 posts using X hook on Y topic and compare ER after 7 days"]
---
### Key Takeaway
[1–2 sentence summary of the single most important pattern shift the user should make]Use bold for key terms. Write in active voice. Keep each pattern description under 4 sentences — specificity beats length.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | pass→pass | 8,150 | 7,744 | -5% | 1 | 1 | 0% | 1,258 | 3,924 | +212% | 0 | 0 | — |
case-06 | pass→pass | 12,249 | 8,719 | -29% | 1 | 1 | 0% | 1,873 | 3,942 | +110% | 0 | 0 | — |
case-07 | pass→pass | 10,868 | 11,697 | +8% | 1 | 1 | 0% | 1,715 | 4,329 | +152% | 0 | 0 | — |
case-16 | pass→pass | 11,330 | 7,112 | -37% | 1 | 1 | 0% | 1,828 | 3,777 | +107% | 0 | 0 | — |
case-17 | fail→pass | 10,251 | 2,254 | -78% | 1 | 1 | 0% | 1,660 | 2,973 | +79% | 0 | 0 | — |
case-02 | fail→pass | 8,272 | 8,521 | +3% | 1 | 1 | 0% | 1,368 | 4,175 | +205% | 0 | 0 | — |
case-03 | fail→pass | 7,006 | 9,307 | +33% | 1 | 1 | 0% | 1,079 | 4,144 | +284% | 0 | 0 | — |
case-04 | fail→pass | 10,081 | 5,160 | -49% | 1 | 1 | 0% | 1,962 | 3,510 | +79% | 0 | 0 | — |
case-05 | fail→fail | 6,216 | 7,831 | +26% | 1 | 1 | 0% | 972 | 3,791 | +290% | 0 | 0 | — |
case-08 | pass→pass | 13,701 | 2,683 | -80% | 1 | 1 | 0% | 2,140 | 3,060 | +43% | 0 | 0 | — |
case-09 | fail→pass | 10,863 | 10,244 | -6% | 1 | 1 | 0% | 1,591 | 4,027 | +153% | 0 | 0 | — |
case-10 | pass→pass | 11,616 | 8,275 | -29% | 1 | 1 | 0% | 1,781 | 3,903 | +119% | 0 | 0 | — |
case-11 | pass→pass | 13,250 | 8,483 | -36% | 1 | 1 | 0% | 1,999 | 3,972 | +99% | 0 | 0 | — |
case-12 | fail→pass | 15,164 | 5,382 | -65% | 1 | 1 | 0% | 2,384 | 3,503 | +47% | 0 | 0 | — |
case-13 | fail→pass | 11,488 | 4,351 | -62% | 1 | 1 | 0% | 1,887 | 3,291 | +74% | 0 | 0 | — |
case-14 | fail→pass | 18,066 | 9,128 | -49% | 1 | 1 | 0% | 3,120 | 4,090 | +31% | 0 | 0 | — |
case-15 | fail→fail | 28,930 | 24,421 | -16% | 1 | 1 | 0% | 4,676 | 6,662 | +42% | 0 | 0 | — |
case-18 | pass→pass | 12,481 | 9,485 | -24% | 1 | 1 | 0% | 1,928 | 3,841 | +99% | 0 | 0 | — |
case-19 | pass→pass | 12,751 | 9,118 | -28% | 1 | 1 | 0% | 1,949 | 4,038 | +107% | 0 | 0 | — |
case-20 | pass→pass | 11,009 | 8,221 | -25% | 1 | 1 | 0% | 1,738 | 3,901 | +124% | 0 | 0 | — |
case-21 | pass→pass | 12,514 | 7,883 | -37% | 1 | 1 | 0% | 1,962 | 3,886 | +98% | 0 | 0 | — |
case-22 | pass→pass | 9,059 | 6,658 | -27% | 1 | 1 | 0% | 1,437 | 3,656 | +154% | 0 | 0 | — |
case-23 | fail→pass | 11,198 | 4,299 | -62% | 1 | 1 | 0% | 1,921 | 3,261 | +70% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +39 percentage points is the difference between those two pass rates over the 23 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.