CopilotAtelier

4.0.0-preview0012

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.
There is a newer prerelease version of this module available.
See the version list below for details.

Installation Options

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

Install-Module -Name CopilotAtelier -RequiredVersion 4.0.0-preview0012 -AllowPrerelease

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

Install-PSResource -Name CopilotAtelier -Version 4.0.0-preview0012 -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

## [4.0.0-preview0012] - 2026-08-25

### Added

- **`copilot-usage-stats` converts tokens into AI credits and dollars** (2026-08-25). The Skill shipped hours earlier stating that the `cost` column "is not populated for subscription-billed requests" and stopping there, which left the question a user actually asks — what did this cost — unanswered and quietly wrong on two counts. GitHub moved to usage-based billing on 2026-06-01: an interaction is priced per token by model and converted to GitHub AI Credits at 1 credit = $0.01, so money is derivable from exactly the columns the Skill already read. And `cost` is not an unpopulated dollar figure at all — the one non-zero row in this repository reads `0.33` against a Claude Haiku 4.5 session, which is precisely that model's legacy premium-request multiplier, so anything presenting the column as spend reports a request count in a currency symbol.

 Step 5 carries the conversion, and its whole reason for existing is one arithmetic trap: because `input_tokens` already contains `cache_read_tokens`, billing the full input at the input rate charges cached tokens at ten times their rate. On this repository's own numbers that is the difference between $71.45 and roughly $450 — cache reads are 95.6 % of input in an agentic workload, so the error is not a rounding difference but an order of magnitude. Rates are fetched from [Models and pricing](https://docs.github.com/en/copilot/reference/copilot-billing/models-and-pricing) rather than quoted from memory, because they carry expiring promotional footnotes and models enter and leave the table. Four honesty constraints ship with it: recorded cache writes are zero where the store logged reads but no writes, so the figure is a floor; a model missing from the table is left unpriced and bounded rather than given a neighbour's rate; promotional rates expire; and Pro/Pro+ subscribers who stayed on legacy annual request-based billing are billed by multiplier, for whom a token-derived figure is not their bill at all.

 The `description` widened to cover the conversion, so the trigger set gained two positives for credit and dollar phrasing and a `should upgrade to Pro+ or Max` negative that holds the line between measuring what was consumed and advising which plan to buy.

- **`copilot-usage-stats` Skill and the `/usage` Prompt** (2026-08-25). "How many tokens has this project consumed?" had no answer that survived being asked twice, and the obvious design — a hook that tallies usage as turns complete — cannot be built. Four sources were checked before anything was written: no hook event carries usage or a model, on any of the eight (`PreToolUse` through `PreCompact`); the transcript JSONL a `Stop` hook could parse records `assistant.turn_end` as `{"turnId":"0"}` and nothing else; and the local `session-store.db` schema is `sessions`, `turns`, `session_files`, `session_refs`, `checkpoints`, with no `events` table and no token column anywhere. Token data exists only in the cloud store, reachable only through `copilot_sessionStoreSql` — so the answer is a Skill the model loads on any phrasing, not a command the user has to remember, and a Prompt on `Ctrl+K U` for the deterministic one-keystroke path.

 Two measured facts are what make the Skill worth loading rather than improvising the query. `input_tokens` **already contains** `cache_read_tokens`, shown by a per-call sequence where each call's `cache_read` is the previous call's `input` less a few tokens (89,097 → 89,754/89,094 → 90,950/89,751); adding the two, which is the natural reading of two adjacent columns, roughly doubles the reported figure, and reporting the raw 88 M input for this repository without splitting off the 84.5 M of cache reads describes one conversation being re-read as if it were fresh work. And `sessions.repository` is not normalized — this repository alone occupies `https://github.com/raandree/CopilotAtelier.git`, `https://github.com/raandree/CopilotAtelier`, and `raandree/CopilotAtelier`, the last with `cwd` set and the first two with it empty — so an equality filter silently drops most of a project's history and returns a confident, small, wrong number. The Skill matches the bare name against both columns with `ILIKE` and folds the spellings before presenting a total.

 Scope is deliberately narrow: this reports, `chronicle` advises. `cost-tips` keeps token-reduction recommendations, standups, and session search; the six near-miss negatives in the trigger set are drawn from `chronicle`, `agent-evals`, `subagent-dispatch`, and `long-running-job-monitor` so the boundary is measured rather than asserted. The `cost` column is documented as unreportable rather than shown — it is `0` for every subscription-billed row, and a spend figure of zero is worse than none.

The Memory Bank had a deterministic entry gate and no exit gate. `SessionStart` probes for the index, but the only durable write point is Post-flight, which runs "before ending the reply" — so a turn compacted mid-run never reaches it and everything the run learned goes with the conversation. The failure is quiet in the worst way: the summary that replaces the transcript still reports that Pre-flight ran, so the agent believes it holds `activeContext.md` when it does not, and nothing re-applies the routes. Every comparable system treats this as the primary threat — Anthropic injects *ASSUME INTERRUPTION: Your context window might be reset at any moment* into the memory tool's system prompt, Cline tells the user to update the memory bank before the window fills, Claude Code re-reads the project `CLAUDE.md` from disk after `/compact` — while this repository covered it in one Prompt's bespoke section, one manually invoked `/session-handoff`, and the `subagent-dispatch` ledger. All model judgement, none general, and the handoff has to be requested *before* saturation, which is exactly what a mid-turn agent will not do. [`Hooks/scripts/Write-CompactionCheckpoint.ps1`](Hooks/scripts/Write-CompactionCheckpoint.ps1) now writes `.memory-bank/session/compaction-<UTC>Z.md` before the truncation, carrying the trigger, transcript path, branch, commit, and changed paths, plus a resume protocol. What the hook cannot do is stated rather than papered over: `PreCompact` supports the common output format only — no `additionalContext` — so nothing it emits reaches the post-compaction context. The model-facing half is a *Compaction recovery* section in [`Instructions/preflight.instructions.md`](Instructions/preflight.instructions.md), which survives by construction because Instructions are re-sent with every request. Payload values are flattened and stripped before they enter a file an agent reads back, every failure path exits `0` so a hook fault cannot block compaction, and a workspace without a Memory Bank gets no directory — creating one stays reserved for the `memory-bank` Skill.

- **Release-tag parity gate** (2026-08-25). Two releases shipped without a changelog section and nothing noticed, because the only thing that reads the release history is [`tests/PluginManifest.Tests.ps1`](tests/PluginManifest.Tests.ps1), and it reads the changelog rather than what was actually published. It now reads both. Every non-preview tag reachable from `HEAD` must have a matching `[x.y.z]` release section, so an unmerged rollover pull request turns `main` red instead of accumulating in silence. One exemption is load-bearing: a tag pointing at `HEAD` is skipped. On a tag push the `test` job runs before `deploy`, so at that instant the tag exists and its section cannot — `Create_ChangeLog_GitHub_PR` only runs after the release is published — and a strict gate would deadlock every release on itself. The exemption lapses the moment one commit lands on top, which is the earliest point at which the rollover *could* have been merged. Shown to reject before it was accepted: against the unfixed changelog the run was 8 passed, 3 failed, naming `v3.0.0` and `v3.1.0` and telling the reader which branch to merge; fixed, 12 of 12 pass. A companion assertion settles a question that had been left open — `plugin.json.version` is `major.minor.patch` and never a pre-release, because the field is committed, only moves on a release rollover, and is compared as an opaque string by plugin loaders, where `4.0.0-preview0007` sorts after `4.0.0` and would suppress the update to the real release.

- **README catalogue gate** (2026-08-24). `AGENTS.md` has required a *Available Skills* row in every Skill's atomic change set since 2026-08-12, but nothing checked it, and the drift that accumulated in the meantime was invisible: 36 rows against 45 shipped Skills. [`tests/SkillCatalogue.Tests.ps1`](tests/SkillCatalogue.Tests.ps1) closes it in both directions — every shipped Skill has a row, every row names a Skill that still ships, and every row carries a description. It parses the `## Available Skills` section rather than the whole file, because README holds other tables whose first cell is bold too and a whole-file scan reads `**Agents**` and `**Instructions**` as Skills. A count assertion guards the parser itself, so a moved heading fails loudly instead of passing with zero cases. Shown to reject before it was accepted: with one row removed the run is 133 passed, 1 failed, naming `agent-evals has a catalogue row`; restored, 136 of 136 pass.

- **`brand-logo` Prompt** (2026-08-14). `brand-logo-system` answers "how do I build the asset set" but nothing started the conversation, and the first question an identity task needs — what should the mark actually show — is the one an agent is most likely to skip and guess. The Prompt front-loads it: search the repository for an existing mark first and, when one is found, ask only whether to keep, refine, or replace it rather than interviewing the user about a decision the repository already made; otherwise interview in two `vscode_askQuestions` clusters covering subject, visual treatment, character, colour source, wordma

FileList

  • CopilotAtelier.nuspec
  • CopilotAtelier.psm1
  • Skills\skill-creator\SKILL.md
  • Skills\social-signal-sweep\SKILL.md
  • Skills\sampler-framework\references\ci-cd-pipelines.md
  • CopilotAtelier.psd1
  • Skills\gilb-requirements-engineering\SKILL.md
  • Skills\pdf-to-markdown\SKILL.md
  • Skills\sampler-framework\references\community-files.md
  • Skills\windows-gui-screenshot-capture\SKILL.md
  • Skills\grill-me\SKILL.md
  • Skills\sampler-framework\references\bootstrap.md
  • Prompts\session-handoff.prompt.md
  • Skills\windows-gui-screenshot-capture\notes-evals.md
  • Skills\pandoc-docx-export\SKILL.md
  • Skills\sampler-framework\references\testing-patterns.md
  • Prompts\peer-review.prompt.md
  • Skills\brand-logo-system\SKILL.md
  • Skills\winrm-troubleshooting\SKILL.md
  • Skills\sampler-framework\references\dependency-resolution.md
  • Prompts\audit-case-file.prompt.md
  • Skills\mcp-builder\SKILL.md
  • Skills\winrm-troubleshooting\notes-evals.md
  • Skills\sampler-framework\references\build-yaml.md
  • Prompts\code-review.prompt.md
  • Skills\doc-coauthoring\SKILL.md
  • Skills\citation-integrity\SKILL.md
  • Skills\sampler-framework\references\dependency-management.md
  • Prompts\export-emails.prompt.md
  • Skills\agent-evals\SKILL.md
  • Skills\memory-bank\SKILL.md
  • Skills\sampler-framework\references\commands-reference.md
  • Prompts\pr-description.prompt.md
  • Skills\marp-slide-overflow\SKILL.md
  • Skills\memory-bank\notes-evals.md
  • Skills\sampler-framework\references\project-structure.md
  • Prompts\usage.prompt.md
  • Skills\microsoft-todo-tasks\SKILL.md
  • Skills\skill-creator\references\scripts-and-evaluation.md
  • Skills\long-running-job-monitor\references\heartbeat-protocol.md
  • Prompts\deadline-action-handoff.prompt.md
  • Skills\create-outlook-draft\SKILL.md
  • Skills\skill-creator\references\authoring-patterns.md
  • Skills\long-running-job-monitor\references\out-of-band-verification.md
  • Prompts\lab-deploy.prompt.md
  • Skills\datum-configuration\SKILL.md
  • Skills\gilb-requirements-engineering\references\evo-planning.md
  • Skills\long-running-job-monitor\scripts\Start-JobHeartbeat.ps1
  • Prompts\brand-logo.prompt.md
  • Skills\devils-advocate-review\SKILL.md
  • Skills\gilb-requirements-engineering\references\planguage-keywords.md
  • Skills\long-running-job-monitor\scripts\Start-JobMonitor.ps1
  • Prompts\refactor.prompt.md
  • Skills\sampler-framework\SKILL.md
  • Skills\gilb-requirements-engineering\references\spec-quality-control.md
  • Skills\long-running-job-monitor\scripts\Start-DetachedPowerShell.ps1
  • Prompts\module-scaffold.prompt.md
  • Skills\sampler-build-debug\SKILL.md
  • Skills\gilb-requirements-engineering\references\impact-estimation.md
  • Skills\evidence-package-assembly\scripts\Build-EvidencePackage.ps1
  • Prompts\sync-project-emails.prompt.md
  • Skills\pswritehtml-reporting\SKILL.md
  • Skills\windows-gui-screenshot-capture\references\external-win32-executables.md
  • Skills\evidence-package-assembly\scripts\merge-and-verify.py
  • Instructions\powershell.instructions.md
  • Skills\long-running-job-monitor\SKILL.md
  • Skills\windows-gui-screenshot-capture\references\engine-recipes.md
  • Skills\pester-patterns\references\migrating-pester-v4-to-v5.md
  • Instructions\azurepipelines.instructions.md
  • Skills\long-running-job-monitor\notes-evals.md
  • Skills\windows-gui-screenshot-capture\scripts\WindowCapture.ps1
  • Skills\pester-patterns\references\testing-powershell-constructs.md
  • Instructions\preflight.instructions.md
  • Skills\code-review-and-quality\SKILL.md
  • Skills\windows-gui-screenshot-capture\scripts\DialogCapture.ps1
  • Skills\pester-patterns\references\mocking-external-dependencies.md
  • Instructions\markdown.instructions.md
  • Skills\code-review-and-quality\notes-evals.md
  • Skills\brand-logo-system\scripts\Export-BrandLogoSet.ps1
  • Skills\pester-patterns\scripts\Find-PesterV4Pattern.ps1
  • Instructions\sampler.instructions.md
  • Skills\send-outlook-email\SKILL.md
  • Skills\agent-evals\assets\trigger-queries.sampler-build-debug.json
  • Skills\authenticated-web-extraction\bootstrap\package.json
  • Instructions\yaml.instructions.md
  • Skills\debugging-and-error-recovery\SKILL.md
  • Skills\agent-evals\assets\trigger-queries.sampler-framework.json
  • Skills\automatedlab-proxmox\references\evidence-and-readiness.md
  • Instructions\postflight.instructions.md
  • Skills\debugging-and-error-recovery\notes-evals.md
  • Skills\agent-evals\assets\evals.sample.json
  • Skills\automatedlab-proxmox\references\module-development.md
  • Instructions\versioning.instructions.md
  • Skills\evidence-package-assembly\SKILL.md
  • Skills\agent-evals\assets\trigger-queries.copilot-usage-stats.json
  • Skills\automatedlab-proxmox\references\windows-sysprep.md
  • Instructions\copilot-authoring.instructions.md
  • Skills\whisper-pyannote-transcription\SKILL.md
  • Skills\agent-evals\assets\trigger-queries.pester-patterns.json
  • Skills\automatedlab-deployment\references\lab-management.md
  • Instructions\ubiquitous-language.instructions.md
  • Skills\whisper-pyannote-transcription\transcribe.py
  • Skills\agent-evals\assets\trigger-queries.brand-logo-system.json
  • Skills\automatedlab-deployment\references\troubleshooting.md
  • Instructions\pester.instructions.md
  • Skills\whisper-pyannote-transcription\transcribe-segment.py
  • Skills\agent-evals\assets\trigger-queries.sampler-migration.json
  • Skills\automatedlab-deployment\references\post-deployment-operations.md
  • Instructions\powershell-execution-safety.instructions.md
  • Skills\whisper-pyannote-transcription\diarize.py
  • Skills\agent-evals\assets\trigger-queries.skill-creator.json
  • Skills\automatedlab-deployment\references\roles-and-services.md
  • Instructions\json.instructions.md
  • Skills\pester-patterns\SKILL.md
  • Skills\agent-evals\assets\trigger-queries.test-driven-development.json
  • Skills\automatedlab-deployment\references\cmdlet-reference.md
  • Instructions\csharp.instructions.md
  • Skills\pester-patterns\notes-evals.md
  • Skills\agent-evals\assets\trigger-queries.sample.json
  • Skills\automatedlab-deployment\references\networking.md
  • Instructions\git.instructions.md
  • Skills\grammar-check\SKILL.md
  • Skills\agent-evals\assets\evals.output.sample.json
  • Skills\automatedlab-deployment\references\vm-operations.md
  • Instructions\changelog.instructions.md
  • Skills\test-driven-development\SKILL.md
  • Skills\agent-evals\references\eval-artifacts.md
  • Skills\german-tax-research\references\vorlagen.md
  • Hooks\copilot-atelier.hooks.json
  • Skills\test-driven-development\notes-evals.md
  • Skills\agent-evals\scripts\run-trigger-evals.ps1
  • Skills\german-tax-research\references\vermietung-und-afa.md
  • Hooks\README.md
  • Skills\outlook-email-export\SKILL.md
  • Skills\agent-evals\scripts\run-evals.ps1
  • Skills\german-tax-research\references\belegaufforderung-antwort.md
  • Keybindings\keybindings.json
  • Skills\agent-security-review\SKILL.md
  • Skills\marp-slide-overflow\references\speaker-note-guard.md
  • Skills\german-tax-research\references\kennzahlen.md
  • Agents\Software Engineer Agent.agent.md
  • Skills\german-legal-research\SKILL.md
  • Skills\marp-slide-overflow\references\mermaid-prerender.md
  • Skills\german-tax-research\references\fristen-und-verfahren.md
  • Agents\career-coach.agent.md
  • Skills\authenticated-web-extraction\SKILL.md
  • Skills\marp-slide-overflow\references\png-verification.md
  • Skills\german-tax-research\references\werbungskosten-und-abzuege.md
  • Agents\Training Content Writer.agent.md
  • Skills\mecm-dsc-deployment\SKILL.md
  • Skills\marp-slide-overflow\references\overflow-detector.md
  • Skills\german-tax-research\scripts\Get-SteuerFrist.ps1
  • Agents\tax-researcher.agent.md
  • Skills\outlook-calendar-export\SKILL.md
  • Skills\datum-configuration\references\common-tasks.md
  • Skills\winrm-troubleshooting\references\post-restart-readiness.md
  • Agents\Security & Quality Assurance Agent.agent.md
  • Skills\xlsx-to-markdown\SKILL.md
  • Skills\datum-configuration\references\datum-yml-reference.md
  • Skills\winrm-troubleshooting\references\advanced-diagnostics.md
  • Agents\Technical Writer & Documentation Agent.agent.md
  • Skills\dsc-troubleshooting\SKILL.md
  • Skills\datum-configuration\references\dscworkshop-reference.md
  • Skills\memory-bank\scripts\Test-MemoryBankRouting.ps1
  • Agents\README.md
  • Skills\subagent-dispatch\SKILL.md
  • Skills\datum-configuration\references\projectdagger-patterns.md
  • Skills\memory-bank\scripts\Initialize-MemoryBank.ps1
  • Agents\QC Inspector Agent.agent.md
  • Skills\automatedlab-proxmox\SKILL.md
  • Skills\sampler-framework\references\custom-build-tasks.md
  • Skills\memory-bank\scripts\Invoke-MemoryBankRouteSelectionEval.ps1
  • Agents\research-analyst.agent.md
  • Skills\automatedlab-proxmox\notes-evals.md
  • Skills\sampler-framework\references\troubleshooting.md
  • Skills\memory-bank\scripts\Test-MemoryBankHealth.ps1
  • Agents\Technical Troubleshooter Agent.agent.md
  • Skills\sampler-migration\SKILL.md
  • Skills\sampler-framework\references\gitversion.md
  • Skills\memory-bank\evals\routing-cases.json
  • Agents\DevOps Training Writer.agent.md
  • Skills\copilot-usage-stats\SKILL.md
  • Skills\sampler-framework\references\vscode-integration.md
  • Skills\authenticated-web-extraction\bootstrap\tasks\check-logins.mjs
  • Agents\legal-researcher.agent.md
  • Skills\automatedlab-deployment\SKILL.md
  • Skills\sampler-framework\references\module-manifest.md
  • Skills\authenticated-web-extraction\bootstrap\tasks\dump-cookies.mjs
  • Hooks\scripts\Write-CompactionCheckpoint.ps1
  • Skills\docx-to-markdown\SKILL.md
  • Skills\sampler-framework\references\multi-module.md
  • Skills\authenticated-web-extraction\bootstrap\scripts\open.mjs
  • Hooks\scripts\Add-SessionContext.ps1
  • Skills\german-tax-research\SKILL.md
  • Skills\sampler-framework\references\dsc-datum.md
  • Skills\authenticated-web-extraction\bootstrap\scripts\extract.mjs
  • Hooks\scripts\Block-RemoteMutation.ps1

Version History

Version Downloads Last updated
5.0.0-previe... 3 8/27/2026
5.0.0-previe... 3 8/27/2026
5.0.0-previe... 4 8/26/2026
4.0.0 9 8/26/2026
4.0.0-previe... 2 8/26/2026
4.0.0-previe... 3 8/26/2026
4.0.0-previe... (current version) 4 8/25/2026
4.0.0-previe... 3 8/25/2026
4.0.0-previe... 3 8/25/2026
4.0.0-previe... 3 8/25/2026
4.0.0-previe... 3 8/25/2026
4.0.0-previe... 3 8/24/2026
4.0.0-previe... 3 8/24/2026
4.0.0-previe... 18 8/19/2026
4.0.0-previe... 2 8/19/2026
4.0.0-previe... 5 8/15/2026
4.0.0-previe... 4 8/12/2026
4.0.0-previe... 4 8/12/2026
3.2.0-previe... 3 8/11/2026
3.1.1-previe... 6 8/11/2026
3.1.0 29 8/7/2026
3.1.0-previe... 3 8/7/2026
3.1.0-previe... 3 8/5/2026
3.1.0-previe... 3 8/5/2026
3.1.0-previe... 7 8/4/2026
3.0.0 16 8/1/2026
3.0.0-previe... 4 8/1/2026
3.0.0-previe... 5 8/1/2026
3.0.0-previe... 5 8/1/2026
2.0.0 7 7/29/2026
2.0.0-previe... 3 7/29/2026
Show less