ci: update CI/CD configuration

This commit is contained in:
saravanakumardb1 2026-03-03 12:08:22 -08:00
parent a57bff7499
commit 458d835e5a
43 changed files with 2480 additions and 291 deletions

View File

@ -9,16 +9,16 @@ Auto-discovers new repos, updates symlinks, and re-copies docs + workflows.
## Covered Repos (All 8 workspaces)
| Repo | Product | Workflows | Docs |
|------|---------|-----------|------|
| `learning_voice_ai_agent` | LysnrAI | ✅ | ✅ |
| `learning_multimodal_memory_agents` | MindLyst | ✅ | ✅ |
| `learning_ai_clock` | ChronoMind | ✅ | — |
| `learning_ai_peakpulse` | PeakPulse | ✅ | — |
| `learning_ai_fastgap` | NomGap | ✅ | — |
| `learning_ai_jarvis_jr` | JarvisJr | ✅ | — |
| `learning_ai_common_plat` | Common Platform | ✅ | — |
| `learning_agent_monitoring_fx` | Agent Monitoring | ✅ | — |
| Repo | Product | Workflows | Docs |
| ----------------------------------- | ---------------- | --------- | ---- |
| `learning_voice_ai_agent` | LysnrAI | ✅ | ✅ |
| `learning_multimodal_memory_agents` | MindLyst | ✅ | ✅ |
| `learning_ai_clock` | ChronoMind | ✅ | — |
| `learning_ai_peakpulse` | PeakPulse | ✅ | — |
| `learning_ai_fastgap` | NomGap | ✅ | — |
| `learning_ai_jarvis_jr` | JarvisJr | ✅ | — |
| `learning_ai_common_plat` | Common Platform | ✅ | — |
| `learning_agent_monitoring_fx` | Agent Monitoring | ✅ | — |
## Steps
@ -48,6 +48,7 @@ ls -la /Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_
- It auto-discovers repos under `/Users/sd9235/code/mygh/` that have `docs/WINDSURF/` or `.windsurf/workflows/`.
- A **launchd job** runs this daily at 11 PM: `~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist`.
- Logs: `.last-refresh.log` (stats), `.launchd-stdout.log` / `.launchd-stderr.log` (scheduled run output).
- **See also:** [Workflow Sync Guide](/Users/sd9235/code/mygh/learning_ai_common_plat/docs/guides/WORKFLOW_SYNC.md) — how to keep workflows consistent across repos.
## Manage the scheduled job

View File

@ -1,9 +1,9 @@
Last refresh: 2026-03-03T19:50:43Z (2026-03-03 11:50:43 PST)
Cascade conversations: 50 (297M)
Last refresh: 2026-03-03T20:04:34Z (2026-03-03 12:04:34 PST)
Cascade conversations: 50 (300M)
Memories: 65
Implicit context: 20
Code tracker dirs: 190
File edit history: 2343 entries
Code tracker dirs: 194
File edit history: 2350 entries
Workspace storage: 28 workspaces
Repo docs: 7 files across 2 repos
Repo workflows: 37 files across 8 repos
Repo workflows: 65 files across 8 repos

View File

@ -0,0 +1,67 @@
---
description: Refresh the Windsurf chat history archive (re-scan all repos, update symlinks, copy docs/workflows)
---
# Refresh Windsurf Chat History Archive
Refreshes the centralized Windsurf chat history archive at `__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/`.
Auto-discovers new repos, updates symlinks, and re-copies docs + workflows.
## Covered Repos (All 8 workspaces)
| Repo | Product | Workflows | Docs |
| ----------------------------------- | ---------------- | --------- | ---- |
| `learning_voice_ai_agent` | LysnrAI | ✅ | ✅ |
| `learning_multimodal_memory_agents` | MindLyst | ✅ | ✅ |
| `learning_ai_clock` | ChronoMind | ✅ | — |
| `learning_ai_peakpulse` | PeakPulse | ✅ | — |
| `learning_ai_fastgap` | NomGap | ✅ | — |
| `learning_ai_jarvis_jr` | JarvisJr | ✅ | — |
| `learning_ai_common_plat` | Common Platform | ✅ | — |
| `learning_agent_monitoring_fx` | Agent Monitoring | ✅ | — |
## Steps
// turbo
1. Run the refresh script:
```bash
/Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/refresh.sh
```
2. Check the refresh log:
```bash
cat /Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/.last-refresh.log
```
3. Verify symlinks are valid:
```bash
ls -la /Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/ | grep "^l"
```
## Notes
- The script is **idempotent** — safe to run any number of times.
- It auto-discovers repos under `/Users/sd9235/code/mygh/` that have `docs/WINDSURF/` or `.windsurf/workflows/`.
- A **launchd job** runs this daily at 11 PM: `~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist`.
- Logs: `.last-refresh.log` (stats), `.launchd-stdout.log` / `.launchd-stderr.log` (scheduled run output).
- **See also:** [Workflow Sync Guide](/Users/sd9235/code/mygh/learning_ai_common_plat/docs/guides/WORKFLOW_SYNC.md) — how to keep workflows consistent across repos.
## Manage the scheduled job
```bash
# Check if running
launchctl list | grep windsurf-archive
# Stop
launchctl unload ~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist
# Start
launchctl load ~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist
# Force run now
launchctl start com.sd9235.windsurf-archive-refresh
```

View File

@ -11,14 +11,14 @@ Combines `/repo_backup-main-branch` and `/repo_push-repos` into a single sequent
Creates timestamped backup branches with smart duplicate detection.
// turbo
Run `bash ~/code/mygh/learning_ai_common_plat/scripts/backup-main.sh` from any directory
Run `bash scripts/backup-main.sh` from any repository root
## Step 2: Push all repos to origin
// turbo
```bash
for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents learning_ai_clock learning_ai_fastgap; do
for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents learning_ai_clock learning_ai_fastgap learning_ai_jarvis_jr learning_ai_peakpulse; do
echo "━━━ Pushing $repo ━━━"
(cd ~/code/mygh/$repo && git push origin main 2>&1)
done
@ -29,7 +29,7 @@ echo "✨ All repos pushed!"
## What it does:
1. **Backup** — creates timestamped backup branches, cleans up old ones (7 days), skips duplicates
2. **Push** — pushes `main` to `origin/main` for all 5 repos
2. **Push** — pushes `main` to `origin/main` for all 7 repos
## Repositories:
@ -38,6 +38,8 @@ echo "✨ All repos pushed!"
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
## When to use:

View File

@ -7,7 +7,7 @@ description: Smart backup of main branches with duplicate detection
Creates smart backups of main branches across all repositories.
// turbo
Run `bash ~/code/mygh/learning_ai_common_plat/scripts/backup-main.sh` from any directory
Run `bash scripts/backup-main.sh` from any repository root
## What it does:
@ -24,11 +24,13 @@ Run `bash ~/code/mygh/learning_ai_common_plat/scripts/backup-main.sh` from any d
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
## Features:
- Smart duplicate detection
- Automatic cleanup of old backups
- Multi-repo support
- Safe operations (always returns to main)
- Color-coded output for clarity
- Smart duplicate detection
- Automatic cleanup of old backups
- Multi-repo support
- Safe operations (always returns to main)
- Color-coded output for clarity

View File

@ -1,50 +1,117 @@
---
description: Commit all workspace changes in logical order with intelligent messages
date: 2025-02-12
---
# Commit Workspace
Commits all pending changes across all 5 workspace repos in logical order.
## Step 1: Check status of all repos
Scans all repositories for pending changes and commits them in logical order with intelligent commit messages.
// turbo
~/commit-workspace.sh
## What it does:
1. **Scans** all 7 repos for changes:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
2. **Analyzes** changed files to determine:
- Commit scope (auth, ci, docs, feat, chore, etc.)
- Appropriate commit message
- Logical grouping
3. **Commits** in dependency order:
- Always commits common platform first
- Then other repos
4. Does **NOT** push — use `/repo_sync-repos` or `git push` separately
## Commit Message Logic:
The script analyzes file types to generate appropriate messages:
| File Pattern | Commit Message Example |
| ------------------------- | ---------------------------------------------------- |
| auth/middleware/jwt files | `feat(auth): update authentication and middleware` |
| .github/workflows/ | `ci: update CI/CD configuration` |
| Dockerfile + package.json | `feat: update Dockerfile for pnpm workspace support` |
| package.json, lock files | `chore: update dependencies` |
| \*.md files | `docs: update documentation` |
| \*.py, requirements.txt | `feat(python): update Python modules` |
| test/, _spec_ | `test: add/update tests` |
| .env, config files | `chore: update configuration` |
| Other files | `chore: update project files` |
## Usage:
```bash
for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents learning_ai_clock learning_ai_fastgap; do
echo "━━━ $repo ━━━"
(cd ~/code/mygh/$repo && git status --short)
echo ""
done
# Run from anywhere
~/commit-workspace.sh
# Or via Windsurf
/commit-workspace
```
## Step 2: Stage and commit each repo
## Example Output:
For each repo with changes:
1. Review the diff
2. Stage all changes with `git add -A`
3. Write a conventional commit message: `type(scope): description`
4. Commit
```
📋 Scanning workspace for changes...
## Commit message conventions:
📁 learning_ai_common_plat:
- 2 staged
- 1 modified
- `feat(scope):` — new feature
- `fix(scope):` — bug fix
- `refactor(scope):` — code restructuring
- `docs(scope):` — documentation only
- `test(scope):` — adding/updating tests
- `chore(scope):` — maintenance tasks
📁 learning_voice_ai_agent:
- 3 untracked
## Order:
Found changes in 2 repo(s)
1. **learning_ai_common_plat** — shared packages first (others may depend on it)
2. **learning_voice_ai_agent** — LysnrAI product repo
3. **learning_multimodal_memory_agents** — MindLyst product repo
4. **learning_ai_clock** — ChronoMind product repo
5. **learning_ai_fastgap** — NomGap product repo
🚀 Committing in dependency order...
📝 Committing learning_ai_common_plat...
Message: feat(auth): update authentication and middleware
✅ Committed
📝 Committing learning_voice_ai_agent...
Message: docs: update documentation
✅ Committed
✨ All changes committed locally!
💡 Use /repo_sync-repos or git push to push to remote
```
## Features:
- ✅ No prompts - fully automated
- ✅ Intelligent commit messages
- ✅ Logical dependency order
- ✅ Stages all changes automatically
- ✅ Local commits only (no push)
- ✅ Clean, colored output
## Safety:
- Always shows what will be committed
- Uses conventional commit format
- Commits in correct order to avoid issues
- Preserves all changes
## When to Use:
- After making changes across multiple repos
- Before switching contexts/tasks
- At the end of a development session
- When preparing for releases
## Notes:
- Always commit common_plat first since other repos may reference its packages
- Use `--no-verify` only if pre-commit hooks are blocking on non-code issues
- After committing, run `/repo_push-repos` to push all to origin
- Script location: `~/commit-workspace.sh`
- Requires git access to all repos
- Works with any branch (but assumes main is primary)
- Will skip repos with no changes

View File

@ -1,5 +1,5 @@
---
description: Pull latest from origin main across all 5 workspace repos
description: Pull latest from origin main across all 7 workspace repos
---
# Sync Repos
@ -9,7 +9,7 @@ Pulls the latest changes from `origin/main` for all workspace repositories.
// turbo
```bash
for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents learning_ai_clock learning_ai_fastgap; do
for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents learning_ai_clock learning_ai_fastgap learning_ai_jarvis_jr learning_ai_peakpulse; do
echo "━━━ $repo ━━━"
(cd ~/code/mygh/$repo && git pull --ff-only origin main)
done
@ -17,7 +17,7 @@ done
## What it does:
1. Iterates over all 5 workspace repos
1. Iterates over all 7 workspace repos
2. Runs `git pull --ff-only origin main` in each
3. Fails fast if there are local divergent commits (use `git pull --rebase` manually in that case)
@ -28,6 +28,8 @@ done
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
## When to use:

View File

@ -0,0 +1,51 @@
---
description: Regenerate AI agent docs (AGENTS.md, CLAUDE.md, .cursorrules, etc.) across all repos
---
# Update Agent Docs Across Workspace
Regenerates all 8 AI agent configuration files across all repos in the workspace.
## Files Generated Per Repo
| File | Tool |
| --------------------------------- | ----------------------------------------------- |
| `AGENTS.md` | Universal (OpenAI Codex, Claude, Copilot, etc.) |
| `CLAUDE.md` | Claude Code |
| `.cursorrules` | Cursor AI |
| `.github/copilot-instructions.md` | GitHub Copilot |
| `.windsurfrules` | Windsurf / Cascade |
| `.clinerules` | Cline / Roo Code |
| `.aider.conf.yml` | Aider |
| `.editorconfig` | All editors |
## Steps
1. Run the update script:
```bash
cd /Users/sd9235/code/mygh/learning_ai_common_plat
./scripts/update-agent-docs.sh
```
2. Review changes per repo:
```bash
cd /Users/sd9235/code/mygh/learning_voice_ai_agent && git diff --stat
cd /Users/sd9235/code/mygh/learning_multimodal_memory_agents && git diff --stat
# ... etc for all repos
```
3. Commit changes (if any):
```bash
cd /Users/sd9235/code/mygh/learning_voice_ai_agent
[ -n "$(git status --porcelain)" ] && git add -A && git commit -m "chore(docs): update agent configuration files"
```
## Notes
- The script scans each repo's structure and regenerates docs based on current state
- Only commits if there are actual changes
- Safe to run repeatedly (idempotent)
- Requires `learning_ai_common_plat` to be the source of truth for templates

View File

@ -7,17 +7,18 @@ description: Refresh the Windsurf chat history archive (re-scan all repos, updat
Refreshes the centralized Windsurf chat history archive at `__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/`.
Auto-discovers new repos, updates symlinks, and re-copies docs + workflows.
## Covered Repos (All 7 workspaces)
## Covered Repos (All 8 workspaces)
| Repo | Product | Workflows | Docs |
|------|---------|-----------|------|
| `learning_voice_ai_agent` | LysnrAI | ✅ | ✅ |
| `learning_multimodal_memory_agents` | MindLyst | ✅ | ✅ |
| `learning_ai_clock` | ChronoMind | ✅ | — |
| `learning_ai_peakpulse` | PeakPulse | ✅ | — |
| `learning_ai_fastgap` | NomGap | ✅ | — |
| `learning_ai_jarvis_jr` | JarvisJr | ✅ | — |
| `learning_ai_common_plat` | Common Platform | ✅ | — |
| Repo | Product | Workflows | Docs |
| ----------------------------------- | ---------------- | --------- | ---- |
| `learning_voice_ai_agent` | LysnrAI | ✅ | ✅ |
| `learning_multimodal_memory_agents` | MindLyst | ✅ | ✅ |
| `learning_ai_clock` | ChronoMind | ✅ | — |
| `learning_ai_peakpulse` | PeakPulse | ✅ | — |
| `learning_ai_fastgap` | NomGap | ✅ | — |
| `learning_ai_jarvis_jr` | JarvisJr | ✅ | — |
| `learning_ai_common_plat` | Common Platform | ✅ | — |
| `learning_agent_monitoring_fx` | Agent Monitoring | ✅ | — |
## Steps
@ -47,6 +48,7 @@ ls -la /Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_
- It auto-discovers repos under `/Users/sd9235/code/mygh/` that have `docs/WINDSURF/` or `.windsurf/workflows/`.
- A **launchd job** runs this daily at 11 PM: `~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist`.
- Logs: `.last-refresh.log` (stats), `.launchd-stdout.log` / `.launchd-stderr.log` (scheduled run output).
- **See also:** [Workflow Sync Guide](/Users/sd9235/code/mygh/learning_ai_common_plat/docs/guides/WORKFLOW_SYNC.md) — how to keep workflows consistent across repos.
## Manage the scheduled job

View File

@ -0,0 +1,51 @@
---
description: Regenerate AI agent docs (AGENTS.md, CLAUDE.md, .cursorrules, etc.) across all repos
---
# Update Agent Docs Across Workspace
Regenerates all 8 AI agent configuration files across all repos in the workspace.
## Files Generated Per Repo
| File | Tool |
| --------------------------------- | ----------------------------------------------- |
| `AGENTS.md` | Universal (OpenAI Codex, Claude, Copilot, etc.) |
| `CLAUDE.md` | Claude Code |
| `.cursorrules` | Cursor AI |
| `.github/copilot-instructions.md` | GitHub Copilot |
| `.windsurfrules` | Windsurf / Cascade |
| `.clinerules` | Cline / Roo Code |
| `.aider.conf.yml` | Aider |
| `.editorconfig` | All editors |
## Steps
1. Run the update script:
```bash
cd /Users/sd9235/code/mygh/learning_ai_common_plat
./scripts/update-agent-docs.sh
```
2. Review changes per repo:
```bash
cd /Users/sd9235/code/mygh/learning_voice_ai_agent && git diff --stat
cd /Users/sd9235/code/mygh/learning_multimodal_memory_agents && git diff --stat
# ... etc for all repos
```
3. Commit changes (if any):
```bash
cd /Users/sd9235/code/mygh/learning_voice_ai_agent
[ -n "$(git status --porcelain)" ] && git add -A && git commit -m "chore(docs): update agent configuration files"
```
## Notes
- The script scans each repo's structure and regenerates docs based on current state
- Only commits if there are actual changes
- Safe to run repeatedly (idempotent)
- Requires `learning_ai_common_plat` to be the source of truth for templates

View File

@ -0,0 +1,67 @@
---
description: Refresh the Windsurf chat history archive (re-scan all repos, update symlinks, copy docs/workflows)
---
# Refresh Windsurf Chat History Archive
Refreshes the centralized Windsurf chat history archive at `__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/`.
Auto-discovers new repos, updates symlinks, and re-copies docs + workflows.
## Covered Repos (All 8 workspaces)
| Repo | Product | Workflows | Docs |
| ----------------------------------- | ---------------- | --------- | ---- |
| `learning_voice_ai_agent` | LysnrAI | ✅ | ✅ |
| `learning_multimodal_memory_agents` | MindLyst | ✅ | ✅ |
| `learning_ai_clock` | ChronoMind | ✅ | — |
| `learning_ai_peakpulse` | PeakPulse | ✅ | — |
| `learning_ai_fastgap` | NomGap | ✅ | — |
| `learning_ai_jarvis_jr` | JarvisJr | ✅ | — |
| `learning_ai_common_plat` | Common Platform | ✅ | — |
| `learning_agent_monitoring_fx` | Agent Monitoring | ✅ | — |
## Steps
// turbo
1. Run the refresh script:
```bash
/Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/refresh.sh
```
2. Check the refresh log:
```bash
cat /Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/.last-refresh.log
```
3. Verify symlinks are valid:
```bash
ls -la /Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/ | grep "^l"
```
## Notes
- The script is **idempotent** — safe to run any number of times.
- It auto-discovers repos under `/Users/sd9235/code/mygh/` that have `docs/WINDSURF/` or `.windsurf/workflows/`.
- A **launchd job** runs this daily at 11 PM: `~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist`.
- Logs: `.last-refresh.log` (stats), `.launchd-stdout.log` / `.launchd-stderr.log` (scheduled run output).
- **See also:** [Workflow Sync Guide](/Users/sd9235/code/mygh/learning_ai_common_plat/docs/guides/WORKFLOW_SYNC.md) — how to keep workflows consistent across repos.
## Manage the scheduled job
```bash
# Check if running
launchctl list | grep windsurf-archive
# Stop
launchctl unload ~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist
# Start
launchctl load ~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist
# Force run now
launchctl start com.sd9235.windsurf-archive-refresh
```

View File

@ -0,0 +1,55 @@
---
description: Backup main branches then push all repos to origin in sequence
---
# Backup & Push All Repos
Combines `/repo_backup-main-branch` and `/repo_push-repos` into a single sequential workflow. Ideal for end-of-session save-all.
## Step 1: Backup main branches
Creates timestamped backup branches with smart duplicate detection.
// turbo
Run `bash scripts/backup-main.sh` from any repository root
## Step 2: Push all repos to origin
// turbo
```bash
for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents learning_ai_clock learning_ai_fastgap learning_ai_jarvis_jr learning_ai_peakpulse; do
echo "━━━ Pushing $repo ━━━"
(cd ~/code/mygh/$repo && git push origin main 2>&1)
done
echo ""
echo "✨ All repos pushed!"
```
## What it does:
1. **Backup** — creates timestamped backup branches, cleans up old ones (7 days), skips duplicates
2. **Push** — pushes `main` to `origin/main` for all 7 repos
## Repositories:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
## When to use:
- End of a work session
- Before switching machines
- After a batch of commits across repos
- Anytime you want a safe checkpoint + sync to remote
## Notes:
- Backup runs first so the backup branch includes the latest local commits
- Push only pushes `main` — backup branches are pushed by the backup script itself
- If push fails (diverged remote), run `/repo_sync-repos` first to pull

View File

@ -0,0 +1,36 @@
---
description: Smart backup of main branches with duplicate detection
---
# Backup Main Branch
Creates smart backups of main branches across all repositories.
// turbo
Run `bash scripts/backup-main.sh` from any repository root
## What it does:
1. Checks each repository for changes
2. Skips backup if main hasn't changed since last backup
3. Creates timestamped backup branch
4. Cleans up old backups (keeps 7 days)
5. Returns to main branch
## Repositories covered:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
## Features:
- ✅ Smart duplicate detection
- ✅ Automatic cleanup of old backups
- ✅ Multi-repo support
- ✅ Safe operations (always returns to main)
- ✅ Color-coded output for clarity

View File

@ -0,0 +1,117 @@
---
description: Commit all workspace changes in logical order with intelligent messages
date: 2025-02-12
---
# Commit Workspace
Scans all repositories for pending changes and commits them in logical order with intelligent commit messages.
// turbo
~/commit-workspace.sh
## What it does:
1. **Scans** all 7 repos for changes:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
2. **Analyzes** changed files to determine:
- Commit scope (auth, ci, docs, feat, chore, etc.)
- Appropriate commit message
- Logical grouping
3. **Commits** in dependency order:
- Always commits common platform first
- Then other repos
4. Does **NOT** push — use `/repo_sync-repos` or `git push` separately
## Commit Message Logic:
The script analyzes file types to generate appropriate messages:
| File Pattern | Commit Message Example |
| ------------------------- | ---------------------------------------------------- |
| auth/middleware/jwt files | `feat(auth): update authentication and middleware` |
| .github/workflows/ | `ci: update CI/CD configuration` |
| Dockerfile + package.json | `feat: update Dockerfile for pnpm workspace support` |
| package.json, lock files | `chore: update dependencies` |
| \*.md files | `docs: update documentation` |
| \*.py, requirements.txt | `feat(python): update Python modules` |
| test/, _spec_ | `test: add/update tests` |
| .env, config files | `chore: update configuration` |
| Other files | `chore: update project files` |
## Usage:
```bash
# Run from anywhere
~/commit-workspace.sh
# Or via Windsurf
/commit-workspace
```
## Example Output:
```
📋 Scanning workspace for changes...
📁 learning_ai_common_plat:
- 2 staged
- 1 modified
📁 learning_voice_ai_agent:
- 3 untracked
Found changes in 2 repo(s)
🚀 Committing in dependency order...
📝 Committing learning_ai_common_plat...
Message: feat(auth): update authentication and middleware
✅ Committed
📝 Committing learning_voice_ai_agent...
Message: docs: update documentation
✅ Committed
✨ All changes committed locally!
💡 Use /repo_sync-repos or git push to push to remote
```
## Features:
- ✅ No prompts - fully automated
- ✅ Intelligent commit messages
- ✅ Logical dependency order
- ✅ Stages all changes automatically
- ✅ Local commits only (no push)
- ✅ Clean, colored output
## Safety:
- Always shows what will be committed
- Uses conventional commit format
- Commits in correct order to avoid issues
- Preserves all changes
## When to Use:
- After making changes across multiple repos
- Before switching contexts/tasks
- At the end of a development session
- When preparing for releases
## Notes:
- Script location: `~/commit-workspace.sh`
- Requires git access to all repos
- Works with any branch (but assumes main is primary)
- Will skip repos with no changes

View File

@ -0,0 +1,44 @@
---
description: Pull latest from origin main across all 7 workspace repos
---
# Sync Repos
Pulls the latest changes from `origin/main` for all workspace repositories.
// turbo
```bash
for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents learning_ai_clock learning_ai_fastgap learning_ai_jarvis_jr learning_ai_peakpulse; do
echo "━━━ $repo ━━━"
(cd ~/code/mygh/$repo && git pull --ff-only origin main)
done
```
## What it does:
1. Iterates over all 7 workspace repos
2. Runs `git pull --ff-only origin main` in each
3. Fails fast if there are local divergent commits (use `git pull --rebase` manually in that case)
## Repositories:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
## When to use:
- Starting a new work session
- After pushing changes from another machine
- Before running `/repo_backup-main-branch`
## Notes:
- Uses `--ff-only` to prevent accidental merge commits
- If a repo has uncommitted changes, `git pull` will still work (fast-forward only)
- If a repo has diverged from origin, the pull will fail safely — resolve manually

View File

@ -0,0 +1,51 @@
---
description: Regenerate AI agent docs (AGENTS.md, CLAUDE.md, .cursorrules, etc.) across all repos
---
# Update Agent Docs Across Workspace
Regenerates all 8 AI agent configuration files across all repos in the workspace.
## Files Generated Per Repo
| File | Tool |
| --------------------------------- | ----------------------------------------------- |
| `AGENTS.md` | Universal (OpenAI Codex, Claude, Copilot, etc.) |
| `CLAUDE.md` | Claude Code |
| `.cursorrules` | Cursor AI |
| `.github/copilot-instructions.md` | GitHub Copilot |
| `.windsurfrules` | Windsurf / Cascade |
| `.clinerules` | Cline / Roo Code |
| `.aider.conf.yml` | Aider |
| `.editorconfig` | All editors |
## Steps
1. Run the update script:
```bash
cd /Users/sd9235/code/mygh/learning_ai_common_plat
./scripts/update-agent-docs.sh
```
2. Review changes per repo:
```bash
cd /Users/sd9235/code/mygh/learning_voice_ai_agent && git diff --stat
cd /Users/sd9235/code/mygh/learning_multimodal_memory_agents && git diff --stat
# ... etc for all repos
```
3. Commit changes (if any):
```bash
cd /Users/sd9235/code/mygh/learning_voice_ai_agent
[ -n "$(git status --porcelain)" ] && git add -A && git commit -m "chore(docs): update agent configuration files"
```
## Notes
- The script scans each repo's structure and regenerates docs based on current state
- Only commits if there are actual changes
- Safe to run repeatedly (idempotent)
- Requires `learning_ai_common_plat` to be the source of truth for templates

View File

@ -0,0 +1,67 @@
---
description: Refresh the Windsurf chat history archive (re-scan all repos, update symlinks, copy docs/workflows)
---
# Refresh Windsurf Chat History Archive
Refreshes the centralized Windsurf chat history archive at `__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/`.
Auto-discovers new repos, updates symlinks, and re-copies docs + workflows.
## Covered Repos (All 8 workspaces)
| Repo | Product | Workflows | Docs |
| ----------------------------------- | ---------------- | --------- | ---- |
| `learning_voice_ai_agent` | LysnrAI | ✅ | ✅ |
| `learning_multimodal_memory_agents` | MindLyst | ✅ | ✅ |
| `learning_ai_clock` | ChronoMind | ✅ | — |
| `learning_ai_peakpulse` | PeakPulse | ✅ | — |
| `learning_ai_fastgap` | NomGap | ✅ | — |
| `learning_ai_jarvis_jr` | JarvisJr | ✅ | — |
| `learning_ai_common_plat` | Common Platform | ✅ | — |
| `learning_agent_monitoring_fx` | Agent Monitoring | ✅ | — |
## Steps
// turbo
1. Run the refresh script:
```bash
/Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/refresh.sh
```
2. Check the refresh log:
```bash
cat /Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/.last-refresh.log
```
3. Verify symlinks are valid:
```bash
ls -la /Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/ | grep "^l"
```
## Notes
- The script is **idempotent** — safe to run any number of times.
- It auto-discovers repos under `/Users/sd9235/code/mygh/` that have `docs/WINDSURF/` or `.windsurf/workflows/`.
- A **launchd job** runs this daily at 11 PM: `~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist`.
- Logs: `.last-refresh.log` (stats), `.launchd-stdout.log` / `.launchd-stderr.log` (scheduled run output).
- **See also:** [Workflow Sync Guide](/Users/sd9235/code/mygh/learning_ai_common_plat/docs/guides/WORKFLOW_SYNC.md) — how to keep workflows consistent across repos.
## Manage the scheduled job
```bash
# Check if running
launchctl list | grep windsurf-archive
# Stop
launchctl unload ~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist
# Start
launchctl load ~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist
# Force run now
launchctl start com.sd9235.windsurf-archive-refresh
```

View File

@ -0,0 +1,55 @@
---
description: Backup main branches then push all repos to origin in sequence
---
# Backup & Push All Repos
Combines `/repo_backup-main-branch` and `/repo_push-repos` into a single sequential workflow. Ideal for end-of-session save-all.
## Step 1: Backup main branches
Creates timestamped backup branches with smart duplicate detection.
// turbo
Run `bash scripts/backup-main.sh` from any repository root
## Step 2: Push all repos to origin
// turbo
```bash
for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents learning_ai_clock learning_ai_fastgap learning_ai_jarvis_jr learning_ai_peakpulse; do
echo "━━━ Pushing $repo ━━━"
(cd ~/code/mygh/$repo && git push origin main 2>&1)
done
echo ""
echo "✨ All repos pushed!"
```
## What it does:
1. **Backup** — creates timestamped backup branches, cleans up old ones (7 days), skips duplicates
2. **Push** — pushes `main` to `origin/main` for all 7 repos
## Repositories:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
## When to use:
- End of a work session
- Before switching machines
- After a batch of commits across repos
- Anytime you want a safe checkpoint + sync to remote
## Notes:
- Backup runs first so the backup branch includes the latest local commits
- Push only pushes `main` — backup branches are pushed by the backup script itself
- If push fails (diverged remote), run `/repo_sync-repos` first to pull

View File

@ -0,0 +1,36 @@
---
description: Smart backup of main branches with duplicate detection
---
# Backup Main Branch
Creates smart backups of main branches across all repositories.
// turbo
Run `bash scripts/backup-main.sh` from any repository root
## What it does:
1. Checks each repository for changes
2. Skips backup if main hasn't changed since last backup
3. Creates timestamped backup branch
4. Cleans up old backups (keeps 7 days)
5. Returns to main branch
## Repositories covered:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
## Features:
- ✅ Smart duplicate detection
- ✅ Automatic cleanup of old backups
- ✅ Multi-repo support
- ✅ Safe operations (always returns to main)
- ✅ Color-coded output for clarity

View File

@ -0,0 +1,117 @@
---
description: Commit all workspace changes in logical order with intelligent messages
date: 2025-02-12
---
# Commit Workspace
Scans all repositories for pending changes and commits them in logical order with intelligent commit messages.
// turbo
~/commit-workspace.sh
## What it does:
1. **Scans** all 7 repos for changes:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
2. **Analyzes** changed files to determine:
- Commit scope (auth, ci, docs, feat, chore, etc.)
- Appropriate commit message
- Logical grouping
3. **Commits** in dependency order:
- Always commits common platform first
- Then other repos
4. Does **NOT** push — use `/repo_sync-repos` or `git push` separately
## Commit Message Logic:
The script analyzes file types to generate appropriate messages:
| File Pattern | Commit Message Example |
| ------------------------- | ---------------------------------------------------- |
| auth/middleware/jwt files | `feat(auth): update authentication and middleware` |
| .github/workflows/ | `ci: update CI/CD configuration` |
| Dockerfile + package.json | `feat: update Dockerfile for pnpm workspace support` |
| package.json, lock files | `chore: update dependencies` |
| \*.md files | `docs: update documentation` |
| \*.py, requirements.txt | `feat(python): update Python modules` |
| test/, _spec_ | `test: add/update tests` |
| .env, config files | `chore: update configuration` |
| Other files | `chore: update project files` |
## Usage:
```bash
# Run from anywhere
~/commit-workspace.sh
# Or via Windsurf
/commit-workspace
```
## Example Output:
```
📋 Scanning workspace for changes...
📁 learning_ai_common_plat:
- 2 staged
- 1 modified
📁 learning_voice_ai_agent:
- 3 untracked
Found changes in 2 repo(s)
🚀 Committing in dependency order...
📝 Committing learning_ai_common_plat...
Message: feat(auth): update authentication and middleware
✅ Committed
📝 Committing learning_voice_ai_agent...
Message: docs: update documentation
✅ Committed
✨ All changes committed locally!
💡 Use /repo_sync-repos or git push to push to remote
```
## Features:
- ✅ No prompts - fully automated
- ✅ Intelligent commit messages
- ✅ Logical dependency order
- ✅ Stages all changes automatically
- ✅ Local commits only (no push)
- ✅ Clean, colored output
## Safety:
- Always shows what will be committed
- Uses conventional commit format
- Commits in correct order to avoid issues
- Preserves all changes
## When to Use:
- After making changes across multiple repos
- Before switching contexts/tasks
- At the end of a development session
- When preparing for releases
## Notes:
- Script location: `~/commit-workspace.sh`
- Requires git access to all repos
- Works with any branch (but assumes main is primary)
- Will skip repos with no changes

View File

@ -0,0 +1,44 @@
---
description: Pull latest from origin main across all 7 workspace repos
---
# Sync Repos
Pulls the latest changes from `origin/main` for all workspace repositories.
// turbo
```bash
for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents learning_ai_clock learning_ai_fastgap learning_ai_jarvis_jr learning_ai_peakpulse; do
echo "━━━ $repo ━━━"
(cd ~/code/mygh/$repo && git pull --ff-only origin main)
done
```
## What it does:
1. Iterates over all 7 workspace repos
2. Runs `git pull --ff-only origin main` in each
3. Fails fast if there are local divergent commits (use `git pull --rebase` manually in that case)
## Repositories:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
## When to use:
- Starting a new work session
- After pushing changes from another machine
- Before running `/repo_backup-main-branch`
## Notes:
- Uses `--ff-only` to prevent accidental merge commits
- If a repo has uncommitted changes, `git pull` will still work (fast-forward only)
- If a repo has diverged from origin, the pull will fail safely — resolve manually

View File

@ -0,0 +1,51 @@
---
description: Regenerate AI agent docs (AGENTS.md, CLAUDE.md, .cursorrules, etc.) across all repos
---
# Update Agent Docs Across Workspace
Regenerates all 8 AI agent configuration files across all repos in the workspace.
## Files Generated Per Repo
| File | Tool |
| --------------------------------- | ----------------------------------------------- |
| `AGENTS.md` | Universal (OpenAI Codex, Claude, Copilot, etc.) |
| `CLAUDE.md` | Claude Code |
| `.cursorrules` | Cursor AI |
| `.github/copilot-instructions.md` | GitHub Copilot |
| `.windsurfrules` | Windsurf / Cascade |
| `.clinerules` | Cline / Roo Code |
| `.aider.conf.yml` | Aider |
| `.editorconfig` | All editors |
## Steps
1. Run the update script:
```bash
cd /Users/sd9235/code/mygh/learning_ai_common_plat
./scripts/update-agent-docs.sh
```
2. Review changes per repo:
```bash
cd /Users/sd9235/code/mygh/learning_voice_ai_agent && git diff --stat
cd /Users/sd9235/code/mygh/learning_multimodal_memory_agents && git diff --stat
# ... etc for all repos
```
3. Commit changes (if any):
```bash
cd /Users/sd9235/code/mygh/learning_voice_ai_agent
[ -n "$(git status --porcelain)" ] && git add -A && git commit -m "chore(docs): update agent configuration files"
```
## Notes
- The script scans each repo's structure and regenerates docs based on current state
- Only commits if there are actual changes
- Safe to run repeatedly (idempotent)
- Requires `learning_ai_common_plat` to be the source of truth for templates

View File

@ -0,0 +1,67 @@
---
description: Refresh the Windsurf chat history archive (re-scan all repos, update symlinks, copy docs/workflows)
---
# Refresh Windsurf Chat History Archive
Refreshes the centralized Windsurf chat history archive at `__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/`.
Auto-discovers new repos, updates symlinks, and re-copies docs + workflows.
## Covered Repos (All 8 workspaces)
| Repo | Product | Workflows | Docs |
| ----------------------------------- | ---------------- | --------- | ---- |
| `learning_voice_ai_agent` | LysnrAI | ✅ | ✅ |
| `learning_multimodal_memory_agents` | MindLyst | ✅ | ✅ |
| `learning_ai_clock` | ChronoMind | ✅ | — |
| `learning_ai_peakpulse` | PeakPulse | ✅ | — |
| `learning_ai_fastgap` | NomGap | ✅ | — |
| `learning_ai_jarvis_jr` | JarvisJr | ✅ | — |
| `learning_ai_common_plat` | Common Platform | ✅ | — |
| `learning_agent_monitoring_fx` | Agent Monitoring | ✅ | — |
## Steps
// turbo
1. Run the refresh script:
```bash
/Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/refresh.sh
```
2. Check the refresh log:
```bash
cat /Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/.last-refresh.log
```
3. Verify symlinks are valid:
```bash
ls -la /Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/ | grep "^l"
```
## Notes
- The script is **idempotent** — safe to run any number of times.
- It auto-discovers repos under `/Users/sd9235/code/mygh/` that have `docs/WINDSURF/` or `.windsurf/workflows/`.
- A **launchd job** runs this daily at 11 PM: `~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist`.
- Logs: `.last-refresh.log` (stats), `.launchd-stdout.log` / `.launchd-stderr.log` (scheduled run output).
- **See also:** [Workflow Sync Guide](/Users/sd9235/code/mygh/learning_ai_common_plat/docs/guides/WORKFLOW_SYNC.md) — how to keep workflows consistent across repos.
## Manage the scheduled job
```bash
# Check if running
launchctl list | grep windsurf-archive
# Stop
launchctl unload ~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist
# Start
launchctl load ~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist
# Force run now
launchctl start com.sd9235.windsurf-archive-refresh
```

View File

@ -1,31 +1,55 @@
---
description: Backup main branch then push PeakPulse repo to origin
description: Backup main branches then push all repos to origin in sequence
---
1. Check for uncommitted changes
# Backup & Push All Repos
Combines `/repo_backup-main-branch` and `/repo_push-repos` into a single sequential workflow. Ideal for end-of-session save-all.
## Step 1: Backup main branches
Creates timestamped backup branches with smart duplicate detection.
// turbo
```bash
cd /Users/sd9235/code/mygh/learning_ai_peakpulse && git status --short
```
Run `bash scripts/backup-main.sh` from any repository root
2. If there are changes, commit them with an appropriate message
```bash
cd /Users/sd9235/code/mygh/learning_ai_peakpulse && git add -A && git commit -m "chore: save work in progress"
```
## Step 2: Push all repos to origin
3. Create a timestamped backup branch
// turbo
```bash
cd /Users/sd9235/code/mygh/learning_ai_peakpulse && git branch backup/main-$(date +%Y%m%d-%H%M%S)
for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents learning_ai_clock learning_ai_fastgap learning_ai_jarvis_jr learning_ai_peakpulse; do
echo "━━━ Pushing $repo ━━━"
(cd ~/code/mygh/$repo && git push origin main 2>&1)
done
echo ""
echo "✨ All repos pushed!"
```
4. Push main to origin
```bash
cd /Users/sd9235/code/mygh/learning_ai_peakpulse && git push origin main
```
## What it does:
5. Verify push succeeded
// turbo
```bash
cd /Users/sd9235/code/mygh/learning_ai_peakpulse && git log --oneline -3
```
1. **Backup** — creates timestamped backup branches, cleans up old ones (7 days), skips duplicates
2. **Push** — pushes `main` to `origin/main` for all 7 repos
## Repositories:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
## When to use:
- End of a work session
- Before switching machines
- After a batch of commits across repos
- Anytime you want a safe checkpoint + sync to remote
## Notes:
- Backup runs first so the backup branch includes the latest local commits
- Push only pushes `main` — backup branches are pushed by the backup script itself
- If push fails (diverged remote), run `/repo_sync-repos` first to pull

View File

@ -2,26 +2,35 @@
description: Smart backup of main branches with duplicate detection
---
1. List existing backup branches
// turbo
```bash
cd /Users/sd9235/code/mygh/learning_ai_peakpulse && git branch --list 'backup/*' | tail -5
```
# Backup Main Branch
2. Get current HEAD commit
// turbo
```bash
cd /Users/sd9235/code/mygh/learning_ai_peakpulse && git rev-parse --short HEAD
```
Creates smart backups of main branches across all repositories.
3. Create backup branch with timestamp (skip if HEAD hasn't changed since last backup)
// turbo
```bash
cd /Users/sd9235/code/mygh/learning_ai_peakpulse && git branch backup/main-$(date +%Y%m%d-%H%M%S)
```
Run `bash scripts/backup-main.sh` from any repository root
4. Confirm backup created
// turbo
```bash
cd /Users/sd9235/code/mygh/learning_ai_peakpulse && git branch --list 'backup/*' | tail -3
```
## What it does:
1. Checks each repository for changes
2. Skips backup if main hasn't changed since last backup
3. Creates timestamped backup branch
4. Cleans up old backups (keeps 7 days)
5. Returns to main branch
## Repositories covered:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
## Features:
- ✅ Smart duplicate detection
- ✅ Automatic cleanup of old backups
- ✅ Multi-repo support
- ✅ Safe operations (always returns to main)
- ✅ Color-coded output for clarity

View File

@ -1,39 +1,117 @@
---
description: Commit all workspace changes in logical order with intelligent messages
date: 2025-02-12
---
# Commit Workspace Changes — PeakPulse
# Commit Workspace
## Steps
Scans all repositories for pending changes and commits them in logical order with intelligent commit messages.
1. Check for uncommitted changes:
// turbo
~/commit-workspace.sh
## What it does:
1. **Scans** all 7 repos for changes:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
2. **Analyzes** changed files to determine:
- Commit scope (auth, ci, docs, feat, chore, etc.)
- Appropriate commit message
- Logical grouping
3. **Commits** in dependency order:
- Always commits common platform first
- Then other repos
4. Does **NOT** push — use `/repo_sync-repos` or `git push` separately
## Commit Message Logic:
The script analyzes file types to generate appropriate messages:
| File Pattern | Commit Message Example |
| ------------------------- | ---------------------------------------------------- |
| auth/middleware/jwt files | `feat(auth): update authentication and middleware` |
| .github/workflows/ | `ci: update CI/CD configuration` |
| Dockerfile + package.json | `feat: update Dockerfile for pnpm workspace support` |
| package.json, lock files | `chore: update dependencies` |
| \*.md files | `docs: update documentation` |
| \*.py, requirements.txt | `feat(python): update Python modules` |
| test/, _spec_ | `test: add/update tests` |
| .env, config files | `chore: update configuration` |
| Other files | `chore: update project files` |
## Usage:
```bash
cd /Users/sd9235/code/mygh/learning_ai_peakpulse && git status --short
# Run from anywhere
~/commit-workspace.sh
# Or via Windsurf
/commit-workspace
```
2. If there are changes, stage all files:
// turbo
```bash
cd /Users/sd9235/code/mygh/learning_ai_peakpulse && git add -A
## Example Output:
```
📋 Scanning workspace for changes...
📁 learning_ai_common_plat:
- 2 staged
- 1 modified
📁 learning_voice_ai_agent:
- 3 untracked
Found changes in 2 repo(s)
🚀 Committing in dependency order...
📝 Committing learning_ai_common_plat...
Message: feat(auth): update authentication and middleware
✅ Committed
📝 Committing learning_voice_ai_agent...
Message: docs: update documentation
✅ Committed
✨ All changes committed locally!
💡 Use /repo_sync-repos or git push to push to remote
```
3. Review staged changes to craft an intelligent commit message:
// turbo
```bash
cd /Users/sd9235/code/mygh/learning_ai_peakpulse && git diff --cached --stat
```
## Features:
4. Commit with a descriptive single-line message following the convention `type(scope): description`:
```bash
cd /Users/sd9235/code/mygh/learning_ai_peakpulse && git commit -m "<type>(<scope>): <description>"
```
- ✅ No prompts - fully automated
- ✅ Intelligent commit messages
- ✅ Logical dependency order
- ✅ Stages all changes automatically
- ✅ Local commits only (no push)
- ✅ Clean, colored output
**Commit types:** feat, fix, docs, refactor, test, chore
**Common scopes:** models, services, views, components, platform, tests, config, docs
## Safety:
5. Verify commit:
// turbo
```bash
cd /Users/sd9235/code/mygh/learning_ai_peakpulse && git log -1 --oneline
```
- Always shows what will be committed
- Uses conventional commit format
- Commits in correct order to avoid issues
- Preserves all changes
## When to Use:
- After making changes across multiple repos
- Before switching contexts/tasks
- At the end of a development session
- When preparing for releases
## Notes:
- Script location: `~/commit-workspace.sh`
- Requires git access to all repos
- Works with any branch (but assumes main is primary)
- Will skip repos with no changes

View File

@ -1,24 +1,44 @@
---
description: Pull latest from origin main for PeakPulse repo
description: Pull latest from origin main across all 7 workspace repos
---
# Sync Repos — PeakPulse
# Sync Repos
## Steps
Pulls the latest changes from `origin/main` for all workspace repositories.
1. Ensure working tree is clean:
// turbo
```bash
cd /Users/sd9235/code/mygh/learning_ai_peakpulse && git status --short
for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents learning_ai_clock learning_ai_fastgap learning_ai_jarvis_jr learning_ai_peakpulse; do
echo "━━━ $repo ━━━"
(cd ~/code/mygh/$repo && git pull --ff-only origin main)
done
```
2. Pull latest from origin main:
```bash
cd /Users/sd9235/code/mygh/learning_ai_peakpulse && git pull origin main
```
## What it does:
3. Verify current state:
// turbo
```bash
cd /Users/sd9235/code/mygh/learning_ai_peakpulse && git log -3 --oneline
```
1. Iterates over all 7 workspace repos
2. Runs `git pull --ff-only origin main` in each
3. Fails fast if there are local divergent commits (use `git pull --rebase` manually in that case)
## Repositories:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
## When to use:
- Starting a new work session
- After pushing changes from another machine
- Before running `/repo_backup-main-branch`
## Notes:
- Uses `--ff-only` to prevent accidental merge commits
- If a repo has uncommitted changes, `git pull` will still work (fast-forward only)
- If a repo has diverged from origin, the pull will fail safely — resolve manually

View File

@ -0,0 +1,51 @@
---
description: Regenerate AI agent docs (AGENTS.md, CLAUDE.md, .cursorrules, etc.) across all repos
---
# Update Agent Docs Across Workspace
Regenerates all 8 AI agent configuration files across all repos in the workspace.
## Files Generated Per Repo
| File | Tool |
| --------------------------------- | ----------------------------------------------- |
| `AGENTS.md` | Universal (OpenAI Codex, Claude, Copilot, etc.) |
| `CLAUDE.md` | Claude Code |
| `.cursorrules` | Cursor AI |
| `.github/copilot-instructions.md` | GitHub Copilot |
| `.windsurfrules` | Windsurf / Cascade |
| `.clinerules` | Cline / Roo Code |
| `.aider.conf.yml` | Aider |
| `.editorconfig` | All editors |
## Steps
1. Run the update script:
```bash
cd /Users/sd9235/code/mygh/learning_ai_common_plat
./scripts/update-agent-docs.sh
```
2. Review changes per repo:
```bash
cd /Users/sd9235/code/mygh/learning_voice_ai_agent && git diff --stat
cd /Users/sd9235/code/mygh/learning_multimodal_memory_agents && git diff --stat
# ... etc for all repos
```
3. Commit changes (if any):
```bash
cd /Users/sd9235/code/mygh/learning_voice_ai_agent
[ -n "$(git status --porcelain)" ] && git add -A && git commit -m "chore(docs): update agent configuration files"
```
## Notes
- The script scans each repo's structure and regenerates docs based on current state
- Only commits if there are actual changes
- Safe to run repeatedly (idempotent)
- Requires `learning_ai_common_plat` to be the source of truth for templates

View File

@ -0,0 +1,67 @@
---
description: Refresh the Windsurf chat history archive (re-scan all repos, update symlinks, copy docs/workflows)
---
# Refresh Windsurf Chat History Archive
Refreshes the centralized Windsurf chat history archive at `__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/`.
Auto-discovers new repos, updates symlinks, and re-copies docs + workflows.
## Covered Repos (All 8 workspaces)
| Repo | Product | Workflows | Docs |
| ----------------------------------- | ---------------- | --------- | ---- |
| `learning_voice_ai_agent` | LysnrAI | ✅ | ✅ |
| `learning_multimodal_memory_agents` | MindLyst | ✅ | ✅ |
| `learning_ai_clock` | ChronoMind | ✅ | — |
| `learning_ai_peakpulse` | PeakPulse | ✅ | — |
| `learning_ai_fastgap` | NomGap | ✅ | — |
| `learning_ai_jarvis_jr` | JarvisJr | ✅ | — |
| `learning_ai_common_plat` | Common Platform | ✅ | — |
| `learning_agent_monitoring_fx` | Agent Monitoring | ✅ | — |
## Steps
// turbo
1. Run the refresh script:
```bash
/Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/refresh.sh
```
2. Check the refresh log:
```bash
cat /Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/.last-refresh.log
```
3. Verify symlinks are valid:
```bash
ls -la /Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/ | grep "^l"
```
## Notes
- The script is **idempotent** — safe to run any number of times.
- It auto-discovers repos under `/Users/sd9235/code/mygh/` that have `docs/WINDSURF/` or `.windsurf/workflows/`.
- A **launchd job** runs this daily at 11 PM: `~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist`.
- Logs: `.last-refresh.log` (stats), `.launchd-stdout.log` / `.launchd-stderr.log` (scheduled run output).
- **See also:** [Workflow Sync Guide](/Users/sd9235/code/mygh/learning_ai_common_plat/docs/guides/WORKFLOW_SYNC.md) — how to keep workflows consistent across repos.
## Manage the scheduled job
```bash
# Check if running
launchctl list | grep windsurf-archive
# Stop
launchctl unload ~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist
# Start
launchctl load ~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist
# Force run now
launchctl start com.sd9235.windsurf-archive-refresh
```

View File

@ -0,0 +1,188 @@
---
description: Build and upload MindLyst iOS app to TestFlight for beta testing
---
## Release MindLyst to TestFlight
Push a new iOS beta build of MindLyst to TestFlight.
---
## Fresh Mac Setup (from scratch)
### 1. Install tools
```bash
xcode-select --install # Xcode Command Line Tools
brew install openjdk@17 # Java 17 for Gradle/KMP
```
Then install full **Xcode** from the Mac App Store (required for iOS builds).
### 2. Sign in to Apple Developer
1. Open Xcode → Settings → Accounts → **+** → Apple ID
2. Sign in with your Apple Developer account
3. Xcode auto-downloads provisioning profiles and signing certificates
### 3. Create the Xcode project (one-time only)
MindLyst iOS uses KMP (Kotlin Multiplatform). The `.xcodeproj` must be created manually:
1. Open Xcode → File → New → Project → iOS → App
2. Settings:
- Product Name: `MindLyst`
- Organization Identifier: `com.mindlyst`
- Interface: **SwiftUI**
- Language: **Swift**
- Save inside: `mindlyst-native/`
3. Delete the default `ContentView.swift` and `MindLystApp.swift` created by Xcode
4. Drag the existing Swift files from `iosApp/` into the Xcode project:
- `MindLystApp.swift`, `ContentView.swift`, `MindLystTheme.swift`
- `Components/` folder (CaptureOrb.swift, BrainChipAndTriageCard.swift)
- `Navigation/` folder (MainTabView.swift)
- `Screens/` folder (HomeScreen, CaptureScreen, SettingsScreen, BrainDetailScreen)
5. Link the KMP shared framework (see Step 4 of build steps below)
See `iosApp/README_SETUP.md` for more details.
### 4. Verify Gradle/KMP builds
// turbo
```bash
cd mindlyst-native && ./gradlew :shared:compileKotlinIosSimulatorArm64
```
---
## Build + Upload Steps
### 1. Build the KMP shared framework
This compiles the Kotlin shared module into an iOS framework.
```bash
cd mindlyst-native && ./gradlew :shared:compileKotlinIosArm64
```
For simulator testing:
```bash
cd mindlyst-native && ./gradlew :shared:compileKotlinIosSimulatorArm64
```
### 2. Embed the shared framework in Xcode
If not already linked:
```bash
cd mindlyst-native && ./gradlew :shared:embedAndSignAppleFrameworkForXcode
```
Or manually: Xcode → Target → Build Phases → Link Binary With Libraries → add `shared.framework`
### 3. Bump the build number
Cascade will auto-increment `CURRENT_PROJECT_VERSION` in `project.pbxproj` (both Debug and Release).
Or manually: open Xcode → Target → General → Build.
### 4. Clean build folder
// turbo
```bash
xcodebuild clean -project mindlyst-native/MindLyst.xcodeproj -scheme MindLyst -configuration Release 2>&1 | tail -3
```
### 5. Archive the app
```bash
xcodebuild archive \
-project mindlyst-native/MindLyst.xcodeproj \
-scheme MindLyst \
-configuration Release \
-archivePath build/MindLyst.xcarchive \
-destination 'generic/platform=iOS' \
DEVELOPMENT_TEAM=748N7QPX7J \
CODE_SIGN_STYLE=Automatic
```
> **Note:** If using a `.xcworkspace` (e.g. with CocoaPods), replace `-project` with `-workspace`.
### 6. Export + upload to App Store Connect
```bash
xcodebuild -exportArchive \
-archivePath build/MindLyst.xcarchive \
-exportPath build/export \
-exportOptionsPlist scripts/MindLystExportOptions.plist
```
The `app-store-connect` export method auto-uploads the IPA.
### 7. Enable for testers
1. Go to [App Store Connect](https://appstoreconnect.apple.com) → My Apps → MindLyst → TestFlight
2. Wait ~5-15 min for processing
3. Click the new build → add to testing group
- **Internal Testing**: available immediately
- **External Testing**: fill in "What to Test" notes, submit for review (~24h)
---
## Alternative: Xcode GUI
1. Open `mindlyst-native/MindLyst.xcodeproj` in Xcode
2. Scheme: **MindLyst**, destination: **Any iOS Device**
3. Product → Archive
4. Organizer → Distribute App → App Store Connect → Upload
---
## Reference
### Key Paths
| Path | Purpose |
| ------------------------------------------- | ---------------------------------------- |
| `mindlyst-native/iosApp/` | Swift UI source files |
| `mindlyst-native/shared/` | KMP shared module (business logic) |
| `mindlyst-native/shared/build.gradle.kts` | KMP build config (iOS targets) |
| `mindlyst-native/gradle/libs.versions.toml` | Version catalog |
| `mindlyst-native/MindLyst.xcodeproj/` | Xcode project (must be created manually) |
| `scripts/MindLystExportOptions.plist` | Export options for TestFlight upload |
### Build Identity
| Field | Value |
| ------------- | ----------------------- |
| Team ID | `748N7QPX7J` |
| Bundle ID | `com.mindlyst.MindLyst` |
| Signing | Automatic |
| KMP Framework | `shared` (static) |
| Min iOS | 16.0 |
### KMP Architecture
```
shared/src/commonMain/ → Business logic (Kotlin)
↓ compiles to
shared.framework → iOS static framework
↓ linked by
iosApp/ (SwiftUI) → Thin UI shell
```
All business logic lives in `shared/src/commonMain/`. iOS code in `iosApp/` is a thin UI shell.
### Troubleshooting
| Problem | Fix |
| ----------------------------- | ------------------------------------------------------------------------ |
| "No signing certificate" | Xcode → Settings → Accounts → Manage Certificates → + Apple Distribution |
| "Provisioning profile" error | Xcode → Target → Signing → Enable "Automatically manage signing" |
| "Build number already exists" | Increment build number in step 3 |
| KMP build fails | Check Java 17: `java -version`. Install: `brew install openjdk@17` |
| "shared.framework not found" | Run `./gradlew :shared:embedAndSignAppleFrameworkForXcode` |
| Gradle SSL proxy error | Build on home network (corporate proxy blocks Gradle repos) |
| Processing >30 min | Check [Apple system status](https://developer.apple.com/system-status/) |

View File

@ -0,0 +1,55 @@
---
description: Backup main branches then push all repos to origin in sequence
---
# Backup & Push All Repos
Combines `/repo_backup-main-branch` and `/repo_push-repos` into a single sequential workflow. Ideal for end-of-session save-all.
## Step 1: Backup main branches
Creates timestamped backup branches with smart duplicate detection.
// turbo
Run `bash scripts/backup-main.sh` from any repository root
## Step 2: Push all repos to origin
// turbo
```bash
for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents learning_ai_clock learning_ai_fastgap learning_ai_jarvis_jr learning_ai_peakpulse; do
echo "━━━ Pushing $repo ━━━"
(cd ~/code/mygh/$repo && git push origin main 2>&1)
done
echo ""
echo "✨ All repos pushed!"
```
## What it does:
1. **Backup** — creates timestamped backup branches, cleans up old ones (7 days), skips duplicates
2. **Push** — pushes `main` to `origin/main` for all 7 repos
## Repositories:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
## When to use:
- End of a work session
- Before switching machines
- After a batch of commits across repos
- Anytime you want a safe checkpoint + sync to remote
## Notes:
- Backup runs first so the backup branch includes the latest local commits
- Push only pushes `main` — backup branches are pushed by the backup script itself
- If push fails (diverged remote), run `/repo_sync-repos` first to pull

View File

@ -0,0 +1,36 @@
---
description: Smart backup of main branches with duplicate detection
---
# Backup Main Branch
Creates smart backups of main branches across all repositories.
// turbo
Run `bash scripts/backup-main.sh` from any repository root
## What it does:
1. Checks each repository for changes
2. Skips backup if main hasn't changed since last backup
3. Creates timestamped backup branch
4. Cleans up old backups (keeps 7 days)
5. Returns to main branch
## Repositories covered:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
## Features:
- ✅ Smart duplicate detection
- ✅ Automatic cleanup of old backups
- ✅ Multi-repo support
- ✅ Safe operations (always returns to main)
- ✅ Color-coded output for clarity

View File

@ -0,0 +1,117 @@
---
description: Commit all workspace changes in logical order with intelligent messages
date: 2025-02-12
---
# Commit Workspace
Scans all repositories for pending changes and commits them in logical order with intelligent commit messages.
// turbo
~/commit-workspace.sh
## What it does:
1. **Scans** all 7 repos for changes:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
2. **Analyzes** changed files to determine:
- Commit scope (auth, ci, docs, feat, chore, etc.)
- Appropriate commit message
- Logical grouping
3. **Commits** in dependency order:
- Always commits common platform first
- Then other repos
4. Does **NOT** push — use `/repo_sync-repos` or `git push` separately
## Commit Message Logic:
The script analyzes file types to generate appropriate messages:
| File Pattern | Commit Message Example |
| ------------------------- | ---------------------------------------------------- |
| auth/middleware/jwt files | `feat(auth): update authentication and middleware` |
| .github/workflows/ | `ci: update CI/CD configuration` |
| Dockerfile + package.json | `feat: update Dockerfile for pnpm workspace support` |
| package.json, lock files | `chore: update dependencies` |
| \*.md files | `docs: update documentation` |
| \*.py, requirements.txt | `feat(python): update Python modules` |
| test/, _spec_ | `test: add/update tests` |
| .env, config files | `chore: update configuration` |
| Other files | `chore: update project files` |
## Usage:
```bash
# Run from anywhere
~/commit-workspace.sh
# Or via Windsurf
/commit-workspace
```
## Example Output:
```
📋 Scanning workspace for changes...
📁 learning_ai_common_plat:
- 2 staged
- 1 modified
📁 learning_voice_ai_agent:
- 3 untracked
Found changes in 2 repo(s)
🚀 Committing in dependency order...
📝 Committing learning_ai_common_plat...
Message: feat(auth): update authentication and middleware
✅ Committed
📝 Committing learning_voice_ai_agent...
Message: docs: update documentation
✅ Committed
✨ All changes committed locally!
💡 Use /repo_sync-repos or git push to push to remote
```
## Features:
- ✅ No prompts - fully automated
- ✅ Intelligent commit messages
- ✅ Logical dependency order
- ✅ Stages all changes automatically
- ✅ Local commits only (no push)
- ✅ Clean, colored output
## Safety:
- Always shows what will be committed
- Uses conventional commit format
- Commits in correct order to avoid issues
- Preserves all changes
## When to Use:
- After making changes across multiple repos
- Before switching contexts/tasks
- At the end of a development session
- When preparing for releases
## Notes:
- Script location: `~/commit-workspace.sh`
- Requires git access to all repos
- Works with any branch (but assumes main is primary)
- Will skip repos with no changes

View File

@ -0,0 +1,44 @@
---
description: Pull latest from origin main across all 7 workspace repos
---
# Sync Repos
Pulls the latest changes from `origin/main` for all workspace repositories.
// turbo
```bash
for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents learning_ai_clock learning_ai_fastgap learning_ai_jarvis_jr learning_ai_peakpulse; do
echo "━━━ $repo ━━━"
(cd ~/code/mygh/$repo && git pull --ff-only origin main)
done
```
## What it does:
1. Iterates over all 7 workspace repos
2. Runs `git pull --ff-only origin main` in each
3. Fails fast if there are local divergent commits (use `git pull --rebase` manually in that case)
## Repositories:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
## When to use:
- Starting a new work session
- After pushing changes from another machine
- Before running `/repo_backup-main-branch`
## Notes:
- Uses `--ff-only` to prevent accidental merge commits
- If a repo has uncommitted changes, `git pull` will still work (fast-forward only)
- If a repo has diverged from origin, the pull will fail safely — resolve manually

View File

@ -0,0 +1,51 @@
---
description: Regenerate AI agent docs (AGENTS.md, CLAUDE.md, .cursorrules, etc.) across all repos
---
# Update Agent Docs Across Workspace
Regenerates all 8 AI agent configuration files across all repos in the workspace.
## Files Generated Per Repo
| File | Tool |
| --------------------------------- | ----------------------------------------------- |
| `AGENTS.md` | Universal (OpenAI Codex, Claude, Copilot, etc.) |
| `CLAUDE.md` | Claude Code |
| `.cursorrules` | Cursor AI |
| `.github/copilot-instructions.md` | GitHub Copilot |
| `.windsurfrules` | Windsurf / Cascade |
| `.clinerules` | Cline / Roo Code |
| `.aider.conf.yml` | Aider |
| `.editorconfig` | All editors |
## Steps
1. Run the update script:
```bash
cd /Users/sd9235/code/mygh/learning_ai_common_plat
./scripts/update-agent-docs.sh
```
2. Review changes per repo:
```bash
cd /Users/sd9235/code/mygh/learning_voice_ai_agent && git diff --stat
cd /Users/sd9235/code/mygh/learning_multimodal_memory_agents && git diff --stat
# ... etc for all repos
```
3. Commit changes (if any):
```bash
cd /Users/sd9235/code/mygh/learning_voice_ai_agent
[ -n "$(git status --porcelain)" ] && git add -A && git commit -m "chore(docs): update agent configuration files"
```
## Notes
- The script scans each repo's structure and regenerates docs based on current state
- Only commits if there are actual changes
- Safe to run repeatedly (idempotent)
- Requires `learning_ai_common_plat` to be the source of truth for templates

View File

@ -0,0 +1,67 @@
---
description: Refresh the Windsurf chat history archive (re-scan all repos, update symlinks, copy docs/workflows)
---
# Refresh Windsurf Chat History Archive
Refreshes the centralized Windsurf chat history archive at `__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/`.
Auto-discovers new repos, updates symlinks, and re-copies docs + workflows.
## Covered Repos (All 8 workspaces)
| Repo | Product | Workflows | Docs |
| ----------------------------------- | ---------------- | --------- | ---- |
| `learning_voice_ai_agent` | LysnrAI | ✅ | ✅ |
| `learning_multimodal_memory_agents` | MindLyst | ✅ | ✅ |
| `learning_ai_clock` | ChronoMind | ✅ | — |
| `learning_ai_peakpulse` | PeakPulse | ✅ | — |
| `learning_ai_fastgap` | NomGap | ✅ | — |
| `learning_ai_jarvis_jr` | JarvisJr | ✅ | — |
| `learning_ai_common_plat` | Common Platform | ✅ | — |
| `learning_agent_monitoring_fx` | Agent Monitoring | ✅ | — |
## Steps
// turbo
1. Run the refresh script:
```bash
/Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/refresh.sh
```
2. Check the refresh log:
```bash
cat /Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/.last-refresh.log
```
3. Verify symlinks are valid:
```bash
ls -la /Users/sd9235/code/mygh/learning_ai_common_plat/__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/ | grep "^l"
```
## Notes
- The script is **idempotent** — safe to run any number of times.
- It auto-discovers repos under `/Users/sd9235/code/mygh/` that have `docs/WINDSURF/` or `.windsurf/workflows/`.
- A **launchd job** runs this daily at 11 PM: `~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist`.
- Logs: `.last-refresh.log` (stats), `.launchd-stdout.log` / `.launchd-stderr.log` (scheduled run output).
- **See also:** [Workflow Sync Guide](/Users/sd9235/code/mygh/learning_ai_common_plat/docs/guides/WORKFLOW_SYNC.md) — how to keep workflows consistent across repos.
## Manage the scheduled job
```bash
# Check if running
launchctl list | grep windsurf-archive
# Stop
launchctl unload ~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist
# Start
launchctl load ~/Library/LaunchAgents/com.sd9235.windsurf-archive-refresh.plist
# Force run now
launchctl start com.sd9235.windsurf-archive-refresh
```

View File

@ -0,0 +1,55 @@
---
description: Backup main branches then push all repos to origin in sequence
---
# Backup & Push All Repos
Combines `/repo_backup-main-branch` and `/repo_push-repos` into a single sequential workflow. Ideal for end-of-session save-all.
## Step 1: Backup main branches
Creates timestamped backup branches with smart duplicate detection.
// turbo
Run `bash scripts/backup-main.sh` from any repository root
## Step 2: Push all repos to origin
// turbo
```bash
for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents learning_ai_clock learning_ai_fastgap learning_ai_jarvis_jr learning_ai_peakpulse; do
echo "━━━ Pushing $repo ━━━"
(cd ~/code/mygh/$repo && git push origin main 2>&1)
done
echo ""
echo "✨ All repos pushed!"
```
## What it does:
1. **Backup** — creates timestamped backup branches, cleans up old ones (7 days), skips duplicates
2. **Push** — pushes `main` to `origin/main` for all 7 repos
## Repositories:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
## When to use:
- End of a work session
- Before switching machines
- After a batch of commits across repos
- Anytime you want a safe checkpoint + sync to remote
## Notes:
- Backup runs first so the backup branch includes the latest local commits
- Push only pushes `main` — backup branches are pushed by the backup script itself
- If push fails (diverged remote), run `/repo_sync-repos` first to pull

View File

@ -0,0 +1,36 @@
---
description: Smart backup of main branches with duplicate detection
---
# Backup Main Branch
Creates smart backups of main branches across all repositories.
// turbo
Run `bash scripts/backup-main.sh` from any repository root
## What it does:
1. Checks each repository for changes
2. Skips backup if main hasn't changed since last backup
3. Creates timestamped backup branch
4. Cleans up old backups (keeps 7 days)
5. Returns to main branch
## Repositories covered:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
## Features:
- ✅ Smart duplicate detection
- ✅ Automatic cleanup of old backups
- ✅ Multi-repo support
- ✅ Safe operations (always returns to main)
- ✅ Color-coded output for clarity

View File

@ -0,0 +1,117 @@
---
description: Commit all workspace changes in logical order with intelligent messages
date: 2025-02-12
---
# Commit Workspace
Scans all repositories for pending changes and commits them in logical order with intelligent commit messages.
// turbo
~/commit-workspace.sh
## What it does:
1. **Scans** all 7 repos for changes:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
2. **Analyzes** changed files to determine:
- Commit scope (auth, ci, docs, feat, chore, etc.)
- Appropriate commit message
- Logical grouping
3. **Commits** in dependency order:
- Always commits common platform first
- Then other repos
4. Does **NOT** push — use `/repo_sync-repos` or `git push` separately
## Commit Message Logic:
The script analyzes file types to generate appropriate messages:
| File Pattern | Commit Message Example |
| ------------------------- | ---------------------------------------------------- |
| auth/middleware/jwt files | `feat(auth): update authentication and middleware` |
| .github/workflows/ | `ci: update CI/CD configuration` |
| Dockerfile + package.json | `feat: update Dockerfile for pnpm workspace support` |
| package.json, lock files | `chore: update dependencies` |
| \*.md files | `docs: update documentation` |
| \*.py, requirements.txt | `feat(python): update Python modules` |
| test/, _spec_ | `test: add/update tests` |
| .env, config files | `chore: update configuration` |
| Other files | `chore: update project files` |
## Usage:
```bash
# Run from anywhere
~/commit-workspace.sh
# Or via Windsurf
/commit-workspace
```
## Example Output:
```
📋 Scanning workspace for changes...
📁 learning_ai_common_plat:
- 2 staged
- 1 modified
📁 learning_voice_ai_agent:
- 3 untracked
Found changes in 2 repo(s)
🚀 Committing in dependency order...
📝 Committing learning_ai_common_plat...
Message: feat(auth): update authentication and middleware
✅ Committed
📝 Committing learning_voice_ai_agent...
Message: docs: update documentation
✅ Committed
✨ All changes committed locally!
💡 Use /repo_sync-repos or git push to push to remote
```
## Features:
- ✅ No prompts - fully automated
- ✅ Intelligent commit messages
- ✅ Logical dependency order
- ✅ Stages all changes automatically
- ✅ Local commits only (no push)
- ✅ Clean, colored output
## Safety:
- Always shows what will be committed
- Uses conventional commit format
- Commits in correct order to avoid issues
- Preserves all changes
## When to Use:
- After making changes across multiple repos
- Before switching contexts/tasks
- At the end of a development session
- When preparing for releases
## Notes:
- Script location: `~/commit-workspace.sh`
- Requires git access to all repos
- Works with any branch (but assumes main is primary)
- Will skip repos with no changes

View File

@ -0,0 +1,44 @@
---
description: Pull latest from origin main across all 7 workspace repos
---
# Sync Repos
Pulls the latest changes from `origin/main` for all workspace repositories.
// turbo
```bash
for repo in learning_ai_common_plat learning_voice_ai_agent learning_multimodal_memory_agents learning_ai_clock learning_ai_fastgap learning_ai_jarvis_jr learning_ai_peakpulse; do
echo "━━━ $repo ━━━"
(cd ~/code/mygh/$repo && git pull --ff-only origin main)
done
```
## What it does:
1. Iterates over all 7 workspace repos
2. Runs `git pull --ff-only origin main` in each
3. Fails fast if there are local divergent commits (use `git pull --rebase` manually in that case)
## Repositories:
- learning_ai_common_plat
- learning_voice_ai_agent
- learning_multimodal_memory_agents
- learning_ai_clock
- learning_ai_fastgap
- learning_ai_jarvis_jr
- learning_ai_peakpulse
## When to use:
- Starting a new work session
- After pushing changes from another machine
- Before running `/repo_backup-main-branch`
## Notes:
- Uses `--ff-only` to prevent accidental merge commits
- If a repo has uncommitted changes, `git pull` will still work (fast-forward only)
- If a repo has diverged from origin, the pull will fail safely — resolve manually

View File

@ -1,164 +1,51 @@
---
description: Scan all repos and regenerate AI agent docs (AGENTS.md, CLAUDE.md, .cursorrules, copilot-instructions) across the workspace
description: Regenerate AI agent docs (AGENTS.md, CLAUDE.md, .cursorrules, etc.) across all repos
---
# Update Agent Documentation
# Update Agent Docs Across Workspace
Scans all three workspace repos, builds a comprehensive understanding of the current state, and regenerates all AI agent communication files. Run this periodically — especially after adding packages, services, modules, or changing conventions.
Regenerates all 8 AI agent configuration files across all repos in the workspace.
## Repos Covered
## Files Generated Per Repo
| Repo | Path | Scope |
|------|------|-------|
| **learning_voice_ai_agent** | `$HOME/code/mygh/learning_voice_ai_agent` | LysnrAI product code (desktop, backend, dashboards) |
| **learning_ai_common_plat** | `$HOME/code/mygh/learning_ai_common_plat` | Shared @bytelyst/* packages + @lysnrai/* microservices |
| **learning_multimodal_memory_agents** | `$HOME/code/mygh/learning_multimodal_memory_agents` | MindLyst native app (KMP + SwiftUI + Compose + Next.js) |
## Files Updated Per Repo
| File | Tool | Format |
|------|------|--------|
| `AGENTS.md` | Universal (OpenAI Codex, all agents) | Detailed markdown — full onboarding, structure, conventions, patterns, ownership |
| `CLAUDE.md` | Claude Code (Anthropic) | Short markdown (<50 lines) compact quick-reference summary |
| `.cursorrules` | Cursor AI | Plain text — inline completion + chat rules |
| `.github/copilot-instructions.md` | GitHub Copilot | Markdown — code generation always/never lists |
| `.windsurfrules` | Windsurf / Codeium Cascade | Plain text — project rules for Windsurf memory system |
| `.clinerules` | Cline / Roo Code (VS Code) | Plain text — mandatory rules + key file locations |
| `.aider.conf.yml` | Aider | YAML — context files, conventions pointer, lint commands |
| `.editorconfig` | All editors / JetBrains AI | INI — indent, charset, line ending, trim rules |
---
| File | Tool |
| --------------------------------- | ----------------------------------------------- |
| `AGENTS.md` | Universal (OpenAI Codex, Claude, Copilot, etc.) |
| `CLAUDE.md` | Claude Code |
| `.cursorrules` | Cursor AI |
| `.github/copilot-instructions.md` | GitHub Copilot |
| `.windsurfrules` | Windsurf / Cascade |
| `.clinerules` | Cline / Roo Code |
| `.aider.conf.yml` | Aider |
| `.editorconfig` | All editors |
## Steps
### Phase 1: Gather Current State
1. Run the update script:
1. **Scan learning_voice_ai_agent structure:**
// turbo
- Run `find $HOME/code/mygh/learning_voice_ai_agent -maxdepth 2 -type f -name "package.json" -not -path "*/node_modules/*" | head -20` to find all JS projects
// turbo
- Run `find $HOME/code/mygh/learning_voice_ai_agent -maxdepth 1 -type f -name "*.py" -o -name "*.toml" -o -name "Makefile" | head -20` to find Python config
- Read `AGENTS.md`, `README_MONO_REPO.md`, `docker-compose.yml`, `pyproject.toml`
- Read each dashboard's `package.json` to check current `@bytelyst/*` dependencies
- List `user-dashboard-web/src/lib/` to see which lib files exist
- NOTE: admin-dashboard-web and tracker-dashboard-web moved to `../learning_ai_common_plat/dashboards/`
- Read `user-dashboard-web/src/lib/cosmos.ts` and `auth-server.ts` to verify which @bytelyst/* packages are wired
- Count Python tests: `find tests/ -name "test_*.py" | wc -l`
- Count API routes: `find user-dashboard-web/src/app/api -name "route.ts" | wc -l`
- Read `.github/workflows/` to count CI workflows
- Read `run-local-all-services.sh` header to understand service topology
```bash
cd /Users/sd9235/code/mygh/learning_ai_common_plat
./scripts/update-agent-docs.sh
```
2. **Scan learning_ai_common_plat structure:**
// turbo
- Run `find $HOME/code/mygh/learning_ai_common_plat/packages -maxdepth 2 -name "package.json" -not -path "*/node_modules/*"` to list all packages
// turbo
- Run `find $HOME/code/mygh/learning_ai_common_plat/services -maxdepth 2 -name "package.json" -not -path "*/node_modules/*"` to list all services
- Read `AGENTS.md`, `README.md`, `pnpm-workspace.yaml`, `tsconfig.base.json`
- Read each package's `src/index.ts` to catalog exports
- Read each service's `src/server.ts` to catalog registered modules
- Count tests: run `cd $HOME/code/mygh/learning_ai_common_plat && pnpm test 2>&1 | tail -5` (if quick) or count test files
- Read `packages/design-tokens/tokens/bytelyst.tokens.json` for current token state
- Check `packages/design-tokens/generated/` for what output formats exist
2. Review changes per repo:
3. **Scan learning_multimodal_memory_agents structure:**
// turbo
- Run `find $HOME/code/mygh/learning_multimodal_memory_agents/mindlyst-native -maxdepth 3 -name "*.kt" -o -name "*.swift" -o -name "*.tsx" | head -30`
- Read `AGENTS.md`, `README.md`, `ARCHITECTURE.md`
- Read `mindlyst-native/gradle/libs.versions.toml` for dependency versions
- Read `mindlyst-native/shared/build.gradle.kts` for KMP targets
- List `mindlyst-native/shared/src/commonMain/kotlin/com/mindlyst/shared/` for shared logic files
- List `mindlyst-native/iosApp/`, `mindlyst-native/web/src/pages/`
- Read `design-system/web/mindlyst.css` header for token sync state
```bash
cd /Users/sd9235/code/mygh/learning_voice_ai_agent && git diff --stat
cd /Users/sd9235/code/mygh/learning_multimodal_memory_agents && git diff --stat
# ... etc for all repos
```
### Phase 2: Identify Changes
3. Commit changes (if any):
4. **Compare current state against existing agent docs:**
- For each repo, diff the gathered info against what's already in AGENTS.md
- Identify: new packages, new services, new modules, changed conventions, new file ownership, new env vars, updated test counts, new CI workflows
- Note any stale or incorrect information in existing docs
5. **Build a change summary** — list what needs updating in each file before editing
### Phase 3: Update learning_voice_ai_agent Agent Docs
6. **Update `AGENTS.md`** — the most comprehensive file. Ensure these sections are current:
- **Project Identity** — product name, IDs, prefixes
- **Monorepo Layout** — directory tree with descriptions, including sibling repo structure
- **Tech Stack Rules** — Python, TypeScript services, TypeScript dashboards (with @bytelyst/* wiring)
- **Coding Conventions** — MUST/MUST NOT rules
- **File Ownership Map** — table mapping domains → services → key files (include all @bytelyst/* mappings)
- **How to Run Things** — start services, run tests, docker compose, seed
- **Common Patterns** — adding modules, pages, service clients, backend routes, debugging
- **Environment Variables** — required vars per service, env file locations
- **Key Documents** — table of "when you need to..." → "read this"
7. **Update `CLAUDE.md`** — compact summary (<50 lines):
- Identity, key commands, critical rules, current @bytelyst/* wiring state
8. **Update `.cursorrules`** — Cursor inline completion + chat rules:
- Project context, code generation patterns, naming conventions, import patterns
- Reference AGENTS.md for full details
9. **Update `.github/copilot-instructions.md`** — GitHub Copilot code generation guidance:
- Always/never lists, commit format, import patterns, type patterns
10. **Update `.windsurfrules`** — Windsurf/Cascade project rules:
- Architecture, key paths, conventions, @bytelyst/* wiring, build verification commands
11. **Update `.clinerules`** — Cline/Roo Code mandatory rules:
- Numbered mandatory rules, key file locations, verify command
12. **Update `.aider.conf.yml`** — Aider configuration:
- Context files to read (AGENTS.md, README), conventions pointer, lint commands
13. **Update `.editorconfig`** — Editor/formatting rules:
- Indent style/size per language, charset, line endings, trim rules
### Phase 4: Update learning_ai_common_plat Agent Docs
14. **Update all 8 agent doc files** in common platform, ensuring:
- `AGENTS.md`: Package exports, service modules, file ownership (27+ domains), dependency graph, consumer info, test count
- `CLAUDE.md`: Compact summary
- `.cursorrules`: Completion rules for @bytelyst/* and @lysnrai/*
- `.github/copilot-instructions.md`: Generation rules
- `.windsurfrules`: pnpm workspace rules, ESM conventions
- `.clinerules`: Mandatory rules for package/service development
- `.aider.conf.yml`: Context files, pnpm lint commands
- `.editorconfig`: Already exists — verify still correct
### Phase 5: Update learning_multimodal_memory_agents Agent Docs
15. **Update all 8 agent doc files** in MindLyst repo, ensuring:
- `AGENTS.md`: KMP shared module, platform UI state, design tokens, build commands, progress
- `CLAUDE.md`: Compact summary
- `.cursorrules`: Already exists — verify current
- `.github/copilot-instructions.md`: Already exists — verify current
- `.windsurfrules`: Already exists — verify current
- `.clinerules`: Already exists — verify current
- `.aider.conf.yml`: Already exists — verify current
- `.editorconfig`: Already exists — verify current
### Phase 6: Verify & Commit
16. **Verify consistency across repos:**
- Shared conventions (commit format, productId rule, etc.) should match across all 3 AGENTS.md files
- @bytelyst/* package descriptions should be consistent between common platform and voice agent docs
- Design token flow should be consistent between common platform and MindLyst docs
17. **Commit and push each repo** (stage all 8 files):
- `cd $HOME/code/mygh/learning_voice_ai_agent && git add AGENTS.md CLAUDE.md .cursorrules .github/copilot-instructions.md .windsurfrules .clinerules .aider.conf.yml .editorconfig && git commit -m "docs: update agent docs via /update-agent-docs" && git push`
- `cd $HOME/code/mygh/learning_ai_common_plat && git add AGENTS.md CLAUDE.md .cursorrules .github/copilot-instructions.md .windsurfrules .clinerules .aider.conf.yml .editorconfig && git commit -m "docs: update agent docs via /update-agent-docs" && git push`
- `cd $HOME/code/mygh/learning_multimodal_memory_agents && git add AGENTS.md CLAUDE.md .cursorrules .github/copilot-instructions.md .windsurfrules .clinerules .aider.conf.yml .editorconfig && git commit -m "docs: update agent docs via /update-agent-docs" && git push`
18. **Print summary** of all changes made across all repos.
---
```bash
cd /Users/sd9235/code/mygh/learning_voice_ai_agent
[ -n "$(git status --porcelain)" ] && git add -A && git commit -m "chore(docs): update agent configuration files"
```
## Notes
- Run this workflow after: adding/removing packages, services, or modules; changing conventions; major refactors; adding new CI workflows; updating environment variables
- The workflow is idempotent — safe to run multiple times
- It reads current state fresh each time rather than relying on cached knowledge
- If a file doesn't exist yet (e.g., CLAUDE.md in MindLyst), create it
- Never hardcode stale counts — always count dynamically (tests, routes, workflows, etc.)
- Preserve any repo-specific conventions that differ between repos (e.g., MindLyst uses Pages Router, dashboards use App Router)
- The script scans each repo's structure and regenerates docs based on current state
- Only commits if there are actual changes
- Safe to run repeatedly (idempotent)
- Requires `learning_ai_common_plat` to be the source of truth for templates

View File

@ -0,0 +1,180 @@
# Workflow Synchronization Guide
> How to keep Windsurf workflows consistent across all 7 repos in the workspace.
---
## Quick Reference
| Command | Purpose |
| ----------------------------------------- | ---------------------------------- |
| `zsh scripts/sync-workflows.sh` | Sync common workflows to all repos |
| `zsh scripts/sync-workflows.sh --dry-run` | Preview changes without applying |
---
## Overview
The workspace has **42 workflows** across **8 repos**. To keep cross-repo workflows (like `repo_backup-main-branch`, `repo_sync-repos`) consistent, use the sync script.
### Workflow Categories
| Category | Prefix | Count | Synced? |
| ------------------- | ---------- | ----- | ------------------------ |
| **Cross-repo** | `repo_` | 6 | ✅ Yes |
| **Product release** | `release_` | 3 | ❌ No (product-specific) |
| **Testing** | `test_` | 4 | ❌ No (product-specific) |
| **Utilities** | various | 2 | Case-by-case |
---
## The Sync Script
### Location
```
learning_ai_common_plat/scripts/sync-workflows.sh
```
### What It Syncs
These 6 workflows are pushed from `learning_ai_common_plat/.windsurf/workflows/` to all repos:
1. `repo_backup-main-branch.md`
2. `repo_backup-and-push.md`
3. `repo_sync-repos.md`
4. `repo_commit-workspace.md`
5. `repo_update-agent-docs.md`
6. `refresh-chat-history.md`
### Target Repos
```
learning_voice_ai_agent (LysnrAI)
learning_multimodal_memory_agents (MindLyst)
learning_ai_clock (ChronoMind)
learning_ai_peakpulse (PeakPulse)
learning_ai_fastgap (NomGap)
learning_ai_jarvis_jr (JarvisJr)
```
### How It Works
1. **Compares** source workflow (in common-plat) with destination
2. **Skips** if files are identical
3. **Copies** if destination is missing or different
4. **Reports** how many were updated vs skipped
### Output Examples
**All up to date:**
```
=== Sync complete ===
Updated: 0
Skipped (identical): 36
✓ All workflows are synchronized across all repos.
No changes needed — everything is up to date.
```
**After editing a workflow:**
```
=== Sync complete ===
Updated: 6
Skipped (identical): 30
✓ Synced 6 workflow(s) to repos.
Run again to verify all repos are identical.
```
---
## When to Sync
| Scenario | Action |
| ------------------------------------------ | ------------------------------ |
| Edited a `repo_*` workflow in common-plat | Run sync immediately |
| New repo added to workspace | Run sync to populate workflows |
| Workflow behaving differently across repos | Run sync to reconcile |
| Unsure if workflows are current | Run with `--dry-run` to check |
---
## Workflow Naming Convention
Use these prefixes for clarity:
| Prefix | Purpose | Example |
| ---------- | ------------------------- | -------------------- |
| `repo_` | Cross-repo Git operations | `repo_sync-repos` |
| `release_` | Product releases | `release_testflight` |
| `test_` | Testing/verification | `test_coverage` |
| `product_` | Product-specific ops | `product_build_ios` |
---
## Archive Integration
The `/refresh-chat-history` workflow (which runs daily at 11 PM) also archives all workflows from all repos to:
```
__LOCAL_LLMs/AI_IDE_CHAT_HISTORY/WINDSURF/repo_workflows/
```
This provides a historical backup and cross-repo visibility.
---
## Troubleshooting
### "Source not found" warning
```
⚠ Source not found: .../repo_update-agent-docs.md
```
**Fix:** The workflow exists in the sync list but not in common-plat. Either:
- Create the missing workflow in common-plat, or
- Remove it from `WORKFLOWS_TO_SYNC` in the script
### Workflow not syncing
Check that:
1. Workflow is in `WORKFLOWS_TO_SYNC` array in the script
2. Source file exists in `learning_ai_common_plat/.windsurf/workflows/`
3. Destination `.windsurf/workflows/` directory exists (script auto-creates if missing)
### Merge conflicts in workflows
If a workflow was edited independently in two repos:
1. Decide which version is correct
2. Copy the correct version to common-plat
3. Run sync to propagate
---
## Current Workflow Inventory
| Repo | Count | Notable Workflows |
| ---------------- | ----- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| LysnrAI | 14 | release-testflight, release-desktop, test-ios-app, test-desktop-app, test-coverage, docker-compose, debug-service, generate-store-assets |
| PeakPulse | 8 | mobile-code-quality, production-readiness, repo_push-repos |
| ChronoMind | 6 | repo_push-repos |
| MindLyst | 7 | mobile-code-quality, release-testflight |
| NomGap | 6 | (baseline repo\_\* workflows) |
| JarvisJr | 6 | (baseline repo\_\* workflows) |
| Common-plat | 7 | sync-workflows.sh, refresh-chat-history, all repo\_\* workflows |
| Agent-monitoring | 1 | |
---
## See Also
- `/refresh-chat-history` — Archive refresh workflow
- `/repo_sync-repos` — Pull latest from all repos
- `/repo_update-agent-docs` — Regenerate AGENTS.md, CLAUDE.md, etc.

View File

@ -99,3 +99,14 @@ echo ""
echo "=== Sync complete ==="
echo " Updated: $sync_count"
echo " Skipped (identical): $skip_count"
echo ""
if [ "$sync_count" -eq 0 ] && [ "$skip_count" -gt 0 ]; then
echo "✓ All workflows are synchronized across all repos."
echo " No changes needed — everything is up to date."
elif [ "$sync_count" -gt 0 ]; then
echo "✓ Synced $sync_count workflow(s) to repos."
echo " Run again to verify all repos are identical."
else
echo "✓ Nothing to sync."
fi