Claude-skill-registry commitment-extractor
Extract and track commitments from meeting notes - who promised what to whom, with deadlines and status tracking.
git clone https://github.com/majiayu000/claude-skill-registry
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"
skills/data/commitment-extractor/SKILL.mdCommitment 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
- Optional. Filter scope:$SCOPE
- All meetings (default)all
- Last 7 days onlyrecent
- Specific dateYYYY-MM-DD
- Commitments involving a specific personperson:Name
- Only show overdue/aging commitmentsoverdue
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:
: Process all filesall
: Filter to files modified in last 7 daysrecent
: Filter to files with date in filenameYYYY-MM-DD
: Will filter in extraction phaseperson:Name
: Process all, filter in status phaseoverdue
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...
(when directed at someone)Please...
Third-person assignments ("They will do X"):
,@[[Person]]...@Person:...
,[Name] will...[Name] to...Action for [Name]:...
Explicit action items:
(unchecked tasks)- [ ] ...
section contentsAction Items:
,Follow-up:
section contentsNext steps:- Lines containing
or^mt-
block IDs^task-
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
or@[[Person]]
= that person@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:
- Extracted today or commitment < 7 days oldnew
- Commitment > 7 days old, no completion evidenceaging
- Past explicit deadlineoverdue
- Task hascompleted
or referenced in completion notes[x]
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
for matching block IDs or similar task text03-Tasks/Tasks.md - 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 =
oroverdueaging
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
for any open commitments?"03-Tasks/Tasks.md - 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
(may contain implied commitments)## Decisions Made
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...
(without context)I could... - 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
with source link03-Tasks/Tasks.md - Generate proper
block ID^task-YYYYMMDD-XXX - 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