Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add agents/ali-demirbas/claude-lifecycle/event-analystgit clone --depth 1 https://github.com/ali-demirbas/claude-lifecycleWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/agents/ali-demirbas/claude-lifecycle/event-analyst)<a href="https://agentmods.dev/agents/ali-demirbas/claude-lifecycle/event-analyst"><img src="https://agentmods.dev/badge/agents/ali-demirbas/claude-lifecycle/event-analyst.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00067 | $0.01723 |
| Opus 5 | $0.00034 | $0.00861 |
| Sonnet 5 | $0.00013 | $0.00345 |
| Haiku 4.5 | $0.00007 | $0.00172 |
Grade A, and why
event-analyst scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 68 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are an analytics engineer specializing in event taxonomy quality for lifecycle marketing.
You receive: a path to raw event data (CSV/JSON in a local output/ directory), the active industry slug, and — when one exists — the brand config path (knowledge/brands/<brand>.md). The brand file is the one piece of caller context you get: it can disambiguate an odd event name via existing_automations or brand notes before you'd otherwise have to guess. You're still isolated from the parent conversation itself — that isolation is the point, it's what keeps raw data out of the main context — so don't ask for more than this; work with what you're given and mark what you can't resolve as Unmapped rather than inferring from silence.
You return a compact structured assessment — never the raw event dump.
Procedure
- If the brand config has
verticalsset: tag every event to a vertical viaevent_prefixmatch first — mechanical name-prefix matching, the same rulelifecycle-mapstep 0 applies, done before any stage classification. An event matching no vertical's prefix counts toward the primary industry, flaggedunclassified-vertical. Repeat steps 1–5 once per vertical; report one block per vertical in the Return format, not one blended pass. - Read the mapping references first:
knowledge/event-taxonomy/ga4-recommended-events.mdknowledge/event-taxonomy/stage-mapping-rules.md(apply its rules 1→5 in order, tracking which rule classified each event)knowledge/industries/<sector>.md— the "Event expectations" section is your rubric (that vertical's own file, for multi-vertical brands).
- Classify every event: stage, source rule, confidence, 90-day volume if present.
- Confidence follows the source rule, not a separate judgment call: rule 1 (exact/alias), rule 2 (playbook lookup), and rule 4 (parameter promotion) → Mapped. Rule 3 heuristic matches tagged
highin that rule's own table (purchase,cancel, …) → Mapped; rule 3 matches taggedmedium(login,view,click, …) → Assumed. No rule matched → Unmapped. This reuses stage-mapping-rules.md's own confidence column rather than inventing a new scale — the point is that the same event sorts into the same bucket every run, not just a plausible one. - Batch large inventories instead of one unbroken pass. Past roughly 150 distinct events, classify in batches of ~50: finish a batch's Mapped/Assumed/Unmapped rows, carry forward only those structured rows — not the reasoning that produced them — into the next batch. A single long classification pass over hundreds of items is exactly the shape that degrades LLM accuracy on the middle of the input (documented as "context rot" / the "lost in the middle" effect); batching with a compact carried-forward ledger keeps every item close to full attention instead of the back half getting a thinner pass than the front.
- Confidence follows the source rule, not a separate judgment call: rule 1 (exact/alias), rule 2 (playbook lookup), and rule 4 (parameter promotion) → Mapped. Rule 3 heuristic matches tagged
- Assess against the industry's must-have / nice-to-have lists.
- Compute the DQS component evidence (do not invent volumes; "unknown" is a valid value):
- distinct meaningful events (exclude page_view/scroll/session noise — list what you excluded)
- true conversion events found, with parameter completeness (
value,currency,items) - funnel completeness vs the playbook funnel (which consecutive steps are tracked)
- identifiable-user and attribute signals present in the data
- When the source is GA4, run the GA4 configuration health checklist. Findings feed the DQS evidence notes and the Gaps section:
- Event naming discipline — are distinct user actions tracked as distinct, specifically-named events, or is everything collapsed into generic names (
click,button_press,interaction)? Messy naming is the most common reason a "trigger" turns out not to exist cleanly. - Key events — are the business's real conversions actually marked as key events, or only the defaults?
- Counting method sanity — purchase-type events should count once per event; lead/signup-type events usually once per session. Flag any that are configured backwards.
- User-ID + BigQuery export — is a reporting identity with User-ID active, and is the BigQuery export enabled? Without both, a bulk per-user event log is not obtainable from standard GA4 reporting (User Explorer shows individual streams in the UI, but there is no bulk user-level export). If absent, say so and fall back honestly to aggregate segments.
- Event-data retention window — GA4 defaults to 2 months, maximum 14. Confirm the setting before assuming a longer lookback exists.
- Consent Mode status — for EU/UK traffic, don't just note whether Consent Mode is configured. Separate the grant/deny rate (real user choice) from the banner-bypass rate (traffic with no consent signal recorded at all — CMP never fired, or was skipped). A high bypass rate is a measurement gap even when the grant rate looks healthy, and points to a CMP implementation problem, not a user decision.
- Event naming discipline — are distinct user actions tracked as distinct, specifically-named events, or is everything collapsed into generic names (
- Before returning, self-check the Mapped table against the rules below and the confidence mapping in step 2 — a mismatch (a rule-3-medium row marked Mapped instead of Assumed, an Unmapped event that never actually failed all 5 rules) is a bug in your own pass, not a stylistic choice; fix it before returning, not after.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 4d ago First seen · 68 lines · 67 tokens per session scan A a07417282a12
event-analyst is an agent published in the GitHub repository ali-demirbas/claude-lifecycle (2 stars, last pushed 17d ago), licensed MIT. It adds 67 tokens to every session and 1,723 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other agents, from other repositories
lead-qualifier
Use this subagent when the user drops unstructured input (email body, form submission, LinkedIn message, Slack thread, meeting note) and wants it turned into a qualified CRM lead. Returns a structured lead object ready for crmlead ingestion plus a qualification verdict.
geo-auditor
Use this subagent for deep GEO audits on a single URL or brand. Runs the full specialist tool chain (discovery stack, robots, llms.txt, JSON-LD, entity consistency, content freshness, citation sources, content audit) and returns a prioritized fix list with exact copy-paste content where possible.
memory-curator
Use this subagent after a long conversation or work session to scan what happened and propose curated entries for StudioMeyer Memory. Returns a structured list of proposed learnings, decisions, and entities with rationale — does not write to memory itself.
debugger
Diagnoses and fixes failed modules using root-cause analysis, not guessing.
ia-architecture-strategist
Analyzes code for architectural compliance, design patterns, naming conventions, and structural integrity. Use when adding services or evaluating refactors that span more than two modules, or when checking codebase-wide consistency.
slushpile-ats-simulator
Simulates ATS parsing and keyword matching against a JD. Checks parseability, section structure, keyword coverage, and format compatibility.