# Daily Build Updater

> Lifecycle

- Skill: `vchelaru/daily-build-updater` (Agent Skill)
- Install (CLI): `npx skillmds@latest add vchelaru/daily-build-updater`
- Raw SKILL.md: https://api.skillmd.com/api/skills/vchelaru/daily-build-updater/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: vchelaru (https://skillmd.com/u/vchelaru)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/vchelaru/daily-build-updater

---


## Lifecycle

| File | Responsibility |
|---|---|
| `FRBDK/Glue/Glue/Plugins/EmbeddedPlugins/AboutPlugin/AboutViewModel.cs` | Confirmation, download, staging, and helper hand-off. |
| `FRBDK/Glue/Glue/Plugins/EmbeddedPlugins/AboutPlugin/DailyBuildUpdateLauncher.cs` | Generates the detached PowerShell replacement helper. |
| `FRBDK/Glue/Glue/Plugins/EmbeddedPlugins/AboutPlugin/DailyBuildUpdateDiagnostics.cs` | Bounded lifecycle log at `%LOCALAPPDATA%\FlatRedBall\GlueDailyBuildUpdate.log`. |
| `FRBDK/Glue/Tests/GlueUnitTests/AboutPlugin/DailyBuildUpdateLauncherTests.cs` | Script parsing, path normalization, lifecycle, and diagnostic tests. |

The running editor stages `GlueDailyBuild.zip` beside its installation, starts the helper, exits, then the helper deletes the old directory, moves staging into place, and restarts Glue.

## Landmines

- `FileManager.GetDirectory` supplies a trailing separator. Apply `Path.TrimEndingDirectorySeparator` before deriving the helper working directory; otherwise PowerShell runs inside and locks the directory it must delete.
- Generated PowerShell must be parsed by a real `powershell.exe` test. In interpolated strings, delimit a variable immediately followed by `:` as `${variable}:`.
- Keep the lifecycle log. Its last successful phase separates host hand-off, helper startup/parsing, Glue exit, file replacement, and restart failures. On a real replacement failure, Restart Manager lock owners belong in that log.

