| name | pact-core |
| description | Track promises and open loops from the terminal. Detects unreplied Slack DMs, pending GitHub PR reviews, assigned issues, and commitments extracted from text — all ranked by urgency. Use when asking about commitments, promises, overdue items, open loops, "what am I dropping", or "what needs attention". |
| triggers | ["commitment","promise","open loops","what am I dropping","what needs attention","unreplied","overdue","I'll do","by Friday","what did I promise","what's pending"] |
| tools | ["bash"] |
Pact — Never Drop the Ball
Two systems working together:
- Open loops engine — scans Slack and GitHub for things you're dropping (unreplied DMs, pending PR reviews, assigned issues)
- Commitment tracker — extracts promises from text via LLM, tracks deadlines, nudges
The main command: pact open
pact open
pact open --type slack.dm
pact open --source github
pact open --json
Shows everything — scanner results + overdue commitments — merged and sorted by urgency (0.0-1.0).
Scan platforms
pact scan
pact scan --slack
pact scan --github
Scanners cache results in SQLite. Stale loops auto-purge when no longer detected.
Quick-add (no LLM)
pact add "Ship the landing page" --deadline friday --to "Sarah"
pact remind "Check deployment logs" --in 3d
pact remind "Quarterly review prep" --on 2026-04-01
Extract commitments from text (LLM)
echo "I'll send the report by Friday and review the PR tomorrow" | pact extract
echo "Meeting notes..." | pact extract --source slack --channel general
echo "Preview first..." | pact extract --dry-run
Manage commitments
pact list
pact list --overdue
pact list --who "Moiz"
pact resolve 01HXK --note "Done"
pact resolve 01HXK --cancel
pact snooze 01HXK --days 3
pact edit 01HXK --what "Updated text" --deadline friday
Dismiss open loops
pact dismiss "github.issue:progrmoiz/yaara-website:97"
Analytics
pact stats
pact stats --who "Moiz"
pact digest --period week
pact digest --period day
Identity & diagnostics
pact whoami Moiz
pact identities list
pact identities merge 01AB 02CD
pact doctor
pact schema commitment
Follow-up & nudges
pact follow-up
pact follow-up --via slack-dm
pact follow-up --dry-run
MCP server
pact serve --mcp
7 tools: pact_list, pact_get, pact_resolve, pact_extract, pact_open, pact_dismiss, pact_add
Live monitoring
pact ingest --slack
Environment variables
| Variable | Purpose |
|---|
PACT_LLM_API_KEY | Anthropic API key (for extract) |
PACT_SLACK_USER_TOKEN | Slack user token (for scan/ingest) |
PACT_SLACK_BOT_TOKEN | Slack bot token (for follow-up DMs) |
PACT_GITHUB_TOKEN | GitHub PAT (for scan — needs repo + SSO auth for org repos) |
PACT_USER | Default identity (alternative to pact whoami) |
Notes
- All read commands support
--json for programmatic use
- Non-TTY output auto-switches to JSON (pipe-friendly)
- IDs are ULIDs — time-sortable, partial-match supported
- Data stored locally at
~/.pact/commitments.db (SQLite WAL mode)
- Open loop types use
{source}.{noun} convention: slack.dm, github.pr-review, commitment
- Urgency scoring: slack.dm ramps fastest (0.95 at 10h), github.pr-review slower (urgent at 24h+)