Initial skills documentation — 25 categories, all SKILL.md + references + scripts
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
# Email Signature — Sho'Nuff
|
||||
|
||||
## Current Signature (Jul 2026)
|
||||
|
||||
The signature is rendered from `/root/.hermes/references/shonuff-email-signature.html`.
|
||||
The Sho'Nuff quote is placed as a standalone line in the email body BEFORE the `<hr>` separator and signature block.
|
||||
|
||||
```
|
||||
━━━ red 40px accent bar (2px thick, rounded, #cc0000) ━━━
|
||||
|
||||
┌──────────────────────┐
|
||||
│ │
|
||||
│ Circular avatar │ Sho'Nuff Brown (weight 900)
|
||||
│ (base64 embedded) │ [Random title from shonuff-titles.py]
|
||||
│ │ IT Pro Partner
|
||||
│ │
|
||||
│ │ tel — —— —— —— ——
|
||||
│ │ @ shonuff@germainebrown.com
|
||||
└──────────────────────┘
|
||||
```
|
||||
|
||||
### Latest changes (Jul 6, 2026)
|
||||
- Separator: gradient line → **solid red 40px bar** (#cc0000, 2px, rounded corners)
|
||||
- Name color: #222222 → **#1a1a1a**, weight 700 → **900**
|
||||
- Phone label: "Tel:" → **"tel"** (lowercase, gray #bbbbbb)
|
||||
- Email label: "Email:" → **"@"** (minimal)
|
||||
- Phone placeholder: underscores → **dashed line** with letter-spacing
|
||||
- Email link: plain blue → **dotted underline** (#555555)
|
||||
- Image: S3 URL → **base64 data URI** (Wasabi doesn't allow public-read)
|
||||
- Layout: labels on same row as values (two-column table)
|
||||
- "Who's the Master?" tagline removed from signature block (quote is the email sign-off before the separator instead)
|
||||
- Font stack: added Inter first (modern sans-serif)
|
||||
- Vertical alignment: top → **middle** (aligned with image center)
|
||||
|
||||
## Two placeholders
|
||||
|
||||
- `%SHONUFF_IMAGE%` — base64 data URI of the character image
|
||||
- `%SHONUFF_TITLE%` — random title from `SHONUFF_TITLES` list (rotates per send)
|
||||
|
||||
## Rotating Titles
|
||||
|
||||
File: `/root/.hermes/references/shonuff-titles.py`
|
||||
|
||||
13 titles including "Germaine's AI Ops Engineer", "Germaine's Baddest AI Mofo Low Down Around This Town", "Germaine's Full-Time Menace", and more. Load via `importlib`, pick with `random.choice()`.
|
||||
|
||||
## Rotating Closing Quotes
|
||||
|
||||
File: `/root/.hermes/references/shonuff-closings.py`
|
||||
|
||||
8 quotes. Used as the email sign-off instead of "Thanks" or "Regards". Placed in the email body between the message and the `<hr>`.
|
||||
|
||||
## Send Script
|
||||
|
||||
File: `/root/.hermes/scripts/send-shonuff.py`
|
||||
|
||||
```bash
|
||||
python3 /root/.hermes/scripts/send-shonuff.py "<to>" "<subject>" "<body>"
|
||||
```
|
||||
|
||||
The script:
|
||||
1. Loads closings + titles from references files, picks random from each
|
||||
2. Loads base64 image, substitutes into HTML template
|
||||
3. Sends from **shonuff@germainebrown.com** via mail.germainebrown.com:2525
|
||||
4. BCCs g@germainebrown.com on every send
|
||||
5. Builds multipart/alternative: text/plain (fallback) + text/html (rich)
|
||||
|
||||
## Sending Rules
|
||||
|
||||
- All "send me this as an email" requests go from **shonuff@germainebrown.com**
|
||||
- BCC the user on every send
|
||||
- Do NOT access Germaine's inbox (g@germainebrown.com) unless asked
|
||||
- Sho'Nuff's incoming email is shonuff@germainebrown.com (IMAP monitored)
|
||||
- SMTP port 2525 everywhere — netcup blocks 25/465/587
|
||||
- Password for shonuff SMTP: in `~/.config/himalaya/shonuff.pass` and `.env`
|
||||
|
||||
## Image Hosting
|
||||
|
||||
The image is embedded as a base64 data URI (NOT external). Stored at `/root/.hermes/references/shonuff-image-b64.txt` (~78KB). Wasabi S3 does not allow public-read with this IAM user, so data URIs are the only reliable rendering method. Current image used: `/root/.hermes/cache/images/shonuff-v2-clean.png` (600x800, transparent PNG, signature removed).
|
||||
|
||||
## Inbox Monitoring
|
||||
|
||||
Sho'Nuff's inbox (shonuff@germainebrown.com) is monitored every 15 minutes via a two-stage cron job:
|
||||
1. **Collect script** (`scripts/shonuff-inbox-collect.py`) — checks for new UNSEEN messages from non-trusted senders via IMAP, extracts sender/subject/body preview, outputs JSON
|
||||
2. **LLM summary** — reads the collected JSON, summarizes each new message in 2-3 sentences, delivers to Germaine via Telegram
|
||||
|
||||
Trusted senders (silently skipped): `g@germainebrown.com`, `mailer-daemon@heracles.mxrouting.net`
|
||||
Reference in New Issue
Block a user