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

This is a prerelease version of CopilotAtelier.

Installation Options

Copy and Paste the following command to install this package using PowerShellGet More Info

Install-Module -Name CopilotAtelier -RequiredVersion 2.0.0-preview0002 -AllowPrerelease

Copy and Paste the following command to install this package using Microsoft.PowerShell.PSResourceGet More Info

Install-PSResource -Name CopilotAtelier -Version 2.0.0-preview0002 -Prerelease

You can deploy this package directly to Azure Automation. Note that deploying packages with dependencies will deploy all the dependencies to Azure Automation. Learn More

Manually download the .nupkg file to your system's default download location. Note that the file won't be unpacked, and won't include any dependencies. Learn More

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