aboutsummaryrefslogtreecommitdiff
path: root/.ai/workflows/startup.org
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-28 08:56:24 -0500
committerCraig Jennings <c@cjennings.net>2026-05-28 08:56:24 -0500
commit0c7eb59f813b5572cc32beb6d2dd09355639cbfc (patch)
tree188aa3f25b4e1a02c26fd79a17fa2d68ec5c26a1 /.ai/workflows/startup.org
parent8dfbe5c4d148b9bced5ffd632521566cf9255aa0 (diff)
downloadrulesets-0c7eb59f813b5572cc32beb6d2dd09355639cbfc.tar.gz
rulesets-0c7eb59f813b5572cc32beb6d2dd09355639cbfc.zip
feat(workflows): add process-inbox.org with value-gate discipline
Generic process-inbox workflow at claude-templates/.ai/workflows/ and mirror. Owns inbox discipline across every project: items are ideas to evaluate, not orders to execute, and earn a place in todo.org or git history only when they pass a three-question value gate. The gate (Phase B): - Advances an existing TODO (look up by topic). - Improves how the project works (architecture, workflows, tooling, rule hygiene). - Serves the project's stated mission (read from notes.org Project-Specific Context). One yes accepts. Three nos reject. Per-source rejection flow (Phase D): - From Craig: state in chat, wait for override. - From another project: write a response via inbox-send naming which gate question failed plus any reconsideration condition. Silent rejection on a handoff is worse than no reply. - From a script or automated system: just delete. Phase B.1 gates filing on priority-scheme presence. If todo.org has a scheme at the top, file with cookie + mandatory type tag + optional effort/autonomy tags. If not, surface a one-sentence nudge to adopt one (or to skip grading and flag the gap in the commit). Phase D within accepts splits implement-now / fold-into-existing / file-as-TODO so the inbox doesn't default to inflating todo.org for every item that passes the gate. Phase E stamps :LAST_INBOX_PROCESS: in notes.org Workflow State if the section exists. startup.org Phase C step 2 now delegates here instead of inlining the inbox-processing language. INDEX entry under Tasks and planning lists the full set of trigger phrases.
Diffstat (limited to '.ai/workflows/startup.org')
-rw-r--r--.ai/workflows/startup.org10
1 files changed, 1 insertions, 9 deletions
diff --git a/.ai/workflows/startup.org b/.ai/workflows/startup.org
index 64eb172..b552b96 100644
--- a/.ai/workflows/startup.org
+++ b/.ai/workflows/startup.org
@@ -137,15 +137,7 @@ This phase touches the user and runs sequentially:
- *Task-review nudge.* If the Phase A staleness count (step 11) is greater than zero, surface one line: "=<N>= top-level tasks unreviewed for >7 days — say 'let's do a task review' to run a cycle." If zero, say nothing.
- *Language-bundle sync.* If the Phase A step-12 call (=sync-language-bundle.sh=) printed anything, surface it. =fixed= lines are informational — the drift was already repaired (note that =.claude/= is now dirty if the project commits it). A =drift= line on =settings.json= is surface-only and needs the printed =make install-<lang> PROJECT=.= to reconcile; flag it so the user can decide. If the call was silent, say nothing.
- *Surface pending cross-agent messages.* If =cross-agent-status= reported any pending messages, list them with their =cross-agent-recv= decision (process / query / reject) per file. For =process= messages in this project's inbox, propose handling now or after the current task. For pending in other projects, mention the count so the user knows to switch projects when ready. If HALT was active, surface that prominently — cross-agent activity is paused until =cross-agent-resume= clears it.
-2. *Process inbox if non-empty.* Mandatory — don't ask, just do it. For each file: determine action, recommend filing, get approval, move. For =.eml= files use the extract script (not raw Read):
- #+begin_src bash
- # View mode — print metadata and body, extract attachments alongside EML
- python3 .ai/scripts/eml-view-and-extract-attachments.py inbox/message.eml
-
- # Pipeline mode — extract, auto-rename, refile to output dir, clean up
- python3 .ai/scripts/eml-view-and-extract-attachments.py inbox/message.eml --output-dir assets/target-dir/
- #+end_src
- The script handles metadata extraction, HTML-to-text conversion, attachment extraction, and auto-renaming to =YYYY-MM-DD-HHMM-Sender-TYPE-Description.ext=. See [[file:../scripts/eml-view-and-extract-attachments-readme.org][EML script readme]].
+2. *Process inbox if non-empty.* Mandatory — don't ask, just delegate to [[file:process-inbox.org][process-inbox.org]]. That workflow owns the value gate (advances an existing TODO / improves the project / serves the mission), the per-source rejection flow (Craig / project handoff / script), the priority-scheme check before filing, and the =.eml= extraction path. Single source of truth for the discipline.
3. *Execute project-specific startup extras* (the contents of =.ai/project-workflows/startup-extras.org= read in Phase A). If the file didn't exist, skip.
4. *Ask about priorities.* "What would you like to work on, or is there something urgent you need?"
- If urgent: proceed immediately.