#+TITLE: Workflow Index #+AUTHOR: Craig Jennings & Claude #+DATE: 2026-04-25 * Purpose Single-source catalog of every workflow in this directory, with the trigger phrases that should invoke it. Read this file before =ls=-ing the workflows directory — it tells you which file handles which phrase, so you don't have to read each workflow's "When to Use" section to route correctly. * Drift Check This index must list every =.org= file in =.ai/workflows/= except this one and except files with a second dot-segment after an indexed workflow name — =.*.org=. Two kinds live in that namespace and neither is indexed: *source plugins* (an adapter belonging to an engine, e.g. =triage-intake.personal-gmail.org=) and *supporting documents* (extracted reference content for a workflow, e.g. =meeting-prep.pre-wire.org=). Both belong to their owning workflow, are not independently triggerable, and get no entry of their own. Startup verifies the index matches the directory and flags drift (missing entries or stale entries pointing at deleted files), treating these dotted files as owned by their workflow rather than as orphans. * Catalog ** Session lifecycle - =startup.org= — runs automatically at session start. No manual trigger. - =first-session.org= — initialize =.ai/= for a brand-new project. - Triggers: "this is a new project", "let's set this project up". Auto-runs if =.ai/sessions/= is empty. - =wrap-it-up.org= — end-of-session: write summary, archive, commit, push. - Triggers: "wrap it up", "that's a wrap", "let's call it a wrap" - =retrospective.org= — post-mortem after a tough session. - Triggers: "let's do a retrospective", "retrospective time" ** Tasks and planning - =open-tasks.org= — list all open tasks (list mode) or pick the next task (next mode). - Triggers: "what's next", "what should I work on", "list open tasks", "show me all tasks", "what's on my plate", "show me my tasks", "I need a recommendation" - =task-review.org= — daily list-hygiene habit: walk the oldest-unreviewed top-level tasks, re-grade / kill / keep / mark DOING, and stamp =:LAST_REVIEWED:=. Distinct from =open-tasks.org=, which only displays. - Triggers: "task review", "review tasks", "let's do a task review", "groom my tasks", "task-review" - =task-audit.org= — content reconciliation: take the open tasks and check their recorded facts against reality (sessions, email, chat, ticketing, calendar, meeting recordings), update the stale facts, consolidate duplicates, and flag the judgment calls only the user can answer. Deeper than =task-review.org= (relevance/keep-kill/priority); this one keeps the surviving tasks factually honest. - Triggers: "task audit", "audit my tasks", "audit the open tasks", "are my tasks still accurate", "reconcile my tasks", "update the stale tasks" - =daily-prep.org= — builds and maintains the daily prep doc (strict three-section template: Heads-Up / Day's Priorities / Meetings / Focus Blocks). Two run modes: Create (build a future day's prep, ends with a mandatory priorities review gate) or Update (refresh an existing day's prep when the world moved). A standup-brief refresh is an Update-mode run scoped to the standup's entry. - Create triggers: "let's prep for tomorrow", "daily prep" - Update triggers: "update today's prep", "refresh the daily prep", "what's my standup report", "give me the standup brief" - =meeting-prep.org= — deep prep doc for one specific upcoming meeting that warrants more than a glance: decode the invite (who/why/timing/objective), gather grounded context, draft the eight-section prep, pre-wire and schedule the prep block, review with Craig, wire into the day's daily-prep, and close the loop post-meeting by extracting action items into =todo.org=. The per-meeting companion to =daily-prep.org='s whole-day brief. - Triggers: "let's prep for the meeting", "prep me for the call with ", "build a prep doc for ", "let's run the meeting-prep workflow", "meeting prep", "let's prep the call" - Supporting doc: =meeting-prep.pre-wire.org= (the full Manager Tools pre-wire method, used by Phase 3.5). Not independently triggerable. - =triage-intake.org= — on-demand triage *engine*: a source-agnostic sweep that loads source plugins, classifies what's new since last check (Action / FYI / Noise-keep / Noise-trash), produces one synthesized summary, and offers to run the routine actions. Carries no sources of its own — every source comes from a =triage-intake..org= plugin globbed from both =.ai/workflows/= (general) and =.ai/project-workflows/= (project-specific). Lighter scope than =daily-prep.org='s triage section. - Triggers: "do a triage intake", "triage intake", "what's new?", "what's new since I last checked", "do a sweep", "check email, calendar, and PRs" - Source adapters: =triage-intake.*.org= (=personal-gmail=, =personal-calendar=, =cmail=, =github-prs= ship general; projects add their own). Not independently triggerable — the engine loads them; "run the triage-intake workflow" always routes to the engine, never a plugin. - =journal-entry.org= — capture a daily journal entry. - Triggers: "let's do a journal entry", "create a journal entry" - =clean-todo.org= — tidy =todo.org=: hygiene pass + =--archive-done=, then summarize. Wrap-up does this automatically; this is the manual entry point. - Triggers: "clean up todo.org", "clean-todo", "tidy the todo file", "archive the done items in todo.org", "run the todo cleanup" - =process-inbox.org= — evaluate each inbox item against a three-question value gate (advances an existing TODO / improves the project / serves the mission), then implement, fold, file, defer, or reject per source (Craig / project handoff / script). Auto-invoked by startup when inbox is non-empty. Source-aware rejection flow: handoff rejections write a response back via =inbox-send= naming the failed gate question and any reconsideration condition. - Triggers: "process inbox", "process the inbox", "handle the inbox", "what's in inbox", "what's in the inbox", "let's clear the inbox", "let's process the inbox items" - =monitor-inbox.org= — the cadence + act-vs-file + reply layer over process-inbox: check =inbox-status= at every task boundary, decide act-now (just do it) vs file (ask, file = option 1), and confirm back to handoff senders. Includes the opt-in background-monitor =/loop= recipe. - Triggers: "monitor the inbox", "watch the inbox", "respond to the handoffs", "handle the handoffs" - =inbox-zero.org= — route the *global roam inbox* (=~/org/roam/inbox.org=) to owning projects by =:= heading prefix. Distinct from =process-inbox.org= (the project's own =inbox/= dir). The current session claims only its own prefixed items, files them into =todo.org=, removes them from the shared inbox, and leaves foreign/unowned items. Every scan reports the total item count plus how many appear related to this project. v1 is single-destination (prefix-claim only); domain-aware whole-inbox routing is deferred. Called read-only from startup (count + offer) and as a wrap-up Step 3 sub-step. - Triggers: "inbox zero", "empty the inbox", "process the roam inbox", "triage my roam inbox" ** Calendar - =add-calendar-event.org= — create a calendar event. - Triggers: "create an event", "add appointment", "schedule a meeting", "add to my calendar", "calendar event for..." - =read-calendar-events.org= — read / summarize calendar. - Triggers: "what's on my calendar", "show me appointments", "summarize my schedule", "what do I have today", "calendar for this week", "any meetings tomorrow" - =edit-calendar-event.org= — modify an existing event. - Triggers: "edit the meeting", "change my appointment", "reschedule", "update the event", "move my appointment" - =delete-calendar-event.org= — cancel / remove an event. - Triggers: "delete the meeting", "cancel my appointment", "remove the event", "clear my calendar for..." ** Email - =sync-email.org= — pull and index new mail. - Triggers: "sync email", "sync mail", "pull new mail", "check for new email" - =find-email.org= — search local maildir for emails. - Triggers: "find email about [topic]", "search for emails from [person]", "do I have an email about [subject]?", "look for [shipping/receipt/confirmation] email" - =summarize-emails.org= — filter noise, summarize what matters. - Triggers: "summarize my emails", "what emails do I have", "anything important in my inbox", "email summary", "any unread emails", "any starred emails", "emails from [person]", "emails also sent to [person]" - =extract-email.org= — extract content / attachments from an inbox EML. - Triggers: "extract the email", "get the attachment from [email]", "pull the info from [email]", "process the email in inbox" - =send-email.org= — compose and send an email. - Triggers: "send an email", "email workflow", "email [person] about [topic]", "send [file] to [person]" - =email-assembly.org= — gather documents into an email package. - Triggers: "assemble an email", "email assembly workflow", "gather documents for an email", "I need to send [person] some documents" ** Specs and design - =spec-create.org= — author a design/feature spec before non-trivial work (more than ~6 hours, or real trade-offs): a when-to-spec gate, then problem-first framing, design + alternatives + inline mini-ADR decisions, implementation phases + acceptance criteria + a readiness-dimensions menu, a terseness pass, and a hand-off self-check against the review rubric. The *author* side that starts the trio; its output feeds =spec-review.org=. - Triggers: "let's write a spec", "spec this out", "create a spec for X", "spec-create workflow" - =spec-review.org= — review a design/feature spec for implementation-readiness: run the readiness gate, read the code first, evaluate across dimensions, assign a rubric (Ready / Ready-with-caveats / Not-ready / Needs-research), and write a =-review.org= file when not ready. The *reviewer* side; its output feeds =spec-response.org=. - Triggers: "review the spec", "is this spec implementation-ready?", "spec-review workflow", "review the design" - =spec-response.org= — fold an external spec review back in: decide accept / modify / reject for every recommendation, weave accepts into the spec body, document modifies and rejects in a "Review dispositions" section, reconcile cross-spec tensions, iterate to implementation-ready. The *author* side; consumes the =-review.org= file =spec-review.org= produces. - Triggers: "respond to the review", "process the spec reviews", "spec-response workflow", "fold in the review" ** Tools and meta - =process-meeting-transcript.org= — record → transcript → labeled archive. - Triggers: "process the transcript", "process the recording". Auto: new files in =~/sync/recordings/=. - =broadcast.org= — fan out a single message to every AI project's inbox via the discovery helper =broadcast.py= + the existing =inbox-send.py=. Two modes: *announcement* (a tooling / capability / rule change every agent should know) and *situational* (a life or work event — travel, a visitor, quitting a job — said once so every project's agent holds the context and applies it on its own judgment). Use sparingly; not for project-specific handoffs. - Announcement triggers: "broadcast this to every project", "notify every project about X", "fan out this announcement", "let every project know X is available" - Situational triggers: "broadcast the to all projects", "broadcast that ", "let every project know I'll be away ..." - =flashcard-review.org= — review an org-drill flashcard file, restructure cards to question-form headings (no answer hints), audit content accuracy against project source-of-truth via subagent, rewrite source preserving SRS state, regenerate the Anki =.apkg= to =~/sync/phone/anki/=. Person cards use "Who is X? Tell me about their Y."; talking-points cards stay as-is. Script behavior: =flashcard-to-anki.py= strips =:PROPERTIES:= drawers + =SCHEDULED:= / =DEADLINE:= planning lines from Anki output. - Triggers: "review the flashcards", "update the flashcards", "review the drill deck", "update the drill deck", "refresh the Anki cards", "let's run the flashcard-review workflow" - =page-me.org= — set a timed notification. - Triggers: anything containing the word "page" used as a verb ("page me", "page me in 10 minutes", "page me at 3pm") - =status-check.org= — proactive long-running-job updates. - Triggers: "keep me posted on this", "provide status checks on this job", "let me know when it's done", "monitor this for me". Auto: any job estimated 10+ min. - =create-workflow.org= — define a new workflow. - Triggers: "let's create/define/design a workflow for [activity]", or unmatched workflow request after this index returns no hit. - =rename-artifact.org= — rename an =.ai/= workflow or script across the canonical + mirror trees, rewriting every reference on a token boundary and leaving =sessions/= history alone. Backed by =scripts/rename-ai-artifact.sh=, which runs =workflow-integrity= + =sync-check= after the move. - Triggers: "rename this workflow", "rename the [X] workflow/script", "let's run the rename-artifact workflow". - =session-harvest.org= — monthly mining pass over recent =.ai/sessions/= summaries across every AI project, proposing promotion candidates in four lanes: patterns for the catalog, durable facts for the KB, rule refinements, workflow learnings. Dedups against each lane's existing content, applies the =/codify=-grade quality gates plus a work-confidentiality scrub, presents a multi-select slate, executes approved promotions, and aggregates the =KB:= receipt lines into a metrics readout. Stamps =:LAST_HARVEST:= in =notes.org=. Natural home: the rulesets project. - Triggers: "session harvest", "harvest the sessions", "let's run the session-harvest workflow", "monthly harvest", "mine the sessions" - =no-approvals.org= — drop the interaction-level approval gates for a pre-agreed batch while keeping engineering-discipline gates (=/review-code=, =/voice personal=, tests, session-log updates, subagent reviews, destructive-action consent). Mode stays on until Craig turns it off, a real question arises, the queue empties, or the conversation switches topics. - Triggers: "no-approvals mode", "no approvals", "no-approval", "no need for approval gates", "stop asking, just keep going", "I'll check back in when you're done or stuck", "do all == with no-approval" - =cross-agent-comms.org= — protocol for cross-project agent coordination via =inbox/from-agents/= (file-based IPC, GPG-signed, supports cross-machine over Tailscale). Auto: when =cross-agent-watch= detects a new inbound message, or when an agent decides to initiate a cross-project conversation. Operational scripts (=cross-agent-send=, =-recv=, =-watch=, =-status=, =-discover=, =-halt=, =-resume=) and their READMEs live at =.ai/scripts/cross-agent-comms/=. * Living Document Add a row when a new workflow lands in =.ai/workflows/=. Remove the row when a workflow is deleted. Update triggers when a workflow's "When to Use" section changes. The startup drift check is the safety net — it catches forgotten updates but doesn't substitute for keeping this file current.