{"id":11586,"plugin_id":"plugin_asdk_app_6a8dddd50424819196928510eff4c70f","kind":"skill","collection_source":null,"comparison_source":null,"observed_at":"2026-09-30T22:59:49.513Z","digest":"8cd84679584a92e17f14f36c67e74371a977ec6038d6279c9003ebabac981932","against":null,"payload":{"name":"knock-lifecycle-opportunities","description":"Scan a product codebase for activation, engagement, and retention moments and recommend lifecycle messaging opportunities. Use when finding onboarding, churn, trial, or habit-forming notification candidates without creating Knock resources.","included_files":[{"relative_path":"rules/map-product-lifecycle.md","size_in_bytes":1299},{"relative_path":"rules/opportunity-brief-format.md","size_in_bytes":2161},{"relative_path":"rules/select-opportunities.md","size_in_bytes":1404}],"skill_md_contents":"---\nname: knock-lifecycle-opportunities\ndescription: Scan a product codebase for activation, engagement, and retention moments and recommend lifecycle messaging opportunities. Use when finding onboarding, churn, trial, or habit-forming notification candidates without creating Knock resources.\n---\n\n# Lifecycle opportunities skill\n\nFind where users activate, stall, pay, invite, or churn in **this** product’s code and data model. Recommend messaging opportunities tied to real events and UI states.\n\n## Hard constraint\n\n**Do not create, update, push, or delete Knock resources** via MCP or CLI. Output an opportunity backlog and event/trigger sketches only. Hand off to `knock-setup` or `knock-product-messaging-strategy` only if the user asks to build.\n\n## Output contract (hard)\n\nWrite all detailed findings to **`knock-plan.md`** at the repo root (create or update). Keep chat **minimal** — status + confirmation only.\n\nDo **not** paste opportunity briefs, code-path inventories, or long rationale into chat. Follow `rules/opportunity-brief-format.md`.\n\nAllowed chat content:\n\n1. One short status line (path + count)\n2. Optional one-line blocker\n3. Bold confirmation question as the **last line**\n\nExample:\n\nWrote `knock-plan.md` with 6 ranked opportunities.\n\n**Which opportunities should we take next?**\n\n## Overview\n\n1. **Map the product lifecycle in code** (`rules/map-product-lifecycle.md`) — write signals into the file\n2. **Select high-value opportunities** (`rules/select-opportunities.md`) — rank in the file\n3. **Write opportunity briefs** (`rules/opportunity-brief-format.md`) — full briefs in the file only\n\n## How to use this skill\n\n1. Infer personas, accounts/workspaces, and key funnels from the repo — capture in the file, not chat.\n2. Locate signup, onboarding, invite, billing, usage, and inactivity signals — same.\n3. Propose at most 8 prioritized lifecycle messages in `knock-plan.md`.\n4. Chat: status line + ask which to advance. Do not dump the list body in chat.\n5. When the user asks to build in Knock or deepen strategy, hand off with a structured payload — do **not** invite re-ranking:\n\n```markdown\n### Setup handoff\n- **plan.** knock-plan.md\n- **confirmed.** [names or indexes]\n- **skipped.** [names or indexes]\n- **deferred / blocked.** [names + reason]\n```\n\n`knock-setup` must treat `confirmed` as authoritative, read detail from `knock-plan.md`, and skip rediscovery. For fuller strategy design, hand off confirmed items to `knock-product-messaging-strategy` (same `knock-plan.md`).\n\n## Rule files reference\n\n- `rules/map-product-lifecycle.md` — where to look in code\n- `rules/select-opportunities.md` — prioritization\n- `rules/opportunity-brief-format.md` — plan file structure and chat brevity\n\n## Docs\n\n- https://docs.knock.app/concepts/workflows\n- https://docs.knock.app/concepts/guides\n- https://docs.knock.app/concepts/audiences\n- https://docs.knock.app/send-notifications/triggering-workflows/audiences\n- https://knock.app/manuals/product-leaders-guide-to-effective-notifications/the-product-leaders-guide-to-effective-notifications\n"},"changes":[],"summary":"First saved snapshot. No earlier version is available for comparison.","summary_kind":"deterministic","summary_metadata":{}}