lifecycle
Skill2 starsChanged 4 months agoMITView on GitHub
Lifecycle marketing engine router. Use when the user says "lifecycle", "/lifecycle", "customer journey", "journey oluştur", "CRM kampanya", "marketing automation", "GA4 bağla ve journey üret", or any /lifecycle subcommand — or when a request plausibly matches more than one lifecycle-* skill (the router disambiguates instead of guessing). Routes to lifecycle-connect, lifecycle-map, lifecycle-intake, lifecycle-journeys, lifecycle-copy, lifecycle-audit, lifecycle-export, lifecycle-audience, lifecycle-qa, lifecycle-results.
5 other projects use a version of this.
Adopted by
Most recently taken up by
- UnBergant/bergant-workflowtheir own version, first seen Nov 8, 2026
- BrightGold70/skillstheir own version, first seen Nov 8, 2026
- violetfleming47/deal-intelligencetheir own version, first seen Oct 25, 2026
- victordelrosal/chairmantheir own version, first seen Mar 16, 2026
- Deepanshu418/claude-code-elysiatheir own version, first seen Feb 27, 2026
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 5
- UnBergant/bergant-workflow★ 5same name
- violetfleming47/deal-intelligence★ 4same name
- Deepanshu418/claude-code-elysia★ 2same name
- BrightGold70/skills★ 1same name
- victordelrosal/chairman★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository13 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- docs/llms-full.txtllms.txt
- docs/llms.txtllms.txt
- lifecycle-audienceSkill
- lifecycle-auditSkill
- lifecycle-connectSkill
- lifecycle-copySkill
- lifecycle-exportSkill
- lifecycle-intakeSkill
- lifecycle-journeysSkill
- lifecycle-mapSkill
- lifecycle-qaSkill
- lifecycle-resultsSkill
The file
We split this skill into the rules it gives an agent
7 rules. 0 are common, 5 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 5 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 50
Check for an existing brand config first: if ${CLAUDE_PLUGIN_ROOT}/knowledge/brands/ has a file for this company, load it before asking …
- Distinctive: line 58
Run the pipeline stages in order.
- Distinctive: line 59
If the user asks for a single stage, run only that stage, but state which prerequisites are missing and offer to run them.
- Distinctive: line 63
Never generate journeys without a DQS (CLAUDE.md rule 1).
- Distinctive: line 64
Never dump raw sub-skill mechanics on the user — they see results, not plumbing.
- Very specific: line 65
Never run lifecycle-copy before journeys exist, unless the user provides their own journey/step description.
- Distinctive: line 68
Never invent a sub-skill; if the request fits nothing above (e.g.
“Common” is measured: kept by at least 6 in 10 of the 5 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Lifecycle — Router
You are the entry point of the claude-lifecycle engine. Parse the user's intent and route to the right sub-skill. Read ${CLAUDE_PLUGIN_ROOT}/CLAUDE.md rules before doing anything — they are binding.
When NOT to use this directly
- The user already named an unambiguous subcommand or sub-skill ("run lifecycle-audit on this", "/lifecycle copy") — go straight to that skill; running it through the router's disambiguation step first is overhead with nothing to resolve.
- Mid-pipeline, moving to the next stage the current skill already named (e.g.
lifecycle-connectjust finished and said "next: lifecycle-map") — continue directly; re-entering the router to re-derive a routing decision that was already made adds a step, not a check. - The request names something this plugin doesn't do at all (sending a live campaign, managing a CRM account) — don't force it into the closest-sounding row of the table below; say plainly what the plugin does and doesn't do (see Never do).
Routing table
| User intent / subcommand | Route to | Notes |
connect, "GA4 bağla", "verimi analiz et", "data quality" | lifecycle-connect | Always the first step for new projects |
map, "event'leri haritala", "funnel çıkar" | lifecycle-map | Requires connect output (or runs it first) |
journeys, "journey üret", "kampanya kur", "otomasyonlar" | lifecycle-journeys | The main deliverable |
copy, "metin yaz", "email metni", "push metni" | lifecycle-copy | Can run standalone for an existing journey |
audit, "journey'lerimi denetle" | lifecycle-audit | For existing/imported journey portfolios |
results, "sonuçları gir", "performans verisi", "holdout sonuçları" | lifecycle-results | Closes the loop; needs a launched journey + performance data |
export, "JSON ver", "dışa aktar" | lifecycle-export | Needs generated journeys |
audience, "kitle sorgusu", "BigQuery SQL" | lifecycle-audience | Needs generated journeys + a data substrate (BigQuery export or CDP) |
qa, "test payload", "tetikleyiciyi test et" | lifecycle-qa | Needs generated journeys |
intake (rarely called directly) | lifecycle-intake | Usually triggered by other skills |
Ambiguous intent
If a request plausibly matches two or more rows above (e.g., "datamı incele" could mean lifecycle-connect's data-quality assessment or lifecycle-map's event mapping), do not silently pick one — state the two interpretations in one line and ask which one. Same principle as CLAUDE.md rule 7 (ask when event classification fails), applied here to intent classification. Once resolved, don't re-ask the same disambiguation again later in the same session — treat the user's answer as settled for that session.
Phrasing that turns out genuinely ambiguous more than once is worth contributing back as a routing-table example (see CONTRIBUTING.md) — the same content-not-code principle as adding an industry.
Pipeline logic (when the user asks for the whole thing)
"Journey'lerimi oluştur" with no prior state means the full pipeline:
connect → map → (intake if needed) → journeys → copy → export (on request)- Check for an existing brand config first: if
${CLAUDE_PLUGIN_ROOT}/knowledge/brands/has a file for this company, load it before asking anything — it pre-fills intake and carries the inheritance chain (CLAUDE.md rule 8). - Determine the data tier before anything else.
- GA4 MCP tools available (
mcp__ga4__*or similar)? → Tier 1. Confirm which property to use. - User has a CSV/export file? → Tier 2.
- Neither? → Tier 3: ask for the industry (must match a file in
${CLAUDE_PLUGIN_ROOT}/knowledge/industries/; if none matches, use the closest and say so, or offer_template.mdfor a custom playbook).
- GA4 MCP tools available (
- Pre-generation gate — ask these BEFORE any stage runs, in one grouped message, unless the user (or a brand config) already answered them. These are cheap questions that gate expensive fan-out; skipping them is what makes a run silently balloon in time and tokens. Do not proceed to
connect/map/journeysuntil they are settled (or explicitly defaulted with the tradeoff stated):- a) Scope: journeys only, or journeys + copy (the full canvas pair)? State plainly that journeys + copy runs meaningfully longer and uses noticeably more tokens — the pipeline spawns one subagent per journey for the portfolio, then one writer + one reviewer per journey again for copy, each reading the sector/brand/channel rules independently. Journeys-only is the lighter, faster option; copy can always be added later as a separate
/lifecycle copystep once the portfolio looks right. Silence or "hepsini/tümünü/full pipeline" defaults to journeys + copy (CLAUDE.md's "portfolio without copy is incomplete" rule) — but the cost/time tradeoff is stated before that default kicks in, never assumed silently. - b) Channel inventory: which channels the brand can actually send on (email / push / SMS / in-app / WhatsApp), and roughly the audience size per channel. Never assume a default channel set — a journey built on push when the brand has no push consent, or on SMS with no İYS registration, is unshippable. On T1 some of this is inferable from the data; still confirm rather than assume. A brand config file (
knowledge/brands/<brand>.mdchannels_live) answers this and skips the question. This is the same slotlifecycle-intake's whitelist marks "always ask on T2/T3", surfaced here up front so channels are settled before generation, not discovered mid-run.
- a) Scope: journeys only, or journeys + copy (the full canvas pair)? State plainly that journeys + copy runs meaningfully longer and uses noticeably more tokens — the pipeline spawns one subagent per journey for the portfolio, then one writer + one reviewer per journey again for copy, each reading the sector/brand/channel rules independently. Journeys-only is the lighter, faster option; copy can always be added later as a separate
- Run the pipeline stages in order. Each stage's output feeds the next; summarize between stages in ≤ 3 sentences.
- If the user asks for a single stage, run only that stage, but state which prerequisites are missing and offer to run them.
Never do
- Never generate journeys without a DQS (CLAUDE.md rule 1).
- Never dump raw sub-skill mechanics on the user — they see results, not plumbing.
- Never run
lifecycle-copybefore journeys exist, unless the user provides their own journey/step description. - Never start generation without settling the step-2 pre-generation gate (scope + channels) first.
copyis still a standard stage of the pipeline — a journey portfolio without its copy is an incomplete deliverable for a "journeys'imi oluştur" request, so copy stays the default outcome. What the gate changes: the user hears the time/token tradeoff and can say "journeys only for now", and the brand's real channel set is confirmed, before the expensive fan-out starts instead of it running on silent assumptions. - Never assume the channel set. Channels come from the user, the brand config's
channels_live, or (T1) confirmed data — never a hardcoded email/push/in-app default. Generating on a channel the brand can't actually send produces an unshippable portfolio. - Never invent a sub-skill; if the request fits nothing above (e.g. "run my campaign"), say what this plugin does and does not do (it designs; it does not send).
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

