Campaign retrospective writer
Skill KirKruglov/claude-skills-kit/skills/marketing-and-content/campaign-retrospective-writer
70+ curated agent skills for Claude Cowork and Claude.ai — ready-to-use tools for non-technical users: project management, productivity, and AI workflow automation
npx -y skills add KirKruglov/claude-skills-kit --skill campaign-retrospective-writerAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 14 stars14 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Analyse a completed marketing campaign and produce a structured retrospective: goal vs. result, channel breakdown, what worked/didn't, recommendations, and trend line. Triggers: 'write campaign retrospective', 'campaign debrief', 'напиши ретро по кампании', 'разбор кампании'.
SKILL.md
7.8 KB, as published. Nobody here has run it
Campaign Retrospective Writer
Этот скилл собирает структурный ретро-разбор завершённой маркетинговой кампании на основе вставленных метрик и заметок. Результат: 6-секционный Markdown-документ — цель/факт, разбор по каналам, что сработало/нет, гипотезы причин, рекомендации и строка тренда.
Ввод:
- Метрики и/или заметки по завершённой кампании (свободный текст, paste)
- Опционально: цель, тип кампании, период, каналы
Вывод:
- Markdown-ретро с 6 разделами
Language Detection
Detect the user's language from their message:
- If Russian (or contains Cyrillic): respond in Russian
- If English (or other Latin-script language): respond in English
- If ambiguous: respond in the language of the trigger phrase used
Instructions
Step 1: Validate Input
-
Check if the user provided any campaign data (metrics, notes, results)
- If input is empty: stop. Return bilingual prompt:
«Вставьте метрики или заметки по завершённой кампании.
Paste metrics or notes from a completed campaign.» - Do not proceed to Step 2
- If input is empty: stop. Return bilingual prompt:
-
Check if the campaign appears to be active (ongoing, in-progress language such as "we are running", "current campaign")
- If yes: warn the user before proceeding:
«Кампания выглядит активной — ретро эффективнее после завершения. Продолжить? /
Campaign appears ongoing — retrospectives are more useful after completion. Continue?» - Wait for confirmation before proceeding
- If yes: warn the user before proceeding:
Step 2: Extract Campaign Context
-
Parse the input for:
- Campaign name or type (email, paid, event, content, SMM, or other)
- Campaign goal (target metric and value)
- Period (start date — end date)
- Channels used
-
If any of these are missing and not inferable from the input:
- Ask for missing context in a single consolidated prompt (do not ask field by field)
- Example: «Укажите: (1) тип кампании, (2) цель, (3) период, (4) каналы — или то, что помните.»
Edge Cases:
- EC3: Multiple campaigns in one input → ask which one to process; if no answer, process the first one and add note: «Обработана первая кампания; укажите название для остальных.»
- EC4: Mixed-language input (EN + RU) → respond in the language of the majority; at 50/50 — respond in the language of the latest user message
Step 3: Build Goal vs. Result Table
- Extract key campaign metrics from the input (CTR, conversions, reach, revenue, etc.)
- For each metric, record: target value | actual value | delta (%)
- If target was not stated: mark goal column as «—»
- If actual value is missing: mark as «н/д» / «n/a» — never invent numbers
Edge Cases:
- EC2: Only qualitative notes, no numeric metrics → populate table with «н/д» in numeric cells; add note: «Числовые метрики не предоставлены — дополните таблицу вручную.»
Step 4: Build Channel Breakdown Table
- For each channel identified in Step 2:
- List the key metric for that channel (e.g., Email → open rate; Paid → CPC; SMM → engagement rate)
- Record the result
- Mark as ✅ (worked) or ❌ (didn't work) based on input context or goal achievement
- If only one channel: single-row table is valid
Edge Cases:
- EC1: Only quantitative data (no qualitative context) → complete the table; mark «What Worked» section as «Добавьте качественный контекст вручную.»
- EC2: Only qualitative notes, no numeric results → mark the Result column as «н/д» / «n/a» for all channels; still assign ✅/❌ based on qualitative context where possible.
Step 5: Generate What Worked / What Didn't + Hypotheses
- Create two lists based on the input and the Channel Breakdown table:
- What Worked: positive outcomes with an explicit hypothesis of cause
- What Didn't Work: underperforming areas with an explicit hypothesis of cause
- Mark every hypothesis with the label (гипотеза) / (hypothesis) — never present hypotheses as facts
- Minimum 1 item in each list; if the input doesn't support separation, write: «Недостаточно данных — дополните вручную.»
Step 6: Write Recommendations
- Generate three sub-lists based on Steps 4 and 5:
- Повторить / Repeat: what worked and should be replicated
- Изменить / Adjust: what showed promise but needs refinement
- Убрать / Drop: what didn't work and should be removed
Step 7: Add Trend Line
- Write exactly one line summarising the campaign for cross-campaign tracking:
- Format:
[Campaign name/type] [period]: [key metric], [delta vs. prev if known] — [1-line takeaway] - Example:
Email Q2-2026: CTR 2.4%, +0.6% vs. Q1 — A/B subject line test drove the uplift
- Format:
- If no previous campaign data is available: omit delta; note «нет данных для сравнения / no prior data»
Negative Cases
- Empty input (NEG1): No metrics or notes provided → stop immediately (see Step 1)
- Active campaign (NEG2): Campaign appears ongoing → warn + require confirmation before proceeding
- No channels identified: Cannot determine any channel from input → ask in Step 2 consolidated prompt
- Goal only, no results: If user provides only the goal with no actuals → produce template with «н/д» cells; note that ретро requires actual results to be meaningful
Output Format
Output a Markdown document with this structure:
## Campaign Retrospective: [Campaign Name]
**Тип / Type:** [email / paid / event / content / SMM / other]
**Период / Period:** [YYYY-MM-DD — YYYY-MM-DD]
**Каналы / Channels:** [comma-separated list]
---
### 1. Goal vs. Result
| Метрика / Metric | Цель / Goal | Факт / Actual | Δ% |
|-----------------|-------------|---------------|----|
| [metric] | [target] | [actual] | [+/-%] |
---
### 2. Channel Breakdown
| Канал / Channel | Ключевая метрика / Key Metric | Результат / Result | Итог / Verdict |
|----------------|------------------------------|-------------------|----------------|
| [channel] | [metric] | [value] | ✅ / ❌ |
---
### 3. What Worked
- [outcome] — **(гипотеза / hypothesis): [reason]**
### 4. What Didn't Work
- [outcome] — **(гипотеза / hypothesis): [reason]**
---
### 5. Recommendations
**Повторить / Repeat:** [list]
**Изменить / Adjust:** [list]
**Убрать / Drop:** [list]
---
### 6. Trend Line
`[Campaign name] [period]: [key metric], [delta] — [1-line takeaway]`
Field rules:
- All numeric cells with missing data: «н/д» / «n/a» (never invent values)
- Hypotheses always labelled (гипотеза) / (hypothesis)
- Trend Line is exactly one line
- Section headers are bilingual (RU/EN) when responding in Russian; English-only when responding in English