The Base 16

Everything else flows from these. Delete the other 79.

📧 Email (6 seeds, max depth 3)

1. gmail.api.ready · root
Confirm Gmail API access — OAuth2 creds, can list messages. Gate for everything email.
2. gmail.inbox.health · depth 1 · NEW
Diagnose the state of the inbox. Report: total messages, unread count, oldest unread age, top 5 senders by volume, how many threads are stale (no reply in 7+ days where user was last recipient), messages with attachments never opened, and whether labels/filters are being used or if everything's dumped in inbox. Produce a health score (0-100) with specific recommendations. This isn't "list my emails" — it's "what's wrong with my email habits?"
3. gmail.search.query · depth 1
Translate natural language into Gmail query operators (from:, after:, has:attachment, label:, etc.). Return matches with metadata. Suggest refinements on zero results. Encodes the non-obvious query syntax.
4. gmail.thread.summarize · depth 2 · child of search
Synthesize a found thread: who's involved, what's being discussed, decisions made, what's still open, latest ask/action item. Don't recap chronologically — identify turning points, commitments, and deadlines. The difference between "read me the thread" and "tell me what matters."
5. gmail.writing.analysis · depth 1 · NEW
Analyze the user's actual sent emails to learn their writing voice. Sample 15-20 recent sent messages across different recipients and contexts. Extract: average length, formality level, greeting/signoff patterns, use of emoji or exclamation marks, sentence structure tendencies, vocabulary preferences, how they handle requests vs updates vs replies. Produce a writing profile that can be used to draft emails that sound like the user, not like a bot. This gates drafting — you can't write as someone until you know how they write.
6. gmail.draft.compose · depth 2 · child of writing analysis
Draft an email using the user's writing profile. Match their tone, length, greeting style, and vocabulary patterns. Collect recipient, subject, body intent. Save as draft — never send. Confirm it exists in drafts. The draft should pass the "would the user have written this?" test.

📁 Workspace (4 seeds, max depth 1)

7. local.files.ready · root
Verify filesystem read/write by creating + deleting a temp file. Stop if permission denied.
8. document.file.selected · root
Get the user to point at a file, confirm it exists, report type/size/preview.
9. document.structure.map · depth 1 · child of file.selected · NEW
Analyze the selected document's internal structure. For text: heading hierarchy, section count, word count per section, reading level, key entities. For data files: schema, row count, column types, sample values. For code: language, function/class inventory, dependency imports, LOC. Produce a structural map that downstream seeds can use to operate on specific parts of the document without re-reading the whole thing.
10. local.project.scan · depth 1 · child of files.ready · NEW
Scan the current directory to understand what kind of project this is. Detect: language/framework (package.json → Node, Cargo.toml → Rust, etc.), git status, README presence, directory structure pattern, build system, test framework, and approximate project size. Produce a project fingerprint that downstream seeds can use without re-scanning. The non-obvious part: recognize monorepo patterns, distinguish between app/library/config repos, and flag anything unusual (no .gitignore, vendored dependencies, mixed languages).

👤 Person (2 seeds, max depth 1)

11. context.person.select · root
Establish a person as working context — name + email, confirmed.
12. person.web.profile · depth 1 · NEW
Build a lightweight profile of the selected person from publicly available web sources. Search for their name + email domain. Find: current role/company, LinkedIn summary if public, recent public posts or talks, any open source contributions, and notable context (recently changed jobs, published something, etc.). Don't hallucinate — if you can't find something, say so. Produce a 1-paragraph briefing and a structured data card. This is the "tell me about this person before I meet them" seed.

🖼️ Image (4 seeds, max depth 2)

13. image.user.portrait · root
Get a high-quality user photo. Verify ≥512×512, clear face, not blurry/cropped/group. Reject with specific feedback if unusable.
14. image.edit.model · root
Verify access to an image editing model (DALL-E, SD, etc.). Test with a minimal edit. Report model, resolution limits, constraints.
15. headshot.professional.edit · depth 1 · child of portrait
Transform portrait into professional headshot. Clean background (neutral gradient), even lighting, correct skin tone without removing character, head-and-shoulders framing at ~60% face coverage. Soften harsh shadows, replace cluttered backgrounds. Preserve actual appearance — no smoothing, no facial structure changes. Output edited image + before/after.
16. image.style.transfer · depth 1 · child of portrait · NEW
Apply a specified artistic style to the user's portrait while keeping the person clearly recognizable. Supported styles: oil painting, watercolor, pencil sketch, pop art, anime, pixel art, or a custom reference image. The critical constraint: the person's face must remain identifiable — style the rendering, not the identity. Test by comparing facial landmarks before and after. If the face distorts beyond recognition, dial back the style intensity and retry. Output the styled image with the style name and intensity level used.
The graph:

gmail.api.readygmail.inbox.health
gmail.api.readygmail.search.querygmail.thread.summarize
gmail.api.readygmail.writing.analysisgmail.draft.compose
local.files.readylocal.project.scan
document.file.selecteddocument.structure.map
context.person.selectperson.web.profile
image.user.portraitheadshot.professional.edit
image.user.portraitimage.style.transfer
image.edit.model

7 roots · 9 children · max depth 2 · 4 domains · every chain ends at something a user actually wants done