diff options
| author | Craig Jennings <c@cjennings.net> | 2026-05-15 17:00:41 -0500 |
|---|---|---|
| committer | Craig Jennings <c@cjennings.net> | 2026-05-15 17:00:41 -0500 |
| commit | 3a4af17707c8020becb9e7ee2c47f573c1a45e38 (patch) | |
| tree | 32d839dd8f1deb91486fb2566e311e929315c922 | |
| parent | c1d4e3c4a42abd01bc7ef83b1d6ae036ee32ef1d (diff) | |
| download | rulesets-3a4af17707c8020becb9e7ee2c47f573c1a45e38.tar.gz rulesets-3a4af17707c8020becb9e7ee2c47f573c1a45e38.zip | |
docs(ai): point template references at in-repo claude-templates/
Canonical .ai/ source moved from ~/projects/claude-templates/ to ~/code/rulesets/claude-templates/ via subtree merge. Phase A.0's "Refresh claude-templates" step is now "Refresh rulesets" since there's only one repo to pull.
Updates:
- startup.org Phase A.0: rsync sources point at the in-repo path
- protocols.org and cross-agent-comms.org: workflow-promotion target paths updated
| -rw-r--r-- | .ai/protocols.org | 2 | ||||
| -rw-r--r-- | .ai/workflows/cross-agent-comms.org | 2 | ||||
| -rw-r--r-- | .ai/workflows/startup.org | 32 | ||||
| -rw-r--r-- | claude-templates/.ai/protocols.org | 2 | ||||
| -rw-r--r-- | claude-templates/.ai/workflows/cross-agent-comms.org | 2 | ||||
| -rw-r--r-- | claude-templates/.ai/workflows/startup.org | 32 |
6 files changed, 38 insertions, 34 deletions
diff --git a/.ai/protocols.org b/.ai/protocols.org index 8bde31f..4342eff 100644 --- a/.ai/protocols.org +++ b/.ai/protocols.org @@ -168,7 +168,7 @@ This does **NOT** mean "let's DO X right now." *Example:* - "I want to create a refactor workflow" -> Create .ai/workflows/refactor.org using create-workflow process -When Craig uses this phrasing, trigger the create-workflow process from .ai/workflows/create-workflow.org. New workflows go to =.ai/project-workflows/= by default. Only put a workflow in =.ai/workflows/= (and =~/projects/claude-templates/.ai/workflows/=) if Craig explicitly says it's for all projects. +When Craig uses this phrasing, trigger the create-workflow process from .ai/workflows/create-workflow.org. New workflows go to =.ai/project-workflows/= by default. Only put a workflow in =.ai/workflows/= (and =~/code/rulesets/claude-templates/.ai/workflows/=) if Craig explicitly says it's for all projects. ** "Wrap it up" / "That's a wrap" / "Let's call it a wrap" diff --git a/.ai/workflows/cross-agent-comms.org b/.ai/workflows/cross-agent-comms.org index ccf1739..430b4b0 100644 --- a/.ai/workflows/cross-agent-comms.org +++ b/.ai/workflows/cross-agent-comms.org @@ -5,7 +5,7 @@ * Status -Draft. Iterating between the homelab and career sessions through a multi-round design discussion. Awaiting Craig's review for promotion to =~/projects/claude-templates/.ai/workflows/=. +Draft. Iterating between the homelab and career sessions through a multi-round design discussion. Awaiting Craig's review for promotion to =~/code/rulesets/claude-templates/.ai/workflows/=. v5 changes from v4: - *Script absorption.* Seven operational scripts (=cross-agent-send=, =cross-agent-recv=, =cross-agent-watch=, =cross-agent-status=, =cross-agent-discover=, =cross-agent-halt=, =cross-agent-resume=) now own most implementation detail. Their READMEs are the operational source of truth. The spec stays declarative. diff --git a/.ai/workflows/startup.org b/.ai/workflows/startup.org index 19045d3..fabd607 100644 --- a/.ai/workflows/startup.org +++ b/.ai/workflows/startup.org @@ -10,24 +10,26 @@ The workflow is structured into four phases. *Phase A.0* is a sequential pre-fli * The Workflow -** Phase A.0 — Pre-flight: refresh claude-templates and project repo (sequential, runs first) +** Phase A.0 — Pre-flight: refresh rulesets and project repo (sequential, runs first) Two refreshes happen before Phase A. Both are sequential pre-steps, not part of Phase A's parallel batch. Run them as two separate Bash calls in order. -*** Refresh claude-templates +*** Refresh rulesets (canonical =.ai/= source) -Phase A's rsync commands copy from =~/projects/claude-templates/= into the project's =.ai/= directory. If that source repo is behind its own =origin/main=, the rsync silently reverts committed template updates in the project, dirtying the working tree. Pull claude-templates first so the rsync runs against current content. +Phase A's rsync commands copy from =~/code/rulesets/claude-templates/.ai/= into the project's =.ai/= directory. If the rulesets checkout is behind its own =origin/main=, the rsync silently reverts committed template updates in the project, dirtying the working tree. Pull rulesets first so the rsync runs against current content. + +Inside a rulesets session, the project-repo refresh below covers this — the rulesets pull here is harmless (a no-op second pull) but redundant. Outside rulesets (every other project's session), this is the only mechanism that pulls template updates. #+begin_src bash -ct="$HOME/projects/claude-templates" -if [ -d "$ct/.git" ]; then - if (cd "$ct" && git diff --quiet --ignore-submodules HEAD -- 2>/dev/null); then - (cd "$ct" && git pull --ff-only origin main 2>&1) | tail -3 +rs="$HOME/code/rulesets" +if [ -d "$rs/.git" ]; then + if (cd "$rs" && git diff --quiet --ignore-submodules HEAD -- 2>/dev/null); then + (cd "$rs" && git pull --ff-only origin main 2>&1) | tail -3 else - echo "claude-templates: dirty working tree — using as-is, skipping pull" + echo "rulesets: dirty working tree — using as-is, skipping pull" fi else - echo "claude-templates: not a git checkout — skipping" + echo "rulesets: not a git checkout — skipping" fi #+end_src @@ -85,7 +87,7 @@ Behavior, per branch: - *Diverged* (ahead and behind) → leave alone. Surface for Craig to resolve. Don't auto-rebase or auto-merge. - *Ahead only* or *up to date* → silent no-op. -Phase A's rsyncs depend on the claude-templates refresh completing first. The project-repo refresh has no such dependency, but lives here for symmetry with the wrap-up's "push all local branches" step. +Phase A's rsyncs depend on the rulesets refresh completing first. The project-repo refresh has no such dependency, but lives here for symmetry with the wrap-up's "push all local branches" step. ** Phase A — Initial fan-out (one parallel batch) @@ -93,9 +95,9 @@ These calls have no dependencies on each other. Issue them all together in one m 1. =date "+%A %Y-%m-%d %H:%M %Z"= — accurate timestamp. 2. Check whether =.ai/session-context.org= exists (e.g. =[ -e .ai/session-context.org ] && echo present || echo absent=). -3. =rsync -a ~/projects/claude-templates/.ai/protocols.org .ai/protocols.org=. -4. =rsync -a --delete ~/projects/claude-templates/.ai/workflows/ .ai/workflows/=. -5. =rsync -a --delete ~/projects/claude-templates/.ai/scripts/ .ai/scripts/=. +3. =rsync -a ~/code/rulesets/claude-templates/.ai/protocols.org .ai/protocols.org=. +4. =rsync -a --delete ~/code/rulesets/claude-templates/.ai/workflows/ .ai/workflows/=. +5. =rsync -a --delete ~/code/rulesets/claude-templates/.ai/scripts/ .ai/scripts/=. 6. =\ls -t .ai/sessions/ 2>/dev/null | head -5= — list 5 most recent session files. The backslash bypasses any =ls= alias in the user's profile. Without it, bare =ls -t= silently returns no output under =exa= (a common =ls= replacement) — which makes a sessions directory full of files look empty, and the agent then skips Phase B step 2. 7. =\ls -la inbox/ 2>/dev/null= — inventory the inbox. Same reason for the backslash escape, applied uniformly across the Phase A =ls= calls. 8. =cross-agent-status 2>/dev/null || true= — snapshot of pending cross-agent messages across local projects. This is layer A of the cold-start design from =cross-agent-comms.org=: pending messages from other agents (delivered while no session was active here) get surfaced on session start. The =|| true= keeps Phase A from failing if =cross-agent-status= isn't installed yet — older projects without the script still boot cleanly. If HALT is active, =cross-agent-status= prints a banner; surface that prominently in Phase C. @@ -169,8 +171,8 @@ The index is the catalog; the directory is the truth. Drift between them is a bu 1. *Running Phase A sequentially.* Send all Phase A calls in one message — sequential rsync + ls + read costs round-trips for nothing. 2. *Reading the entire notes.org file* — only Project-Specific Context, Active Reminders, Pending Decisions. 3. *Skipping template sync* — projects fall behind on rule changes. -4. *Skipping Phase A.0* — rsync runs against a stale claude-templates checkout and silently reverts committed template updates in the project's =.ai/=, dirtying the working tree at session start. -5. *Auto-stashing or auto-merging in Phase A.0* — don't. If claude-templates has uncommitted edits or a non-fast-forward history, leave it alone and let the rsync run against the working tree as-is. +4. *Skipping Phase A.0* — rsync runs against a stale rulesets checkout and silently reverts committed template updates in the project's =.ai/=, dirtying the working tree at session start. +5. *Auto-stashing or auto-merging in Phase A.0* — don't. If rulesets has uncommitted edits or a non-fast-forward history, leave it alone and let the rsync run against the working tree as-is. 6. *Not checking for session-context.org* — lose context from crashed sessions. 7. *Forgetting to surface Active Reminders* — Craig misses critical items. 8. *Asking if Craig wants inbox processed* — it's mandatory, not optional. diff --git a/claude-templates/.ai/protocols.org b/claude-templates/.ai/protocols.org index 8bde31f..4342eff 100644 --- a/claude-templates/.ai/protocols.org +++ b/claude-templates/.ai/protocols.org @@ -168,7 +168,7 @@ This does **NOT** mean "let's DO X right now." *Example:* - "I want to create a refactor workflow" -> Create .ai/workflows/refactor.org using create-workflow process -When Craig uses this phrasing, trigger the create-workflow process from .ai/workflows/create-workflow.org. New workflows go to =.ai/project-workflows/= by default. Only put a workflow in =.ai/workflows/= (and =~/projects/claude-templates/.ai/workflows/=) if Craig explicitly says it's for all projects. +When Craig uses this phrasing, trigger the create-workflow process from .ai/workflows/create-workflow.org. New workflows go to =.ai/project-workflows/= by default. Only put a workflow in =.ai/workflows/= (and =~/code/rulesets/claude-templates/.ai/workflows/=) if Craig explicitly says it's for all projects. ** "Wrap it up" / "That's a wrap" / "Let's call it a wrap" diff --git a/claude-templates/.ai/workflows/cross-agent-comms.org b/claude-templates/.ai/workflows/cross-agent-comms.org index ccf1739..430b4b0 100644 --- a/claude-templates/.ai/workflows/cross-agent-comms.org +++ b/claude-templates/.ai/workflows/cross-agent-comms.org @@ -5,7 +5,7 @@ * Status -Draft. Iterating between the homelab and career sessions through a multi-round design discussion. Awaiting Craig's review for promotion to =~/projects/claude-templates/.ai/workflows/=. +Draft. Iterating between the homelab and career sessions through a multi-round design discussion. Awaiting Craig's review for promotion to =~/code/rulesets/claude-templates/.ai/workflows/=. v5 changes from v4: - *Script absorption.* Seven operational scripts (=cross-agent-send=, =cross-agent-recv=, =cross-agent-watch=, =cross-agent-status=, =cross-agent-discover=, =cross-agent-halt=, =cross-agent-resume=) now own most implementation detail. Their READMEs are the operational source of truth. The spec stays declarative. diff --git a/claude-templates/.ai/workflows/startup.org b/claude-templates/.ai/workflows/startup.org index 19045d3..fabd607 100644 --- a/claude-templates/.ai/workflows/startup.org +++ b/claude-templates/.ai/workflows/startup.org @@ -10,24 +10,26 @@ The workflow is structured into four phases. *Phase A.0* is a sequential pre-fli * The Workflow -** Phase A.0 — Pre-flight: refresh claude-templates and project repo (sequential, runs first) +** Phase A.0 — Pre-flight: refresh rulesets and project repo (sequential, runs first) Two refreshes happen before Phase A. Both are sequential pre-steps, not part of Phase A's parallel batch. Run them as two separate Bash calls in order. -*** Refresh claude-templates +*** Refresh rulesets (canonical =.ai/= source) -Phase A's rsync commands copy from =~/projects/claude-templates/= into the project's =.ai/= directory. If that source repo is behind its own =origin/main=, the rsync silently reverts committed template updates in the project, dirtying the working tree. Pull claude-templates first so the rsync runs against current content. +Phase A's rsync commands copy from =~/code/rulesets/claude-templates/.ai/= into the project's =.ai/= directory. If the rulesets checkout is behind its own =origin/main=, the rsync silently reverts committed template updates in the project, dirtying the working tree. Pull rulesets first so the rsync runs against current content. + +Inside a rulesets session, the project-repo refresh below covers this — the rulesets pull here is harmless (a no-op second pull) but redundant. Outside rulesets (every other project's session), this is the only mechanism that pulls template updates. #+begin_src bash -ct="$HOME/projects/claude-templates" -if [ -d "$ct/.git" ]; then - if (cd "$ct" && git diff --quiet --ignore-submodules HEAD -- 2>/dev/null); then - (cd "$ct" && git pull --ff-only origin main 2>&1) | tail -3 +rs="$HOME/code/rulesets" +if [ -d "$rs/.git" ]; then + if (cd "$rs" && git diff --quiet --ignore-submodules HEAD -- 2>/dev/null); then + (cd "$rs" && git pull --ff-only origin main 2>&1) | tail -3 else - echo "claude-templates: dirty working tree — using as-is, skipping pull" + echo "rulesets: dirty working tree — using as-is, skipping pull" fi else - echo "claude-templates: not a git checkout — skipping" + echo "rulesets: not a git checkout — skipping" fi #+end_src @@ -85,7 +87,7 @@ Behavior, per branch: - *Diverged* (ahead and behind) → leave alone. Surface for Craig to resolve. Don't auto-rebase or auto-merge. - *Ahead only* or *up to date* → silent no-op. -Phase A's rsyncs depend on the claude-templates refresh completing first. The project-repo refresh has no such dependency, but lives here for symmetry with the wrap-up's "push all local branches" step. +Phase A's rsyncs depend on the rulesets refresh completing first. The project-repo refresh has no such dependency, but lives here for symmetry with the wrap-up's "push all local branches" step. ** Phase A — Initial fan-out (one parallel batch) @@ -93,9 +95,9 @@ These calls have no dependencies on each other. Issue them all together in one m 1. =date "+%A %Y-%m-%d %H:%M %Z"= — accurate timestamp. 2. Check whether =.ai/session-context.org= exists (e.g. =[ -e .ai/session-context.org ] && echo present || echo absent=). -3. =rsync -a ~/projects/claude-templates/.ai/protocols.org .ai/protocols.org=. -4. =rsync -a --delete ~/projects/claude-templates/.ai/workflows/ .ai/workflows/=. -5. =rsync -a --delete ~/projects/claude-templates/.ai/scripts/ .ai/scripts/=. +3. =rsync -a ~/code/rulesets/claude-templates/.ai/protocols.org .ai/protocols.org=. +4. =rsync -a --delete ~/code/rulesets/claude-templates/.ai/workflows/ .ai/workflows/=. +5. =rsync -a --delete ~/code/rulesets/claude-templates/.ai/scripts/ .ai/scripts/=. 6. =\ls -t .ai/sessions/ 2>/dev/null | head -5= — list 5 most recent session files. The backslash bypasses any =ls= alias in the user's profile. Without it, bare =ls -t= silently returns no output under =exa= (a common =ls= replacement) — which makes a sessions directory full of files look empty, and the agent then skips Phase B step 2. 7. =\ls -la inbox/ 2>/dev/null= — inventory the inbox. Same reason for the backslash escape, applied uniformly across the Phase A =ls= calls. 8. =cross-agent-status 2>/dev/null || true= — snapshot of pending cross-agent messages across local projects. This is layer A of the cold-start design from =cross-agent-comms.org=: pending messages from other agents (delivered while no session was active here) get surfaced on session start. The =|| true= keeps Phase A from failing if =cross-agent-status= isn't installed yet — older projects without the script still boot cleanly. If HALT is active, =cross-agent-status= prints a banner; surface that prominently in Phase C. @@ -169,8 +171,8 @@ The index is the catalog; the directory is the truth. Drift between them is a bu 1. *Running Phase A sequentially.* Send all Phase A calls in one message — sequential rsync + ls + read costs round-trips for nothing. 2. *Reading the entire notes.org file* — only Project-Specific Context, Active Reminders, Pending Decisions. 3. *Skipping template sync* — projects fall behind on rule changes. -4. *Skipping Phase A.0* — rsync runs against a stale claude-templates checkout and silently reverts committed template updates in the project's =.ai/=, dirtying the working tree at session start. -5. *Auto-stashing or auto-merging in Phase A.0* — don't. If claude-templates has uncommitted edits or a non-fast-forward history, leave it alone and let the rsync run against the working tree as-is. +4. *Skipping Phase A.0* — rsync runs against a stale rulesets checkout and silently reverts committed template updates in the project's =.ai/=, dirtying the working tree at session start. +5. *Auto-stashing or auto-merging in Phase A.0* — don't. If rulesets has uncommitted edits or a non-fast-forward history, leave it alone and let the rsync run against the working tree as-is. 6. *Not checking for session-context.org* — lose context from crashed sessions. 7. *Forgetting to surface Active Reminders* — Craig misses critical items. 8. *Asking if Craig wants inbox processed* — it's mandatory, not optional. |
