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
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
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
- 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
1---2name: campaign-retrospective-writer3description: 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', 'напиши ретро по кампании', 'разбор кампании'.4---56# Campaign Retrospective Writer78Этот скилл собирает структурный ретро-разбор завершённой маркетинговой кампании на основе вставленных метрик и заметок. Результат: 6-секционный Markdown-документ — цель/факт, разбор по каналам, что сработало/нет, гипотезы причин, рекомендации и строка тренда.910**Ввод:**11- Метрики и/или заметки по завершённой кампании (свободный текст, paste)12- Опционально: цель, тип кампании, период, каналы1314**Вывод:**15- Markdown-ретро с 6 разделами1617---1819## Language Detection2021Detect the user's language from their message:22- If Russian (or contains Cyrillic): respond in Russian23- If English (or other Latin-script language): respond in English24- If ambiguous: respond in the language of the trigger phrase used2526---2728## Instructions2930### Step 1: Validate Input31321. Check if the user provided any campaign data (metrics, notes, results)33 - If input is empty: **stop**. Return bilingual prompt:34 > «Вставьте метрики или заметки по завершённой кампании. 35 > Paste metrics or notes from a completed campaign.»36 - Do not proceed to Step 237382. Check if the campaign appears to be **active** (ongoing, in-progress language such as "we are running", "current campaign")39 - If yes: warn the user before proceeding:40 > «Кампания выглядит активной — ретро эффективнее после завершения. Продолжить? / 41 > Campaign appears ongoing — retrospectives are more useful after completion. Continue?»42 - Wait for confirmation before proceeding4344### Step 2: Extract Campaign Context45461. Parse the input for:47 - Campaign name or type (email, paid, event, content, SMM, or other)48 - Campaign goal (target metric and value)49 - Period (start date — end date)50 - Channels used51522. If any of these are missing and not inferable from the input:53 - Ask for missing context in a single consolidated prompt (do not ask field by field)54 - Example: «Укажите: (1) тип кампании, (2) цель, (3) период, (4) каналы — или то, что помните.»5556**Edge Cases:**57- EC3: Multiple campaigns in one input → ask which one to process; if no answer, process the first one and add note: «Обработана первая кампания; укажите название для остальных.»58- EC4: Mixed-language input (EN + RU) → respond in the language of the majority; at 50/50 — respond in the language of the latest user message5960### Step 3: Build Goal vs. Result Table61621. Extract key campaign metrics from the input (CTR, conversions, reach, revenue, etc.)632. For each metric, record: target value | actual value | delta (%)643. If target was not stated: mark goal column as «—»654. If actual value is missing: mark as «н/д» / «n/a» — **never invent numbers**6667**Edge Cases:**68- EC2: Only qualitative notes, no numeric metrics → populate table with «н/д» in numeric cells; add note: «Числовые метрики не предоставлены — дополните таблицу вручную.»6970### Step 4: Build Channel Breakdown Table71721. For each channel identified in Step 2:73 - List the key metric for that channel (e.g., Email → open rate; Paid → CPC; SMM → engagement rate)74 - Record the result75 - Mark as ✅ (worked) or ❌ (didn't work) based on input context or goal achievement762. If only one channel: single-row table is valid7778**Edge Cases:**79- EC1: Only quantitative data (no qualitative context) → complete the table; mark «What Worked» section as «Добавьте качественный контекст вручную.»80- 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.8182### Step 5: Generate What Worked / What Didn't + Hypotheses83841. Create two lists based on the input and the Channel Breakdown table:85 - **What Worked**: positive outcomes with an explicit hypothesis of cause86 - **What Didn't Work**: underperforming areas with an explicit hypothesis of cause872. Mark every hypothesis with the label **(гипотеза)** / **(hypothesis)** — never present hypotheses as facts883. Minimum 1 item in each list; if the input doesn't support separation, write: «Недостаточно данных — дополните вручную.»8990### Step 6: Write Recommendations91921. Generate three sub-lists based on Steps 4 and 5:93 - **Повторить / Repeat**: what worked and should be replicated94 - **Изменить / Adjust**: what showed promise but needs refinement95 - **Убрать / Drop**: what didn't work and should be removed9697### Step 7: Add Trend Line98991. Write exactly **one line** summarising the campaign for cross-campaign tracking:100 - Format: `[Campaign name/type] [period]: [key metric], [delta vs. prev if known] — [1-line takeaway]`101 - Example: `Email Q2-2026: CTR 2.4%, +0.6% vs. Q1 — A/B subject line test drove the uplift`1022. If no previous campaign data is available: omit delta; note «нет данных для сравнения / no prior data»103104---105106## Negative Cases107108- **Empty input (NEG1):** No metrics or notes provided → stop immediately (see Step 1)109- **Active campaign (NEG2):** Campaign appears ongoing → warn + require confirmation before proceeding110- **No channels identified:** Cannot determine any channel from input → ask in Step 2 consolidated prompt111- **Goal only, no results:** If user provides only the goal with no actuals → produce template with «н/д» cells; note that ретро requires actual results to be meaningful112113---114115## Output Format116117Output a Markdown document with this structure:118119```120## Campaign Retrospective: [Campaign Name]121122**Тип / Type:** [email / paid / event / content / SMM / other]123**Период / Period:** [YYYY-MM-DD — YYYY-MM-DD]124**Каналы / Channels:** [comma-separated list]125126---127128### 1. Goal vs. Result129130| Метрика / Metric | Цель / Goal | Факт / Actual | Δ% |131|-----------------|-------------|---------------|----|132| [metric] | [target] | [actual] | [+/-%] |133134---135136### 2. Channel Breakdown137138| Канал / Channel | Ключевая метрика / Key Metric | Результат / Result | Итог / Verdict |139|----------------|------------------------------|-------------------|----------------|140| [channel] | [metric] | [value] | ✅ / ❌ |141142---143144### 3. What Worked145- [outcome] — **(гипотеза / hypothesis): [reason]**146147### 4. What Didn't Work148- [outcome] — **(гипотеза / hypothesis): [reason]**149150---151152### 5. Recommendations153154**Повторить / Repeat:** [list]155**Изменить / Adjust:** [list]156**Убрать / Drop:** [list]157158---159160### 6. Trend Line161`[Campaign name] [period]: [key metric], [delta] — [1-line takeaway]`162```163164**Field rules:**165- All numeric cells with missing data: «н/д» / «n/a» (never invent values)166- Hypotheses always labelled **(гипотеза)** / **(hypothesis)**167- Trend Line is exactly one line168- Section headers are bilingual (RU/EN) when responding in Russian; English-only when responding in English