aboutsummaryrefslogtreecommitdiff
path: root/scripts/install-ai.sh
Commit message (Collapse)AuthorAgeFilesLines
* feat(install-ai): create top-level inbox/ on bootstrapCraig Jennings2026-06-011-0/+8
| | | | | | 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.
* refactor(install-ai): use explicit if block for .ai/-missing filterCraig Jennings2026-05-161-1/+1
| | | | | | The `[ ] && echo` shortcut propagates the test's exit status out of the while loop, which can muddy the pipeline's overall exit. The `if` form keeps the loop body's status decoupled from the filter check.
* feat(make): add install-ai target for bootstrapping .ai/ in fresh projectsCraig Jennings2026-05-151-0/+165
scripts/install-ai.sh copies canonical .ai/ content from claude-templates/ into a fresh project. Rsyncs protocols.org, workflows/, scripts/, someday-maybe.org as-is; templates notes.org with project-name and date placeholders substituted; creates empty sessions/, references/, retrospectives/ dirs. Two tracking modes: TRACK=1 adds .gitkeep files inside otherwise-empty dirs so they survive in git history; GITIGNORE=1 appends .ai/ to the project's .gitignore so session records stay local. Prompts interactively if neither flag is set. Refuses if PROJECT/.ai/ already exists with a message pointing to `make audit APPLY=1` for sync of existing installs. Without a PROJECT argument, fzf-picks from ~/code/* + ~/projects/* git checkouts that don't already have .ai/.