بنقرة واحدة
bootstrap-deployment
// Three-layer bootstrap flow, dotbot patterns, and deployment order for Win dotfiles. Use when editing bootstrap.ps1, install.conf.yaml, or Setup-Dotfiles.ps1.
// Three-layer bootstrap flow, dotbot patterns, and deployment order for Win dotfiles. Use when editing bootstrap.ps1, install.conf.yaml, or Setup-Dotfiles.ps1.
Use when working on PowerShell scripts, registry tweaks, or dotfile deployment in the Win repo. Covers conventions, Common.ps1 helpers, and path rules.
Use when validating changes in the Win repo. Per-change-type checks for PowerShell, dotbot, autounattend.xml, and guidance files.
Use to run the mandatory end-of-session workflow — file issues, run quality gates, push to remote, verify clean state, hand off context.
Use when orchestrating complex tasks across specialized agents with proper context handoff
Use when configuring or troubleshooting MCP servers for OpenCode/Kilo environments
Use when migrating AI assistant configurations from Claude Code, Cursor, and other tools to OpenCode/Kilo
| disable-model-invocation | true |
| name | bootstrap-deployment |
| description | Three-layer bootstrap flow, dotbot patterns, and deployment order for Win dotfiles. Use when editing bootstrap.ps1, install.conf.yaml, or Setup-Dotfiles.ps1. |
| compatibility | opencode |
Use this skill when working on the Ven0m0/Win bootstrap flow: bootstrap.ps1, Setup-Dotfiles.ps1, install.conf.yaml, or any deployment-related automation.
Internet bootstrap — bootstrap.ps1
-Unattended (no prompts) and -SkipWSLRepo bootstrap — install.conf.yaml → Scripts/Setup-Dotfiles.ps1
RemoteSigned (CurrentUser)~/Scripts, ~/bin, etc.)Unattended USB install — Scripts/auto/autounattend.xml
ExtractScriptinstall.ps1 → stage2.ps1 → WinUtilWhen any bootstrap file changes, review these together:
| Changed File | Must Also Check |
|---|---|
install.conf.yaml | Scripts/Setup-Dotfiles.ps1, README.md, AGENTS.md |
Scripts/Setup-Dotfiles.ps1 | install.conf.yaml, affected configs under user/.dotfiles/config/ |
bootstrap.ps1 | install.conf.yaml, repo README instructions |
README.md (setup sections) | install.conf.yaml, Scripts/Setup-Dotfiles.ps1, bootstrap.ps1 |
install.conf.yaml uses dotbot's YAML manifest format- ~/.dotfiles/config/<source> → <dest> mapping with conditional if (platform, test)Get-FileHash -Algorithm SHA256) — never symlinks (Windows compatibility)##template suffix; user copies to destination and customizes.gitconfig##template → $HOME\.gitconfigInvoke-Expression and global SilentlyContinue — avoidScripts/Common.ps1 when available$env:USERPROFILE\AppData\Local\Microsoft\WindowsApps (or user Scripts dir)~/Scripts, ~/bin, game-specific folderswinget with --silent --accept-source-agreements --accept-package-agreementspwsh -File Scripts/Setup-Dotfiles.ps1 -Target 'PowerShell profile' -SkipWingetToolswinget install --id <PackageId> --silent --accept-source-agreements --accept-package-agreementsif (-not (Get-Command <tool> -ErrorAction SilentlyContinue)) { install } SilentlyContinue)After bootstrap completes:
$PROFILE and loads%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json~/Scripts directory exists and is in PATH (if configured)Get-ExecutionPolicy -Scope CurrentUser returns RemoteSignedgit, pwsh, code, wtgit status in repo shows clean working treewsl --status reports WSL2 installed and default version set-Unattended: skip all prompts, accept defaults-Force: re-run setup even if already configured (re-clones if repo exists)-SkipWingetTools: skip package installation phase-SkipWSL: skip WSL2 offerScripts/allow-scripts.ps1 as admin firstpip install dotbot or mise install dotbot.ps1 beside autounattend.xml; embed all scripts inside XML$PSScriptRoot, $HOME, $env:LOCALAPPDATA, never hardcoded C:\Users\...# Full bootstrap (installs dotbot then deploys)
mise run bootstrap
# or
pip install dotbot && dotbot -c install.conf.yaml
# Deploy all dotfiles only (dotbot must be installed)
mise run deploy
# Deploy single config group
pwsh -File Scripts/Setup-Dotfiles.ps1 -Target 'PowerShell profile' -SkipWingetTools
# Validate autounattend.xml
$xml = [xml]::new(); $xml.Load("$PWD\Scripts\auto\autounstand.xml")
# Lint changed PowerShell script
Invoke-ScriptAnalyzer -Path Scripts/<changed>.ps1 -Settings PSScriptAnalyzerSettings.psd1
windows-dotfiles.md — general PowerShell coding conventions, Common.ps1 helpersvalidation.md — detailed per-change-type validation matrix