{"skill":{"slug":"yahoomail-export","displayName":"Yahoo Mail IMAP Export","summary":"Export large Yahoo Mail archives with the folder-rotation IMAP workflow, resumable downloads, and safe delete-after-verify handling.","description":"---\nname: yahoomail-export\ndescription: Export large Yahoo Mail archives with the folder-rotation IMAP workflow, resumable downloads, and safe delete-after-verify handling.\nmetadata:\n  short-description: Export large Yahoo Mail archives safely\n---\n\n# Yahoo Mail Export\n\nUse this skill when working on large Yahoo Mail IMAP exports, especially when the mailbox is bigger than Yahoo's practical folder limits or the connection keeps dropping mid-run.\n\n## Use This Skill For\n\n- Draining Yahoo `INBOX` in bounded batches\n- Downloading export folders to local `.eml` files\n- Deleting only messages that have been verified locally\n- Resuming after Yahoo IMAP disconnects, `SERVERBUG`s, or broken pipes\n- Turning an existing export workflow into a repeatable, documented process\n\n## Workflow\n\n1. Check whether `INBOX` is already empty.\n2. Pick the first export folder with room.\n3. Move a bounded batch out of `INBOX`.\n4. Download that export folder locally.\n5. Delete only messages that were successfully written to disk.\n6. Save state so the next run can resume cleanly.\n\n## Practical Yahoo Limits Observed\n\nThese are operational observations from the completed migration, not official Yahoo documentation:\n\n- `10,000` messages is the practical folder ceiling for normal IMAP selection.\n- `8,999` messages is a safe move batch for the rotation step.\n- `1,000`-message delete chunks worked reliably.\n- `0.1s` between fetches was enough to keep the connection usable.\n- Periodic reconnects were necessary during long fetch runs.\n- Yahoo would sometimes drop the socket with:\n  - `IMAP4rev1 Server logging out`\n  - `Broken pipe`\n  - `SERVERBUG`\n\n## Preferred Implementation Pattern\n\nUse a script that:\n\n- writes `.eml` before metadata\n- keeps per-folder progress\n- reconnects after a fixed number of fetches\n- deletes by UID, not by unstable sequence assumptions\n- writes a state file and a lock file\n- treats `INBOX empty` as a terminal success condition\n\n## Core Files\n\n- `export-scripts/purge_cycle.py` - main safe rotation cycle\n- `export-scripts/move_to_exports.py` - move-only helper for testing\n- `triage-pipeline/build_embeddings.py` - embedding generation\n- `triage-pipeline/pre_filter.py` - rule-based filtering\n- `triage-pipeline/triage_emails.py` - LLM triage\n- `triage-pipeline/summary_report.py` - summary generation\n\n## Important Guardrails\n\n- Do not delete from Yahoo until the local `.eml` is written.\n- Do not assume a stalled log means failure once `INBOX` is empty.\n- Do not keep the watchdog running forever after completion; it will happily rediscover “stalls” in a finished job.\n- Keep export folders under the practical limit so Yahoo does not become philosophical about your session.\n\n## If You Need to Reuse This Skill\n\nFor a new mailbox migration, adapt the constants in the scripts first:\n\n- account credentials\n- base directory\n- move batch size\n- delete chunk size\n- reconnect delay\n- cooldown intervals\n\nThen test on a tiny folder before touching the real inbox.\n\n","tags":{"latest":"1.0.2"},"stats":{"comments":0,"downloads":428,"installsAllTime":16,"installsCurrent":0,"stars":0,"versions":3},"createdAt":1777841488647,"updatedAt":1779076287799},"latestVersion":{"version":"1.0.2","createdAt":1778344638984,"changelog":"yahoomail-export v1.0.2\n\n- Added LICENSE, YAHOO_EXPORT_GUIDE.md, and _meta.json to clarify legal usage and provide guidance.\n- Expanded and improved SKILL.md documentation with updated workflow details, operational guardrails, and usage tips.\n- Removed obsolete package.json.\n- Focused update: strengthens safety recommendations and repeatability for large-scale Yahoo Mail exports.","license":"MIT-0"},"metadata":null,"owner":{"handle":"jimdawdy-hub","userId":"s17f7hhxdbhsq3a0xe0v3pmdjx86130f","displayName":"James Dawdy","image":"https://avatars.githubusercontent.com/u/262052366?v=4"},"moderation":{"isSuspicious":false,"isMalwareBlocked":false,"verdict":"clean","reasonCodes":["review.llm_review"],"summary":"Review: review.llm_review","engineVersion":"v2.4.24","updatedAt":1780090774395}}