Claude-skill-registry commitment-extractor

Extract and track commitments from meeting notes - who promised what to whom, with deadlines and status tracking.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/commitment-extractor" ~/.claude/skills/majiayu000-claude-skill-registry-commitment-extractor && rm -rf "$T"
manifest: skills/data/commitment-extractor/SKILL.md
source content

Commitment Extractor

Scan meeting notes to extract, structure, and track commitments. Identifies promises, action items, and follow-ups with their owners, recipients, deadlines, and status.

Arguments

  • $SCOPE
    - Optional. Filter scope:
    • all
      - All meetings (default)
    • recent
      - Last 7 days only
    • YYYY-MM-DD
      - Specific date
    • person:Name
      - Commitments involving a specific person
    • overdue
      - Only show overdue/aging commitments

Process

Step 1: Scan Meeting Notes

Locate meeting notes:

# Find all meeting notes
find 00-Inbox/Meetings/ -name "*.md" -type f | grep -v README

Apply scope filter:

  • all
    : Process all files
  • recent
    : Filter to files modified in last 7 days
  • YYYY-MM-DD
    : Filter to files with date in filename
  • person:Name
    : Will filter in extraction phase
  • overdue
    : Process all, filter in status phase

Step 2: Extract Commitment Language

For each meeting note, scan for commitment patterns:

First-person commitments ("I/We will do X"):

  • I'll...
    ,
    I will...
    ,
    I'm going to...
  • Let me...
    ,
    I can...
    ,
    I should...
  • We'll...
    ,
    We will...
    ,
    We need to...
    ,
    We should...
  • I'll get back to you on...
    ,
    I'll follow up...

Second-person requests ("You will do X"):

  • Can you...
    ,
    Could you...
    ,
    Would you...
  • You'll need to...
    ,
    You should...
  • Please...
    (when directed at someone)

Third-person assignments ("They will do X"):

  • @[[Person]]...
    ,
    @Person:...
  • [Name] will...
    ,
    [Name] to...
  • Action for [Name]:...

Explicit action items:

  • - [ ] ...
    (unchecked tasks)
  • Action Items:
    section contents
  • Follow-up:
    ,
    Next steps:
    section contents
  • Lines containing
    ^mt-
    or
    ^task-
    block IDs

Step 3: Structure Each Commitment

For each commitment found, extract:

commitment:
  text: "[Exact commitment language]"
  owner: "[Who made/owns the commitment]"
  recipient: "[Who it was made to, if applicable]"
  deadline: "[Date if mentioned, or 'None specified']"
  source_meeting: "[Meeting title and date]"
  source_file: "[Full path to meeting note]"
  block_id: "[^mt-xxx or ^task-xxx if present]"
  extracted_date: "[Today's date]"
  status: "[new|aging|overdue|completed]"

Owner detection rules:

  1. First-person language in meeting with known attendees = meeting owner/author
  2. @[[Person]]
    or
    @Person:
    = that person
  3. Text after "Action for [Name]:" = that person
  4. If ambiguous, mark as "Unknown - needs clarification"

Deadline detection:

  • Look for:
    by [date]
    ,
    before [date]
    ,
    end of [week/month]
    ,
    tomorrow
    ,
    next [day]
    ,
    this week
  • Convert relative dates to absolute (based on meeting date)
  • If no deadline found:
    None specified

Step 4: Calculate Status

Status rules:

  • new
    - Extracted today or commitment < 7 days old
  • aging
    - Commitment > 7 days old, no completion evidence
  • overdue
    - Past explicit deadline
  • completed
    - Task has
    [x]
    or referenced in completion notes

Aging calculation:

days_old = today - meeting_date
if deadline and today > deadline:
    status = "overdue"
elif days_old > 7 and not completed:
    status = "aging"
elif extracted_today:
    status = "new"

Step 5: Cross-Reference Completion

Check if commitments have been completed:

  1. Task file check: Search
    03-Tasks/Tasks.md
    for matching block IDs or similar task text
  2. Meeting follow-up check: Look for "completed", "done", "finished" mentions in subsequent meeting notes
  3. Person page check: Check referenced person pages for task completion

Mark as

completed
if evidence found.

Step 6: Filter by Scope

If

person:Name
scope was specified:

  • Include commitments where owner = Name
  • Include commitments where recipient = Name
  • Include commitments that mention Name in text

If

overdue
scope was specified:

  • Only include commitments with status =
    overdue
    or
    aging

Step 7: Generate Output

Default output - grouped by person:

# Commitment Tracker

*Generated: [YYYY-MM-DD HH:MM]*
*Scope: [scope applied]*
*Meetings scanned: [count]*

---

## Summary

| Status | Count |
|--------|-------|
| Overdue | X |
| Aging (>7 days) | X |
| New | X |
| Completed | X |
| **Total Open** | **X** |

---

## By Owner

### [[Person Name]]

**Overdue:**
| Commitment | To | Deadline | Source Meeting |
|------------|-----|----------|----------------|
| [commitment text] | [recipient] | [date] | [[Meeting link]] |

**Aging:**
| Commitment | To | Days Old | Source Meeting |
|------------|-----|----------|----------------|
| [commitment text] | [recipient] | [N] | [[Meeting link]] |

**Recent:**
| Commitment | To | Deadline | Source Meeting |
|------------|-----|----------|----------------|
| [commitment text] | [recipient] | [date/none] | [[Meeting link]] |

---

### [[Another Person]]
...

---

## Commitments Made TO You

| From | Commitment | Deadline | Status | Source |
|------|------------|----------|--------|--------|
| [[Person]] | [text] | [date] | [status] | [[Meeting]] |

---

## Needs Attention

### Overdue (Past Deadline)

1. **[Commitment text]**
   - Owner: [[Person]]
   - Deadline: [date] (X days overdue)
   - Source: [[Meeting - Date]]
   - Suggested action: Follow up or mark complete

### Aging (No Response >7 days)

1. **[Commitment text]**
   - Owner: [[Person]]
   - Days since commitment: X
   - Source: [[Meeting - Date]]
   - Suggested action: Check status or create task

---

## Recently Completed

| Commitment | Owner | Completed | Source |
|------------|-------|-----------|--------|
| [text] | [[Person]] | [date] | [[Meeting]] |

Alternative output - grouped by status (use flag

--by-status
):

Group all overdue first, then aging, then new.

Step 8: Optional Actions

After presenting results, offer:

  1. Create tasks: "Would you like me to create tasks in
    03-Tasks/Tasks.md
    for any open commitments?"
  2. Update person pages: "Should I add these commitments to the relevant person pages?"
  3. Mark complete: "Any of these already done? Tell me which to mark complete."
  4. Set deadlines: "Want to add deadlines to commitments that don't have them?"

Step 9: Save Report (Optional)

If user requests, save report to:

06-Resources/Intel/Commitment_Reports/YYYY-MM-DD_Commitments.md


Pattern Library

High-Confidence Commitment Patterns

These patterns strongly indicate a commitment:

# First-person future tense
/I('ll| will| am going to| can| should| need to) (get|send|create|update|follow|schedule|reach|contact|review|prepare|build|write)/i

# Action item markers
/^- \[ \] .+/m
/Action (item|for|:)/i
/^### (For Me|My Actions|Dave|I need to)/im

# Explicit promises
/(I('ll| will) get back to you|I('ll| will) follow up|Let me (check|find|get|send))/i

# Request patterns
/(@\[\[.+?\]\]|@\w+):\s*.+/
/(Can|Could|Would) you (please )?(send|create|review|check|update|schedule)/i

Context Clues

Look for these section headers that often contain commitments:

  • ## Action Items
  • ## Follow-up
  • ## Next Steps
  • ## Tasks
  • ### For Me
    /
    ### For Others
  • ## Decisions Made
    (may contain implied commitments)

Exclusion Patterns

Skip these (not commitments):

  • Questions:
    Should I...?
    ,
    Can we...?
    ,
    What if I...?
  • Past tense:
    I did...
    ,
    We completed...
    ,
    I sent...
  • Hypotheticals:
    I would...
    ,
    I could...
    (without context)
  • Already completed:
    - [x] ...

Usage Examples

# Extract all commitments from all meetings
/commitment-extractor

# Only commitments from last 7 days
/commitment-extractor recent

# Commitments involving a specific person
/commitment-extractor person:Paul

# Only show overdue/aging items
/commitment-extractor overdue

# Commitments from a specific date
/commitment-extractor 2026-01-26

Integration Points

Person Pages

After extraction, optionally update person pages with:

## Open Commitments

### Commitments TO [[Person]]
- [commitment] - from [[Meeting]] (due: [date])

### Commitments FROM [[Person]]
- [commitment] - from [[Meeting]] (due: [date])

Task System

Commitments can be promoted to tasks:

  • Add to
    03-Tasks/Tasks.md
    with source link
  • Generate proper
    ^task-YYYYMMDD-XXX
    block ID
  • Link back to original meeting note

Weekly Review

The

/week-review
command can call this to surface:

  • Commitments made this week
  • Aging commitments that need attention
  • Overdue items requiring action

Notes

  • This command is read-only by default (extraction only)
  • Modifications (create tasks, update pages) require explicit confirmation
  • Commitment detection uses heuristics - may have false positives/negatives
  • When in doubt about owner, ask for clarification before creating tasks
  • Block IDs enable bidirectional linking between meetings and task system