CopilotAtelier

2.0.0

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

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

Install-Module -Name CopilotAtelier

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

Install-PSResource -Name CopilotAtelier

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] - 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

- **The GitVersion step destroyed the evidence of its own failure** (2026-07-29). `Calculate ModuleVersion (GitVersion)` piped `dotnet-gitversion` straight into `ConvertFrom-Json`. GitVersion writes its diagnostic log to standard output, not standard error, so when it misbehaves the pipe swallows the message and the step reports `Conversion from JSON failed with error: Unexpected character encountered while parsing value: M` instead of the reason. That is exactly what run 30462902820 reported after `v2.0.0` was tagged, which is why the cause is still unknown: GitVersion 5.12.0 installed, ran, and wrote something beginning with `M` that nobody can see. The step now captures the output, checks the exit code and that the payload starts with `{`, prints the raw output between markers before failing, and echoes the resolved `dotnet-gitversion` path. It also **prepends** rather than appends `~/.dotnet/tools` to `PATH`, so a GitVersion already present on the runner image cannot shadow the pinned 5.x, and clears `$PSNativeCommandUseErrorActionPreference` so GitHub's `$ErrorActionPreference = 'Stop'` cannot throw before the output is shown.

- **A tag build could not always compute a version** (2026-07-29). A tag push checks out `refs/tags/<tag>` with a detached HEAD, so GitVersion takes its branch name from `GITHUB_REF` and works on a synthetic `tags/v2.0.0` branch. Nothing in [`GitVersion.yml`](GitVersion.yml) matched it, so every tag build logged `No branch configuration found for branch tags/v2.0.0, falling back to default configuration` and then tried to inherit the increment from a parent branch. That lookup is not guaranteed to succeed: when it finds no `main` or `develop` branch it throws `Gitversion could not determine which branch to treat as the development branch (default is 'develop') nor release-able branch (default is 'main' or 'master')` and exits 1, taking the release build with it. Reproduced with GitVersion 5.12 against a detached tag checkout. `GitVersion.yml` now carries a `release-tag` branch entry matching `^tags?[-/]` with no label and no increment, because on a tag build the tag *is* the version, so the inheritance lookup is never reached. Verified `FullSemVer 2.0.0` on a tag build with and without

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 (current version) 3 7/29/2026
2.0.0-previe... 3 7/29/2026