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.

Aller à l'installation

Informations de source

Dépôt
grahama1970/agent-skills
Dernière activité de la source
9 août 2026 à 15:03
Langue détectée de SKILL.md
anglais
Étoiles
5
Forks
2

Options d'installation

Le prompt qui vérifie d'abord la source est sélectionné par défaut. Vous pouvez passer à une commande directe ou télécharger une copie locale.

Vérifiez les fichiers source

Lisez SKILL.md et les fichiers associés affichés par SkillsMP avant de décider de l'installer.

Explorateur de fichiers
7 fichiers

Affichage de SKILL.md

SKILL.md
Instructions source · Aperçu en lecture seule
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
Voir sur GitHub