From 19e39aeefb138e623d80566d7ef9b60f01b58822 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Mon, 1 Jun 2026 14:16:15 -0500 Subject: feat(install-ai): create top-level inbox/ on bootstrap install-ai now creates a top-level inbox/ with a .gitkeep in every project it bootstraps. inbox-send treats a project as a messaging target only when it has both a .ai/ marker and a top-level inbox/, so before this a freshly bootstrapped project couldn't receive cross-project handoffs until the inbox was made by hand. The directory is created in both track and gitignore modes, since inbox/ is a project-root convention independent of whether .ai/ is tracked. The step is idempotent, so a project that already has an inbox keeps its contents. --- scripts/install-ai.sh | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'scripts/install-ai.sh') diff --git a/scripts/install-ai.sh b/scripts/install-ai.sh index 8993f0d..a5b38a8 100755 --- a/scripts/install-ai.sh +++ b/scripts/install-ai.sh @@ -119,6 +119,13 @@ mkdir -p "$project/.ai/sessions" mkdir -p "$project/.ai/references" mkdir -p "$project/.ai/retrospectives" +# Top-level inbox/ — the cross-project messaging target (inbox-send needs a +# .ai/ marker AND a top-level inbox/). Created in both track and gitignore +# modes since inbox/ is a project-root convention independent of .ai/ +# tracking. Idempotent: a pre-existing inbox/ and its contents are preserved. +mkdir -p "$project/inbox" +touch "$project/inbox/.gitkeep" + # Rsync canonical content (everything except notes.org, which gets templated). rsync -a "$CANONICAL/protocols.org" "$project/.ai/protocols.org" rsync -a "$CANONICAL/someday-maybe.org" "$project/.ai/someday-maybe.org" @@ -159,6 +166,7 @@ echo echo " project: $project" echo " tracking: ${track_mode:-not-a-git-repo}" echo " notes.org: project=$project_name, date=$today" +echo " inbox/: created (inbox-send target)" echo echo "Next steps:" echo " - Add a language bundle: make install-lang PROJECT=$project" -- cgit v1.2.3