Setup check for this Windows desktop - audit and fix its local build, register or stand down the desktop routines, list the owner's to-do. Use when asked to check or set up a PC, or when the setup check's to-do says to run /setup-check.
Install
npx skillscat add surreptakos/claude-dotfiles/setup-check Install via the SkillsCat registry.
Setup check
The engine is setup-check.ps1 in the claude-dotfiles clone; this skill runs it and does the one
thing it cannot: change desktop routines, which only a Claude session's scheduled-tasks tools can
reach. Terms (local build, setup check, anchor PC) are in that repo's CONTEXT.md.
Build every path from $env:USERPROFILE and quote it: the plugin is built on one PC and runs on
all of them. Commands below are for the PowerShell tool.
1. Find the clone
$d = Join-Path $env:USERPROFILE 'Claude\Projects\Meta\claude-dotfiles'
if (-not (Test-Path -LiteralPath (Join-Path $d '.git'))) { gh repo clone surreptakos/claude-dotfiles "$d" }
git -C "$d" pull --ff-onlyA failed clone ends the run: report gh's error and the bare-PC steps in the clone's README
(gh auth login first). The anchor name is read from this checkout, so a failed pull, or a clone
not on master, is reported as "anchor name may be stale" and the run continues on what is there.
Done when $d\setup-check.ps1 exists.
2. Run the engine with fixes
powershell.exe -NoProfile -ExecutionPolicy Bypass -File "$d\setup-check.ps1" -FixWindows PowerShell 5.1, always, even where pwsh exists. Keep the whole report. Exit 0 is clean, 1
means a STOP remains (normal on a new PC; carry on), 2 means the check could not run: quote its
last line and stop.
Done when you hold the report and its exit code.
3. Act on the routine findings
Read two lines under Projects: <PC> is the anchor PC or <PC> is not the anchor PC, and the
desktop-routines line. The routine ids are the comma-separated list after its colon. An ok
routine line, a not audited line or a -- line means nothing to act on; report it and skip to
step 4.
Run this from a session signed in to the routines' owner: the tools write to the signed-in
account, and the audit counts a routine only under its owner (~/.claude/accounts.json).
Routines change through create_scheduled_task and update_scheduled_task alone. A routine that
looks wrong becomes an owner to-do: never delete a routine or edit a registry file.
Anchor PC - N of M desktop routines not registered here: <ids>. Call list_scheduled_tasks
once, then for each id:
$r = Join-Path $env:USERPROFILE 'Claude\Projects\Meta\aac-routines'
py -3 "$r\scripts\desktop_routines.py" show <id>- Not in the task list: call
create_scheduled_taskwith the output'screate_scheduled_task
object as printed, except that aC:\Users\<name>home in itspromptbecomes this PC's$env:USERPROFILEvalue. Then, ifregistry.enabledis false,update_scheduled_taskwithenabled: false. - In the list but disabled while
registry.enabledis true:update_scheduled_taskwithenabled: true. - Otherwise leave it.
- The tool takes no
cwd,model,permissionModeoruseWorktree. Whenregistryholds any,
add one owner step: set them on that routine in the app's routine settings, withcwdunder
this PC's%USERPROFILE%.
Any other PC - N desktop routines live on a PC that is not the anchor: <ids>. For each id,update_scheduled_task with taskId: <id> and enabled: false.
Then re-run the engine without -Fix (same command, flag dropped). Done when its routine line isok, or names only ids whose registry.enabled is false (the audit counts enabled routines
only, so a routine the store keeps disabled always reads as not registered). Any other id still
named is a finding to report with the tool's error.
4. Report
Report from the last engine run: the step 3 re-run when there was one, else step 2's. Drop itsRun /setup-check ... to-do item: this run is that. Print, in order:
- The PC and whether it is the anchor, quoting the engine's line.
- What the routine step did, one line per id (created, disabled, enabled, left), or "nothing".
- The Owner to-do: the engine's numbered items, then the steps from step 3, numbered on
through. One step per item, its exact command under it in a code block; an item the engine gave
no command keeps its sentence alone. - The engine's last line (
<n> STOP, <n> !!) and its exit code.