Skip to main content

monitor-contacts

Always-on contact freshness monitoring service. Periodically re-researches stale contacts via /dogpile, detects job changes and company news, and alerts via Discord when significant changes are found.

الانتقال إلى التثبيت

معلومات المصدر

المستودع
grahama1970/agent-skills
آخر نشاط في المصدر
٩ أغسطس ٢٠٢٦ في ١٥:٠٣
لغة SKILL.md المكتشفة
الإنجليزية
النجوم
٥
التفرعات
٢

خيارات التثبيت

يُحدَّد Prompt الذي يراجع المصدر أولًا بشكل افتراضي. يمكنك التبديل إلى أمر مباشر أو تنزيل نسخة محلية.

مراجعة ملفات المصدر

اقرأ SKILL.md وأي ملفات مرافقة يعرضها SkillsMP قبل أن تقرر التثبيت.

مستكشف الملفات
7 ملفات

عرض SKILL.md

SKILL.md
تعليمات المصدر · معاينة للقراءة فقط
name
monitor-contacts
description
Always-on contact freshness monitoring service. Periodically re-researches stale contacts via /dogpile, detects job changes and company news, and alerts via Discord when significant changes are found.
allowed-tools
["Bash","Read","Write","Task"]
triggers
["monitor contacts","contact monitoring","watch contacts","track contacts","contact freshness","are my contacts current","stale contacts","contact changes"]
metadata
{"short-description":"Always-on contact freshness monitoring with change detection","author":"Graham","version":"0.1.0"}
provides
["monitor-contacts"]
composes
["task-monitor","agentic-evals"]
disciplines
["observability-operations","research-retrieval"]
domains
["marketing"]
# monitor-contacts Always-on contact freshness monitoring service. Runs on a schedule (via `/scheduler`) to keep contact profiles current, detect significant changes (job moves, company news, acquisitions), and alert via Discord. ## Why This Exists Contact enrichment is a point-in-time snapshot. People change jobs. Companies get acquired. Programs end. This service ensures your contact intelligence stays fresh without manual re-research. ## Continuous Operation (Non-Negotiable) This skill is **always-on**. It: - Runs on its configured schedule indefinitely — it NEVER stops unless explicitly halted by the user - The agent MUST NOT stop and wait for the human to ask for status or remember to check - If a cycle fails, diagnose the failure, attempt auto-repair, and continue - Only escalate to the human if genuinely blocked after exhausting /dogpile research - Gracefully handles restarts and maintains state across cycles - Is designed for multi-day/week/month autonomous operation **Anti-pattern**: Reporting status and waiting for the human to ask "what next?" is UNACCEPTABLE. The agent must proactively fix issues and continue the monitoring loop. ## Architecture ``` ┌──────────────────────────────────────────────────────┐ │ monitor-contacts │ │ - Scheduled via /scheduler (nightly or weekly) │ │ - Staleness-based priority queue │ │ - Change detection engine │ │ - Discord alerting │ └──────────────────────────────────────────────────────┘ │ │ │ ┌────┴─────┐ ┌────┴─────┐ ┌────┴──────┐ │ Staleness │ │ Change │ │ Alert │ │ Scanner │ │ Detector │ │ Engine │ ├──────────┤ ├──────────┤ ├───────────┤ │ Age check │ │ Diff old │ │ Discord │ │ Priority │ │ vs new │ │ webhook │ │ queue │ │ profile │ │ Summary │ └──────────┘ └──────────┘ └───────────┘ ``` ## Commands ```bash # Start monitoring (foreground) ./run.sh monitor # Start as background service ./run.sh start # Stop background service ./run.sh stop # Check service status ./run.sh status # Run one monitoring cycle manually ./run.sh cycle # Show contact freshness report ./run.sh report # Show recent changes ./run.sh changes --since 7d # Configure monitoring ./run.sh config --interval weekly --budget 10 --alert-channel contacts ``` ## Monitoring Cycle Each cycle: ``` 1. SCAN — Find contacts with staleness > threshold ├── Default threshold: 30 days ├── High-priority contacts: 14 days └── Low-priority contacts: 90 days 2. PRIORITIZE — Sort by staleness + importance ├── Contacts with upcoming meetings/events → top ├── Contacts in active deals/programs → high └── Cold contacts → low 3. RESEARCH — Re-enrich top N stale contacts ├── Uses /discover-contacts research pipeline ├── Budget-limited (default: 10 contacts per cycle) └── Rate-limited to avoid API exhaustion 4. DIFF — Compare new profile vs stored profile ├── Job title changed? ├── Company changed? ├── New publications? ├── Company news (funding, acquisition)? └── Email likely stale? 5. ALERT — Notify on significant changes ├── Discord embed with change summary ├── Color-coded: green (positive), yellow (neutral), red (attention) └── Weekly digest option ``` ## Change Detection The change detector tracks these signals: | Signal | Severity | Example | |--------|----------|---------| | **Job change** | High | "John Rushby moved from SRI to DARPA" | | **Company acquisition** | High | "Galois acquired by [company]" | | **New DARPA program** | Medium | "Contact's company awarded new DARPA contract" | | **New publication** | Low | "3 new papers on ArXiv" | | **Email bounce** | Medium | "Email domain changed" | | **Company funding** | Medium | "Series B announced" | | **Company layoffs** | High | "Major restructuring reported" | | **Conference appearance** | Low | "Speaking at [event]" | ## Discord Alerts ### Individual Change Alert ``` Contact Change Detected ━━━━━━━━━━━━━━━━━━━━━━ John Rushby Was: Senior Computer Scientist @ SRI International Now: Program Manager @ DARPA I2O Change Type: Job Change (High Priority) Detected: 2026-02-12 Source: LinkedIn via Brave Search Action: Update contact record and reach out? ``` ### Weekly Digest ``` Contact Monitor — Weekly Digest ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ Contacts Checked: 15/60 Changes Found: 3 Job Changes (1): • John Rushby: SRI → DARPA Company News (1): • Galois, Inc.: Awarded DARPA PROOFS Phase 2 New Publications (1): • Natasha Neogi: 2 new papers on ArXiv Stale Contacts (5): • 5 contacts not refreshed in 60+ days Next cycle: 2026-02-19 Budget used: 8/10 /dogpile calls ``` ## Priority Tiers Contacts can be tagged with priority tiers: ```yaml priority_tiers: critical: # Check every 14 days - contacts with active deals - contacts in current programs standard: # Check every 30 days (default) - general professional network cold: # Check every 90 days - historical contacts - inactive relationships ``` ## Schedule Configuration ```yaml # monitor-contacts config schedule: interval: weekly # daily, weekly, biweekly, monthly day: sunday # for weekly time: "02:00" # off-peak budget_per_cycle: 10 # max /dogpile calls concurrency: 2 # parallel research alerts: discord_channel: contacts # channel name webhook_url: ${DISCORD_CONTACTS_WEBHOOK} digest: weekly # individual, weekly, both thresholds: critical_staleness: 14 # days standard_staleness: 30 # days cold_staleness: 90 # days ``` ## Memory + Taxonomy Integration The skill integrates with the shared memory and taxonomy systems via `memory_integration.py` for longitudinal contact freshness tracking: - **Pre-hook (`recall_contact_changes`)**: Before checking a contact, recalls prior change history to surface patterns (e.g., frequent job moves, company instability). - **Post-hook (`learn_contact_change`)**: After detecting a change, stores the change event (person, type, old/new values, severity) to memory for trend tracking. - **Bridge keywords**: Precision, Resilience, Fragility, Corruption, Loyalty, Stealth (tuned to contact monitoring domain). - **Tags**: `["monitor_contacts", person_name, "drift_tracking"] + bridges` Gracefully degrades if `common.memory_client` or `taxonomy/taxonomy.py` are unavailable. ## File Structure ``` monitor-contacts/ SKILL.md # This file run.sh # Shell entry point sanity.sh # Sanity checks config.py # Paths, constants, skill references memory_integration.py # Memory + Taxonomy hooks ``` ## Storage ``` /mnt/storage12tb/media/personas/references/ ├── darpa_arcos_contacts.csv # Source contacts ├── darpa_arcos_enriched.yaml # Current enriched profiles ├── company_profiles/ # Company intelligence ├── change_log/ # Historical changes │ ├── 2026-02/ │ │ ├── 2026-02-12_changes.json │ │ └── 2026-02-19_changes.json │ └── ... ├── enrichment_log.json # Audit trail └── monitor_config.yaml # Service configuration ``` ## Integration with /scheduler ```bash # Register with scheduler for weekly runs /scheduler add monitor-contacts --cron "0 2 * * 0" --budget 10 # Or via run.sh ./run.sh start --schedule weekly ``` ## Leveraged Skills | Skill | Purpose | |-------|---------| | `/discover-contacts` | Contact research pipeline | | `/dogpile` | Multi-source deep research | | `/memory` | Store/recall enriched profiles | | `/ops-discord` | Discord webhook alerts | | `/scheduler` | Scheduled execution | | `/task-monitor` | Progress tracking | | `/ops-sam-gov` | Government contract monitoring | | `/ops-darpa` | DARPA program tracking | ## Task-Monitor Integration The monitoring service registers with `/task-monitor`: ```json { "task_id": "monitor-contacts-cycle", "description": "Contact freshness monitoring cycle", "completed": 8, "total": 15, "stats": { "contacts_checked": 8, "changes_found": 2, "dogpile_calls": 6, "budget_remaining": 4 } } ``` ## Privacy & Ethics - All research uses publicly available information only - No automated outreach or email sending - Change detection is passive (no login scraping) - Data stored locally on 12TB drive only - Audit trail tracks all research activity - Respect rate limits on all sources
عرض على GitHub