aboutsummaryrefslogtreecommitdiff
path: root/.ai/workflows/INDEX.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-26 01:57:48 -0500
committerCraig Jennings <c@cjennings.net>2026-05-26 01:57:48 -0500
commitf9c72c817290bb5433e593b2a8d1cfaa25431d20 (patch)
treefed103aec3faf75624a2a969fd67dea71e501a4d /.ai/workflows/INDEX.org
parent98382929852b213f8dc8b1ba720cc0d1861159b6 (diff)
downloadrulesets-f9c72c817290bb5433e593b2a8d1cfaa25431d20.tar.gz
rulesets-f9c72c817290bb5433e593b2a8d1cfaa25431d20.zip
refactor(workflows): split triage-intake into engine + source plugins
The triage-intake workflow had every source baked into one file, so adding or changing a source meant editing the workflow itself. I replaced it with a source-agnostic engine plus per-source plugins named triage-intake.<source>.org. The engine carries the anchor/sentinel logic, the four-bucket model, the Phase A-D orchestration, the todo.org persistence convention, and the exit criteria. Each source's scan, classify, render, and action knowledge moved into its own plugin. Four general plugins ship in the template: personal-gmail, personal-calendar, cmail, and github-prs. Project-specific sources live in the project's .ai/project-workflows/ and are never synced. Phase 0 globs both directories so a project source can't silently drop out of the sweep. I taught INDEX.org and the startup workflow-discovery drift check the namespace. A file matching <engine>.*.org is a plugin of that engine, not an orphan, and gets no trigger entry of its own. A "run the triage-intake workflow" request routes to the engine, never to a plugin.
Diffstat (limited to '.ai/workflows/INDEX.org')
-rw-r--r--.ai/workflows/INDEX.org7
1 files changed, 4 insertions, 3 deletions
diff --git a/.ai/workflows/INDEX.org b/.ai/workflows/INDEX.org
index bad2a48..a61b824 100644
--- a/.ai/workflows/INDEX.org
+++ b/.ai/workflows/INDEX.org
@@ -8,7 +8,7 @@ Single-source catalog of every workflow in this directory, with the trigger phra
* Drift Check
-This index must list every =.org= file in =.ai/workflows/= except this one. Startup verifies the index matches the directory and flags drift (missing entries or stale entries pointing at deleted files).
+This index must list every =.org= file in =.ai/workflows/= except this one and except *source plugins*. A source plugin is any file matching =<indexed-workflow>.*.org= (a second dot-segment after an indexed engine name, e.g. =triage-intake.personal-gmail.org=) — it belongs to its engine, is not independently triggerable, and gets no entry of its own. Startup verifies the index matches the directory and flags drift (missing entries or stale entries pointing at deleted files), treating plugins as owned by their engine rather than as orphans.
* Catalog
@@ -33,8 +33,9 @@ This index must list every =.org= file in =.ai/workflows/= except this one. Star
- =daily-prep.org= — prep brief for the next workday. Two modes: full-prep (default) or standup-only.
- Full-prep triggers: "let's prep for tomorrow", "daily prep"
- Standup-only triggers: "what's my standup report", "let's do the daily standup report", "give me the standup brief"
-- =triage-intake.org= — on-demand triage: scan every inbox source (DeepSat Gmail, personal Gmail, cmail/Proton, Slack, Linear, GitHub PRs, both calendars, recent =todo.org= edits), surface what's moved, run the Linear Dev-Review sweep, mark *all* unread INBOX email across the three accounts and every touched Slack conversation as read. Lighter scope than =daily-prep.org='s triage section. Projects that want it called from =wrap-it-up.org= (or elsewhere) can opt in via a =.ai/project-workflows/<name>.org= extension.
- - Triggers: "do a triage intake", "triage intake", "what's moved?", "what's new?", "check for movement"
+- =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.<source>.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.