# Extract Commitments

> After filing a meeting, customer call, investor call, or any conversation entry, scan the body for explicit commitments (I'll ship X by Y, send Z by Friday) and create structured commitment entries in wiki/commitments/. Use whenever a new meeting note lands; also use to retroactively scan an existing entry for missed commitments.

- Skill: `jezweb/extract-commitments` (Agent Skill)
- Install (CLI): `npx skillmds@latest add jezweb/extract-commitments`
- Raw SKILL.md: https://api.skillmd.com/api/skills/jezweb/extract-commitments/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Productivity
- Author: jezweb (https://skillmd.com/u/jezweb)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/jezweb/extract-commitments

---


# Extract commitments

A founder's reputation is built on what they said they'd do. This skill extracts commitments from meeting notes and gives them a structured home with deadlines, parties, and tracking.

## When this skill fires

- After any `wiki/research/?kind=customer-call` is filed
- After any `wiki/research/?kind=investor-call` is filed
- When the user asks "@customer-success what did I promise?" or similar
- Retroactively when boss notices a meeting note that wasn't scanned

## The shape

1. **Read the source entry** completely (don't skim)
2. **Identify commitment phrases**:
   - "I'll ship X by Y"
   - "I'll send Z by Friday"
   - "I'll follow up next week"
   - "by EOQ", "by Friday", "next Tuesday", "in 2 weeks", "before our next call"
   - "we'll deliver X" / "we'll get back to you"
   - implicit: "yes, I can do that" in response to a specific ask
3. **Parse the deadline** to a concrete date
4. **Identify the responsible party** (Sarah / Tom / Priya / etc.) — default to the principal user
5. **Identify the recipient** (which contact / org / project this commits us to)
6. **Write a commitment entry** to `wiki/commitments/<slug>.md`:

```yaml
---
slug: <year>-<month>-<topic>
kind: commitment
title: <human-readable commitment>
made_in: <source entry id>
responsible: <person slug>
made_to: <contact slug or org slug>
due_date: <YYYY-MM-DD>
status: open                   # open | in_progress | done | missed | renegotiated
priority: p1                   # p1 | p2 | p3
source_quote: "<verbatim from the meeting>"
created: <today>
last_updated: <today>
last_edited_by: customer-success
last_change_summary: extracted from <source>
---

# <Title>

## Commitment

<plain-language description>

## Context

From <source meeting>; <one-line context>

## Tracking

- 2026-XX-XX: extracted
- ...
```

7. **Cross-link** the original meeting note's frontmatter with `commitments: [<slug>, ...]`
8. **Notify boss** if a commitment is high-stakes (P1, investor-facing, or short deadline <7 days)

## Reasoning rules

- Implicit commitments count. "Sure, I can do that" + a specific ask = commitment.
- Quotes are gold — capture the exact phrase the founder used so future you can verify what was actually said.
- Conservative on parsing dates — "next Friday" said on Monday means *this* Friday; double-check; default to the nearest forward date.
- If multiple commitments in one meeting: one commitment entry per concrete promise.

## What this enables

- **Dashboard "commitments due this week"** lane
- **Morning standup**: "Sarah, you said you'd send the annual contract to Redgum by Friday — want me to draft it now?"
- **Pre-meeting prep**: "Before the James Wilson call: you committed to a monthly update; April's was sent on time; May is due 2026-06-04"
- **End-of-month retro**: "8/10 commitments hit this month; 2 missed both with Redgum — worth checking in with Anna"

## Anti-patterns

- Extracting "I should think about that" as a commitment (it's not)
- Inventing a deadline the source doesn't state
- Filing commitments without source quote — un-auditable
- Filing the same commitment twice if a meeting is re-summarised

