@miranda0808/maya-codex 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +30 -0
- package/bin/maya-codex.js +36 -0
- package/package.json +19 -0
- package/payload/.agents/skills/ab-test-setup/SKILL.md +266 -0
- package/payload/.agents/skills/ab-test-setup/evals/evals.json +105 -0
- package/payload/.agents/skills/ab-test-setup/references/sample-size-guide.md +263 -0
- package/payload/.agents/skills/ab-test-setup/references/test-templates.md +277 -0
- package/payload/.agents/skills/ad-creative/SKILL.md +362 -0
- package/payload/.agents/skills/ad-creative/evals/evals.json +90 -0
- package/payload/.agents/skills/ad-creative/references/generative-tools.md +637 -0
- package/payload/.agents/skills/ad-creative/references/platform-specs.md +213 -0
- package/payload/.agents/skills/ai-seo/SKILL.md +398 -0
- package/payload/.agents/skills/ai-seo/evals/evals.json +90 -0
- package/payload/.agents/skills/ai-seo/references/content-patterns.md +285 -0
- package/payload/.agents/skills/ai-seo/references/platform-ranking-factors.md +152 -0
- package/payload/.agents/skills/analytics-tracking/SKILL.md +309 -0
- package/payload/.agents/skills/analytics-tracking/evals/evals.json +90 -0
- package/payload/.agents/skills/analytics-tracking/references/event-library.md +260 -0
- package/payload/.agents/skills/analytics-tracking/references/ga4-implementation.md +300 -0
- package/payload/.agents/skills/analytics-tracking/references/gtm-implementation.md +390 -0
- package/payload/.agents/skills/churn-prevention/SKILL.md +424 -0
- package/payload/.agents/skills/churn-prevention/evals/evals.json +93 -0
- package/payload/.agents/skills/churn-prevention/references/cancel-flow-patterns.md +316 -0
- package/payload/.agents/skills/churn-prevention/references/dunning-playbook.md +408 -0
- package/payload/.agents/skills/cold-email/SKILL.md +158 -0
- package/payload/.agents/skills/cold-email/evals/evals.json +94 -0
- package/payload/.agents/skills/cold-email/references/benchmarks.md +83 -0
- package/payload/.agents/skills/cold-email/references/follow-up-sequences.md +81 -0
- package/payload/.agents/skills/cold-email/references/frameworks.md +90 -0
- package/payload/.agents/skills/cold-email/references/personalization.md +79 -0
- package/payload/.agents/skills/cold-email/references/subject-lines.md +53 -0
- package/payload/.agents/skills/competitor-alternatives/SKILL.md +256 -0
- package/payload/.agents/skills/competitor-alternatives/evals/evals.json +93 -0
- package/payload/.agents/skills/competitor-alternatives/references/content-architecture.md +271 -0
- package/payload/.agents/skills/competitor-alternatives/references/templates.md +223 -0
- package/payload/.agents/skills/content-strategy/SKILL.md +359 -0
- package/payload/.agents/skills/content-strategy/evals/evals.json +90 -0
- package/payload/.agents/skills/copy-editing/SKILL.md +447 -0
- package/payload/.agents/skills/copy-editing/evals/evals.json +89 -0
- package/payload/.agents/skills/copy-editing/references/plain-english-alternatives.md +394 -0
- package/payload/.agents/skills/copywriting/SKILL.md +252 -0
- package/payload/.agents/skills/copywriting/evals/evals.json +111 -0
- package/payload/.agents/skills/copywriting/references/copy-frameworks.md +344 -0
- package/payload/.agents/skills/copywriting/references/natural-transitions.md +272 -0
- package/payload/.agents/skills/email-sequence/SKILL.md +309 -0
- package/payload/.agents/skills/email-sequence/evals/evals.json +93 -0
- package/payload/.agents/skills/email-sequence/references/copy-guidelines.md +113 -0
- package/payload/.agents/skills/email-sequence/references/email-types.md +515 -0
- package/payload/.agents/skills/email-sequence/references/sequence-templates.md +168 -0
- package/payload/.agents/skills/form-cro/SKILL.md +429 -0
- package/payload/.agents/skills/form-cro/evals/evals.json +90 -0
- package/payload/.agents/skills/free-tool-strategy/SKILL.md +178 -0
- package/payload/.agents/skills/free-tool-strategy/evals/evals.json +90 -0
- package/payload/.agents/skills/free-tool-strategy/references/tool-types.md +217 -0
- package/payload/.agents/skills/launch-strategy/SKILL.md +353 -0
- package/payload/.agents/skills/launch-strategy/evals/evals.json +91 -0
- package/payload/.agents/skills/marketing-ideas/SKILL.md +167 -0
- package/payload/.agents/skills/marketing-ideas/evals/evals.json +90 -0
- package/payload/.agents/skills/marketing-ideas/references/ideas-by-category.md +366 -0
- package/payload/.agents/skills/marketing-psychology/SKILL.md +455 -0
- package/payload/.agents/skills/marketing-psychology/evals/evals.json +88 -0
- package/payload/.agents/skills/onboarding-cro/SKILL.md +220 -0
- package/payload/.agents/skills/onboarding-cro/evals/evals.json +92 -0
- package/payload/.agents/skills/onboarding-cro/references/experiments.md +258 -0
- package/payload/.agents/skills/page-cro/SKILL.md +182 -0
- package/payload/.agents/skills/page-cro/evals/evals.json +111 -0
- package/payload/.agents/skills/page-cro/references/experiments.md +248 -0
- package/payload/.agents/skills/paid-ads/SKILL.md +315 -0
- package/payload/.agents/skills/paid-ads/evals/evals.json +90 -0
- package/payload/.agents/skills/paid-ads/references/ad-copy-templates.md +207 -0
- package/payload/.agents/skills/paid-ads/references/audience-targeting.md +243 -0
- package/payload/.agents/skills/paid-ads/references/platform-setup-checklists.md +277 -0
- package/payload/.agents/skills/paywall-upgrade-cro/SKILL.md +227 -0
- package/payload/.agents/skills/paywall-upgrade-cro/evals/evals.json +93 -0
- package/payload/.agents/skills/paywall-upgrade-cro/references/experiments.md +164 -0
- package/payload/.agents/skills/popup-cro/SKILL.md +453 -0
- package/payload/.agents/skills/popup-cro/evals/evals.json +94 -0
- package/payload/.agents/skills/pricing-strategy/SKILL.md +231 -0
- package/payload/.agents/skills/pricing-strategy/evals/evals.json +90 -0
- package/payload/.agents/skills/pricing-strategy/references/research-methods.md +152 -0
- package/payload/.agents/skills/pricing-strategy/references/tier-structure.md +232 -0
- package/payload/.agents/skills/product-marketing-context/SKILL.md +27 -0
- package/payload/.agents/skills/product-marketing-context/evals/evals.json +40 -0
- package/payload/.agents/skills/programmatic-seo/SKILL.md +238 -0
- package/payload/.agents/skills/programmatic-seo/evals/evals.json +94 -0
- package/payload/.agents/skills/programmatic-seo/references/playbooks.md +308 -0
- package/payload/.agents/skills/referral-program/SKILL.md +255 -0
- package/payload/.agents/skills/referral-program/evals/evals.json +89 -0
- package/payload/.agents/skills/referral-program/references/affiliate-programs.md +164 -0
- package/payload/.agents/skills/referral-program/references/program-examples.md +143 -0
- package/payload/.agents/skills/revops/SKILL.md +343 -0
- package/payload/.agents/skills/revops/evals/evals.json +91 -0
- package/payload/.agents/skills/revops/references/automation-playbooks.md +290 -0
- package/payload/.agents/skills/revops/references/lifecycle-definitions.md +278 -0
- package/payload/.agents/skills/revops/references/routing-rules.md +203 -0
- package/payload/.agents/skills/revops/references/scoring-models.md +247 -0
- package/payload/.agents/skills/sales-enablement/SKILL.md +349 -0
- package/payload/.agents/skills/sales-enablement/evals/evals.json +91 -0
- package/payload/.agents/skills/sales-enablement/references/deck-frameworks.md +263 -0
- package/payload/.agents/skills/sales-enablement/references/demo-scripts.md +355 -0
- package/payload/.agents/skills/sales-enablement/references/objection-library.md +270 -0
- package/payload/.agents/skills/sales-enablement/references/one-pager-templates.md +208 -0
- package/payload/.agents/skills/schema-markup/SKILL.md +179 -0
- package/payload/.agents/skills/schema-markup/evals/evals.json +87 -0
- package/payload/.agents/skills/schema-markup/references/schema-examples.md +398 -0
- package/payload/.agents/skills/seo-audit/SKILL.md +412 -0
- package/payload/.agents/skills/seo-audit/evals/evals.json +136 -0
- package/payload/.agents/skills/seo-audit/references/ai-writing-detection.md +200 -0
- package/payload/.agents/skills/signup-flow-cro/SKILL.md +359 -0
- package/payload/.agents/skills/signup-flow-cro/evals/evals.json +88 -0
- package/payload/.agents/skills/site-architecture/SKILL.md +357 -0
- package/payload/.agents/skills/site-architecture/evals/evals.json +88 -0
- package/payload/.agents/skills/site-architecture/references/mermaid-templates.md +216 -0
- package/payload/.agents/skills/site-architecture/references/navigation-patterns.md +305 -0
- package/payload/.agents/skills/site-architecture/references/site-type-templates.md +293 -0
- package/payload/.agents/skills/social-content/SKILL.md +278 -0
- package/payload/.agents/skills/social-content/evals/evals.json +92 -0
- package/payload/.agents/skills/social-content/references/platforms.md +170 -0
- package/payload/.agents/skills/social-content/references/post-templates.md +177 -0
- package/payload/.agents/skills/social-content/references/reverse-engineering.md +195 -0
- package/payload/.maya/executor.md +79 -0
- package/payload/.maya/meta-api-agent.md +48 -0
- package/payload/.maya/modes/consult.md +63 -0
- package/payload/.maya/modes/task.md +97 -0
- package/payload/.maya/planner.md +69 -0
- package/payload/.maya/researcher.md +51 -0
- package/payload/.maya/templates/plan.md +77 -0
- package/payload/.maya/templates/state.md +87 -0
- package/payload/.maya/templates/task-packet.md +75 -0
- package/payload/MAYA-CATALOG.md +115 -0
- package/payload/MAYA-DEPENDENCIES.md +58 -0
- package/payload/MAYA.md +151 -0
- package/payload/campaigns/README.md +14 -0
- package/payload/commands/maya-consult.md +28 -0
- package/payload/commands/maya-task.md +38 -0
- package/payload/commands/product.md +55 -0
- package/payload/research/README.md +14 -0
- package/payload/templates/README.md +15 -0
- package/payload/templates/plan.md +77 -0
- package/payload/templates/state.md +87 -0
- package/payload/templates/task-packet.md +75 -0
- package/payload/tools/REGISTRY.md +368 -0
- package/payload/tools/clis/README.md +187 -0
- package/payload/tools/clis/activecampaign.js +435 -0
- package/payload/tools/clis/adobe-analytics.js +161 -0
- package/payload/tools/clis/ahrefs.js +192 -0
- package/payload/tools/clis/amplitude.js +182 -0
- package/payload/tools/clis/apollo.js +142 -0
- package/payload/tools/clis/beehiiv.js +245 -0
- package/payload/tools/clis/brevo.js +368 -0
- package/payload/tools/clis/buffer.js +260 -0
- package/payload/tools/clis/calendly.js +253 -0
- package/payload/tools/clis/clearbit.js +163 -0
- package/payload/tools/clis/customer-io.js +205 -0
- package/payload/tools/clis/dataforseo.js +257 -0
- package/payload/tools/clis/demio.js +149 -0
- package/payload/tools/clis/dub.js +158 -0
- package/payload/tools/clis/g2.js +186 -0
- package/payload/tools/clis/ga4.js +194 -0
- package/payload/tools/clis/google-ads.js +189 -0
- package/payload/tools/clis/google-search-console.js +166 -0
- package/payload/tools/clis/hotjar.js +167 -0
- package/payload/tools/clis/hunter.js +249 -0
- package/payload/tools/clis/instantly.js +270 -0
- package/payload/tools/clis/intercom.js +399 -0
- package/payload/tools/clis/keywords-everywhere.js +185 -0
- package/payload/tools/clis/kit.js +232 -0
- package/payload/tools/clis/klaviyo.js +348 -0
- package/payload/tools/clis/lemlist.js +221 -0
- package/payload/tools/clis/linkedin-ads.js +185 -0
- package/payload/tools/clis/livestorm.js +292 -0
- package/payload/tools/clis/mailchimp.js +220 -0
- package/payload/tools/clis/mention-me.js +161 -0
- package/payload/tools/clis/meta-ads.js +181 -0
- package/payload/tools/clis/mixpanel.js +248 -0
- package/payload/tools/clis/onesignal.js +241 -0
- package/payload/tools/clis/optimizely.js +233 -0
- package/payload/tools/clis/paddle.js +385 -0
- package/payload/tools/clis/partnerstack.js +382 -0
- package/payload/tools/clis/plausible.js +249 -0
- package/payload/tools/clis/postmark.js +375 -0
- package/payload/tools/clis/resend.js +370 -0
- package/payload/tools/clis/rewardful.js +160 -0
- package/payload/tools/clis/savvycal.js +223 -0
- package/payload/tools/clis/segment.js +192 -0
- package/payload/tools/clis/semrush.js +207 -0
- package/payload/tools/clis/sendgrid.js +211 -0
- package/payload/tools/clis/snov.js +237 -0
- package/payload/tools/clis/tiktok-ads.js +190 -0
- package/payload/tools/clis/tolt.js +153 -0
- package/payload/tools/clis/trustpilot.js +276 -0
- package/payload/tools/clis/typeform.js +269 -0
- package/payload/tools/clis/wistia.js +256 -0
- package/payload/tools/clis/zapier.js +160 -0
- package/payload/tools/integrations/activecampaign.md +337 -0
- package/payload/tools/integrations/adobe-analytics.md +156 -0
- package/payload/tools/integrations/ahrefs.md +142 -0
- package/payload/tools/integrations/amplitude.md +135 -0
- package/payload/tools/integrations/apollo.md +148 -0
- package/payload/tools/integrations/beehiiv.md +157 -0
- package/payload/tools/integrations/brevo.md +268 -0
- package/payload/tools/integrations/buffer.md +138 -0
- package/payload/tools/integrations/calendly.md +161 -0
- package/payload/tools/integrations/clearbit.md +142 -0
- package/payload/tools/integrations/customer-io.md +187 -0
- package/payload/tools/integrations/dataforseo.md +165 -0
- package/payload/tools/integrations/demio.md +182 -0
- package/payload/tools/integrations/dub-co.md +160 -0
- package/payload/tools/integrations/g2.md +179 -0
- package/payload/tools/integrations/ga4.md +126 -0
- package/payload/tools/integrations/google-ads.md +159 -0
- package/payload/tools/integrations/google-search-console.md +147 -0
- package/payload/tools/integrations/hotjar.md +147 -0
- package/payload/tools/integrations/hubspot.md +178 -0
- package/payload/tools/integrations/hunter.md +90 -0
- package/payload/tools/integrations/instantly.md +104 -0
- package/payload/tools/integrations/intercom.md +292 -0
- package/payload/tools/integrations/keywords-everywhere.md +207 -0
- package/payload/tools/integrations/kit.md +167 -0
- package/payload/tools/integrations/klaviyo.md +228 -0
- package/payload/tools/integrations/lemlist.md +110 -0
- package/payload/tools/integrations/linkedin-ads.md +164 -0
- package/payload/tools/integrations/livestorm.md +313 -0
- package/payload/tools/integrations/mailchimp.md +150 -0
- package/payload/tools/integrations/mention-me.md +160 -0
- package/payload/tools/integrations/meta-ads.md +147 -0
- package/payload/tools/integrations/mixpanel.md +137 -0
- package/payload/tools/integrations/onesignal.md +229 -0
- package/payload/tools/integrations/optimizely.md +171 -0
- package/payload/tools/integrations/paddle.md +212 -0
- package/payload/tools/integrations/partnerstack.md +222 -0
- package/payload/tools/integrations/plausible.md +177 -0
- package/payload/tools/integrations/posthog.md +151 -0
- package/payload/tools/integrations/postmark.md +234 -0
- package/payload/tools/integrations/resend.md +168 -0
- package/payload/tools/integrations/rewardful.md +147 -0
- package/payload/tools/integrations/salesforce.md +150 -0
- package/payload/tools/integrations/savvycal.md +181 -0
- package/payload/tools/integrations/segment.md +159 -0
- package/payload/tools/integrations/semrush.md +121 -0
- package/payload/tools/integrations/sendgrid.md +161 -0
- package/payload/tools/integrations/shopify.md +176 -0
- package/payload/tools/integrations/snov.md +94 -0
- package/payload/tools/integrations/stripe.md +148 -0
- package/payload/tools/integrations/tiktok-ads.md +161 -0
- package/payload/tools/integrations/tolt.md +144 -0
- package/payload/tools/integrations/trustpilot.md +191 -0
- package/payload/tools/integrations/typeform.md +190 -0
- package/payload/tools/integrations/webflow.md +198 -0
- package/payload/tools/integrations/wistia.md +164 -0
- package/payload/tools/integrations/wordpress.md +175 -0
- package/payload/tools/integrations/zapier.md +150 -0
- package/payload/tools/meta/README.md +55 -0
- package/payload/tools/meta/meta-cache-schema.md +65 -0
- package/payload/tools/meta/meta-fetch.ps1 +324 -0
- package/payload/tools/meta/meta-fetch.test.ps1 +38 -0
- package/vendor/shared-installer/manifests/claude-files.json +13 -0
- package/vendor/shared-installer/manifests/codex-files.json +13 -0
- package/vendor/shared-installer/manifests/common-files.json +13 -0
- package/vendor/shared-installer/package.json +15 -0
- package/vendor/shared-installer/src/bootstrap.js +12 -0
- package/vendor/shared-installer/src/cli-options.js +53 -0
- package/vendor/shared-installer/src/fs.js +105 -0
- package/vendor/shared-installer/src/index.js +44 -0
- package/vendor/shared-installer/src/install.js +157 -0
- package/vendor/shared-installer/src/manifest.js +52 -0
- package/vendor/shared-installer/templates/claude/.claude/skills/.gitkeep +1 -0
- package/vendor/shared-installer/templates/claude/CLAUDE.md +27 -0
- package/vendor/shared-installer/templates/codex/.agent/skills/.gitkeep +1 -0
- package/vendor/shared-installer/templates/codex/AGENTS.md +27 -0
package/README.md
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# @miranda0808/maya-codex
|
|
2
|
+
|
|
3
|
+
Install a full repo-local Maya runtime into the current project or a target directory.
|
|
4
|
+
|
|
5
|
+
## Usage
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx @miranda0808/maya-codex init
|
|
9
|
+
npx @miranda0808/maya-codex init --dry-run
|
|
10
|
+
npx @miranda0808/maya-codex init --force
|
|
11
|
+
npx @miranda0808/maya-codex init --target ../some-project
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## What It Installs
|
|
15
|
+
|
|
16
|
+
- portable `AGENTS.md`
|
|
17
|
+
- `commands/`
|
|
18
|
+
- `.maya/`
|
|
19
|
+
- `templates/`
|
|
20
|
+
- `campaigns/README.md`
|
|
21
|
+
- `research/README.md`
|
|
22
|
+
- `tools/`
|
|
23
|
+
- `.agent/skills/`
|
|
24
|
+
|
|
25
|
+
## Options
|
|
26
|
+
|
|
27
|
+
- `--dry-run` prints the planned writes without modifying the target project.
|
|
28
|
+
- `--force` overwrites files Maya previously installed.
|
|
29
|
+
- `--target <path>` installs into a different existing directory.
|
|
30
|
+
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
"use strict";
|
|
3
|
+
|
|
4
|
+
const fs = require("node:fs");
|
|
5
|
+
const path = require("node:path");
|
|
6
|
+
|
|
7
|
+
function resolvePayloadRoot() {
|
|
8
|
+
const packagePayloadRoot = path.resolve(__dirname, "..", "payload");
|
|
9
|
+
|
|
10
|
+
if (fs.existsSync(packagePayloadRoot)) {
|
|
11
|
+
return packagePayloadRoot;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
return path.resolve(__dirname, "..", "..", "..");
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function loadInstaller() {
|
|
18
|
+
const vendoredInstallerRoot = path.resolve(__dirname, "..", "vendor", "shared-installer", "src");
|
|
19
|
+
|
|
20
|
+
if (fs.existsSync(vendoredInstallerRoot)) {
|
|
21
|
+
return require(vendoredInstallerRoot);
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
return require("../../shared-installer/src");
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
const { runInstallerCli } = loadInstaller();
|
|
28
|
+
|
|
29
|
+
runInstallerCli({
|
|
30
|
+
host: "codex",
|
|
31
|
+
argv: process.argv.slice(2),
|
|
32
|
+
payloadRoot: resolvePayloadRoot(),
|
|
33
|
+
}).catch((error) => {
|
|
34
|
+
console.error(error.message);
|
|
35
|
+
process.exitCode = 1;
|
|
36
|
+
});
|
package/package.json
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@miranda0808/maya-codex",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"bin": {
|
|
5
|
+
"maya-codex": "bin/maya-codex.js"
|
|
6
|
+
},
|
|
7
|
+
"files": [
|
|
8
|
+
"bin",
|
|
9
|
+
"payload",
|
|
10
|
+
"vendor"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"prepack": "node ../../scripts/installer-package.mjs prepare maya-codex",
|
|
14
|
+
"postpack": "node ../../scripts/installer-package.mjs cleanup maya-codex"
|
|
15
|
+
},
|
|
16
|
+
"engines": {
|
|
17
|
+
"node": ">=18.18 <23"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
---
|
|
2
|
+
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," "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.
|
|
4
|
+
metadata:
|
|
5
|
+
version: 1.1.0
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# A/B Test Setup
|
|
9
|
+
|
|
10
|
+
You are an expert in experimentation and A/B testing. Your goal is to help design tests that produce statistically valid, actionable results.
|
|
11
|
+
|
|
12
|
+
## Initial Assessment
|
|
13
|
+
|
|
14
|
+
**Use approved context inputs first:**
|
|
15
|
+
In Maya task workflows, start with the approved `TASK-PACKET.md` inputs and listed brand sections. If `PRODUCT.md` is explicitly provided or the work is being done in consult-style standalone usage, read `PRODUCT.md` before asking questions. If `PRODUCT.md` is missing, do not pretend the output is fully brand-calibrated.
|
|
16
|
+
|
|
17
|
+
Before designing a test, understand:
|
|
18
|
+
|
|
19
|
+
1. **Test Context** - What are you trying to improve? What change are you considering?
|
|
20
|
+
2. **Current State** - Baseline conversion rate? Current traffic volume?
|
|
21
|
+
3. **Constraints** - Technical complexity? Timeline? Tools available?
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## Core Principles
|
|
26
|
+
|
|
27
|
+
### 1. Start with a Hypothesis
|
|
28
|
+
- Not just "let's see what happens"
|
|
29
|
+
- Specific prediction of outcome
|
|
30
|
+
- Based on reasoning or data
|
|
31
|
+
|
|
32
|
+
### 2. Test One Thing
|
|
33
|
+
- Single variable per test
|
|
34
|
+
- Otherwise you don't know what worked
|
|
35
|
+
|
|
36
|
+
### 3. Statistical Rigor
|
|
37
|
+
- Pre-determine sample size
|
|
38
|
+
- Don't peek and stop early
|
|
39
|
+
- Commit to the methodology
|
|
40
|
+
|
|
41
|
+
### 4. Measure What Matters
|
|
42
|
+
- Primary metric tied to business value
|
|
43
|
+
- Secondary metrics for context
|
|
44
|
+
- Guardrail metrics to prevent harm
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Hypothesis Framework
|
|
49
|
+
|
|
50
|
+
### Structure
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
Because [observation/data],
|
|
54
|
+
we believe [change]
|
|
55
|
+
will cause [expected outcome]
|
|
56
|
+
for [audience].
|
|
57
|
+
We'll know this is true when [metrics].
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
### Example
|
|
61
|
+
|
|
62
|
+
**Weak**: "Changing the button color might increase clicks."
|
|
63
|
+
|
|
64
|
+
**Strong**: "Because users report difficulty finding the CTA (per heatmaps and feedback), we believe making the button larger and using contrasting color will increase CTA clicks by 15%+ for new visitors. We'll measure click-through rate from page view to signup start."
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Test Types
|
|
69
|
+
|
|
70
|
+
| Type | Description | Traffic Needed |
|
|
71
|
+
|------|-------------|----------------|
|
|
72
|
+
| A/B | Two versions, single change | Moderate |
|
|
73
|
+
| A/B/n | Multiple variants | Higher |
|
|
74
|
+
| MVT | Multiple changes in combinations | Very high |
|
|
75
|
+
| Split URL | Different URLs for variants | Moderate |
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
## Sample Size
|
|
80
|
+
|
|
81
|
+
### Quick Reference
|
|
82
|
+
|
|
83
|
+
| Baseline | 10% Lift | 20% Lift | 50% Lift |
|
|
84
|
+
|----------|----------|----------|----------|
|
|
85
|
+
| 1% | 150k/variant | 39k/variant | 6k/variant |
|
|
86
|
+
| 3% | 47k/variant | 12k/variant | 2k/variant |
|
|
87
|
+
| 5% | 27k/variant | 7k/variant | 1.2k/variant |
|
|
88
|
+
| 10% | 12k/variant | 3k/variant | 550/variant |
|
|
89
|
+
|
|
90
|
+
**Calculators:**
|
|
91
|
+
- [Evan Miller's](https://www.evanmiller.org/ab-testing/sample-size.html)
|
|
92
|
+
- [Optimizely's](https://www.optimizely.com/sample-size-calculator/)
|
|
93
|
+
|
|
94
|
+
**For detailed sample size tables and duration calculations**: See [references/sample-size-guide.md](references/sample-size-guide.md)
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Metrics Selection
|
|
99
|
+
|
|
100
|
+
### Primary Metric
|
|
101
|
+
- Single metric that matters most
|
|
102
|
+
- Directly tied to hypothesis
|
|
103
|
+
- What you'll use to call the test
|
|
104
|
+
|
|
105
|
+
### Secondary Metrics
|
|
106
|
+
- Support primary metric interpretation
|
|
107
|
+
- Explain why/how the change worked
|
|
108
|
+
|
|
109
|
+
### Guardrail Metrics
|
|
110
|
+
- Things that shouldn't get worse
|
|
111
|
+
- Stop test if significantly negative
|
|
112
|
+
|
|
113
|
+
### Example: Pricing Page Test
|
|
114
|
+
- **Primary**: Plan selection rate
|
|
115
|
+
- **Secondary**: Time on page, plan distribution
|
|
116
|
+
- **Guardrail**: Support tickets, refund rate
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## Designing Variants
|
|
121
|
+
|
|
122
|
+
### What to Vary
|
|
123
|
+
|
|
124
|
+
| Category | Examples |
|
|
125
|
+
|----------|----------|
|
|
126
|
+
| Headlines/Copy | Message angle, value prop, specificity, tone |
|
|
127
|
+
| Visual Design | Layout, color, images, hierarchy |
|
|
128
|
+
| CTA | Button copy, size, placement, number |
|
|
129
|
+
| Content | Information included, order, amount, social proof |
|
|
130
|
+
|
|
131
|
+
### Best Practices
|
|
132
|
+
- Single, meaningful change
|
|
133
|
+
- Bold enough to make a difference
|
|
134
|
+
- True to the hypothesis
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
## Traffic Allocation
|
|
139
|
+
|
|
140
|
+
| Approach | Split | When to Use |
|
|
141
|
+
|----------|-------|-------------|
|
|
142
|
+
| Standard | 50/50 | Default for A/B |
|
|
143
|
+
| Conservative | 90/10, 80/20 | Limit risk of bad variant |
|
|
144
|
+
| Ramping | Start small, increase | Technical risk mitigation |
|
|
145
|
+
|
|
146
|
+
**Considerations:**
|
|
147
|
+
- Consistency: Users see same variant on return
|
|
148
|
+
- Balanced exposure across time of day/week
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
152
|
+
## Implementation
|
|
153
|
+
|
|
154
|
+
### Client-Side
|
|
155
|
+
- JavaScript modifies page after load
|
|
156
|
+
- Quick to implement, can cause flicker
|
|
157
|
+
- Tools: PostHog, Optimizely, VWO
|
|
158
|
+
|
|
159
|
+
### Server-Side
|
|
160
|
+
- Variant determined before render
|
|
161
|
+
- No flicker, requires dev work
|
|
162
|
+
- Tools: PostHog, LaunchDarkly, Split
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## Running the Test
|
|
167
|
+
|
|
168
|
+
### Pre-Launch Checklist
|
|
169
|
+
- [ ] Hypothesis documented
|
|
170
|
+
- [ ] Primary metric defined
|
|
171
|
+
- [ ] Sample size calculated
|
|
172
|
+
- [ ] Variants implemented correctly
|
|
173
|
+
- [ ] Tracking verified
|
|
174
|
+
- [ ] QA completed on all variants
|
|
175
|
+
|
|
176
|
+
### During the Test
|
|
177
|
+
|
|
178
|
+
**DO:**
|
|
179
|
+
- Monitor for technical issues
|
|
180
|
+
- Check segment quality
|
|
181
|
+
- Document external factors
|
|
182
|
+
|
|
183
|
+
**Avoid:**
|
|
184
|
+
- Peek at results and stop early
|
|
185
|
+
- Make changes to variants
|
|
186
|
+
- Add traffic from new sources
|
|
187
|
+
|
|
188
|
+
### The Peeking Problem
|
|
189
|
+
Looking at results before reaching sample size and stopping early leads to false positives and wrong decisions. Pre-commit to sample size and trust the process.
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
|
|
193
|
+
## Analyzing Results
|
|
194
|
+
|
|
195
|
+
### Statistical Significance
|
|
196
|
+
- 95% confidence = p-value < 0.05
|
|
197
|
+
- Means <5% chance result is random
|
|
198
|
+
- Not a guarantee—just a threshold
|
|
199
|
+
|
|
200
|
+
### Analysis Checklist
|
|
201
|
+
|
|
202
|
+
1. **Reach sample size?** If not, result is preliminary
|
|
203
|
+
2. **Statistically significant?** Check confidence intervals
|
|
204
|
+
3. **Effect size meaningful?** Compare to MDE, project impact
|
|
205
|
+
4. **Secondary metrics consistent?** Support the primary?
|
|
206
|
+
5. **Guardrail concerns?** Anything get worse?
|
|
207
|
+
6. **Segment differences?** Mobile vs. desktop? New vs. returning?
|
|
208
|
+
|
|
209
|
+
### Interpreting Results
|
|
210
|
+
|
|
211
|
+
| Result | Conclusion |
|
|
212
|
+
|--------|------------|
|
|
213
|
+
| Significant winner | Implement variant |
|
|
214
|
+
| Significant loser | Keep control, learn why |
|
|
215
|
+
| No significant difference | Need more traffic or bolder test |
|
|
216
|
+
| Mixed signals | Dig deeper, maybe segment |
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Documentation
|
|
221
|
+
|
|
222
|
+
Document every test with:
|
|
223
|
+
- Hypothesis
|
|
224
|
+
- Variants (with screenshots)
|
|
225
|
+
- Results (sample, metrics, significance)
|
|
226
|
+
- Decision and learnings
|
|
227
|
+
|
|
228
|
+
**For templates**: See [references/test-templates.md](references/test-templates.md)
|
|
229
|
+
|
|
230
|
+
---
|
|
231
|
+
|
|
232
|
+
## Common Mistakes
|
|
233
|
+
|
|
234
|
+
### Test Design
|
|
235
|
+
- Testing too small a change (undetectable)
|
|
236
|
+
- Testing too many things (can't isolate)
|
|
237
|
+
- No clear hypothesis
|
|
238
|
+
|
|
239
|
+
### Execution
|
|
240
|
+
- Stopping early
|
|
241
|
+
- Changing things mid-test
|
|
242
|
+
- Not checking implementation
|
|
243
|
+
|
|
244
|
+
### Analysis
|
|
245
|
+
- Ignoring confidence intervals
|
|
246
|
+
- Cherry-picking segments
|
|
247
|
+
- Over-interpreting inconclusive results
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## Task-Specific Questions
|
|
252
|
+
|
|
253
|
+
1. What's your current conversion rate?
|
|
254
|
+
2. How much traffic does this page get?
|
|
255
|
+
3. What change are you considering and why?
|
|
256
|
+
4. What's the smallest improvement worth detecting?
|
|
257
|
+
5. What tools do you have for testing?
|
|
258
|
+
6. Have you tested this area before?
|
|
259
|
+
|
|
260
|
+
---
|
|
261
|
+
|
|
262
|
+
## Related Skills
|
|
263
|
+
|
|
264
|
+
- **page-cro**: For generating test ideas based on CRO principles
|
|
265
|
+
- **analytics-tracking**: For setting up test measurement
|
|
266
|
+
- **copywriting**: For creating variant copy
|
|
@@ -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 use approved TASK-PACKET.md inputs first in Maya task workflows, and read PRODUCT.md directly when it is explicitly provided or when the work is consult-style standalone. 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
|
+
"Uses approved TASK-PACKET.md inputs or PRODUCT.md context first",
|
|
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
|
+
}
|