Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -79,9 +79,11 @@ all). Register a new installable tool by adding a descriptor to `setup/registry.
`C4_ROUNDTABLE_HOME` (multi-repo-workspace state dir, default `~/.roundtable`). OS-provided
vars (`USERPROFILE`, `LOCALAPPDATA`, `PATH`, …) are not ours and keep their names.
- **History:** relocate/rename with `git mv` to preserve history.
- **Scheduled tasks:** a member that registers a Windows Task Scheduler task uses its own folder
name as the task name (e.g. `usage-dashboard`), registered under the shared task folder
`\ClaudeAutomation`. This keeps task names collision-free and self-identifying to the member.
- **Scheduled tasks:** a member that registers a Windows Task Scheduler task registers it under
its own folder name nested in the shared task folder: `\ClaudeAutomation\<member>\<taskname>`
(e.g. `\ClaudeAutomation\usage-dashboard\usage-dashboard`,
`\ClaudeAutomation\file-sync\<per-pair name>`). This keeps task names collision-free and
groups every task of a member together.
- **Docs:** **one `README.md` per member** (apps/tools/libs/setup) plus the root README,
which is the catalog. Deeper end-user docs live under a member's `docs/` (e.g.
`multi-repo-plan-runner/docs/guide/`, `per-project-plugin-toggler/docs/user-guide-*.md`) and the
Expand Down
9 changes: 4 additions & 5 deletions apps/usage-dashboard/scripts/usage-dashboard-setup.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,15 @@ param(
[string]$Action = 'install'
)

$taskFolder = "\ClaudeAutomation"
# Task folder nests the app's folder name (the parent of scripts\) under the shared
# \ClaudeAutomation\ root (\ClaudeAutomation\usage-dashboard), matching file-sync.
$taskFolder = "\ClaudeAutomation\$(Split-Path -Leaf (Split-Path $PSScriptRoot))"
$taskName = "usage-dashboard"
$wrapperPath = Join-Path $PSScriptRoot "usage-dashboard-start-once.ps1"

function Install-UsageDashboardTask {
# Ensure the task folder exists
# Register-ScheduledTask creates the nested task folder itself.
$svc = New-Object -ComObject Schedule.Service
$svc.Connect()
try { $svc.GetFolder($taskFolder) | Out-Null }
catch { $svc.GetFolder((Split-Path $taskFolder)).CreateFolder((Split-Path $taskFolder -Leaf)) | Out-Null }

# The wrapper checks if the server is already running before launching,
# making it safe to call from both the logon and wake triggers.
Expand Down
4 changes: 2 additions & 2 deletions setup/registry.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -235,7 +235,7 @@ function Get-CommandCenterRegistry {
}
Detect = {
param($Entry)
[bool](Get-ScheduledTask -TaskName 'agents-workspace-sync' -TaskPath '\ClaudeAutomation\' -ErrorAction SilentlyContinue)
[bool](Get-ScheduledTask -TaskName 'agents-workspace-sync' -TaskPath '\ClaudeAutomation\agents-workspace-sync\'-ErrorAction SilentlyContinue)
}
}

Expand All @@ -252,7 +252,7 @@ function Get-CommandCenterRegistry {
Uninstall = { param($SetupScript, $Entry) & $SetupScript -Action uninstall | Out-Null }
Detect = {
param($Entry)
[bool](Get-ScheduledTask -TaskName 'usage-dashboard' -TaskPath '\ClaudeAutomation\' -ErrorAction SilentlyContinue)
[bool](Get-ScheduledTask -TaskName 'usage-dashboard' -TaskPath '\ClaudeAutomation\usage-dashboard\'-ErrorAction SilentlyContinue)
}
}

Expand Down
2 changes: 1 addition & 1 deletion tools/agents-workspace-sync/CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ See `README.md`. Install via `agents-workspace-sync-setup.ps1` / `.sh`, or throu
- `agents-workspace-sync.ps1` / `.sh` — the worker. Reads the config, loops the repos, and for
each: validates, `add -A`, commit, push. Installed into `$C4_CLAUDE_META_DIR/.claude/scripts/`.
- `agents-workspace-sync-setup.ps1` / `.sh` — install/uninstall. Writes the config, copies the
worker, registers the daily Task Scheduler task (`\ClaudeAutomation\agents-workspace-sync`)
worker, registers the daily Task Scheduler task (`\ClaudeAutomation\agents-workspace-sync\agents-workspace-sync`)
or crontab entry.
- Config: `$C4_CLAUDE_META_DIR/.claude/scripts/agents-workspace-sync-config.json`
(`{scheduleTime, repos[]}`), re-read every run so editing it needs no reinstall.
Expand Down
2 changes: 1 addition & 1 deletion tools/agents-workspace-sync/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ date-stamped commit, and pushes.

| | |
|---|---|
| **Default trigger** | 04:00 daily (Task Scheduler `\ClaudeAutomation\agents-workspace-sync`, or cron) |
| **Default trigger** | 04:00 daily (Task Scheduler `\ClaudeAutomation\agents-workspace-sync\agents-workspace-sync`, or cron) |
| **Config** | `$C4_CLAUDE_META_DIR/.claude/scripts/agents-workspace-sync-config.json` |
| **Logs** | `$C4_CLAUDE_META_DIR/logs/<yyyy>/<MM>/<timestamp>_agents-workspace-sync.log` |
| **Needs** | `git` on PATH. Linux also needs `jq`. No `claude` CLI — this tool never calls Claude. |
Expand Down
6 changes: 4 additions & 2 deletions tools/agents-workspace-sync/agents-workspace-sync-setup.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
# 1. Ensures $C4_CLAUDE_META_DIR exists and sets the env var if missing
# 2. Copies agents-workspace-sync.ps1 into <meta>\.claude\scripts\
# 3. Writes <meta>\.claude\scripts\agents-workspace-sync-config.json (repo list + time)
# 4. Registers the \ClaudeAutomation\agents-workspace-sync daily task
# 4. Registers the \ClaudeAutomation\agents-workspace-sync\agents-workspace-sync daily task
#
# Uninstall removes the task, the installed script, and (unless -KeepConfig) the config.
# The claude-meta repo, its logs, and every target repo are left untouched.
Expand All @@ -31,7 +31,9 @@ $ErrorActionPreference = "Stop"
$Here = $PSScriptRoot

$TaskName = "agents-workspace-sync"
$TaskFolder = "\ClaudeAutomation\"
# Task folder nests this tool's folder name under the shared \ClaudeAutomation\ root
# (\ClaudeAutomation\agents-workspace-sync\), matching file-sync and the digests.
$TaskFolder = "\ClaudeAutomation\$(Split-Path -Leaf $PSScriptRoot)\"

$Step = 0
function Step($Msg) { $script:Step++; Write-Host "[$script:Step] $Msg" -ForegroundColor Yellow }
Expand Down
Loading