Agent skill
commitment-scan
Scan ScreenPipe data for uncommitted asks and promises, match to projects/people, and offer to create tasks.
Install this agent skill to your Project
npx add-skill https://github.com/davekilleen/Dex/tree/main/.claude/skills/commitment-scan
SKILL.md
/commitment-scan
Proactively detect commitments you've made or been asked for across apps like Slack, Email, and Notion, then offer to create tasks for any that haven't been captured yet.
Purpose
Things fall through the cracks. You say "I'll send that over" in Slack. Someone asks "Can you review this?" in an email. These micro-commitments don't automatically become tasks in your system. This skill surfaces them before they become forgotten follow-ups.
Prerequisites
- ScreenPipe beta activated - Check with
check_beta_enabled(feature="screenpipe") - ScreenPipe opted-in - Check
System/user-profile.yaml→screenpipe.enabled: true - ScreenPipe running - Check with
screenpipe_status - Commitment Detection MCP -
commitment-detectionserver
Step 0: Check Beta & Opt-In Status
0.1 Beta Check
Use: check_beta_enabled(feature="screenpipe")
If beta not activated:
⚠️ **ScreenPipe is a beta feature**
Commitment detection is currently in beta testing.
**To join the beta:**
Run `/beta-activate DEXSCREENPIPE2026`
This will unlock:
- `/commitment-scan` - Detect uncommitted asks/promises
- Commitment check during daily review
- Time audit and screen recall features
0.2 Opt-In Check
Read System/user-profile.yaml → screenpipe.enabled.
If not enabled:
⚠️ **ScreenPipe not enabled**
Commitment detection requires ScreenPipe to be enabled.
ScreenPipe captures your screen activity locally to detect commitments
like "I'll send that over" or "Can you review this?" from apps like
Slack and Email.
**Privacy:**
- All data stays on your machine
- Browsers, banking, social media blocked by default
- Auto-deletes after 30 days
**To enable:** Run `/screenpipe-setup`
If beta activated AND enabled: Continue to Step 1.
Execution Flow
Step 1: Check ScreenPipe Status
Use: screenpipe_status
If not running:
⚠️ **ScreenPipe isn't running**
Commitment detection requires ScreenPipe to scan your screen activity.
**To start:** Run `screenpipe` in terminal
After starting, run `/commitment-scan` again.
Step 2: Determine Scan Range
Options:
/commitment-scan→ Scan today/commitment-scan yesterday→ Scan yesterday/commitment-scan week→ Scan this week
Calculate time range:
if "week" in args:
# Monday of this week to now
start = monday_of_week()
end = now()
elif "yesterday" in args:
start = yesterday_midnight()
end = yesterday_end()
else:
# Today
start = today_midnight()
end = now()
Step 3: Scan for Commitments
Use: scan_for_commitments(
start_time="YYYY-MM-DDTHH:MM:SS",
end_time="YYYY-MM-DDTHH:MM:SS",
apps=["Slack", "Gmail", "Teams", "Notion"]
)
Step 4: Get Uncommitted Items
Use: get_uncommitted_items(include_dismissed=false)
Step 5: Present to User
If no commitments detected:
✅ **No uncommitted items found**
Either you've been task-capturing well, or it was a quiet period!
*Scanned: [start] to [end]*
*Apps: Slack, Gmail, Teams, Notion*
If commitments detected:
## 🔔 Uncommitted Items Detected
ScreenPipe noticed these potential commitments that don't have matching tasks:
### Inbound Asks (things people asked of you)
**1. [Person Name]** ([App], [Time])
> "[Raw text excerpt]"
📎 **Matches:** [Project name] | [Person page]
⏰ **Deadline detected:** [Date] ([type])
**Actions:**
- `create` → Create task from this
- `handled` → Already done, dismiss
- `ignore` → Not a real commitment
---
### Outbound Promises (things you committed to)
**2. You → [Person Name]** ([App], [Time])
> "[Raw text excerpt]"
📎 **Matches:** [Project name]
⏰ **Deadline detected:** [Date]
**Actions:**
- `create` → Create task for this
- `handled` → Already done, dismiss
- `ignore` → Not a real commitment
---
**Summary:**
- Inbound asks: [X]
- Outbound promises: [Y]
- Already have tasks: [Z]
*Reply with actions like: "1 create, 2 handled, 3 ignore"*
Step 6: Process User Actions
For each action:
"create" action:
Use: process_commitment(
commitment_id="comm-XXXXXX-XXX",
action="create_task"
)
Then create the actual task:
Use: create_task(
title="[Generated from commitment]",
priority="P2",
pillar="[From matched project]",
context="From [App] commitment: [excerpt]",
related_person="[Person name]",
due_date="[If deadline detected]"
)
"handled" action:
Use: process_commitment(
commitment_id="comm-XXXXXX-XXX",
action="already_handled"
)
"ignore" action:
Use: process_commitment(
commitment_id="comm-XXXXXX-XXX",
action="dismiss"
)
Step 7: Confirm
✅ **Processed [N] commitments:**
- Created [X] tasks
- Marked [Y] as already handled
- Dismissed [Z]
Your commitment queue is clear! 🎯
Integration with Reviews
This skill is automatically called during:
Daily Review (Step 4.5)
During /daily-review, after gathering context:
---
## 🔔 Uncommitted Items Check
[Run commitment scan for today]
[Present any detected items]
[Process user choices]
---
Weekly Review
During /week-review, show aggregate stats:
---
## 📊 Commitment Health This Week
[Show stats from get_commitment_stats()]
---
Configuration
In System/user-profile.yaml:
commitment_detection:
enabled: true
scan_during_review: true
apps:
- Slack
- Gmail
- Teams
- Notion
- Linear
exclude_apps:
- 1Password
- Safari Private
Privacy Notes
- All scanning happens locally via ScreenPipe
- No data leaves your machine
- Sensitive apps (password managers, banking) are excluded by default
- You control every action - nothing is auto-created
- Dismissed items can be configured to resurface or stay hidden
Examples
Example 1: Quick Daily Scan
User: /commitment-scan
Response:
## 🔔 Uncommitted Items Detected
### Inbound Asks
**1. Sarah Chen** (Slack, 2:34 PM)
> "Hey, can you review the pricing page copy by tomorrow?"
📎 **Matches:** Q1 Pricing Project
⏰ **Deadline:** Tomorrow
**2. Mike Johnson** (Gmail, 11:15 AM)
> "Need your sign-off on the vendor contract"
📎 **Matches:** Mike Johnson (person page)
⏰ **Deadline:** None detected
### Outbound Promises
**3. You → Product Team** (Slack, 4:20 PM)
> "I'll write up the competitive analysis this week"
📎 **Matches:** Market Research project
⏰ **Deadline:** This week
---
*Reply with actions: "1 create, 2 handled, 3 create"*
Example 2: Clean Scan
User: /commitment-scan
Response:
✅ **No uncommitted items found**
Either you've been capturing tasks well, or it was a quiet day!
*Scanned today (9:00 AM - 5:45 PM)*
*Apps: Slack, Gmail, Teams, Notion*
Troubleshooting
"ScreenPipe not connected"
- Ensure ScreenPipe is running:
pgrep screenpipe - Check API:
curl http://localhost:3030/health - Start if needed:
screenpipein terminal
False positives
If detecting too many non-commitments:
- Use "ignore" to train the system
- Check excluded apps list in config
- Patterns are refined over time based on dismissals
Missing commitments
If real commitments aren't detected:
- Ensure the app is in the scan list
- Check ScreenPipe is capturing that app's content
- The detection patterns may need expansion (file an issue)
Related
/daily-review- Integrates commitment check/week-review- Shows commitment health stats- ScreenPipe Setup Guide -
06-Resources/Dex_System/ScreenPipe_Setup.md
Track Usage (Silent)
Update System/usage_log.md to mark commitment scan as used.
Analytics (Silent):
Call track_event with event_name commitment_scan_completed and properties:
commitments_foundtasks_created
This only fires if the user has opted into analytics. No action needed if it returns "analytics_disabled".
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
getting-started
Interactive post-onboarding tour with adaptive pathways based on available data
industry-truths
Define time-horizoned assumptions about your industry/domain that ground strategic thinking and prevent building on quicksand
process-meetings
Process synced Granola meetings to update person pages, extract tasks, and organize meeting notes
pi-tools
View and manage Pi-built extensions synced to Dex. Shows available tools, commands, and sync status.
pi
Route tasks to Pi for comparison testing. Toggle Pi mode or run specific commands through Pi.
commitment-extractor
Extract and track commitments from meeting notes - who promised what to whom, with deadlines and status tracking.
Didn't find tool you were looking for?