Commitment Extractor
commitment-extractor
Extract and track commitments from meeting notes - who promised what to whom, with deadlines and status tracking.
SKILL.md
Full skill instructions
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 onlyYYYY-MM-DD- Specific dateperson:Name- Commitments involving a specific personoverdue- 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 filesrecent: Filter to files modified in last 7 daysYYYY-MM-DD: Filter to files with date in filenameperson:Name: Will filter in extraction phaseoverdue: 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 contentsFollow-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:
- First-person language in meeting with known attendees = meeting owner/author
@[[Person]]or@Person:= that person- Text after "Action for [Name]:" = that person
- 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 oldaging- Commitment > 7 days old, no completion evidenceoverdue- Past explicit deadlinecompleted- 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:
- Task file check: Search
03-Tasks/Tasks.mdfor matching block IDs or similar task text - Meeting follow-up check: Look for "completed", "done", "finished" mentions in subsequent meeting notes
- 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 =
overdueoraging
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:
- Create tasks: "Would you like me to create tasks in
03-Tasks/Tasks.mdfor any open commitments?" - Update person pages: "Should I add these commitments to the relevant person pages?"
- Mark complete: "Any of these already done? Tell me which to mark complete."
- 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.mdwith source link - Generate proper
^task-YYYYMMDD-XXXblock 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
