Email Sequence
freekmurze/dotfiles
When the user wants to create or optimize an email sequence, drip campaign, automated email flow, or lifecycle email program.
Agent skill
by Lifecycle-Innovations-Limited in Lifecycle-Innovations-Limited/claude-ops
OPS on-demand: This skill should be used when the user asks to "klaviyo", "ads spend", or…
$ npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-marketing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Lifecycle-Innovations-Limited/claude-ops ops-marketing --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/Lifecycle-Innovations-Limited/claude-ops.git skills-src && mkdir -p .claude/skills && cp -r skills-src/claude-ops/skills/ops-marketing .claude/skills/ops-marketing && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "ops-marketing" agent skill from https://github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/claude-ops/skills/ops-marketing into .claude/skills/ops-marketing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ops-marketing", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/claude-ops/skills/ops-marketingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-marketing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Lifecycle-Innovations-Limited/claude-ops ops-marketing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Lifecycle-Innovations-Limited/claude-ops.git skills-src && mkdir -p .agents/skills && cp -r skills-src/claude-ops/skills/ops-marketing .agents/skills/ops-marketing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ops-marketing" agent skill from https://github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/claude-ops/skills/ops-marketing into .agents/skills/ops-marketing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ops-marketing", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-marketing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Lifecycle-Innovations-Limited/claude-ops ops-marketing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Lifecycle-Innovations-Limited/claude-ops.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/claude-ops/skills/ops-marketing .cursor/skills/ops-marketing && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ops-marketing" agent skill from https://github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/claude-ops/skills/ops-marketing into .cursor/skills/ops-marketing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ops-marketing", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/Lifecycle-Innovations-Limited/claude-ops.git --path claude-ops/skills/ops-marketing--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-marketing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Lifecycle-Innovations-Limited/claude-ops ops-marketing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Lifecycle-Innovations-Limited/claude-ops.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/claude-ops/skills/ops-marketing .gemini/skills/ops-marketing && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ops-marketing" agent skill from https://github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/claude-ops/skills/ops-marketing into .gemini/skills/ops-marketing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ops-marketing", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Lifecycle-Innovations-Limited/claude-ops ops-marketingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-marketing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/Lifecycle-Innovations-Limited/claude-ops.git skills-src && mkdir -p .github/skills && cp -r skills-src/claude-ops/skills/ops-marketing .github/skills/ops-marketing && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ops-marketing" agent skill from https://github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/claude-ops/skills/ops-marketing into .github/skills/ops-marketing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ops-marketing", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-marketing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Lifecycle-Innovations-Limited/claude-ops ops-marketing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/Lifecycle-Innovations-Limited/claude-ops.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/claude-ops/skills/ops-marketing .opencode/skills/ops-marketing && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ops-marketing" agent skill from https://github.com/Lifecycle-Innovations-Limited/claude-ops/tree/main/claude-ops/skills/ops-marketing into .opencode/skills/ops-marketing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ops-marketing", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ops-marketingOPS on-demand: This skill should be used when the user asks to "klaviyo", "ads spend", or…
Ops Marketing is an agent skill from Lifecycle-Innovations-Limited/claude-ops. OPS on-demand: This skill should be used when the user asks to "klaviyo", "ads spend", or…
Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/details.md`).
It sits in Marketing & SEO, covering Email marketing. The repository describes itself as: Business operating system for Claude Code — 57 skills, 21 agents, smart daemon. Unified inbox (WhatsApp/Email/Slack/Telegram), autonomous PR merge, full-AWS monitoring, revenue… The licence is MIT.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 996d61a. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
BashReadWriteGrepGlobAgentTeamCreateSendMessageAskUserQuestionWebFetch…and 1 more on the same allowed-tools line.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are bash and jsonc).
From the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
ads.google.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
CLOUDFLARE_API_TOKENCLOUDFLARE_API_KEYKLAVIYO_API_KEYRESEND_API_KEYSTRIPE_SECRET_KEYSTRIPE_API_KEYMETA_ACCESS_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Ops Marketing loads about 3.5k tokens when it runs, and up to ~38k if it reads all its reference files. Until then it costs about 26 tokens; SKILL.md has 783 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Bash, Read, Write, Grep, Glob, Agent, TeamCreate, SendMessage, AskUserQuestion, WebFetch, WebSearchAutomated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Lifecycle-Innovations-Limited/claude-ops at commit 996d61a, republished under its MIT licence (© Lifecycle-Innovations-Limited). 783 words, ~3,504 tokens.
.claude/skills/ops-marketing/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.Load ops-rules before acting. Public repo (no personal data). Outbound: one draft → one approval → one send. If AskUserQuestion / Workflow are missing, follow Rule 10 in ops-rules (Hermes: numbered options / two-turn Telegram card; delegate_task).
bin/ops-dns-provision is the canonical DNS surface for any marketing project — it covers every record an end-to-end SaaS launch typically needs, all routed through scripts/lib/cloudflare-dns.sh for GET-first idempotency. Re-running is safe; OPS_DRY_RUN=1 prints planned API calls without firing.
| Subcommand | What it does |
|---|---|
gsc <project> <domain> | Google Search Console site verification — fetches token via siteVerification/v1/token, upserts TXT at apex, calls webResource?verificationMethod=DNS_TXT to verify. |
meta-aem <project> <domain> | Meta Aggregated Event Measurement — reads verification_string from /me/owned_domains, upserts facebook-domain-verification=<token> TXT at apex. |
apple-pay <project> <domain> | Two modes via apple_pay.mode: static-file (default — surfaces the .well-known/apple-developer-merchantid-domain-association deploy-hook path) or stripe-dns (Stripe POST /v1/payment_method_domains). |
spf <project> <domain> | Builds v=spf1 include:... <policy> from .esp.spf_includes, upserts merge-safely at apex (refuses to overwrite a foreign TXT lacking the v=spf1 marker). |
dkim <project> <domain> | ESP-keyed off .esp.provider. Resend implemented (parses records[] from POST /domains, CNAME upserts). Postmark/SES stubbed. |
dmarc <project> <domain> | _dmarc.<apex> TXT with v=DMARC1; p=<policy>; rua=<rua>. Defaults: policy=quarantine, rua=mailto:dmarc@<apex>. |
mx <project> <domain> | Provider template keyed off .inbound.provider: google-workspace (smtp.google.com pri 1) / resend-inbound / ses (region from .inbound.region). |
klaviyo-sending <project> <domain> | Klaviyo dedicated sending domain — POST /api/dedicated-sending-domains/, CNAME upserts. |
audit <project> [--json] | Read-only — for each row, queries CF and reports present / absent / conflicting. |
provision-all <project> [--skip <row,row>] | Idempotent full sweep. |
Auth: CLOUDFLARE_API_TOKEN (Bearer, preferred) or CLOUDFLARE_API_KEY + CLOUDFLARE_EMAIL (Global key, fallback). Zone lookup: GET /zones?name=<apex> finds the zone ID. Record writes: GET-first by name+type, then PUT existing ID or POST new — never duplicate.
Apex resolver (cf_apex_for) handles co.uk-style 2nd-level TLDs (foo.co.uk → foo.co.uk) and strips proto/path/port.
The new bin reads project-level config from $PREFS_PATH under marketing.projects.<key>:
{
"marketing": {
"projects": {
"myapp": {
"domain": "example.com",
// Outbound email service provider (DKIM + SPF includes)
"esp": {
"provider": "resend", // "resend" | "postmark" | "ses"
"credentials": "doppler:prd:RESEND_API_KEY", // cred-ref: "env:VAR" | "doppler:CFG:KEY"
"spf_includes": ["_spf.resend.com", "_spf.klaviyo.com"], // optional; sensible defaults applied
"spf_policy": "-all", // "-all" (strict) | "~all" (soft-fail)
},
// Inbound mail (MX)
"inbound": {
"provider": "google-workspace", // "google-workspace" | "resend-inbound" | "ses"
"region": "us-east-1", // only used by resend-inbound / ses
},
// DMARC policy
"dmarc": {
"policy": "quarantine", // "none" | "quarantine" | "reject"
"rua": "mailto:dmarc@example.com", // defaults to mailto:dmarc@<apex>
},
// Optional Cloudflare account override (for accounts that own multiple zones)
"dns": {
"cloudflare_account_id": "<your-cf-account-id>",
},
// Apple Pay domain registration
"apple_pay": {
"enabled": true,
"mode": "static-file", // default; "stripe-dns" registers via Stripe
},
// Cred-refs for individual rows
"stripe": {
"secret_key": "env:STRIPE_SECRET_KEY", // legacy DNS provisioner key
"api_key": "env:STRIPE_API_KEY", // P3: used by ops-marketing-autopilot stripe ROAS gate
"account_id": "acct_<id>", // optional, only when calling on behalf of a connected acct
},
"meta": { "access_token": "env:META_ACCESS_TOKEN" },
"klaviyo": {
"private_key": "doppler:prd:KLAVIYO_API_KEY", // legacy DNS row
"api_key": "doppler:prd:KLAVIYO_API_KEY", // P3: used by gather_klaviyo_metrics
"account_id": "<klaviyo-account-id>", // P3: optional
"sending_subdomain": "em.example.com",
},
},
},
},
}Defaults are applied bash-side via ${var:-default}, so all values are optional except domain (required by audit and provision-all).
bin/ops-marketing-autopilot reads four perf-data sources per pass and persists them to ${OPS_DATA_DIR}/state/autopilot/<project>-{ga4-conversions,gsc-signal,klaviyo,stripe}.json:
| Source | Prefs path | Helper | Purpose |
|---|---|---|---|
| GA4 conversions | marketing.projects.<key>.ga4.{property_id, sa_key_file_ref} | gather_ga4_conversions | source/medium/campaign rows for the blended bandit reward |
| GSC search | marketing.projects.<key>.gsc.site_url | gather_gsc_signal | rescue + ad-copy-hook candidate buckets |
| Klaviyo | marketing.projects.<key>.klaviyo.{api_key, account_id} | gather_klaviyo_metrics | Placed Order revenue + flow inventory |
| Stripe | marketing.projects.<key>.stripe.{api_key, account_id} | gather_stripe_revenue | UTM-attributed revenue per source/medium/campaign and per ad_id — ground-truth ROAS denominator + pause-rescue gate |
Env knobs:
| Env | Default | Effect |
|---|---|---|
OPS_BANDIT_SOURCE | blended | meta → meta-only reward (legacy), ga4 → GA4 attribution only, blended → (meta + ga4)/2 |
OPS_PAUSE_ROAS_FLOOR | 1.0 | An ad with stripe_revenue ≥ floor × meta_spend is kept despite Meta CPL/CTR pause criteria |
OPS_KLAVIYO_REVENUE_RATIO_FLAG | 0.5 | When klaviyo_revenue / paid_spend > flag, surface "email channel underweighted" in the daily report (no auto-shift) |
UTM enforcement: every create_object campaign … call runs utm_validate (from scripts/lib/utm-validate.sh) on the derived (utm_source, utm_medium, utm_campaign) triple before any API mutation. Non-conforming names escalate + stage-only.
# Dry-run every row for a project
OPS_DRY_RUN=1 ops-dns-provision provision-all myapp
# Single row, ad-hoc domain (no prefs needed)
ops-dns-provision dmarc myapp example.com
# JSON audit for CI healthcheck
ops-dns-provision audit myapp --json
# → {"project":"myapp","domain":"example.com","zone":"...","rows":{"gsc":"present","spf":"present","dmarc":"present","mx":"present","meta_aem":"absent","dkim":"unknown"}}
# Skip rows that need provider-specific manual setup first
ops-dns-provision provision-all myapp --skip dkim,klaviyo-sendingRun /ops:marketing <project> to point-and-go:
ops-marketing-provision status --project <project> — what's missingops-marketing-provision provision-<channel> --project <project> (interactive only if OAuth/keys missing; otherwise idempotent)ops-marketing-dash --project <project>ops-marketing-autopilot --project <project> --first-run-dryProvision a brand-new project end-to-end:
# One-shot: GA4 + GSC + Instagram + Google Ads — sequential, idempotent
ops-marketing-provision provision-all --project <project>
# Iterate every project in prefs
ops-marketing-provision provision-all --all-projects
# Or individually:
ops-marketing-provision provision-ga4 --project <project> \
--domain <domain> --account-id <YOUR_GA4_ACCOUNT_ID>
ops-marketing-provision provision-gsc --project <project> --site https://<domain>/
ops-marketing-provision provision-instagram --project <project> # auto-resolves via Meta token
ops-marketing-provision provision-google-ads --project <project> # 4-step OAuth flow
# Check results
ops-marketing-provision status --project <project> --json
ops-marketing-dash --project <project>provision-instagram requires marketing.projects.<key>.meta.access_token (and optional meta.app_secret for appsecret_proof signing — required when the app's "Require App Secret" setting is on, which is the default for all system-user tokens). The verb is fully idempotent: smoke-tests an existing instagram.account_id before making any API calls; pass --force to re-resolve.
provision-google-ads is a 4-step flow (each step is a no-op if the credential already exists):
${OPS_DATA_DIR}/state/marketing-provision/<project>-google-ads-pending.json and exits 1. Apply at https://ads.google.com/aw/apicenter (24–48h approval) then re-run.:8080 (120s timeout), opens the Google consent URL, captures the auth code, exchanges for refresh_token, writes to Doppler as GOOGLE_ADS_<PROJECT_UPPER>_REFRESH_TOKEN.v24/customers:listAccessibleCustomers, auto-detects MCC manager accounts (sets login_customer_id), writes customer_id to prefs.Pass --skip-if-pending to skip when a dev-token application is in-flight (used by provision-all to keep the chain unblocked).
Set OPS_MARKETING_DRY_RUN=1 to print planned API calls without executing.
Before executing, load available context:
Preferences: Read ${CLAUDE_PLUGIN_DATA_DIR:-$HOME/.claude/plugins/data/ops-ops-marketplace}/preferences.json
timezone — display all timestamps correctlyklaviyo_private_key, meta_ads_token, meta_ad_account_id, ga4_property_id, google_search_console_site — check userConfig keys before env varsgoogle_ads_developer_token, google_ads_client_id, google_ads_client_secret, google_ads_refresh_token, google_ads_customer_id, google_ads_login_customer_id — Google Ads credentialsDaemon health: Read ${CLAUDE_PLUGIN_DATA_DIR}/daemon-health.json
action_needed is not null → surface it before running any channel queriesSecrets: Resolve API keys via userConfig → env vars → Doppler MCP (mcp__doppler__*) → Doppler CLI fallback (see Credential Resolution section below)
Channel, CLI, and edge-case detail lives in references/ next to this skill. Read those files before acting on a matching channel or sub-command. Do not skip them.
© Lifecycle-Innovations-Limited, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file (references) in claude-ops/skills/ops-marketing of Lifecycle-Innovations-Limited/claude-ops.
Open the folder on GitHubat commit 996d61a
Ops Marketing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Ops Marketing this skillLifecycle-Innovations-Limited/claude-ops | 542 | — | ~3.5k | Automated safety check: Notes | MIT | |
| Email Sequencefreekmurze/dotfiles | 1k | 19 repos | ~2k | Automated safety check: Pass | None | |
| Emailscoreyhaines31/marketingskills | 54k | 1 repos | ~2.8k | Automated safety check: Pass | MIT | |
| Email SequenceLeoYeAI/openclaw-marketing-skills | 1k | 2 repos | ~2.1k | Automated safety check: Pass | Custom licence | |
| Onboarding Crofreekmurze/dotfiles | 1k | 16 repos | ~1.6k | Automated safety check: Pass | None | |
| Marketing OsYuzzyuk/marketing-os | 540 | — | ~2.5k | Automated safety check: Pass | MIT |
freekmurze/dotfiles
When the user wants to create or optimize an email sequence, drip campaign, automated email flow, or lifecycle email program.
coreyhaines31/marketingskills
When the user wants to create or optimize an email sequence, drip campaign, automated email flow, or lifecycle email program.
LeoYeAI/openclaw-marketing-skills
When the user wants to create or optimize an email sequence, drip campaign, automated email flow, or lifecycle email program.
freekmurze/dotfiles
When the user wants to optimize post-signup onboarding, user activation, first-run experience, or time-to-value.
Yuzzyuk/marketing-os
A complete marketing department in one skill. An agent skill from Yuzzyuk/marketing-os.
Nexus-JPF/note-companion
When the user wants to optimize post-signup onboarding, user activation, first-run experience, or time-to-value.
Lifecycle-Innovations-Limited/claude-ops
OPS on-demand: This skill should be used when the user asks to "ops dashboard", "pixel HQ", or…
Lifecycle-Innovations-Limited/claude-ops
OPS on-demand: This skill should be used when the user asks to "go to market", "GTM plan", or…
Lifecycle-Innovations-Limited/claude-ops
OPS on-demand: This skill should be used when the user asks to "tweet", "post to linkedin", or…
Lifecycle-Innovations-Limited/claude-ops
OPS on-demand: This skill should be used when the user asks to "yolo mode", "run the business today"…
Lifecycle-Innovations-Limited/claude-ops
OPS on-demand: This skill should be used when the user asks to "datadog", "APM alerts", or…
Lifecycle-Innovations-Limited/claude-ops
OPS on-demand: This skill should be used when the user asks to "/ops:setup", "configure ops", or…
Categories
OPS on-demand: This skill should be used when the user asks to "klaviyo", "ads spend", or…. Ops Marketing is an agent skill from Lifecycle-Innovations-Limited/claude-ops.
Ops Marketing fits situations like: asks to klaviyo; tasks that involve Email marketing.
Run `npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-marketing -a claude-code`. Or copy the skill folder (claude-ops/skills/ops-marketing in Lifecycle-Innovations-Limited/claude-ops) into .claude/skills/ops-marketing in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-marketing -a codex`. Or copy the skill folder (claude-ops/skills/ops-marketing in Lifecycle-Innovations-Limited/claude-ops) into .agents/skills/ops-marketing in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Lifecycle-Innovations-Limited/claude-ops --skill ops-marketing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ops-marketing, .gemini/skills/ops-marketing, .github/skills/ops-marketing and .opencode/skills/ops-marketing in your project.
Going by SKILL.md and its folder, Ops Marketing needs credentials named CLOUDFLARE_API_TOKEN, CLOUDFLARE_API_KEY, KLAVIYO_API_KEY and RESEND_API_KEY. Our summary lists: A credential in CLOUDFLARE_API_TOKEN; A credential in CLOUDFLARE_API_KEY. Its frontmatter pre-approves these tools: Bash, Read, Write, Grep, Glob, Agent, TeamCreate, SendMessage, AskUserQuestion, WebFetch, WebSearch.
SKILL.md names 1 domain. As links in the text: ads.google.com. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Ops Marketing is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 34k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Ops Marketing: Email Sequence (freekmurze/dotfiles, 1k stars), Emails (coreyhaines31/marketingskills, 54k stars), Email Sequence (LeoYeAI/openclaw-marketing-skills, 1k stars) and Onboarding Cro (freekmurze/dotfiles, 1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Lifecycle-Innovations-Limited (a GitHub organization) maintains it in Lifecycle-Innovations-Limited/claude-ops, which has 542 GitHub stars. The repository holds 67 skills in this directory. The repository was last updated on October 10, 2026.
Source: Lifecycle-Innovations-Limited/claude-ops on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.