aboutsummaryrefslogtreecommitdiff
path: root/.ai/workflows/cross-project-broadcast.org
Commit message (Collapse)AuthorAgeFilesLines
* feat(workflows): generalize broadcast into announcement + situational modesCraig Jennings2026-06-091-139/+0
| | | | cross-project-broadcast handled tooling and rule announcements but had no shape for the situational case: a life or work event I want every project's agent to know, said once so none is missing context when I next talk to them. I renamed it to broadcast (helper and test alongside) and split it into two modes over the same fan-out plumbing. Announcement keeps the rigid capability template. Situational carries a general-not-comprehensive summary plus a fixed receiving-agent contract: record it in notes.org, hold it time-boxed or standing, apply on the project's own judgment, ask follow-ups at startup. The broadcasting agent does no per-project relevance analysis. Each receiving agent decides what the event means for its own work.
* docs(cross-project-broadcast): codify capability-and-rule cadence guidelineCraig Jennings2026-05-291-1/+14
| | | | | | | | | | | | | | | | | | | | | | | Adds one bullet to When NOT to Use and a new Cadence Guideline section that names the per-commit-broadcast anti-pattern explicitly. The new section lays out the five reasons broadcasts stay capability-and-rule-level rather than commit-level: cost per broadcast across the fleet, signal-to-noise on project-internal commits, the rsync-already-does-the-work observation, aggregation winning over per-commit pings, and the train-projects-to-ignore-inbox risk. The end-of-session bundling guidance lands too. If a session ships several broadcastable changes, bundle them into one broadcast at session end instead of firing one per commit. Source: session-end conversation 2026-05-29 surveying today's cross-project changes. Today's session shipped 13 cross-project items (4 new workflows, 6 workflow updates, 2 new scripts, 1 new bin tool). A per-commit broadcast cadence would have fired 13 inbox files across 23 targets, or 299 total inbox files. One consolidated broadcast (or no broadcast at all, since Craig already coordinated manually) covered the same ground.
* feat(signal): page-signal CLI wrapper + workflows + cross-project broadcast ↵Craig Jennings2026-05-291-0/+126
helper Three coupled additions ship together. claude-templates/bin/page-signal is a bash wrapper around signal-cli send. It defaults to --note-to-self for safety. The wrapper supports --file for attachments, --to <+number> for outbound (explicit per call, no defaults, no batch), --quiet, and --json. Exit codes: 0 sent, 1 signal-cli failure, 2 usage error, 3 signal-cli not installed. claude-templates/.ai/workflows/page-signal.org carries the discrimination rules and safety rails. When desktop notify covers it, don't reach for Signal. Long-running task completion is the canonical case. Outbound to other contacts requires explicit Craig instruction per send. A known-limitation note covers the current notification gap. signal-cli registered on Craig's primary number means messages don't fire notifications until the pending Google Voice registration lands. claude-templates/.ai/workflows/cross-project-broadcast.org and its helper cross-project-broadcast.py fan out a single message file to every AI project's inbox in one operation. Discovery is fingerprint-based: any directory under ~/code, ~/projects, ~/.emacs.d with both .ai/protocols.org and a top-level inbox/ is broadcastable. Senders are auto-excluded. Verified discovery against 23 broadcastable targets. Makefile's install target gains a general bin/ loop. The previous version hardcoded bin/ai. The new version iterates over every executable under claude-templates/bin/ and symlinks each into ~/.local/bin/. install-hooks (existing Claude hook installer) is unchanged. install-githooks (sync-check pre-commit hook setup, added earlier today) is unchanged. The bin/ loop now picks up bin/page-signal automatically. INDEX entries for both new workflows landed under Tools and meta. No bats tests on the new scripts. page-signal was smoke-tested with a live send. The send succeeded. The notification gap is covered by the workflow's known-limitation note. cross-project-broadcast.py was smoke-tested via --list against the live project set. Tests can be added when the broadcast pattern proves out across multiple use cases.