Skip to content

Commit 2f5db8d

Browse files
Merge pull request #76 from coreyhaines31/development
Release: skill descriptions, evals, and writing audit for all 32 skills
2 parents 633f9c6 + 3a8d012 commit 2f5db8d

64 files changed

Lines changed: 3049 additions & 51 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

skills/ab-test-setup/SKILL.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
name: ab-test-setup
3-
description: When the user wants to plan, design, or implement an A/B test or experiment. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," or "hypothesis." For tracking implementation, see analytics-tracking.
3+
description: When the user wants to plan, design, or implement an A/B test or experiment. Also use when the user mentions "A/B test," "split test," "experiment," "test this change," "variant copy," "multivariate test," "hypothesis," "should I test this," "which version is better," "test two versions," "statistical significance," or "how long should I run this test." Use this whenever someone is comparing two approaches and wants to measure which performs better. For tracking implementation, see analytics-tracking. For page-level conversion optimization, see page-cro.
44
metadata:
55
version: 1.1.0
66
---
@@ -180,7 +180,7 @@ We'll know this is true when [metrics].
180180
- Check segment quality
181181
- Document external factors
182182

183-
**DON'T:**
183+
**Avoid:**
184184
- Peek at results and stop early
185185
- Make changes to variants
186186
- Add traffic from new sources
Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
{
2+
"skill_name": "ab-test-setup",
3+
"evals": [
4+
{
5+
"id": 1,
6+
"prompt": "I want to A/B test our homepage headline. We currently say 'The All-in-One Project Management Tool' and want to test something benefit-focused. We get about 15,000 visitors/month and our current signup rate is 3.2%.",
7+
"expected_output": "Should check for product-marketing-context.md first. Should build a proper hypothesis using the framework: 'Because [observation], we believe [change] will cause [outcome], which we'll measure by [metric].' Should identify this as an A/B test (two variants). Should calculate or reference sample size needs based on 15,000 monthly visitors and 3.2% baseline. Should define primary metric (signup rate), secondary metrics, and guardrail metrics. Should warn about the peeking problem and recommend a fixed test duration. Should provide the test plan in the structured output format.",
8+
"assertions": [
9+
"Checks for product-marketing-context.md",
10+
"Uses the hypothesis framework with observation, belief, outcome, and metric",
11+
"Identifies as A/B test type",
12+
"Addresses sample size calculation based on traffic and baseline rate",
13+
"Defines primary metric (signup rate)",
14+
"Defines secondary and guardrail metrics",
15+
"Warns about the peeking problem",
16+
"Provides structured test plan output"
17+
],
18+
"files": []
19+
},
20+
{
21+
"id": 2,
22+
"prompt": "we want to test like 4 different CTA button colors on our pricing page. is that a good idea?",
23+
"expected_output": "Should trigger on casual phrasing. Should identify this as an A/B/n test (multiple variants). Should caution that testing 4 variants requires significantly more traffic than a simple A/B test. Should reference the sample size quick reference showing traffic multipliers for multiple variants. Should question whether button color alone is likely to produce meaningful lift vs testing CTA copy, placement, or surrounding context. Should recommend either reducing to 2 variants or ensuring sufficient traffic. Should still provide hypothesis framework and test setup if proceeding.",
24+
"assertions": [
25+
"Triggers on casual phrasing",
26+
"Identifies as A/B/n test (multiple variants)",
27+
"Cautions about increased traffic needs for 4 variants",
28+
"References sample size requirements",
29+
"Questions whether button color alone is high-impact",
30+
"Suggests alternative higher-impact elements to test",
31+
"Provides hypothesis framework"
32+
],
33+
"files": []
34+
},
35+
{
36+
"id": 3,
37+
"prompt": "Our test has been running for 3 days and Variant B is winning with 95% confidence. Should we call it?",
38+
"expected_output": "Should immediately address the peeking problem. Should explain that checking results early inflates false positive rates. Should recommend running for the full pre-calculated duration regardless of early results. Should explain why early significance can be misleading (regression to the mean, day-of-week effects, audience mix shifts). Should provide guidance on when it IS appropriate to stop early (sequential testing methods). Should recommend the pre-test commitment to duration.",
39+
"assertions": [
40+
"Addresses the peeking problem directly",
41+
"Explains why early significance is misleading",
42+
"Recommends running for full pre-calculated duration",
43+
"Mentions day-of-week effects or audience mix shifts",
44+
"Explains false positive rate inflation from peeking",
45+
"Mentions sequential testing as alternative approach"
46+
],
47+
"files": []
48+
},
49+
{
50+
"id": 4,
51+
"prompt": "Help me set up a multivariate test on our landing page. I want to test the headline, hero image, and CTA button simultaneously.",
52+
"expected_output": "Should identify this as a Multivariate Test (MVT). Should explain that MVT tests combinations of elements and requires much more traffic than A/B tests. Should calculate or reference traffic needs (combinations multiply: e.g., 2 headlines × 2 images × 2 CTAs = 8 combinations). Should recommend MVT only if traffic supports it, otherwise suggest sequential A/B tests. Should build hypotheses for each element being tested. Should define interaction effects to watch for. Should provide structured test plan.",
53+
"assertions": [
54+
"Identifies as multivariate test (MVT)",
55+
"Explains MVT tests combinations of elements",
56+
"Addresses dramatically higher traffic requirements",
57+
"Calculates number of combinations",
58+
"Suggests sequential A/B tests as alternative if traffic insufficient",
59+
"Builds hypotheses for each element",
60+
"Provides structured test plan"
61+
],
62+
"files": []
63+
},
64+
{
65+
"id": 5,
66+
"prompt": "What metrics should I track for an A/B test on our trial signup page? We're testing a longer form (adds company size and role fields) against the current short form.",
67+
"expected_output": "Should apply the metrics selection framework with three tiers: primary, secondary, and guardrail metrics. Primary: form completion rate (the direct conversion metric). Secondary: lead quality metrics (SQL conversion rate, activation rate post-signup). Guardrail: overall signup volume (ensure longer form doesn't tank total signups below acceptable threshold). Should explain the tradeoff between conversion quantity and lead quality. Should note that this test needs longer observation window to measure downstream metrics.",
68+
"assertions": [
69+
"Applies three-tier metric framework (primary, secondary, guardrail)",
70+
"Identifies form completion rate as primary metric",
71+
"Identifies lead quality as secondary metric",
72+
"Defines guardrail metrics to protect against negative outcomes",
73+
"Explains quantity vs quality tradeoff",
74+
"Notes need for longer observation window for downstream metrics"
75+
],
76+
"files": []
77+
},
78+
{
79+
"id": 6,
80+
"prompt": "Can you help me write copy for our new landing page? We want to test it against the current version.",
81+
"expected_output": "Should recognize this is primarily a copywriting task, not a test setup task. Should defer to or cross-reference the copywriting skill for writing the actual copy. May help frame the test hypothesis and setup, but should make clear that copywriting is the right skill for creating the page copy itself.",
82+
"assertions": [
83+
"Recognizes this as primarily a copywriting task",
84+
"References or defers to copywriting skill",
85+
"Does not attempt to write full page copy using test setup patterns",
86+
"May offer to help with test hypothesis and setup"
87+
],
88+
"files": []
89+
},
90+
{
91+
"id": 7,
92+
"prompt": "We ran an A/B test on our pricing page for 4 weeks. Control: 2.1% conversion. Variant: 2.4% conversion. 12,000 visitors per variant. Is this statistically significant? Should we ship it?",
93+
"expected_output": "Should evaluate the results against statistical significance criteria. Should calculate or estimate whether the sample size is sufficient to detect a 0.3 percentage point lift from a 2.1% baseline (this is a ~14% relative lift). Should reference the 95% confidence threshold. Should discuss practical significance vs statistical significance. Should recommend whether to ship, continue testing, or iterate. Should consider segment analysis if results are borderline.",
94+
"assertions": [
95+
"Evaluates against statistical significance criteria",
96+
"Addresses whether sample size is sufficient for this effect size",
97+
"References 95% confidence threshold",
98+
"Distinguishes statistical significance from practical significance",
99+
"Provides clear recommendation on shipping",
100+
"Suggests segment analysis or follow-up if borderline"
101+
],
102+
"files": []
103+
}
104+
]
105+
}

skills/ad-creative/SKILL.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
name: ad-creative
3-
description: "When the user wants to generate, iterate, or scale ad creative — headlines, descriptions, primary text, or full ad variations — for any paid advertising platform. Also use when the user mentions 'ad copy variations,' 'ad creative,' 'generate headlines,' 'RSA headlines,' 'bulk ad copy,' 'ad iterations,' 'creative testing,' or 'ad performance optimization.' This skill covers generating ad creative at scale, iterating based on performance data, and enforcing platform character limits. For campaign strategy and targeting, see paid-ads. For landing page copy, see copywriting."
3+
description: "When the user wants to generate, iterate, or scale ad creative — headlines, descriptions, primary text, or full ad variations — for any paid advertising platform. Also use when the user mentions 'ad copy variations,' 'ad creative,' 'generate headlines,' 'RSA headlines,' 'bulk ad copy,' 'ad iterations,' 'creative testing,' 'ad performance optimization,' 'write me some ads,' 'Facebook ad copy,' 'Google ad headlines,' 'LinkedIn ad text,' or 'I need more ad variations.' Use this whenever someone needs to produce ad copy at scale or iterate on existing ads. For campaign strategy and targeting, see paid-ads. For landing page copy, see copywriting."
44
metadata:
55
version: 1.1.0
66
---
@@ -64,7 +64,7 @@ Pull performance data → Identify winning patterns → Generate new variations
6464

6565
## Platform Specs
6666

67-
**Always enforce these limits.** Never deliver creative that exceeds platform character limits.
67+
Platforms reject or truncate creative that exceeds these limits, so verify every piece of copy fits before delivering.
6868

6969
### Google Ads (Responsive Search Ads)
7070

@@ -320,7 +320,7 @@ For large-scale creative production (Anthropic's growth team generates 100+ vari
320320
- **Writing headlines that only work together** — RSA headlines get combined randomly
321321
- **Ignoring character limits** — Platforms truncate without warning
322322
- **All variations sound the same** — Vary angles, not just word choice
323-
- **No CTA headlines**Always include action-oriented headlines
323+
- **No CTA headlines**RSAs need action-oriented headlines to drive clicks; include at least 2-3
324324
- **Generic descriptions** — "Learn more about our solution" wastes the slot
325325
- **Iterating without data** — Gut feelings are less reliable than metrics
326326
- **Testing too many things at once** — Change one variable per test cycle
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
{
2+
"skill_name": "ad-creative",
3+
"evals": [
4+
{
5+
"id": 1,
6+
"prompt": "Generate ad creative for our Meta (Facebook/Instagram) campaign. We sell an AI writing assistant for content marketers. Main value prop: write blog posts 5x faster. Target audience: content marketing managers at B2B SaaS companies. Budget: $5k/month.",
7+
"expected_output": "Should check for product-marketing-context.md first. Should generate creative following the angle-based approach: identify 3-5 angles (speed, quality, ROI, pain of blank page, competitive edge). For each angle, should generate primary text (≤125 chars), headline (≤40 chars), and description (≤30 chars) respecting Meta character limits. Should provide multiple variations per angle. Should suggest image/visual direction for each. Should organize output with angle name, hook, body, CTA for each variation. Should recommend which angles to test first.",
8+
"assertions": [
9+
"Checks for product-marketing-context.md",
10+
"Uses angle-based generation approach",
11+
"Identifies multiple angles (3-5)",
12+
"Respects Meta character limits (125/40/30)",
13+
"Generates multiple variations per angle",
14+
"Suggests image or visual direction",
15+
"Includes hook, body, and CTA for each",
16+
"Recommends which angles to test first"
17+
],
18+
"files": []
19+
},
20+
{
21+
"id": 2,
22+
"prompt": "I need Google Ads copy for our CRM product. We're targeting the keyword 'best CRM for small business'. Need responsive search ads.",
23+
"expected_output": "Should generate Google RSA creative respecting character limits: headlines (≤30 chars each, need 10-15 variations) and descriptions (≤90 chars each, need 4+ variations). Should note that pinning should be used sparingly as it reduces optimization. Should include the target keyword in headlines. Should provide multiple angle-based variations. Should suggest ad extensions (sitelinks, callouts, structured snippets). Should follow Google Ads best practices for RSA.",
24+
"assertions": [
25+
"Respects Google RSA character limits (30 char headlines, 90 char descriptions)",
26+
"Generates 10-15 headline variations",
27+
"Generates 4+ description variations",
28+
"Includes target keyword in headlines",
29+
"Notes pinning should be used sparingly per skill guidance",
30+
"Suggests ad extensions",
31+
"Uses angle-based variation approach"
32+
],
33+
"files": []
34+
},
35+
{
36+
"id": 3,
37+
"prompt": "Here's our ad performance data: Ad A (pain point angle) - CTR 2.1%, CPC $3.20, Conv rate 4.5%. Ad B (social proof angle) - CTR 1.4%, CPC $4.10, Conv rate 6.2%. Ad C (feature angle) - CTR 0.8%, CPC $5.50, Conv rate 2.1%. Help me iterate on these.",
38+
"expected_output": "Should activate the iteration-from-performance mode (not generate-from-scratch). Should analyze the data: Ad A has best CTR, Ad B has best conversion rate (highest efficiency despite lower CTR), Ad C is underperforming on all metrics. Should recommend doubling down on the pain point angle (high CTR) and social proof angle (high conversion), while pausing or reworking the feature angle. Should generate new variations that combine winning elements (pain point hook + social proof). Should suggest specific iterations on Ad A and Ad B.",
39+
"assertions": [
40+
"Activates iteration mode based on performance data",
41+
"Analyzes CTR, CPC, and conversion rate for each ad",
42+
"Identifies winning angles from the data",
43+
"Recommends pausing or reworking underperforming creative",
44+
"Generates new variations combining winning elements",
45+
"Provides specific iterations on top performers"
46+
],
47+
"files": []
48+
},
49+
{
50+
"id": 4,
51+
"prompt": "we need linkedin ads for our enterprise security product. audience is CISOs and IT directors.",
52+
"expected_output": "Should trigger on casual phrasing. Should generate LinkedIn ad creative respecting character limits: introductory text (≤150 chars), headline (≤70 chars), description (≤100 chars). Should adapt tone and messaging for enterprise security audience (CISOs, IT directors) — more formal, compliance-focused, risk-reduction language. Should provide multiple angles relevant to security buyers (risk reduction, compliance, incident response time, cost of breaches). Should suggest ad format recommendations for LinkedIn (sponsored content, message ads, etc.).",
53+
"assertions": [
54+
"Triggers on casual phrasing",
55+
"Respects LinkedIn character limits (150/70/100)",
56+
"Adapts tone for enterprise security audience",
57+
"Uses risk-reduction and compliance language",
58+
"Provides multiple angles relevant to security buyers",
59+
"Suggests LinkedIn ad format recommendations"
60+
],
61+
"files": []
62+
},
63+
{
64+
"id": 5,
65+
"prompt": "I need to generate a big batch of ad variations for a multi-platform campaign launching next week. We're a meal delivery service targeting busy professionals. Need ads for Google, Meta, and TikTok.",
66+
"expected_output": "Should activate the batch generation workflow. Should generate creative for all three platforms respecting each platform's character limits: Google RSA (30/90), Meta (125/40/30), TikTok (80 chars recommended, 100 max). Should identify 3-5 angles that work across platforms (convenience, health, time savings, variety, cost vs eating out). Should generate variations per angle per platform. Should note platform-specific creative considerations (TikTok needs video concepts, not just text). Should organize output clearly by platform.",
67+
"assertions": [
68+
"Activates batch generation workflow",
69+
"Generates for all three platforms",
70+
"Respects each platform's character limits",
71+
"Identifies angles that work across platforms",
72+
"Notes TikTok needs video concepts",
73+
"Organizes output by platform",
74+
"Generates multiple variations per angle per platform"
75+
],
76+
"files": []
77+
},
78+
{
79+
"id": 6,
80+
"prompt": "Help me plan our overall paid advertising strategy. We have a $20k monthly budget and want to figure out which platforms to use and how to allocate spend.",
81+
"expected_output": "Should recognize this is a paid advertising strategy task, not ad creative generation. Should defer to or cross-reference the paid-ads skill, which handles campaign strategy, platform selection, and budget allocation. May briefly mention creative considerations but should make clear that paid-ads is the right skill for strategy.",
82+
"assertions": [
83+
"Recognizes this as paid ads strategy, not creative generation",
84+
"References or defers to paid-ads skill",
85+
"Does not attempt full campaign strategy using creative generation patterns"
86+
],
87+
"files": []
88+
}
89+
]
90+
}

0 commit comments

Comments
 (0)