CopilotAtelier.psd1
|
@{ RootModule = 'CopilotAtelier.psm1' # Replaced at build time by GitVersion. ModuleVersion = '6.1.0' GUID = '67bbef0b-f4de-4c1b-bb5a-b34104beb5b7' Author = 'raandree' CompanyName = 'raandree' Copyright = '(c) raandree. All rights reserved.' Description = '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.' PowerShellVersion = '5.1' FunctionsToExport = @('Export-CopilotAtelierContributorProfile','Get-CopilotAtelierClientAdapter','Get-CopilotAtelierContributorProfile','Get-CopilotAtelierFootprint','Get-CopilotAtelierProfile','Get-CopilotAtelierSkillHealth','Get-CopilotAtelierVersion','Import-CopilotAtelierContributorProfile','Install-CopilotAtelier','Remove-CopilotAtelierContributorProfile','Set-CopilotAtelierContributorProfile','Test-CopilotAtelier','Uninstall-CopilotAtelier','Update-CopilotAtelier') CmdletsToExport = @() VariablesToExport = @() AliasesToExport = @() PrivateData = @{ PSData = @{ Tags = @( 'Copilot' 'GitHubCopilot' 'VSCode' 'Agents' 'Skills' 'Prompts' 'Instructions' 'Hooks' 'AI' 'Windows' 'Linux' 'MacOS' ) LicenseUri = 'https://github.com/raandree/CopilotAtelier/blob/main/LICENSE' ProjectUri = 'https://github.com/raandree/CopilotAtelier' IconUri = 'https://raw.githubusercontent.com/raandree/CopilotAtelier/main/assets/CA-glyph-on-light.png' Prerelease = 'preview0009' ReleaseNotes = '## [6.1.0-preview0009] - 2026-10-12 ### Added - Add the read-only [`Wait-DetachedResult.ps1`](skills/long-running-job-monitor/scripts/Wait-DetachedResult.ps1) for short detached Pester/build runs: bounded 500 ms checks, a measured result line and log tail, job exit `0`/`1` or timeout `124`, with async-only guidance in the monitor Skill and both execution Instructions. - Add contributor calibration: every agent pitches answers and questions at your familiarity with each knowledge area (`new`, `familiar`, or `expert`; `familiar` until you say otherwise), and in `new` and `familiar` areas illustrates an abstract finding with a concrete example; every calculated or reconstructed result names its sources and method. Every technical question offers a recommended answer and a `not sure, you pick` option; a delegated answer becomes an assumption flagged for expert review, counts only when you write it yourself, and never authorizes an irreversible, destructive, or security-relevant action; a question that authorizes such an action comes without the option. A level changes wording and depth, never warnings, tests, or reviews, and is never written to a repository. See [How Much Explanation You Want](README.md#how-much-explanation-you-want). - Add [`docs/SECURITY-REVIEW.md`](docs/SECURITY-REVIEW.md), the independent security review of contributor calibration with every finding, its severity, and its resolution. - Add the `/simpler` and `/deeper` Prompts, which re-explain the last answer one familiarity level simpler or deeper and keep that level for its knowledge area for the rest of the session. - Add the `contributor-profile` Skill and the commands `Get-`, `Set-`, `Export-`, `Import-`, and `Remove-CopilotAtelierContributorProfile`, which keep your familiarity levels in a private Contributor profile outside every repository, so a saved level shapes later sessions without being restated. The profile lives in the `contributor` folder of the Canonical target, which syncs through OneDrive, or under LocalApplicationData on a machine without one; Export and Import carry it across and merge entry by entry. Every write takes a lock, replaces the file atomically, previews with `-WhatIf`, and refuses any path inside a git working tree, also one reached through a junction or symbolic link; `Get-CopilotAtelierContributorProfile -WorkspacePath .` shows where the profile lives and what a workspace receives, with aliases masked. A write changes only an entry you chose: the one `-Contributor` names, the one whose alias matches your git address, or a new one, the first in the profile or, beside others, your own with `-NewContributor`. It never falls back to the only or the default entry, so on a shared account one person''s level cannot land in another person''s entry. Knowledge area names may start with a dot followed by a letter or a digit, such as `.NET`. `contributor-profile` is mandatory in every installation profile. See [contributor-profile](skills/contributor-profile/SKILL.md). - Add saved familiarity levels to every session of a workspace that declares Knowledge areas under `## Knowledge areas` in `.memory-bank/projectbrief.md`: the SessionStart hook adds one data-only sentence with your levels for those areas in VS Code, the Copilot SDK host, and Copilot CLI, and a new PostToolUse hook, `Add-FamiliarityContext.ps1`, re-sends them on the first successful tool call after a compaction. Where the host runs no PreCompact hook, as for a manual or a background compaction in VS Code, it re-sends them on the first tool call after a turn ends, or 5 minutes after the last re-send; these re-sends stop once a session has received 12,000 characters of levels, about 3,000 tokens. That hook runs only on machines where a profile entry is on and rates an area, through `~/.copilot/hooks/contributor-profile.json`, and adds about one more hook launch to each successful tool call there, measured at 0.8 to 2 s depending on the machine and the host; the one call per turn that re-sends takes about 0.4 to 0.8 s longer, and in a workspace that declares areas, session start takes about 0.2 to 0.6 s longer. A registration written from an earlier release''s template is replaced with the current one at the next profile write. On a synced Canonical target, a registration record that OneDrive delivers before its file is reported as pending by `Get-CopilotAtelierContributorProfile` and left alone until both arrive; `Remove-CopilotAtelierContributorProfile -RegistrationOnly` clears one that never settles, and `Get-CopilotAtelierContributorProfile` lists possible conflict copies of the registration in the hooks folder. `/simpler` and `/deeper` offer to save a changed level, the `memory-bank` projectbrief template gains the optional section, and the PRE-FLIGHT line names the profile state as counts only. A saved level steers the model without binding it: a saved `expert` level does not reliably make replies terse, and after a compaction a plugin-only installation, which has no hook registration, and a reply that makes no tool call do not receive the levels again. - Add task-ledger creation and checking to the `subagent-dispatch` Skill. A sequence of prompts you run one per chat now starts from four templates ([ledger](skills/subagent-dispatch/assets/task-ledger.template.md), [sequence README](skills/subagent-dispatch/assets/sequence-readme.template.md), [brief](skills/subagent-dispatch/assets/brief.template.md), and [report](skills/subagent-dispatch/assets/report.template.md)), and the read-only [`Test-HandoffSequence.ps1`](skills/subagent-dispatch/scripts/Test-HandoffSequence.ps1) reports a brief without a ledger row, a row without a brief, a status outside the vocabulary, a Rulings table that does not say who decided, an unfilled slot, a broken link, a user-profile path, and, given the repository, a commit that is not on the integration branch, however the row writes it. It never reads through a link and never repeats a forbidden term in a finding. The Skill states the rules for running such a sequence: one status vocabulary, one writer per row, a start gate on named dependencies, a check of another run''s commits and report before building on its row, a dated `Update` instead of a rewritten brief, rulings that say who decided, delegation that authorizes no remote action, commands handed over in the final reply, and verified bundles for another machine. The description is unchanged because no trigger eval ran for it; [`notes-evals.md`](skills/subagent-dispatch/notes-evals.md) lists the output comparison to run. - Add the `/migrate-handoff-sequence` Prompt, which converts a folder of existing prompts to the task-ledger process. The read-only [`Get-HandoffSequenceInventory.ps1`](skills/subagent-dispatch/scripts/Get-HandoffSequenceInventory.ps1) first proposes each `NN-<slug>.prompt.md` name, reads the agent, names the slots a brief lacks, lists the lines that hint at a dependency or a remote step, finds a report or commits that show a prompt already ran, and hashes every file the migration must keep; it never reads through a link. The Prompt shows its plan and asks one question at a time before it writes, keeps every original under `originals/` after a SHA-256 check and never over a file that exists, marks each fact it cannot supply `needs input` instead of inventing it, moves a rule that several prompts repeat into the README''s shared rules, writes a ledger whose reconstructed statuses come only from evidence and are recorded as agent decisions for your review, adds a publish brief when you confirm a remote step, changes nothing but missing slots on a folder that already follows the process (after a copy of each brief it edits), and writes a migration report. `Test-HandoffSequence.ps1` gains `-Original`, which proves every original survived byte for byte. The Skill''s [reference](skills/subagent-dispatch/references/sequence-operations.md#migrating-a-folder-of-prompts) carries the same safeguards for hosts that do not run Prompts. ### Changed - Make `Uninstall-CopilotAtelier` remove the contributor profile registration before any file and stop, naming the file, when it cannot: a `~/.copilot/hooks/contributor-profile.json` it did not create or that changed since, a registration record that OneDrive delivered before its file, or a profile lock another writer holds. Removing the hook scripts first would leave a registration that warns on every tool call, so Uninstall also holds the profile lock until the scripts are gone, and no profile write can register the hook in the meantime. A registration written from an earlier release''s template is still removed. The profile itself stays as personal content. - Document where each host records hook evidence, the observed host versions, transcript limits, compaction differences, and safe read-only inspection. See [Reading hook evidence](com.github.copilot/hooks/README.md#reading-hook-evidence). - Document that tool-hook `additionalContext` reaches the model inside the tool result in VS Code Local, the Copilot SDK agent host, and Copilot CLI, with version-scoped observations; it is data only, never an instruction or authorization. See [tool-output injection](skills/agent-security-review/SKILL.md#prompt-injection-via-tool-output-the-most-missed-check). - Let `grill-me`, `software-architect`, and `gilb-requirements-engineering` accept `not sure, you pick`: the recommended answer, or for a numeric target a level derived from `Past`, `Record`, or a verified benchmark, is recorded as an assumption flagged for expert review instead of blocking the interview. - Document in `agent-evals` that the Copilot backend''s content filter blocks some harmless eval prompts, why an embedded chat transcript makes it worse, and how to keep a comparison fair: situation as system context, `FinishReason` logged per call, retries, and arms compared only on cases complete in both. See [harness prerequisites](skills/agent-evals/SKILL.md#harness-prerequis' } } } |