docs/ai-context/archive/cursor-skills/dpla-monthly-emails/SKILL.md
Generate/preview/draft/send the monthly pre-scheduling summary email to hub contacts scheduled for a month (from i3.conf schedule.months). Use when user asks to send the scheduling email, monthly scheduling email, notify hubs for a month, or pre-scheduling email.
npx skillsauth add dpla/ingestion3 dpla-monthly-emailsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate and send the monthly pre-scheduling email to DPLA hub contacts: one summary email listing all hubs scheduled for that month, the last calendar week date range, and asking for data readiness or skip requests.
Activate this skill when the user says:
At the beginning of each month, DPLA sends one summary email to all contacts of hubs scheduled for that month (from i3.conf). The email:
Source of truth: i3.conf. Hub inclusion is determined by <hub>.schedule.months (e.g. digitalnc.schedule.months = [2, 5, 8, 11]). Empty schedule.months = [] means the hub is never scheduled (on-hold). Contacts come from <hub>.email.
Environment: Run source .env from repo root when using config/paths. See AGENTS.md § Environment and build.
| Resource | Path |
|----------|------|
| Scheduling email script | scheduler/orchestrator/scheduling_emails.py |
| Draft output dir | scheduler/emails/ |
| i3.conf | $I3_CONF (e.g. ~/dpla/code/ingestion3-conf/i3.conf) |
--dry-run so the user sees:
--draft — write draft to scheduler/emails/scheduling-YYYY-MM.txt for manual review/send--send — send via AWS SES (CC [email protected], [email protected])Agent must always show the preview (date range + hubs list) before sending.
# Preview for current month (date range, hubs, body)
./venv/bin/python -m scheduler.orchestrator.scheduling_emails --dry-run
# Preview for a specific month (e.g. February = 2)
./venv/bin/python -m scheduler.orchestrator.scheduling_emails --month=2 --dry-run
# Write draft file (after user approves preview)
./venv/bin/python -m scheduler.orchestrator.scheduling_emails --month=2 --draft
# Send via SES (after user approves preview)
./venv/bin/python -m scheduler.orchestrator.scheduling_emails --month=2 --send
User: "Send scheduling email for February"
Agent Actions:
./venv/bin/python -m scheduler.orchestrator.scheduling_emails --month=2 --dry-runscheduler/emails/ or send the email now?"--send. If draft: run with --draftThe repo also has schedule.json-based tools for per-hub email drafts (different workflow):
scheduler/schedule.json — alternate schedule/contacts sourcescheduler/email-template.sh + scheduler/email-template.txt — generate one file per hub in scheduler/emails/The canonical monthly pre-scheduling process is the i3.conf-based summary email above. Use the schedule.json workflow only if the user explicitly asks for per-hub drafts or Confluence-derived data.
| Task | Command |
|------|---------|
| Preview (current month) | ./venv/bin/python -m scheduler.orchestrator.scheduling_emails --dry-run |
| Preview (February) | ./venv/bin/python -m scheduler.orchestrator.scheduling_emails --month=2 --dry-run |
| Write draft | ./venv/bin/python -m scheduler.orchestrator.scheduling_emails --month=2 --draft |
| Send via SES | ./venv/bin/python -m scheduler.orchestrator.scheduling_emails --month=2 --send |
Documented in scripts/SCRIPTS.md under "Scheduling emails (monthly pre-scheduling notification)".
data-ai
Show key i3.conf config for a hub (provider, harvest.type, harvest.endpoint, schedule, email, setlist). Use when user asks for hub config, harvest type/endpoint, who gets emails, schedule months, or OAI setlist details.
development
Run Community Webs ingest. Use when the user says harvest community-webs, run community-webs ingest, export community webs, or process community webs DB.
testing
Verify ingest outcomes and send failure or status notifications to Slack or [email protected]. Use when the user asks to verify the ingest, check if it succeeded, notify about a failure, or post to tech-alerts.
business
Report which hubs have new JSONL staged in S3 for a given month, and optionally post the report to Slack. Use when user asks what hubs are staged/ready for indexing, /ingest staged, or what changed this month in S3.