CopilotAtelier
4.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
See the version list below for details.
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
## [4.0.0] - 2026-08-26
### Added
- **`software-architect` Custom agent** (2026-08-26). The pipeline in [`Agents/README.md`](Agents/README.md) opened at *"Phase: Code Development"*. Eleven agents covered build, verify, diagnose, document, research, and train, and none owned the phase where the requirement is still text — which is the phase Brooks argues is the cheapest place to fix a defect. The gap was not theoretical. [`Skills/grill-me/SKILL.md`](Skills/grill-me/SKILL.md) has shipped a forty-to-hundred-question adversarial requirements interview since 2026-07, and inside the Software Engineer agent it loses every time it is tried, because a Skill is advisory content while the Custom agent body is mode instruction: that body directs the model to *"not ask for confirmation when the next action is reversible"* and opens its loop on *"Start from the named file, symbol, failing behavior"*. Two directives point in opposite directions and only one of them is a mode instruction. Making the interview a persona rather than a suggestion is also what the platform recommends — VS Code documents a reduced-tool planning agent as the counterpart to an implementation agent, and Planning → Implementation as the canonical handoff — so [`Agents/software-architect.agent.md`](Agents/software-architect.agent.md) hands off to `software-engineer` on sign-off and to `security-reviewer` for a pre-code threat model, and the Software Engineer agent gained the return path for a requirement gap it cannot resolve locally.
What the toolset buys is real but bounded, and is recorded as such rather than sold as a sandbox. Thirty-one tools against the Software Engineer's forty-five: `runTests`, `codeInterpreter`, `execute/runTask`, `execute/createAndRunTask`, `execute/runNotebookCell`, `edit/editNotebook`, `edit/rename`, `read/testFailure`, and the four `vscode/*` scaffolding tools are gone. `edit/editFiles` and `execute/runInTerminal` stay, and the reason is worth stating because the alternative looks stricter and is not: Post-flight requires a Memory Bank update, a changelog entry, and a local commit on every Substantive turn, so an agent stripped of those two tools would violate its own deployed lifecycle once per turn. The guarantee is therefore not that the agent *cannot* write code — it is that every sanctioned validation path is absent, so it cannot close the Definition of Done on a code change and the only productive exit is the handoff.
The rule that keeps it selectable is that the interview scales. Ninety questions about a new switch parameter teaches a user never to open the agent again, so depth is chosen from blast radius — the full twelve categories for a new system, contract, or irreversible schema decision; a named subset for a contained change; and an explicit "no interview" path for an unambiguous request with one obvious design — and the chosen depth and its reason are stated in the first reply where the user can override them. `gilb-requirements-engineering` is chained the moment an unquantified quality word survives, which is the pairing both Skills already cross-reference and which no agent previously ran. Memory Bank ownership moved with the role: `projectbrief.md`, which holds scope and Acceptance criteria, is now the architect's with the Software Engineer and Technical Writer as co-curators, and Decision records are authored at sign-off rather than reconstructed from the code afterwards.
- **`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 Instruction
FileList
- CopilotAtelier.nuspec
- CopilotAtelier.psm1
- Hooks\scripts\Block-RemoteMutation.ps1
- Skills\social-signal-sweep\SKILL.md
- Skills\sampler-framework\references\ci-cd-pipelines.md
- CopilotAtelier.psd1
- Skills\skill-creator\SKILL.md
- Skills\pdf-to-markdown\SKILL.md
- Skills\sampler-framework\references\community-files.md
- Skills\gilb-requirements-engineering\SKILL.md
- Skills\grill-me\SKILL.md
- Skills\sampler-framework\references\bootstrap.md
- Prompts\session-handoff.prompt.md
- Skills\windows-gui-screenshot-capture\SKILL.md
- Skills\pandoc-docx-export\SKILL.md
- Skills\sampler-framework\references\testing-patterns.md
- Prompts\peer-review.prompt.md
- Skills\windows-gui-screenshot-capture\notes-evals.md
- Skills\winrm-troubleshooting\SKILL.md
- Skills\sampler-framework\references\dependency-resolution.md
- Prompts\audit-case-file.prompt.md
- Skills\brand-logo-system\SKILL.md
- Skills\winrm-troubleshooting\notes-evals.md
- Skills\sampler-framework\references\build-yaml.md
- Prompts\code-review.prompt.md
- Skills\mcp-builder\SKILL.md
- Skills\citation-integrity\SKILL.md
- Skills\sampler-framework\references\dependency-management.md
- Prompts\export-emails.prompt.md
- Skills\doc-coauthoring\SKILL.md
- Skills\memory-bank\SKILL.md
- Skills\sampler-framework\references\commands-reference.md
- Prompts\pr-description.prompt.md
- Skills\agent-evals\SKILL.md
- Skills\memory-bank\notes-evals.md
- Skills\sampler-framework\references\project-structure.md
- Prompts\usage.prompt.md
- Skills\marp-slide-overflow\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\microsoft-todo-tasks\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\create-outlook-draft\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\datum-configuration\SKILL.md
- Skills\gilb-requirements-engineering\references\planguage-keywords.md
- Skills\long-running-job-monitor\scripts\Start-JobMonitor.ps1
- Prompts\refactor.prompt.md
- Skills\devils-advocate-review\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-framework\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\sampler-build-debug\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\pswritehtml-reporting\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\SKILL.md
- Skills\windows-gui-screenshot-capture\scripts\WindowCapture.ps1
- Skills\pester-patterns\references\testing-powershell-constructs.md
- Instructions\preflight.instructions.md
- Skills\long-running-job-monitor\notes-evals.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\SKILL.md
- Skills\brand-logo-system\scripts\Export-BrandLogoSet.ps1
- Skills\pester-patterns\scripts\Find-PesterV4Pattern.ps1
- Instructions\sampler.instructions.md
- Skills\code-review-and-quality\notes-evals.md
- Skills\agent-evals\assets\trigger-queries.sampler-build-debug.json
- Skills\authenticated-web-extraction\bootstrap\package.json
- Instructions\yaml.instructions.md
- Skills\send-outlook-email\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\SKILL.md
- Skills\agent-evals\assets\evals.sample.json
- Skills\automatedlab-proxmox\references\module-development.md
- Instructions\versioning.instructions.md
- Skills\debugging-and-error-recovery\notes-evals.md
- Skills\agent-evals\assets\trigger-queries.copilot-usage-stats.json
- Skills\automatedlab-proxmox\references\windows-sysprep.md
- Instructions\copilot-authoring.instructions.md
- Skills\evidence-package-assembly\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\SKILL.md
- 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.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\transcribe-segment.py
- Skills\agent-evals\assets\trigger-queries.skill-creator.json
- Skills\automatedlab-deployment\references\roles-and-services.md
- Instructions\json.instructions.md
- Skills\whisper-pyannote-transcription\diarize.py
- Skills\agent-evals\assets\trigger-queries.test-driven-development.json
- Skills\automatedlab-deployment\references\cmdlet-reference.md
- Instructions\csharp.instructions.md
- Skills\pester-patterns\SKILL.md
- Skills\agent-evals\assets\trigger-queries.sample.json
- Skills\automatedlab-deployment\references\networking.md
- Instructions\git.instructions.md
- Skills\pester-patterns\notes-evals.md
- Skills\agent-evals\assets\evals.output.sample.json
- Skills\automatedlab-deployment\references\vm-operations.md
- Instructions\changelog.instructions.md
- Skills\grammar-check\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\SKILL.md
- Skills\agent-evals\scripts\run-trigger-evals.ps1
- Skills\german-tax-research\references\vermietung-und-afa.md
- Hooks\README.md
- Skills\test-driven-development\notes-evals.md
- Skills\agent-evals\scripts\run-evals.ps1
- Skills\german-tax-research\references\belegaufforderung-antwort.md
- Keybindings\keybindings.json
- Skills\outlook-email-export\SKILL.md
- Skills\marp-slide-overflow\references\speaker-note-guard.md
- Skills\german-tax-research\references\kennzahlen.md
- Agents\career-coach.agent.md
- Skills\agent-security-review\SKILL.md
- Skills\marp-slide-overflow\references\mermaid-prerender.md
- Skills\german-tax-research\references\fristen-und-verfahren.md
- Agents\tax-researcher.agent.md
- Skills\german-legal-research\SKILL.md
- Skills\marp-slide-overflow\references\png-verification.md
- Skills\german-tax-research\references\werbungskosten-und-abzuege.md
- Agents\training-writer.agent.md
- Skills\authenticated-web-extraction\SKILL.md
- Skills\marp-slide-overflow\references\overflow-detector.md
- Skills\german-tax-research\scripts\Get-SteuerFrist.ps1
- Agents\software-architect.agent.md
- Skills\mecm-dsc-deployment\SKILL.md
- Skills\datum-configuration\references\common-tasks.md
- Skills\winrm-troubleshooting\references\post-restart-readiness.md
- Agents\technical-writer.agent.md
- Skills\outlook-calendar-export\SKILL.md
- Skills\datum-configuration\references\datum-yml-reference.md
- Skills\winrm-troubleshooting\references\advanced-diagnostics.md
- Agents\troubleshooter.agent.md
- Skills\xlsx-to-markdown\SKILL.md
- Skills\datum-configuration\references\dscworkshop-reference.md
- Skills\memory-bank\scripts\Test-MemoryBankRouting.ps1
- Agents\README.md
- Skills\dsc-troubleshooting\SKILL.md
- Skills\datum-configuration\references\projectdagger-patterns.md
- Skills\memory-bank\scripts\Initialize-MemoryBank.ps1
- Agents\software-engineer.agent.md
- Skills\subagent-dispatch\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\SKILL.md
- Skills\sampler-framework\references\troubleshooting.md
- Skills\memory-bank\scripts\Test-MemoryBankHealth.ps1
- Agents\devops-training-writer.agent.md
- Skills\automatedlab-proxmox\notes-evals.md
- Skills\sampler-framework\references\gitversion.md
- Skills\memory-bank\evals\routing-cases.json
- Agents\security-reviewer.agent.md
- Skills\sampler-migration\SKILL.md
- Skills\sampler-framework\references\vscode-integration.md
- Skills\authenticated-web-extraction\bootstrap\tasks\check-logins.mjs
- Agents\legal-researcher.agent.md
- Skills\copilot-usage-stats\SKILL.md
- Skills\sampler-framework\references\module-manifest.md
- Skills\authenticated-web-extraction\bootstrap\tasks\dump-cookies.mjs
- Agents\qc-inspector.agent.md
- Skills\automatedlab-deployment\SKILL.md
- Skills\sampler-framework\references\multi-module.md
- Skills\authenticated-web-extraction\bootstrap\scripts\open.mjs
- Hooks\scripts\Write-CompactionCheckpoint.ps1
- Skills\docx-to-markdown\SKILL.md
- Skills\sampler-framework\references\dsc-datum.md
- Skills\authenticated-web-extraction\bootstrap\scripts\extract.mjs
- Hooks\scripts\Add-SessionContext.ps1
- Skills\german-tax-research\SKILL.md
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 (current version) | 9 | 8/26/2026 |
| 4.0.0-previe... | 2 | 8/26/2026 |
| 4.0.0-previe... | 3 | 8/26/2026 |
| 4.0.0-previe... | 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 |