7.2 KiB
PromptWorks Mirror Implementation Plan
For agentic workers: Use the subagent-driven-development skill (recommended) or the executing-plans skill to implement this plan task-by-task. Steps use checkbox (
- [ ]) syntax for tracking.
Goal: Create a private, safe Git mirror of custom Microsoft Scout skills and prove a LocalSystem scheduled sync can commit and push it.
Architecture: sync-skills.ps1 builds an allowlisted staging tree from the Scout custom-skill source, replaces only mirrored skill folders, regenerates the README, and commits and pushes changes. Windows Task Scheduler invokes this script as LocalSystem each Sunday at 10:00 AM; Git obtains the repository-scoped HTTPS deploy token from LocalSystem's credential store.
Tech Stack: PowerShell 7/Windows PowerShell, Git for Windows, Windows Task Scheduler, Windows Credential Manager, HTTPS Git remote.
Global Constraints
- Use source
C:\Users\dkucinski\.scout\m-skillsand destinationD:\Repos\PromptWorks. - Set
origintohttps://git.wucinski.duckdns.org/Daniel/PromptWorks.git. - Mirror each source skill directory, retaining
SKILL.mdand normal source artifacts, while excludingnode_modules,.git,.pw-profile*,.token-cache.json, logs, caches, andskills-metadata.json. - Do not store secrets in repository files, task arguments, environment variables, logs, or Git history.
- Append timestamped run details to
logs\sync.log; ignorelogs\in Git. - Schedule
PromptWorks Weekly Skill Syncfor Sundays at 10:00 AM Pacific asLocalSystem, whether or not a user is logged on. - A manual no-op run must create neither a new commit nor a push.
Task 1: Create the safe skill mirror
Files:
- Create:
.gitignore - Create:
sync-skills.ps1 - Create:
README.md - Modify:
docs\plans\2026-09-02-promptworks-design.md
Interfaces:
-
Consumes: source root passed to
sync-skills.ps1as-SourceRoot, defaulting to the global source path. -
Produces: mirrored skill folders, an auto-generated
README.md,logs\sync.log, and exit code0on success or nonzero on failure. -
Step 1: Initialize the repository and configure its remote.
Set-Location D:\Repos\PromptWorks git init --initial-branch main git remote add origin https://git.wucinski.duckdns.org/Daniel/PromptWorks.git git config user.name "Daniel Kucinski" git config user.email "dkucinski@users.noreply.github.com" -
Step 2: Add the ignore policy.
logs/ node_modules/ .pw-profile*/ .token-cache.json *.log -
Step 3: Implement
sync-skills.ps1with an allowlist (SKILL.md,.ps1,.mjs,.js,.json,.gitignore) and exclusion checks for the global constraints. Make it:[CmdletBinding()] param( [string] $SourceRoot = 'C:\Users\dkucinski\.scout\m-skills', [string] $RepositoryRoot = $PSScriptRoot ) $ErrorActionPreference = 'Stop' # Write timestamped log lines to Join-Path $RepositoryRoot 'logs\sync.log'. # Mirror source skill directories into a temporary staging directory, then replace # only destination skill directories so docs and sync infrastructure remain intact. # Regenerate README.md from the SKILL.md frontmatter/title and first description. # Stage all changes; exit 0 when git status --porcelain is empty. # Otherwise commit with "chore: sync Scout skills <yyyy-MM-dd>" and git push origin main. -
Step 4: Run the script interactively and inspect its result.
& D:\Repos\PromptWorks\sync-skills.ps1 git -C D:\Repos\PromptWorks status --shortExpected result: all custom skills and their approved helpers are present, generated files are absent, the README has every skill, and the status is clean after the initial commit and push.
-
Step 5: Run the no-op test.
$before = git -C D:\Repos\PromptWorks rev-parse HEAD & D:\Repos\PromptWorks\sync-skills.ps1 $after = git -C D:\Repos\PromptWorks rev-parse HEAD if ($before -ne $after) { throw 'No-op sync created a commit.' }Expected result: no exception and a new success entry in
logs\sync.log. -
Step 6: Commit the infrastructure.
git -C D:\Repos\PromptWorks add --all git -C D:\Repos\PromptWorks commit -m "chore: add Scout skills mirror" git -C D:\Repos\PromptWorks push -u origin main
Task 2: Configure and prove the unattended system task
Files:
- Create:
install-system-sync-task.ps1 - Modify:
sync-skills.ps1 - Modify:
.gitignore
Interfaces:
-
Consumes: an administrator-provisioned PromptWorks-only deploy token held in LocalSystem's Credential Manager for
git.wucinski.duckdns.org. -
Produces: a task named
PromptWorks Weekly Skill Syncand a successful LocalSystem manual invocation. -
Step 1: Confirm the Git server accepts a write-scoped PromptWorks deploy token and provision it in LocalSystem's Windows Credential Manager without embedding it in files or command arguments.
Expected result:
git pushfrom a LocalSystem context can authenticate to the specified origin, and no token appears insync.logorgit config --list --show-origin. -
Step 2: Implement
install-system-sync-task.ps1to register the task:$action = New-ScheduledTaskAction -Execute 'powershell.exe' -Argument '-NoProfile -ExecutionPolicy Bypass -File "D:\Repos\PromptWorks\sync-skills.ps1"' $trigger = New-ScheduledTaskTrigger -Weekly -DaysOfWeek Sunday -At 10:00AM $principal = New-ScheduledTaskPrincipal -UserId 'SYSTEM' -LogonType ServiceAccount -RunLevel Highest $settings = New-ScheduledTaskSettingsSet -StartWhenAvailable -ExecutionTimeLimit (New-TimeSpan -Hours 1) Register-ScheduledTask -TaskName 'PromptWorks Weekly Skill Sync' -Action $action -Trigger $trigger -Principal $principal -Settings $settings -Description 'Mirrors custom Microsoft Scout skills to PromptWorks.' -Force -
Step 3: Register the task from an elevated PowerShell session and inspect it.
& D:\Repos\PromptWorks\install-system-sync-task.ps1 Get-ScheduledTask -TaskName 'PromptWorks Weekly Skill Sync' | Select-Object TaskName, State, PrincipalExpected result: task name is
PromptWorks Weekly Skill Sync; principal user ID isSYSTEM; task state isReady. -
Step 4: Force the system task to run and inspect its recorded outcome.
Start-ScheduledTask -TaskName 'PromptWorks Weekly Skill Sync' Start-Sleep -Seconds 15 Get-ScheduledTaskInfo -TaskName 'PromptWorks Weekly Skill Sync' | Select-Object LastRunTime, LastTaskResult Get-Content D:\Repos\PromptWorks\logs\sync.log -Tail 30Expected result:
LastTaskResultis0, the log records a successful mirror/no-op, and the remote branch contains the initial mirror commit. -
Step 5: Commit the task installer.
git -C D:\Repos\PromptWorks add install-system-sync-task.ps1 sync-skills.ps1 .gitignore git -C D:\Repos\PromptWorks commit -m "chore: schedule system skill sync" git -C D:\Repos\PromptWorks push
Spec Coverage Review
The plan covers private origin configuration, per-skill folders, safe source artifacts, generated root index, ignored local logging, weekly Sunday scheduling, LocalSystem execution, deploy-token isolation, initial push, and no-op/task execution proof.