OPS on-demand: This skill should be used when the user asks to \"sync contacts\", \"people database\", or…
Scanned 9/3/2026
Install to Claude Code
npx -y skills add Lifecycle-Innovations-Limited/claude-ops --skill people --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of People?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/lifecycle-innovations-limited-people)More formats (shields.io, HTML) on the badges page.
---
name: people
description: "OPS on-demand: This skill should be used when the user asks to \"sync contacts\", \"people database\", or…"
argument-hint: ''
allowed-tools:
- Bash
- Read
- AskUserQuestion
---
# /ops:people
Load `ops-rules` before acting. Public repo (no personal data). Outbound: one draft → one approval → one send. If `AskUserQuestion` / `Workflow` are missing, follow Rule 10 in `ops-rules` (Hermes: numbered options / two-turn Telegram card; `delegate_task`).
Apple Contacts is source of truth. Notion "People" database is the working layer.
## Subcommands
| Subcommand | What it does |
| ------------------------ | ------------------------------------------------------------------------ |
| `sync` (default) | Pull Apple Contacts via `pc contacts fetch`, upsert to Notion People DB |
| `birthdays [--window 7]` | Who has a birthday/anniversary in the next N days |
| `overdue` | Who's past their relationship-strength cadence and needs reach-out |
| `whois <name>` | Pull single person's full profile + last interaction across all channels |
| `bump <name>` | Manually mark "I just talked to X" — resets last_contacted |
## Notion People schema (auto-created on first run)
| Property | Type | Source |
| --------------------- | ---------------------------------------------------- | ------------------------------------------------ |
| name | title | Apple Contacts |
| emails | multi-select | Apple Contacts |
| phones | multi-select | Apple Contacts |
| birthday | date | Apple Contacts (year may be missing) |
| relationship_strength | select: close, active, dormant, professional, family | Heuristic + manual |
| last_contacted | date | Computed from Gmail/Slack/iMessage/WhatsApp |
| last_topic | rich_text | Last 1-line subject from any channel |
| next_nudge_due | date | Computed: last_contacted + cadence_for(strength) |
| brand_context | multi-select: your brand/project codes | Inferred from email domains/threads |
| notes | rich_text | Manual |
## Cadences (configurable)
- `close` — 14 days (partner, parents, closest friends)
- `active` — 30 days (team, frequent collaborators)
- `professional` — 60 days (clients, partners)
- `dormant` — 180 days (warm but distant)
- `family` — birthday + anniversary + monthly check-in
## Sync logic
1. `pc contacts fetch --format json` — pull all Apple Contacts
2. For each contact: upsert into Notion People DB matched by email (primary) or phone
3. Walk last 30 days of Gmail/Slack/iMessage/WhatsApp threads to compute `last_contacted`
4. Compute `next_nudge_due = last_contacted + cadence_for(relationship_strength)`
5. Write a ledger entry: `kind=nudge`, `brand=OPS`, status=done
## Behavior
- First run will ask owner to confirm `relationship_strength` for top ~30 contacts
- Subsequent runs are silent unless something new is inferred
- Birthdays without years get treated as recurring annual; first detection asks owner to confirm before storing
## Related skills
- `relations` — the follow-up ledger and decision queue built on this directory
- `vip` — priority tiers; a `relationship_strength` of close/family is a VIP
candidate signal, but a tier is only ever set through the `vip` skill's
audited CLI path
- `ops-inbox` — consumes both when ranking a sweep
## Ledger writes
```bash
~/.claude-ops/bin/ledger claim --claim-key "people:sync:$(date +%F)" --kind nudge \
--brand OPS --title "Apple Contacts → Notion sync" --source claude-ops
# ... sync ...
~/.claude-ops/bin/ledger resolve <id> --status done
```
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!