@twentylabs/ai-os-registry 1.0.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.
Files changed (127) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +14 -0
  3. package/knowledge-slots/audience-icp.yaml +26 -0
  4. package/knowledge-slots/brand-voice.yaml +24 -0
  5. package/knowledge-slots/budget.yaml +18 -0
  6. package/knowledge-slots/channel-registry.yaml +20 -0
  7. package/knowledge-slots/data-access.yaml +26 -0
  8. package/knowledge-slots/design-surface.yaml +37 -0
  9. package/knowledge-slots/domain-playbook.yaml +23 -0
  10. package/knowledge-slots/flow-map.yaml +22 -0
  11. package/knowledge-slots/market-landscape.yaml +20 -0
  12. package/knowledge-slots/measurement-plan.yaml +28 -0
  13. package/knowledge-slots/metrics-catalog.yaml +28 -0
  14. package/knowledge-slots/offer-catalog.yaml +23 -0
  15. package/knowledge-slots/prior-findings.yaml +21 -0
  16. package/knowledge-slots/product-strategy.yaml +25 -0
  17. package/knowledge-slots/store-review.yaml +37 -0
  18. package/knowledge-slots/test-surface.yaml +29 -0
  19. package/knowledge-slots/tracker-surface.yaml +32 -0
  20. package/migrations.json +7 -0
  21. package/package.json +33 -0
  22. package/policies/decision-log.yaml +16 -0
  23. package/policies/english-identifiers.yaml +10 -0
  24. package/policies/github-account.yaml +19 -0
  25. package/policies/mcp-env-only.yaml +12 -0
  26. package/policies/no-gh-auth-switch.yaml +23 -0
  27. package/policies/no-product-code-edits.yaml +12 -0
  28. package/policies/worktree-discipline.yaml +14 -0
  29. package/profiles/marketing.yaml +24 -0
  30. package/profiles/software.yaml +31 -0
  31. package/roles/business-analyst.md +47 -0
  32. package/roles/business-analyst.yaml +43 -0
  33. package/roles/code-reviewer.md +28 -0
  34. package/roles/code-reviewer.yaml +29 -0
  35. package/roles/content-marketer.md +34 -0
  36. package/roles/content-marketer.yaml +39 -0
  37. package/roles/designer.md +48 -0
  38. package/roles/designer.yaml +48 -0
  39. package/roles/growth-marketer.md +42 -0
  40. package/roles/growth-marketer.yaml +44 -0
  41. package/roles/market-researcher.md +47 -0
  42. package/roles/market-researcher.yaml +41 -0
  43. package/roles/product-analyst.md +52 -0
  44. package/roles/product-analyst.yaml +40 -0
  45. package/roles/product-owner.md +57 -0
  46. package/roles/product-owner.yaml +46 -0
  47. package/roles/project-manager.md +44 -0
  48. package/roles/project-manager.yaml +44 -0
  49. package/roles/qa-engineer.md +40 -0
  50. package/roles/qa-engineer.yaml +48 -0
  51. package/skills/ab-testing/skill.yaml +13 -0
  52. package/skills/ad-creative/skill.yaml +13 -0
  53. package/skills/ads/skill.yaml +13 -0
  54. package/skills/ads-review/SKILL.md +70 -0
  55. package/skills/ads-review/references/channel-folders.md +28 -0
  56. package/skills/ads-review/skill.yaml +7 -0
  57. package/skills/ai-seo/skill.yaml +13 -0
  58. package/skills/analytics/skill.yaml +13 -0
  59. package/skills/app-store-compliance/SKILL.md +51 -0
  60. package/skills/app-store-compliance/references/review-checklist.md +46 -0
  61. package/skills/app-store-compliance/references/update-eligibility.md +23 -0
  62. package/skills/app-store-compliance/skill.yaml +9 -0
  63. package/skills/aso/skill.yaml +13 -0
  64. package/skills/aso-ops/SKILL.md +41 -0
  65. package/skills/aso-ops/references/field-rules.md +15 -0
  66. package/skills/aso-ops/skill.yaml +7 -0
  67. package/skills/attribution/skill.yaml +13 -0
  68. package/skills/churn-prevention/skill.yaml +13 -0
  69. package/skills/co-marketing/skill.yaml +13 -0
  70. package/skills/cold-email/skill.yaml +13 -0
  71. package/skills/community-marketing/skill.yaml +13 -0
  72. package/skills/competitor-profiling/skill.yaml +13 -0
  73. package/skills/competitors/skill.yaml +13 -0
  74. package/skills/content-pipeline/SKILL.md +39 -0
  75. package/skills/content-pipeline/skill.yaml +6 -0
  76. package/skills/content-strategy/skill.yaml +13 -0
  77. package/skills/conversion-audit/SKILL.md +67 -0
  78. package/skills/conversion-audit/references/funnel-playbook.md +80 -0
  79. package/skills/conversion-audit/references/journey-stations.md +57 -0
  80. package/skills/conversion-audit/references/report-template.md +60 -0
  81. package/skills/conversion-audit/skill.yaml +7 -0
  82. package/skills/copy-editing/skill.yaml +13 -0
  83. package/skills/copywriting/skill.yaml +13 -0
  84. package/skills/cro/skill.yaml +13 -0
  85. package/skills/cross-repo-contract-review/SKILL.md +39 -0
  86. package/skills/cross-repo-contract-review/skill.yaml +6 -0
  87. package/skills/customer-research/skill.yaml +13 -0
  88. package/skills/directory-submissions/skill.yaml +13 -0
  89. package/skills/emails/skill.yaml +13 -0
  90. package/skills/events/skill.yaml +12 -0
  91. package/skills/free-tools/skill.yaml +12 -0
  92. package/skills/growth-review/SKILL.md +44 -0
  93. package/skills/growth-review/skill.yaml +7 -0
  94. package/skills/image/skill.yaml +13 -0
  95. package/skills/influencer-marketing/skill.yaml +13 -0
  96. package/skills/launch/skill.yaml +13 -0
  97. package/skills/lead-magnets/skill.yaml +12 -0
  98. package/skills/lifecycle-campaign/SKILL.md +37 -0
  99. package/skills/lifecycle-campaign/references/campaign-design.md +35 -0
  100. package/skills/lifecycle-campaign/skill.yaml +6 -0
  101. package/skills/marketing-council/skill.yaml +13 -0
  102. package/skills/marketing-ideas/skill.yaml +13 -0
  103. package/skills/marketing-loops/skill.yaml +12 -0
  104. package/skills/marketing-plan/skill.yaml +13 -0
  105. package/skills/marketing-psychology/skill.yaml +12 -0
  106. package/skills/offers/skill.yaml +13 -0
  107. package/skills/onboarding/skill.yaml +13 -0
  108. package/skills/partner-outreach/SKILL.md +41 -0
  109. package/skills/partner-outreach/skill.yaml +6 -0
  110. package/skills/paywalls/skill.yaml +13 -0
  111. package/skills/popups/skill.yaml +13 -0
  112. package/skills/pricing/skill.yaml +13 -0
  113. package/skills/product-marketing/skill.yaml +13 -0
  114. package/skills/programmatic-seo/skill.yaml +13 -0
  115. package/skills/prospecting/skill.yaml +13 -0
  116. package/skills/public-relations/skill.yaml +13 -0
  117. package/skills/referrals/skill.yaml +12 -0
  118. package/skills/revops/skill.yaml +12 -0
  119. package/skills/sales-enablement/skill.yaml +13 -0
  120. package/skills/schema/skill.yaml +13 -0
  121. package/skills/seo-audit/skill.yaml +13 -0
  122. package/skills/signup/skill.yaml +13 -0
  123. package/skills/site-architecture/skill.yaml +13 -0
  124. package/skills/sms/skill.yaml +13 -0
  125. package/skills/social/skill.yaml +13 -0
  126. package/skills/video/skill.yaml +13 -0
  127. package/taxonomy.yaml +46 -0
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: cro
5
+ spec:
6
+ capabilities: [ conversion-optimization ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/cro
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-bd310ba737a84fbefd985164e2ad1f0cc49b4bcdd7b655e4abf597654ef2bfc2
12
+ license: MIT
13
+ description: When the user wants to optimize, improve, or increase conversions on any marketing page or form — including homepage, landing pages, pricing pages, feature pages, lead capture forms, or contact forms.
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: cross-repo-contract-review
3
+ description: "Use when a change touches something shared across repositories — an API payload, enum, event name, feature flag, deep link or schema — to check the other side exists and the deploy order is safe before a pull request. NOT for general code quality or changes confined to one repository."
4
+ ---
5
+
6
+ # Cross-repository contract review
7
+
8
+ One question: **does this change complete its cross-repository contract, or ship half of one?**
9
+
10
+ Continuous integration runs per repository and cannot see a sibling; a reviewer reads one diff. The failure is specific and always silent: a value the consumer has never heard of renders with the wrong fallback; a limit the client does not know degrades to a bundled default; a field nobody sends reads as empty forever. Nothing errors. The feature just quietly does something else.
11
+
12
+ ## 1. Find the contracts the diff touches
13
+
14
+ Read the project's contract documentation if it exists (the flow-map knowledge file says where; a `docs/cross-repo-contracts.md` or similar). Then scan the diff for the usual shapes:
15
+
16
+ - request or response payloads, DTOs, GraphQL or protobuf schemas;
17
+ - enums and closed value sets shared with another side (statuses, plan ids, notification types);
18
+ - analytics event and property names — a shared namespace across clients and server;
19
+ - feature flags and remote-config keys;
20
+ - deep-link routes and push payloads;
21
+ - database tables read by another service, and migrations they depend on.
22
+
23
+ A change that touches none of these needs no contract review; say so in one line.
24
+
25
+ ## 2. For each touched contract, answer in order
26
+
27
+ 1. **Is the other side needed?** A rename of an internal helper needs nothing elsewhere; a new payload field or enum value does. Say which, and why.
28
+ 2. **Does the other side exist yet?** Look in the sibling repository's trunk, its other branches and worktrees, and its open pull requests. Name what you found, with paths. If the sibling is not checked out locally, say so and name what would settle it.
29
+ 3. **What is the deploy order?** Usually the producer must be live before the consumer that depends on it ships — the backend before the app build, the schema before the code that reads it. State which side lands first and what happens if the order is reversed ("the app falls back to the bundled default" is an answer; "unknown" is not). If one side ships through a store review, its timing is not under your control — say so.
30
+
31
+ ## 3. Output
32
+
33
+ ```
34
+ <contract> — complete | incomplete | one-sided by design
35
+ evidence: <one sentence, with paths>
36
+ deploy order: <which side first; what happens if reversed>
37
+ ```
38
+
39
+ If everything is complete, say so in one line — do not manufacture findings. Do not review code style or anything a per-repository review already covers; this skill exists for the seam between repositories and nothing else.
@@ -0,0 +1,6 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: cross-repo-contract-review
5
+ spec:
6
+ capabilities: [contract-review, code-review]
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: customer-research
5
+ spec:
6
+ capabilities: [ customer-research ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/customer-research
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-e490ee991f90111e86a355d5f9421679de45c07d7d749545e52ad104da457917
12
+ license: MIT
13
+ description: When the user wants to conduct, analyze, or synthesize customer research.
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: directory-submissions
5
+ spec:
6
+ capabilities: [ seo ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/directory-submissions
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-0728a9d1a2bda534ebe8daabfeb36084f81283f7edcac2a7af22f0e7a022adc3
12
+ license: MIT
13
+ description: When the user wants to submit their product to startup, SaaS, AI, agent, MCP, no-code, or review directories for backlinks, domain rating, and discovery.
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: emails
5
+ spec:
6
+ capabilities: [ email-marketing, lifecycle-marketing ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/emails
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-b4d684c0ac134be5daceb393006da587d8b40698dc692fbc6bf62b5741926b62
12
+ license: MIT
13
+ description: When the user wants to create or optimize an email sequence, drip campaign, automated email flow, or lifecycle email program.
@@ -0,0 +1,12 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: events
5
+ spec:
6
+ source:
7
+ github: coreyhaines31/marketingskills
8
+ path: skills/events
9
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
10
+ hash: sha256-a899fc0c4ac64f947df3aee08f1d5a799fed867f1603a794193b33cbd7063b49
11
+ license: MIT
12
+ description: When the user wants to plan, run, sponsor, speak at, or get pipeline from events — webinars, conferences, trade shows, meetups, dinners, workshops, virtual summits, or user conferences.
@@ -0,0 +1,12 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: free-tools
5
+ spec:
6
+ source:
7
+ github: coreyhaines31/marketingskills
8
+ path: skills/free-tools
9
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
10
+ hash: sha256-fa4972a940ffaeec405602839501e541029f22c9d3b20e54ba3b4429661b7513
11
+ license: MIT
12
+ description: When the user wants to plan, evaluate, or build a free tool for marketing purposes — lead generation, SEO value, or brand awareness.
@@ -0,0 +1,44 @@
1
+ ---
2
+ name: growth-review
3
+ description: "Use when the product has real users and the question is why they drop off, do not activate, do not pay or churn — reading funnels, cohorts, retention and session replays, or checking unit economics before spending more. NOT when there is no data yet (conversion-audit) or for ad platform decisions (ads-review)."
4
+ ---
5
+
6
+ # Growth review
7
+
8
+ Real behaviour, real funnels, issues backed by numbers. Read, never change: no product code, no analytics flags, no experiments started without the owner's approval. The output is a report and proposed issues for the code repository, each carrying its table of numbers.
9
+
10
+ **No data, stop.** Under roughly 50 users through the step in question, every rate is noise. Say "not enough sample" and switch to the conversion-audit skill, which reads the journey instead of the numbers.
11
+
12
+ ## Funnels are defined, not invented
13
+
14
+ Use the funnels, event names and person properties the project's measurement plan (or analytics documentation) defines, with their exact step order. Respect the dates it marks as "do not compare across" — an event whose meaning changed in a release cannot be trended through that release. If no funnel is defined for the question, define it in the report first and propose adding it to the measurement plan.
15
+
16
+ Typical funnels to have defined: activation (first open → first value), account creation (before or after first value), core loop (unit → next unit), feature adoption (start → complete per feature), revenue (limit → paywall → tap → purchase), retention (message → open → return; day 1, day 7).
17
+
18
+ ## Segment before concluding
19
+
20
+ An aggregate rate hides everything. Always break down by the registered segmentation properties — onboarding path, stated goal, plan, acquisition source, app version (to separate behaviour changes by release).
21
+
22
+ ## Process
23
+
24
+ 1. Read the measurement plan and the latest review in the repository.
25
+ 2. Pick one funnel. Pull per-step numbers for about 30 days, segmented. Record the sample size at every step.
26
+ 3. Find the **step that loses the most people** — by people lost, not by percentage.
27
+ 4. Watch at least five session replays at that step before forming a hypothesis (humans watch replays; describe what was seen, not what you guess). Numbers say where; replays say why.
28
+ 5. Read the code behind that screen so each hypothesis rests on what really exists.
29
+ 6. Propose: one hypothesis per issue, with the numbers table, the segment, replay references, and how the fix will be measured after shipping. If the project enabled external skills such as `onboarding`, `paywalls`, `churn-prevention` or `ab-testing`, use them to shape the proposal.
30
+
31
+ ## Unit economics — quarterly, or before any spend increase
32
+
33
+ Ad reviews look at acquisition cost; someone has to look at the variable cost of serving a user. Where usage has marginal cost (AI calls, media processing, messaging), compute per month and per cohort (free versus paid): the cost of serving an active user, revenue net of store fees, estimated lifetime value from renewal rates, and acquisition cost from the cross-channel ads review. End with one sentence: **is lifetime value greater than acquisition plus serving cost, and by what margin?** If free users cost more than expected, the lever is limits or caching — a product issue — not a price increase.
34
+
35
+ ## Output
36
+
37
+ Conclusion in three sentences with sample sizes · funnel table by step × segment · the biggest loss and what the replays showed · findings ranked by people lost · **"not a problem — don't fix"** (behaviour that looks wrong but is understood) · proposed issues awaiting approval. Save reports that outlive the conversation as `docs/reviews/YYYY-MM-DD-growth.md`.
38
+
39
+ ## Traps
40
+
41
+ - Events that count only when the app is open (a "notification received" event is not the number sent).
42
+ - Same event name, different meaning across a release.
43
+ - A paywall-viewed event is not a user who wants to buy — read its trigger property before computing rates.
44
+ - Retention is computed by install date, not calendar date.
@@ -0,0 +1,7 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: growth-review
5
+ spec:
6
+ capabilities: [growth-analytics, product-analytics]
7
+
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: image
5
+ spec:
6
+ capabilities: [ content-marketing ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/image
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-07ab077c3b6d9265413b9e0bd069bf93df996c2706875d98ad3b856029810c24
12
+ license: MIT
13
+ description: When the user wants to create, generate, edit, or optimize images for marketing — blog heroes, social graphics, product mockups, profile banners, listing visuals, or brand assets.
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: influencer-marketing
5
+ spec:
6
+ capabilities: [ partnerships ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/influencer-marketing
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-813f4b100b2004d75b7073d7ecaa424a1898fae4afa1e330f0354959c4a01236
12
+ license: MIT
13
+ description: When the user wants to run influencer, creator, or ambassador partnerships to promote their product — finding and vetting partners, structuring deals, briefing creators, disclosure compliance, and measuring ROI.
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: launch
5
+ spec:
6
+ capabilities: [ product-marketing ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/launch
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-5ecfaad381803fe7a75d858ca5a9ccb9c7299f5f424e4c13d7ab0cbae3ec63b5
12
+ license: MIT
13
+ description: When the user wants to plan a product launch, feature announcement, or release strategy.
@@ -0,0 +1,12 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: lead-magnets
5
+ spec:
6
+ source:
7
+ github: coreyhaines31/marketingskills
8
+ path: skills/lead-magnets
9
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
10
+ hash: sha256-d4dfad9fe953b737b2668c04f547c4724ab9c41d8bda599ec4b88dbfc86ebc42
11
+ license: MIT
12
+ description: When the user wants to create, plan, or optimize a lead magnet for email capture or lead generation.
@@ -0,0 +1,37 @@
1
+ ---
2
+ name: lifecycle-campaign
3
+ description: "Use when designing, launching or reading a lifecycle campaign — push, email, in-app message, personal offer, discount code, gift or win-back — as cohort, moment, message, kill switch and holdout measurement. NOT for paid ads or messages the product already sends by default."
4
+ ---
5
+
6
+ # Lifecycle campaign
7
+
8
+ A campaign = cohort · moment · message · kill switch · measurement. This skill joins the product's existing parts (push types, in-app messages, offers, discount codes, gifts, referrals) into campaigns with a cohort and a measurement — and it **sends nothing itself**: it writes the design, the owner switches it on.
9
+
10
+ If the project enabled external skills such as `emails`, `sms`, `churn-prevention` or `offers`, use them for message craft.
11
+
12
+ ## Read what the product already does
13
+
14
+ Before designing, read the product's scheduled and triggered messages (reminder jobs, default push types, onboarding emails). A "campaign" that duplicates a default message — say, a day-2 reminder the product already sends every evening — is not a campaign; it is a default that is already running. Never message the same person twice about the same thing.
15
+
16
+ Know the plumbing's limits before promising anything: whether a message can deep-link to a specific screen, whether a message carries a campaign identifier (without it, opens cannot be separated from the default message of the same type), and whether any holdout mechanism exists. Missing plumbing is an issue for the code repository — written into the design as "pending", never pretended.
17
+
18
+ ## The design — `docs/campaigns/YYYY-MM-DD-<slug>.md`
19
+
20
+ All six sections, or it is not a campaign yet. Template: [campaign design](references/campaign-design.md).
21
+
22
+ 1. **Cohort** — defined with events and properties that really exist in the measurement plan, with its current size.
23
+ 2. **Moment** — when it sends, counted from which event. One campaign, one moment.
24
+ 3. **Channel and message** — which channel and message type, the copy in the project's locale, one call to action, the deep link.
25
+ 4. **Kill switch** — what turns it off within minutes without a build (an active flag, an end date, a remote flag). No kill switch, no launch.
26
+ 5. **Measurement** — the open event, the target behaviour, and a **holdout** (10–20% of the cohort, assigned by a stable hash of the user id) so the campaign is compared with doing nothing. Without a holdout, compare with the previous 14 days and call it weaker evidence.
27
+ 6. **Limits** — frequency cap across all message types (for example at most one push per day in total), never upsell paid users on what they have, never send a discount to someone in a trial, never stack a new campaign on a cohort another campaign is running on.
28
+
29
+ Rank candidate campaigns by what needs no code first.
30
+
31
+ ## launch
32
+
33
+ The owner switches it on. Record the launch date, the cohort size at launch and the readout date in the design file.
34
+
35
+ ## review — after 14 days
36
+
37
+ Table: cohort size · sent · opened · target behaviour (treated) · target behaviour (holdout) · difference · sample size. Under about 100 per arm, call it a directional signal. A campaign that does not beat its holdout after two cycles is switched off, with the reason written into the design file.
@@ -0,0 +1,35 @@
1
+ # Campaign — <slug>
2
+
3
+ Status: design | live | stopped (<reason>). Owner: <who switches it on>. Launched: <date>. Readout: <date>.
4
+
5
+ ## 1. Cohort
6
+ Definition (events and properties from the measurement plan, with the exact names):
7
+ Size today (query and date):
8
+ Excluded (paid users, users in trial, users in another running campaign):
9
+
10
+ ## 2. Moment
11
+ Sends when, counted from which event, in which timezone:
12
+
13
+ ## 3. Channel and message
14
+ Channel and message type:
15
+ Copy (project locale), one call to action:
16
+ Deep link and where it lands:
17
+ Plumbing needed that does not exist yet (with the issue link), or "none":
18
+
19
+ ## 4. Kill switch
20
+ What turns it off without a build, and who can flip it:
21
+
22
+ ## 5. Measurement
23
+ Open event:
24
+ Target behaviour:
25
+ Holdout: <percent>, assigned by <hash of user id> — or "pending: <issue>", comparing with the previous 14 days instead:
26
+
27
+ ## 6. Limits
28
+ Frequency cap across all messages:
29
+ Who never receives it:
30
+
31
+ ## Readout
32
+ | Cohort | Sent | Opened | Target (treated) | Target (holdout) | Difference | N per arm |
33
+ | --- | --- | --- | --- | --- | --- | --- |
34
+
35
+ Decision: keep / change one thing / stop — with the reason.
@@ -0,0 +1,6 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: lifecycle-campaign
5
+ spec:
6
+ capabilities: [lifecycle-marketing, email-marketing, experimentation]
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: marketing-council
5
+ spec:
6
+ capabilities: [ marketing-strategy ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/marketing-council
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-65e5e3d0a1ba684fe6c65582316813e4b58dfec4836a1ea6d4fa2aa2f34ef0c7
12
+ license: MIT
13
+ description: When the user wants multiple expert perspectives on a marketing question — a simulated board of advisors staffed by legendary marketers (Seth Godin, David Ogilvy, Eugene Schwartz, April Dunford, Rory Sutherland, Alex Hormozi, Byron Sharp, and more).
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: marketing-ideas
5
+ spec:
6
+ capabilities: [ marketing-strategy ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/marketing-ideas
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-db26167ed1c3a677cb3f68db89a08bd46a67d81395a3787573c88b11ea7595a8
12
+ license: MIT
13
+ description: When the user needs marketing ideas, inspiration, or strategies for their SaaS or software product.
@@ -0,0 +1,12 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: marketing-loops
5
+ spec:
6
+ source:
7
+ github: coreyhaines31/marketingskills
8
+ path: skills/marketing-loops
9
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
10
+ hash: sha256-f2b7c7676df9a641c49f6220ea141da740f0f4f8a570ec673e19f48487535591
11
+ license: MIT
12
+ description: When the user wants to set up a recurring, self-running marketing workflow — a repeatable loop an AI agent runs on a cadence (weekly, daily, on a trigger) rather than a one-off task.
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: marketing-plan
5
+ spec:
6
+ capabilities: [ marketing-strategy ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/marketing-plan
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-731799cf2adf6335018ed30034deea2764b46501a686d685da3b47283b05f22f
12
+ license: MIT
13
+ description: When the user needs a comprehensive marketing plan for a client, a company they advise, or their own product.
@@ -0,0 +1,12 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: marketing-psychology
5
+ spec:
6
+ source:
7
+ github: coreyhaines31/marketingskills
8
+ path: skills/marketing-psychology
9
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
10
+ hash: sha256-0c6e9cd49c6273972995bad8d194ad1bf5d37cbbf1feec91f7b147b8489979f9
11
+ license: MIT
12
+ description: When the user wants to apply psychological principles, mental models, or behavioral science to marketing.
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: offers
5
+ spec:
6
+ capabilities: [ pricing ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/offers
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-0ac599e8517969cc571f9b10403a8f9b100afe3facbb459ae481c61818cb5bf9
12
+ license: MIT
13
+ description: When the user wants to design, construct, or improve an offer — the thing they actually sell — including value framing, bonus stacking, guarantee design, scarcity/urgency, naming, and payment structure.
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: onboarding
5
+ spec:
6
+ capabilities: [ conversion-optimization ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/onboarding
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-e2bf9a7fa3dd95af973e2b5ce72060f28620380c82fed9831e5e18ef9e2cb952
12
+ license: MIT
13
+ description: When the user wants to optimize post-signup onboarding, user activation, first-run experience, or time-to-value.
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: partner-outreach
3
+ description: "Use when acquiring users through partners or communities — building a partner list, writing a pitch or follow-up for one partner, seeding a group with gifts or codes, and measuring what each partner brings. NOT for paid ads or mass email campaigns."
4
+ ---
5
+
6
+ # Partner outreach
7
+
8
+ Partners (schools, clubs, agencies, communities, complementary products, creators) can bring users that no paid channel can buy — people who arrive together and are nudged by someone they trust. This skill runs that channel: who to approach, what to say to each, how to seed them, and what each one brings.
9
+
10
+ It **drafts; the owner sends.** Never send a message, create a gift or code, or contact anyone on the owner's behalf without approval for that specific action. If the project enabled the external `cold-email`, `co-marketing` or `community-marketing` skills, use them for craft.
11
+
12
+ ## Three jobs
13
+
14
+ | Job | Output | Recorded in |
15
+ | --- | --- | --- |
16
+ | **list** | prioritized partners with a status each | `outreach/partners.md` — a registry; rows are never deleted |
17
+ | **pitch / follow-up** | one message for one partner | `outreach/messages/<slug>-YYYY-MM-DD.md` |
18
+ | **seed** | a group given access (gift, code, trial), measured at day 7 and day 30 | `outreach/partners.md` and `outreach/seeds/<slug>.md` |
19
+
20
+ Build the list from sources the owner provides or public directories — never invent partners or contact details.
21
+
22
+ ## Pitch
23
+
24
+ 1. **Promise what the partner cares about**, not what end users care about — less work for them, results they can show, no cost, no disruption to what they already do.
25
+ 2. **One call to action** — a short call, or "send me a list of N people to give access to". Never both.
26
+ 3. **Say only what the product does today.** Check the offer catalog and the brand voice's allowed claims; never promise a dashboard, report or integration that does not exist.
27
+ 4. **One message per recipient**, addressed to them, in the channel they actually use (email, messaging app, social, phone). No visible templates, no bulk sends.
28
+
29
+ ## Seed a group
30
+
31
+ 1. Create the partner's identifier (code, link, or group) so its users can be told apart — record it in the registry.
32
+ 2. Prepare the gift or access for each person, tagged with the partner and group so redemptions join back. Check that delivery (email sending, links) works in that environment before creating anything.
33
+ 3. Give the partner a one-paragraph instruction for their people.
34
+ 4. **Measure at day 7 and day 30**: given, claimed, linked to the partner, activated, paid — from the ledger and analytics, with the queries saved in the seed file. Add the partner contact's own words; the first few groups are qualitative data worth more than any number.
35
+
36
+ ## Rules
37
+
38
+ - Status ladder per partner: not contacted → sent → met → seeding → running → stopped (reason). One contact person per partner.
39
+ - Follow up after about five working days, at most twice.
40
+ - No revenue share or partner-specific discounts until the first groups show real use.
41
+ - If measuring a partner requires a product change (a missing property, a code field), open an issue in the code repository before the second seed.
@@ -0,0 +1,6 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: partner-outreach
5
+ spec:
6
+ capabilities: [partnerships, outreach, community]
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: paywalls
5
+ spec:
6
+ capabilities: [ conversion-optimization ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/paywalls
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-30e22764b3a12a441ef4d8d63db3a00496ead2cf458f1affdd23fdaa06058068
12
+ license: MIT
13
+ description: When the user wants to create or optimize in-app paywalls, upgrade screens, upsell modals, or feature gates.
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: popups
5
+ spec:
6
+ capabilities: [ conversion-optimization ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/popups
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-0cd007f3348d5f131d39231c50366afe73698e788de61ec9f28f5f9601a7d260
12
+ license: MIT
13
+ description: When the user wants to create or optimize popups, modals, overlays, slide-ins, or banners for conversion purposes.
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: pricing
5
+ spec:
6
+ capabilities: [ pricing ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/pricing
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-65d09cb320f50db4d1d2a122cc98bc3a2e63e96d1c97fdfa30027afd5a8f0ef7
12
+ license: MIT
13
+ description: When the user wants help with pricing decisions, packaging, or monetization strategy.
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: product-marketing
5
+ spec:
6
+ capabilities: [ product-marketing ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/product-marketing
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-6c7af501853ff47787d4f16a2e21abb6699cb7ad21696b43938735a299b920ff
12
+ license: MIT
13
+ description: When the user wants to create or update their product marketing context document.
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: programmatic-seo
5
+ spec:
6
+ capabilities: [ seo ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/programmatic-seo
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-189f2d99eed46c3f1512327b39450e0706f3ce0f93acd597d517db2b9680574e
12
+ license: MIT
13
+ description: When the user wants to create SEO-driven pages at scale using templates and data.
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: prospecting
5
+ spec:
6
+ capabilities: [ outreach ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/prospecting
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-e905a5fbbef91f7f277cd7244dcc1d3f71122a05a5e7d6a4cb817fadbff28cfa
12
+ license: MIT
13
+ description: When the user wants to find, qualify, and build a list of prospects to reach out to — across B2B SaaS, general B2B, or local small businesses.
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: public-relations
5
+ spec:
6
+ capabilities: [ public-relations ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/public-relations
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-2e39ac345669dc024c306bc043986351567663d788085cc901f4efb708baf9ee
12
+ license: MIT
13
+ description: When the user wants help with public relations, earned media, press coverage, journalist outreach, or media strategy (not pull requests).
@@ -0,0 +1,12 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: referrals
5
+ spec:
6
+ source:
7
+ github: coreyhaines31/marketingskills
8
+ path: skills/referrals
9
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
10
+ hash: sha256-cbe4fc26bef22f34b75d7172e6e1e9c506c8c9b8980886b846c5cfedffe4f1ef
11
+ license: MIT
12
+ description: When the user wants to create, optimize, or analyze a referral program, affiliate program, or word-of-mouth strategy.
@@ -0,0 +1,12 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: revops
5
+ spec:
6
+ source:
7
+ github: coreyhaines31/marketingskills
8
+ path: skills/revops
9
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
10
+ hash: sha256-92cd674be3dfb669aece6a840cb8c877c200bdca423c8cdf877decb061401036
11
+ license: MIT
12
+ description: When the user wants help with revenue operations, lead lifecycle management, or marketing-to-sales handoff processes.
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: sales-enablement
5
+ spec:
6
+ capabilities: [ sales-enablement ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/sales-enablement
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-f3d559ed39b3925e743e9f773cea122197784e3451d258b9db8489c2e5d4700d
12
+ license: MIT
13
+ description: When the user wants to create sales collateral, pitch decks, one-pagers, objection handling docs, or demo scripts.
@@ -0,0 +1,13 @@
1
+ apiVersion: ai-os.twentylabs.dev/v1
2
+ kind: Skill
3
+ metadata:
4
+ id: schema
5
+ spec:
6
+ capabilities: [ seo ]
7
+ source:
8
+ github: coreyhaines31/marketingskills
9
+ path: skills/schema
10
+ ref: dda3841f0b294e01e93b1541486beefbfab0915e
11
+ hash: sha256-a716b5e4c0874631e1bbd5ba3d0e4916617bf3f12f5dd295c5394f56992cfbac
12
+ license: MIT
13
+ description: When the user wants to add, fix, or optimize schema markup and structured data on their site.