Claude-skills-kit decision-log
"Extracts structured decisions from meeting notes, Slack threads, or email
git clone https://github.com/KirKruglov/claude-skills-kit
T=$(mktemp -d) && git clone --depth=1 https://github.com/KirKruglov/claude-skills-kit "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/decision-log" ~/.claude/skills/kirkruglov-claude-skills-kit-decision-log && rm -rf "$T"
skills/decision-log/SKILL.mdSkill: decision-log
Extracts decisions from meeting notes, messages, and threads and builds a structured log — separate from action items. Supports two modes: new log creation and appending to an existing log with deduplication.
Triggers
Russian: «зафиксируй решения», «залоги решения», «decision log», «лог решений», «извлеки решения из встречи», «обнови лог решений», «добавь решения в лог», «запиши решения» English: "log decisions", "decision log", "extract decisions", "capture decisions from meeting", "update decision log", "add to decision log", "decisions from this meeting"
Language Detection
Determine the language of the user's first message — it sets the language for the entire conversation, output, and template.
| Input language | Output language | Template |
|---|---|---|
| Russian | Russian | |
| English | English | |
Input
Required:
- Text from a meeting, Slack thread, email chain, or meeting notes (any format)
Optional:
- Existing decision log (table or cards) — for append mode
Parameters (specified explicitly or selected in Step 1):
- Output format:
(markdown table) ortable
(markdown cards)cards - Mode:
(new log) ornew
(add to existing log)append
Output
A structured decision log in the chosen format.
Each record contains 6 fields:
- Decision — precise formulation of the decision (1–2 sentences)
- Context — why it was made: constraints, rationale, trigger
- Alternatives — what was considered and why rejected (if mentioned)
- Participants — who was involved in making the decision
- Date — date (if stated in the text; otherwise blank)
- Related — linked tasks, risks, dependencies (if mentioned)
Instructions
Step 1 — Determine mode and format
Determine mode and format from the request context:
| Condition | Mode | Action |
|---|---|---|
| Only source text provided | | Create log from scratch |
| Source text + existing log provided | | Add new records |
| Format not specified | — | Ask the user |
If the output format is not specified explicitly, ask in the user's language:
- EN: "Which format do you prefer: table (one row per decision) or cards (one block per decision)?"
- RU: "Какой формат предпочтительнее: таблица (одна строка на решение) или карточки (отдельный блок на каждое решение)?"
Wait for the answer before processing.
Step 2 — Extract decisions
Scan the text and identify all points where a decision was made.
Decision signals (as opposed to action items or information):
- Choice between options: "decided to use X instead of Y"
- Stated position: "agreed that...", "confirmed...", "approved..."
- Change of approach: "switching to...", "dropping..."
- Prioritization: "focusing on X, deferring Y"
- Implicit agreement: a clear brief response ("ok", "yeah", "sounds fine", "agreed", «ок», «хорошо», «договорились») to a proposal involving a choice — only if context makes it clear which option was accepted
Do NOT extract:
- Action items ("Ivan will do this by Friday")
- Informational statements with no choice involved
- Open questions and hypotheses
Fill in all 6 fields for each decision found. If a field is not mentioned in the text — leave it blank or use a dash.
Step 3 — Deduplication (append mode only)
Compare extracted decisions against the existing log.
Consider records duplicates if:
- The decision wording matches in meaning (different words are acceptable)
- Context and date match
When a duplicate is detected:
- Do not add the record again
- Note in the output: "[duplicate, skipped: brief wording]"
Step 4 — Generate output
Use headings and labels matching the determined output language.
Format
— EN:table
| # | Decision | Context | Alternatives | Participants | Date | Related | |---|----------|---------|--------------|--------------|------|---------| | 1 | ... | ... | ... | ... | ... | ... |
Format
— RU:table
| # | Решение | Контекст | Альтернативы | Участники | Дата | Связанные | |---|---------|----------|--------------|-----------|------|-----------| | 1 | ... | ... | ... | ... | ... | ... |
Format
— EN:cards
### Decision 1: [short title] - **Decision:** ... - **Context:** ... - **Alternatives:** ... - **Participants:** ... - **Date:** ... - **Related:** ...
Format
— RU:cards
### Решение 1: [краткое название] - **Решение:** ... - **Контекст:** ... - **Альтернативы:** ... - **Участники:** ... - **Дата:** ... - **Связанные:** ...
After the output, add a brief summary: how many decisions found, how many are new (in append mode), how many duplicates skipped.
Templates
The skill uses files from
templates/:
| File | Language | Purpose |
|---|---|---|
| EN | Blank log template (English) |
| RU | Blank log template (Russian) |
Constraints
- Does not extract action items — that is a separate domain
- Does not integrate with external systems directly (task trackers, messengers)
- Text input only — audio, video, and images are not supported
- Does not assess the quality or correctness of decisions
- Does not make recommendations or suggest alternatives
- If the source text contains no decisions — reports this explicitly and does not generate empty records