CopilotAtelier
2.0.0-preview0002
Portable GitHub Copilot customization library. Ships custom agents, auto-applied instructions, on-demand skills, prompt templates, and lifecycle hooks, and installs them into the well-known ~/.copilot discovery folders that VS Code, the GitHub Copilot CLI, and Claude Code read.
Minimum PowerShell version
5.1
Installation Options
Owners
Copyright
(c) raandree. All rights reserved.
Package Details
Author(s)
- raandree
Tags
Copilot GitHubCopilot VSCode Agents Skills Prompts Instructions Hooks AI Windows Linux MacOS
Functions
Get-CopilotAtelierVersion Install-CopilotAtelier Update-CopilotAtelier
Dependencies
This module has no dependencies.
Release Notes
## [2.0.0-preview0002] - 2026-07-29
### Changed
- **CopilotAtelier is now a PowerShell module built with Sampler and published to the PowerShell Gallery** (2026-07-29). Until now the only supported distribution was "clone the repository and run the setup script", which gave no version identity, no update path, and no way for a consumer to tell whether their deployed customizations were current. The repository is now a [Sampler](https://github.com/gaelcolas/Sampler) project. Module sources live in [`source/`](source/) (`Public/`, `Private/`, and the manifest); the five Customization directories plus `Keybindings/` stay at the repository root — so [`plugin.json`](plugin.json), the documentation links, and a plain clone all keep working — and the new [`.build/Copy_Customizations_To_Output.build.ps1`](.build/Copy_Customizations_To_Output.build.ps1) task copies them verbatim into the built module, so a Gallery install carries exactly the same payload as a clone. Versioning is [GitVersion](https://gitversion.net/) via [`GitVersion.yml`](GitVersion.yml), so `ModuleVersion` in the source manifest is a placeholder the build replaces. The first Gallery release is **2.0.0**: the distribution model is a breaking change for anyone scripting against the old monolithic script.
The 560-line `Setup-CopilotSettings.ps1` was decomposed into three exported commands and six private helpers with no behavioral change to the deployment itself. `Setup-CopilotSettings.ps1` survives as a thin shim that dot-sources `source/` and calls `Install-CopilotAtelier` against the clone, so every existing instruction, prompt, and README reference to it still works and no build is needed to deploy a working tree. Two behaviors did change: the canonical target folder is now fixed to `CopilotAtelier` (the module name) instead of being derived from the clone's folder name, because a Gallery-installed module has no clone to derive from; and console output moved from `Write-Host` to the information stream, so `Install-CopilotAtelier` is quiet by default and returns a summary object — the shim passes `-InformationAction Continue` to preserve the familiar console experience.
| Command | Purpose |
|---|---|
| `Install-CopilotAtelier` | Deploys the customizations, links `~/.copilot`, merges settings and keybindings, and records the deployed version in `<target>/.copilotatelier.json`. |
| `Update-CopilotAtelier` | Compares the installed version with the Gallery, installs a newer one, and redeploys from it. `-Force` redeploys the current version; `-SkipDeployment` stages the update. |
| `Get-CopilotAtelierVersion` | Reports the installed version, the deployed version, and whether the deployment is current. |
- **`CHANGELOG.md` is now machine-parseable** (2026-07-29). `Get-ChangelogData` failed on this file because `[Unreleased]` had no link reference and the two release headings used an em dash instead of the Keep a Changelog `- ` separator. Sampler's `Create_Changelog_Release_Output` and `Create_ChangeLog_GitHub_PR` tasks both depend on that parse, so the release pipeline could not have run. Fixed all three, and a new QA test pins the parse.
### Added
- **A canonical GitHub Actions template for Sampler repositories** (2026-07-29). [`Skills/sampler-framework/references/ci-cd-pipelines.md`](Skills/sampler-framework/references/ci-cd-pipelines.md) advertised "Azure Pipelines and GitHub Actions templates" but only ever contained the Azure Pipelines one, so every Actions pipeline was written from scratch and drifted — which is exactly how this repository's own `ci.yml` diverged from its siblings. The reference now carries the full `.github/workflows/ci.yml` template, a second-PowerShell-edition matrix variant, and an Azure Pipelines to GitHub Actions translation table covering the constructs with no direct equivalent: `##vso[task.setvariable]` becomes `$GITHUB_OUTPUT` plus job `outputs`, `##vso[build.updatebuildnumber]` has no equivalent at all, `pwsh: true|false` becomes a `defaults.run` shell because a step's `shell` key accepts no context, and the org guard becomes `github.repository_owner`. [`Instructions/sampler.instructions.md`](Instructions/sampler.instructions.md) gained a CI/CD Rules section and now applies to `azure-pipelines.yml` and `.github/workflows/*.yml`, so the template and its non-negotiables load automatically whenever a Sampler pipeline is edited.
- **The CI workflow pins the current GitHub Actions majors** (2026-07-29). Every job warned that `actions/checkout@v4`, `upload-artifact@v4`, and `download-artifact@v4` target the deprecated Node 20 runtime. Bumped to `checkout@v7`, `upload-artifact@v7`, and `download-artifact@v8` — the three actions do not share a major number, and the release where each stopped defaulting to Node 20 differs (`checkout` v5, `upload-artifact` v6, `download-artifact` v7), so a uniform bump to any single number would have left two of them deprecated. The documented breaking changes do not apply here: `checkout@v7` only restricts fork checkouts under `pull_request_target` and `workflow_run`, and `download-artifact@v5` only changed the output path for downloads by artifact ID, not by name. The skill template carries the same pins plus a per-action version table.
- **GitHub Actions CI** (2026-07-29). New [`.github/workflows/ci.yml`](.github/workflows/ci.yml) — the repository had no CI at all. It follows the same build/test/deploy shape as the other Sampler repositories so one pipeline can be reasoned about everywhere: a `Package Module` job computes the version with GitVersion, exports every GitVersion property as a step output, stamps `FullSemVer` into the job summary, and uploads `output/` as the build artifact; the downstream job names carry that version, which is the closest GitHub Actions gets to Azure DevOps' run renaming. `Test` reuses the artifact on Linux, macOS, Windows PowerShell 7, and Windows PowerShell 5.1, with the non-Windows legs restricted to `-PesterTag @('Unit','QA')` because the repository also tests Windows-only Customizations. `Deploy Module` publishes the GitHub release and the Gallery package from `main` or a `v*` tag, is fenced to the upstream owner, and needs the `GitHubToken` and `GalleryApiToken` repository secrets. Pushes that only touch `CHANGELOG.md` are ignored so the release commit does not retrigger the pipeline.
- **A module test suite** (2026-07-29). [`tests/QA/module.tests.ps1`](tests/QA/module.tests.ps1) enforces the changelog parse, the exported command surface, the presence and non-emptiness of all six shipped customization directories inside the built module, a unit test per exported command, zero PSScriptAnalyzer findings per command, and complete comment-based help including a documented example and every parameter. [`tests/Unit/`](tests/Unit/) covers the three public commands and the two load-bearing private helpers (`ConvertFrom-Jsonc`, `Get-CopilotAtelierPath`) against a sandboxed profile, including the legacy-location cleanup, the keybinding merge, the discovery links, and the version-comparison paths.
- **A README Quick Start** (2026-07-29). Installation previously sat 150 lines into the README, behind the whole skill catalogue, so a first-time reader met the inventory before the two commands that get them running. The new Quick Start leads with prerequisites, `Install-Module` plus `Install-CopilotAtelier`, the restart, and `Update-CopilotAtelier`, and states plainly that the Gallery package is not published yet. The Gallery section gained the day-two loop it was missing: the useful switches, a `Get-Help` pointer, sample `Get-CopilotAtelierVersion` output with what `IsCurrent : False` means, and what a second machine still has to do for itself.
### Fixed
- **CI failed on macOS and on both Windows legs after the workflow alignment** (2026-07-29). Two unrelated defects, each exposed by a job that had never run before. **The path tests assumed a Linux configuration root.** [`tests/Unit/Private/Get-CopilotAtelierPath.Tests.ps1`](tests/Unit/Private/Get-CopilotAtelierPath.Tests.ps1) and [`tests/Unit/Public/Install-CopilotAtelier.Tests.ps1`](tests/Unit/Public/Install-CopilotAtelier.Tests.ps1) sandbox `XDG_CONFIG_HOME` and then expect the VS Code settings beneath it, but `Get-CopilotAtelierPath` correctly resolves `~/Library/Application Support/Code/User` on macOS — so the settings file the installer wrote was never where the tests looked, taking down the whole clean-profile context along with the legacy-cleanup assertions. Both suites now derive the sandbox configuration root per platform; the shipped behaviour is unchanged, because the module was already right. **The Memory Bank compactness budget was exceeded.** `.memory-bank/progress.md` had grown to 205 lines against its 200-line budget, so `Test-MemoryBankHealth` returned `LineBudgetExceeded` and `Passed: False`. That test carries no Pester tag, so only the two Windows legs run it — the Linux and macOS legs are restricted to `-PesterTag @('Unit','QA')` and never saw it. The oldest milestones moved to git history, which is what the file's own retention policy prescribes.
- **The `SessionStart` hook probed an untrusted path through the PowerShell provider** (2026-07-29). `strips control characters from a hostile workspace path` was the only failing test on the Linux CI job, in three consecutive runs, while both Windows jobs passed. [`Hooks/scripts/Add-SessionContext.ps1`](Hooks/scripts/Add-SessionContext.ps1) built its probe path with `Join-Path` and tested it with `Test-Path`, using a `cwd` supplied by the hook payload — attacker-controlled input. A provider that cannot resolve such a path writes to standard error, and the hook's caller merges the streams, so provider noise corrupts the single-line JSON contract the hook writes to standard output. The script's own notes already promised that "a probe failure never blocks a session", but nothing enforced it. The probe now uses `[System.IO.Path]::Combine` a
FileList
- CopilotAtelier.nuspec
- CopilotAtelier.psm1
- Prompts\peer-review.prompt.md
- Skills\whisper-pyannote-transcription\transcribe.py
- Skills\automatedlab-deployment\references\networking.md
- Prompts\export-emails.prompt.md
- Skills\whisper-pyannote-transcription\diarize.py
- Skills\automatedlab-deployment\references\roles-and-services.md
- CopilotAtelier.psd1
- Prompts\session-handoff.prompt.md
- Skills\whisper-pyannote-transcription\SKILL.md
- Skills\automatedlab-deployment\references\troubleshooting.md
- Keybindings\keybindings.json
- Prompts\refactor.prompt.md
- Skills\whisper-pyannote-transcription\transcribe-segment.py
- Skills\long-running-job-monitor\scripts\Start-JobMonitor.ps1
- Agents\Technical Writer & Documentation Agent.agent.md
- Prompts\code-review.prompt.md
- Skills\test-driven-development\notes-evals.md
- Skills\long-running-job-monitor\scripts\Start-DetachedPowerShell.ps1
- Agents\DevOps Training Writer.agent.md
- Prompts\deadline-action-handoff.prompt.md
- Skills\test-driven-development\SKILL.md
- Skills\long-running-job-monitor\references\out-of-band-verification.md
- Agents\research-analyst.agent.md
- Skills\grammar-check\SKILL.md
- Skills\doc-coauthoring\SKILL.md
- Skills\windows-gui-screenshot-capture\scripts\DialogCapture.ps1
- Agents\Security & Quality Assurance Agent.agent.md
- Skills\datum-configuration\SKILL.md
- Skills\grill-me\SKILL.md
- Skills\windows-gui-screenshot-capture\references\engine-recipes.md
- Agents\tax-researcher.agent.md
- Skills\marp-slide-overflow\SKILL.md
- Skills\pandoc-docx-export\SKILL.md
- Skills\windows-gui-screenshot-capture\references\external-win32-executables.md
- Agents\Technical Troubleshooter Agent.agent.md
- Skills\send-outlook-email\SKILL.md
- Skills\create-outlook-draft\SKILL.md
- Skills\winrm-troubleshooting\references\post-restart-readiness.md
- Agents\QC Inspector Agent.agent.md
- Skills\dsc-troubleshooting\SKILL.md
- Skills\devils-advocate-review\SKILL.md
- Skills\winrm-troubleshooting\references\advanced-diagnostics.md
- Agents\legal-researcher.agent.md
- Skills\pester-patterns\notes-evals.md
- Skills\winrm-troubleshooting\notes-evals.md
- Skills\automatedlab-proxmox\references\windows-sysprep.md
- Agents\Software Engineer Agent.agent.md
- Skills\pester-patterns\SKILL.md
- Skills\winrm-troubleshooting\SKILL.md
- Skills\automatedlab-proxmox\references\evidence-and-readiness.md
- Agents\Training Content Writer.agent.md
- Skills\memory-bank\notes-evals.md
- Skills\automatedlab-proxmox\notes-evals.md
- Skills\automatedlab-proxmox\references\module-development.md
- Agents\career-coach.agent.md
- Skills\memory-bank\SKILL.md
- Skills\automatedlab-proxmox\SKILL.md
- Skills\authenticated-web-extraction\bootstrap\package.json
- Agents\README.md
- Skills\sampler-build-debug\SKILL.md
- Skills\authenticated-web-extraction\SKILL.md
- Skills\agent-evals\scripts\run-evals.ps1
- Instructions\azurepipelines.instructions.md
- Skills\outlook-calendar-export\SKILL.md
- Skills\agent-evals\SKILL.md
- Skills\agent-evals\assets\evals.sample.json
- Instructions\pester.instructions.md
- Skills\skill-creator\SKILL.md
- Skills\debugging-and-error-recovery\notes-evals.md
- Skills\sampler-framework\references\testing-patterns.md
- Instructions\csharp.instructions.md
- Skills\automatedlab-deployment\SKILL.md
- Skills\debugging-and-error-recovery\SKILL.md
- Skills\sampler-framework\references\vscode-integration.md
- Instructions\ubiquitous-language.instructions.md
- Skills\docx-to-markdown\SKILL.md
- Skills\sampler-framework\SKILL.md
- Skills\sampler-framework\references\module-manifest.md
- Instructions\changelog.instructions.md
- Skills\agent-security-review\SKILL.md
- Hooks\scripts\Add-SessionContext.ps1
- Skills\sampler-framework\references\commands-reference.md
- Instructions\sampler.instructions.md
- Skills\german-legal-research\SKILL.md
- Hooks\scripts\Block-RemoteMutation.ps1
- Skills\sampler-framework\references\community-files.md
- Instructions\yaml.instructions.md
- Skills\long-running-job-monitor\notes-evals.md
- Skills\datum-configuration\references\dscworkshop-reference.md
- Skills\sampler-framework\references\project-structure.md
- Instructions\powershell-execution-safety.instructions.md
- Skills\long-running-job-monitor\SKILL.md
- Skills\datum-configuration\references\common-tasks.md
- Skills\sampler-framework\references\multi-module.md
- Instructions\preflight.instructions.md
- Skills\windows-gui-screenshot-capture\notes-evals.md
- Skills\datum-configuration\references\datum-yml-reference.md
- Skills\sampler-framework\references\ci-cd-pipelines.md
- Instructions\versioning.instructions.md
- Skills\windows-gui-screenshot-capture\SKILL.md
- Skills\datum-configuration\references\projectdagger-patterns.md
- Skills\sampler-framework\references\gitversion.md
- Instructions\markdown.instructions.md
- Skills\sampler-migration\SKILL.md
- Skills\marp-slide-overflow\references\mermaid-prerender.md
- Skills\sampler-framework\references\build-yaml.md
- Instructions\git.instructions.md
- Skills\microsoft-todo-tasks\SKILL.md
- Skills\marp-slide-overflow\references\png-verification.md
- Skills\sampler-framework\references\bootstrap.md
- Instructions\json.instructions.md
- Skills\code-review-and-quality\notes-evals.md
- Skills\marp-slide-overflow\references\speaker-note-guard.md
- Skills\sampler-framework\references\dependency-management.md
- Instructions\powershell.instructions.md
- Skills\code-review-and-quality\SKILL.md
- Skills\marp-slide-overflow\references\overflow-detector.md
- Skills\sampler-framework\references\dsc-datum.md
- Instructions\copilot-authoring.instructions.md
- Skills\outlook-email-export\SKILL.md
- Skills\memory-bank\scripts\Test-MemoryBankHealth.ps1
- Skills\sampler-framework\references\custom-build-tasks.md
- Instructions\postflight.instructions.md
- Skills\social-signal-sweep\SKILL.md
- Skills\memory-bank\scripts\Initialize-MemoryBank.ps1
- Skills\sampler-framework\references\troubleshooting.md
- Hooks\copilot-atelier.hooks.json
- Skills\pdf-to-markdown\SKILL.md
- Skills\memory-bank\scripts\Test-MemoryBankRouting.ps1
- Skills\sampler-framework\references\dependency-resolution.md
- Hooks\README.md
- Skills\mecm-dsc-deployment\SKILL.md
- Skills\memory-bank\evals\routing-cases.json
- Skills\authenticated-web-extraction\bootstrap\tasks\dump-cookies.mjs
- Prompts\sync-project-emails.prompt.md
- Skills\xlsx-to-markdown\SKILL.md
- Skills\automatedlab-deployment\references\post-deployment-operations.md
- Skills\authenticated-web-extraction\bootstrap\tasks\check-logins.mjs
- Prompts\lab-deploy.prompt.md
- Skills\mcp-builder\SKILL.md
- Skills\automatedlab-deployment\references\cmdlet-reference.md
- Skills\authenticated-web-extraction\bootstrap\scripts\extract.mjs
- Prompts\module-scaffold.prompt.md
- Skills\citation-integrity\SKILL.md
- Skills\automatedlab-deployment\references\lab-management.md
- Skills\authenticated-web-extraction\bootstrap\scripts\open.mjs
- Prompts\pr-description.prompt.md
- Skills\pswritehtml-reporting\SKILL.md
- Skills\automatedlab-deployment\references\vm-operations.md
Version History
| Version | Downloads | Last updated |
|---|---|---|
| 2.0.0 | 0 | 7/29/2026 |
| 2.0.0-previe... (current version) | 3 | 7/29/2026 |