aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCraig Jennings <c@cjennings.net>2026-05-15 17:00:41 -0500
committerCraig Jennings <c@cjennings.net>2026-05-15 17:00:41 -0500
commit3a4af17707c8020becb9e7ee2c47f573c1a45e38 (patch)
tree32d839dd8f1deb91486fb2566e311e929315c922
parentc1d4e3c4a42abd01bc7ef83b1d6ae036ee32ef1d (diff)
downloadrulesets-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.org2
-rw-r--r--.ai/workflows/cross-agent-comms.org2
-rw-r--r--.ai/workflows/startup.org32
-rw-r--r--claude-templates/.ai/protocols.org2
-rw-r--r--claude-templates/.ai/workflows/cross-agent-comms.org2
-rw-r--r--claude-templates/.ai/workflows/startup.org32
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.